All devices on a storage area network need to be uniquely identifiable. This is to ensure that data transmission occurs between the correct source and target device across a SAN fabric or loop. In the Ethernet world, devices are uniquely identified by their MAC (media access control) address. This is a set of 6 hexadecimal pairs of numbers guaranteed to be assigned to a unique network card or device. In the SAN world, host bus adaptors and other SAN devices also utilise a unique identifier. With a little knowledge, we can interpret these codes to ensure that when we are cabling SAN infrastructures, we can correctly identify our connected devices and validate that cabling work has been performed correctly. The SAN equivalent of a MAC address is the worldwide name (WWN). You will also see references to WWPN (Worldwide Port Name) and WWNN (Worldwide Node Name). Usually, the WWPN is the name you will more likely use as it is the name an HBA will present when logging into a SAN fabric. Worldwide Names consist of 16 hexadecimal digits grouped as 8 pairs. These are written with colon characters separating each pair. Some WWN examples are shown below:
50:06:04:81:D6:F3:45:42 (EMC disk subsystem)
10:00:00:00:c9:22:fc:01 (Emulex HBA card)
21:00:00:e0:8b:05:05:04 (Qlogic HBA card)
The format of the WWN is defined by the IEEE, The Institute of Electrical and Electronics Engineers, a global (non-profit) organisation responsible for setting and maintaining a large number of IT standards. You can find full details of the WWN standard from the IEEE but here’s a quick breakdown. The specific format of a WWN is defined by the Name Address Authority field value, which is the first digit of the WWN. The following values are used:
1 – IEEE 803.2 standard 48 bit ID
2 – IEEE 803.2 extended 48-bit ID
5 – IEEE Registered Name
6 – IEEE Extended Registered Name
Most commonly seen are options 1, 2 and 5. We will not discuss format 6.
IEEE Standard (NAA=1)
This format is divided into 3 sections. We will use the previous Emulex example above to illustrate this format.
|Section 1||Section 2||Section 3|
Section 1 identifies the WWN as a standard format WWN. Only one of the 4 digits is used, the other three must be zero filled. Section 2 is called the OUI or “company_id” and identifies the vendor (more on this later). Part 3 is a unique identifier created by the vendor.
IEEE Extended (NAA=2)
This format is divided into 4 sections. Using the Qlogic example, we can illustrate this:
|Section 1||Section 2||Section 3||Section 4|
Section 1 identifies the WWN as an extended format WWN. Section 2 is a vendor specific code and can be used to identify specific ports on a node or to extend the serial number (section 4) of the WWN. Section 3 identifies the vendor. Section 4 is the unique vendor-supplied serial number for the device.
IEEE Registered Name (NAA=5)
Format 5 enables vendors to create unique identifiers without having to maintain a database of serial number codes. This format tends to be used by hardware vendors to create unique WWN values based on the serial number and physical port number of hardware devices such as disk arrays. The format has 3 sections, using the EMC example we can illustrate this.
|Section 1||Section 2||Section 3|
Section 1 identifies this as a registered name WWN. Section 2 identifies the vendor. Section 3 is a vendor-specific generated code, usually based on the serial number of the device, such as a disk subsystem. The hardware vendor will use an algorithm to generate the WWN. The EMC algorithm is quite complex and for disk subsystems is based on the array serial number and the port number. The code demonstrated above represents a WWN for port 3aa on a disk frame with serial number 123456789.
All vendors wishing to create WWNs must register for a company ID or OUI (Organisationally Unique Identifier). These are maintained and published by IEEE, the current list can be found here. All company identifiers are six digits in length and used within the WWN. In our examples, 00-60-48 is the code for EMC, 00-00-C9 is the code for Emulex and 00-E0-8B is the code for Qlogic.
Decoding Registered Name WWNs
The following Visual Basic program can be used to decode and encode WWPNs for EMC and HDS disk subsystems. I can’t guarantee that this code is 100% accurate, so if anyone has any comments or finds and bugs, let me know. Likewise if anyone has WWNs with serial numbers for disk subsystems from other manufacturers, let me know and I will add them in. This is a brief introduction to WWNs but should help in validating that the correct device has been plugged into a SAN. One thing we have not mentioned is where to locate the WWN for an HBA. These are usually printed on the card itself, or can be obtained from the host. You should check with the HBA vendor on how to obtain this information.