WWPN von FC-Ports in der Open Firmware

 

Der folgende Beitrag beschäftigt sich mit WWPN von FC-Ports in der Open Firmware.

Port- und Node-WWN von FC-Ports lassen sich über die Open Firmware sehr leicht herausfinden, auch wenn das ioinfo Kommando bei neuer POWER9 Firmware nicht mehr verfügbar ist. Der Hardware-Aufbau eines POWER-Systems ist in der Open Firmware in Form eines Device Baums verfügbar. Hardware-Komponenten, wie PCI-Bridges, Prozessoren oder PCI-Karten werden als Device Knoten in diesem Baum abgebildet.

Mit dem Kommando „dev /“ kann man, beginnend mit dem Root-Knoten („/“ oder Slash), auf die Device-Knoten zugreifen:

0 > dev /  ok
0 >

In dem Device Baum kann man sich mit den Kommandos dev, ls und pwd ähnlich wie im Unix Dateisystem bewegen. Ein ls auf dem Root-Knoten zeigt alle verfügbaren Device Knoten (sowie einige „Package-Knoten“, auf die hier nicht eingegangen werden soll).

Durch Einrücken der Device Knoten wird die Hierarchie im Device Baum dargestellt:

0 > ls 
0000020939c0: /ibm,serial
000002094ae8: /chosen
000002094d60: /packages
000002094e58:   /disassembler
...0000020af578: /cpus
0000020b5200:   /PowerPC,POWER7@0
...
0000020ba640: /memory@0
...
00000226cad0: /pci@800000020000120
00000229d750:   /pci@0
0000022a0018:     /pci@2
0000022a28e0:       /ethernet@0
0000022b4a28:       /ethernet@0,1
0000022c6b70:     /pci@4
0000022c9438:       /ethernet@0
0000022db580:       /ethernet@0,1
000002277fd8: /pci@800000020000121
0000022ed7d0:   /fibre-channel@0
0000023026e0:     /fp
000002303240:     /disk
000002304de0:     /tape
000002306270:   /fibre-channel@0,1
00000231b180:     /fp
00000231bce0:     /disk
00000231d880:     /tape
...
ok
0 >

In der Beispiel-Ausgabe sind 2 FC-Ports zu sehen. Beide FC-Ports sind Söhne des Device Knotens pci@800000020000121, welcher direkt unter dem Root Knoten / zu finden ist.

Mit dem Kommando „dev /pci@800000020000121“ navigieren wir zunächst in diesen Knoten und lassen uns dann die Unter- oder Sohn-Knoten mittels „ls“ anzeigen:

0 > dev /pci@800000020000121  ok
0 > ls
0000022ed7d0: /fibre-channel@0
0000023026e0:   /fp
000002303240:   /disk
000002304de0:   /tape
000002306270: /fibre-channel@0,1
00000231b180:   /fp
00000231bce0:   /disk
00000231d880:   /tape
ok
0 >

Wir bewegen uns als nächstes in den Device Knoten des ersten FC-Ports fibre-channel@0.

Mit dem Kommando „pwd“ überprüfen wir kurz die Position im Device Baum und schauen uns mit „ls“ anschließend die verfügbaren Unter-Knoten an:

0 > dev fibre-channel@0  ok
0 > pwd /pci@800000020000121/fibre-channel@0 ok
0 > ls
0000023026e0: /fp
000002303240: /disk
000002304de0: /tape
ok
0 >

Jeder Device Knoten besitzt eine Anzahl von Eigenschaften (Properties), welche von der Art der unterliegenden Hardware-Komponente abhängen.

Die Eigenschaften eines Device Knoten lassen sich mit dem Kommando „.properties“ anzeigen lassen (der Kommando-Name beginnt mit einem „.„):

0 > .properties
ibm,loc-code            U5802.001.008C110-P1-C2-T1
vendor-id               000010df
device-id               0000f100
...
name                    fibre-channel
...
manufacturer            456d756c 657800
copyright               436f7079 72696768 74202863 29203230 30302d32 30313220 456d756c 657800
device_type             fcp
model                   10N9824
...
port-wwn                10000000 c9b12345
node-wwn                20000000 c9b12345
...
ok
0 >

Neben dem Location-Code wird die Port-WWN (port-wwn) und die Node-WWN (node-wwn) angezeigt.

Wer mehr über den Aufbau von WWNs wissen möchte, verweisen wir gerne auf den Beitrag: Zahlen: FC World Wide Names (WWNs)

Man kann natürlich auf dem gleichen Weg auch die MAC-Adresse eines Ethernet-Ports herausfinden. Mit „dev ..“ kann man sich im Device Baum eine Ebene nach oben bewegen, ganz wie in einem Unix Filesystem. Man kann aber auch abkürzen und gleich ganz nach oben gehen, was wir hier im folgenden tun, um uns dann noch einmal alle verfügbaren Device Knoten anzeigen zu lassen:

0 > dev /  ok
0 > ls 
...
00000226cad0: /pci@800000020000120
00000229d750:   /pci@0
0000022a0018:     /pci@2
0000022a28e0:       /ethernet@0
0000022b4a28:       /ethernet@0,1
0000022c6b70:     /pci@4
0000022c9438:       /ethernet@0
0000022db580:       /ethernet@0,1
...
ok
0 >

Wir suchen uns als Beispiel den Device Knoten /pci@800000020000120/pci@0/pci@2/ethernet@0,1 aus und lassen uns wiederum die Eigenschaften anzeigen:

0 > dev /pci@800000020000124/pci@0/pci@2/ethernet@0,1  ok
0 > pwd /pci@800000020000124/pci@0/pci@2/ethernet@0,1 ok
0 > .properties
ibm,loc-code            U5802.001.008C110-P1-C4-T2
vendor-id               00008086
device-id               000010bc
...
name                    ethernet
...
device_type             network
...
max-frame-size          00000800
address-bits            00000030
local-mac-address       00145eea 1234
mac-address             00145eea 1234
...
0 >

Die MAC-Adresse ist hier über die Eigenschaft mac-address verfügbar.

Möchte man den Device Baum verlassen, so geht dies mit dem Kommando „device-end„:

0 > device-end  ok
0 >

Wir hoffen dieser Beitrag über WWPN von FC-Ports in der Open Firmware war sowohl hilfreich als auch informativ.

Zahlen: FC World Wide Names (WWNs)

Die meisten kennen WWNs als 64-bit WWNs, geschrieben als 16 hexadezimale Ziffern. Die Kenntnis das es verschiedene Formate bei den WWNs gibt und es auch 128-bit WWNs gibt ist nicht ganz so bekannt. In diesem Artikel sollen daher die verschiedenen Formate von WWNs kurz vorgestellt werden.

Der grundlegende Aufbau von 64-bit WWNs sieht wie folgt aus:

+---+----------------+
|NAA| NAME           |
+---+----------------+
4-bit 60-bit

Das 4-bit NAA (Network Address Authority) Feld gibt dabei den Typ der Adresse und das Format der Adresse vor.

Für das 60-bit NAME Feld gibt es eine Reihe von verschiedenen Möglichkeiten.

1. Format 1 Adresse (NAA = 0001)

+---+--------+------------------------+
|NAA|Reserved| 48-bit IEEE MAC Address|
+---+--------+------------------------+
4-bit 12-bit   48-bit

Im Feld Reserved (12-bit) müssen alle Bits auf 0 gesetzt sein!

Beispiel:

1 000 00507605326d (Zur Verdeutlichung des Formats sind die Felder durch Leerzeichen getrennt)

 

2. Format 2 Adresse (NAA = 0010)

+---+---------------+-----------------------+
|NAA|Vendor Assigned|48-bit IEEE MAC Address|
+---+---------------+-----------------------+
4-bit  12-bit         48-bit

Das 12-bit “Vendor Assigned” Feld kann vom Hersteller beliebig verwendet werden.

Beispiel:

2 001 00507605326d (Zur Verdeutlichung des Formats sind die Felder durch Leerzeichen getrennt)

 

3. Format 3 Adresse (NAA = 0011)

+---+-----------------+
|NAA|Vendor Assigned  |
+---+-----------------+
4-bit 60-bit

Das Feld „Vendor Assigned“ (60-bit) wird vom Hersteller beliebig vergeben. Damit ist diese Art von Adresse nicht weltweit eindeutig und ist daher in der Praxis eher nicht anzutreffen.

Beispiel:

3 0123456789abcde (Zur Verdeutlichung des Formats sind die Felder durch Leerzeichen getrennt)

 

4. Format 4 Adresse (NAA = 0100)

+---+---------+--------------+
|NAA|Reserved | IPv4 Address |
+---+---------+--------------+
4-bit 28-bit     32-bit

Das Feld “IPv4 Address” (32-bit) enthält eine 32-bit IPv4 Adresse.

Beispiel für IP 10.0.0.1:

4 0000000 0a000001 (Zur Verdeutlichung des Formats sind die Felder durch Leerzeichen getrennt)

 

5. Format 5 Adresse (NAA = 0101)

+---+-------+-----------------+
|NAA| OUI   | Vendor Assigned |
+---+-------+-----------------+
4.bit 24-bit 36-bit

Das Feld OUI (24-bit) enthält die 24-bit vom IEEE zugewiesene ID (Organizational Unique ID).

Das Feld „Vendor Assigned“ (36-bit) kann wieder vom Hersteller beliebig vergeben werden.

Beispiel:

5 005076 012345678 (Zur Verdeutlichung des Formats sind die Felder durch Leerzeichen getrennt)

 

6. Format 6 Adresse (NAA = 0110)

Format 6 Adressen sind 128-bit Adressen und werden häufig für LUNs im SAN verwendet.

+---+-------+---------------+-------------------------+
|NAA|  OUI  |Vendor Assigned|Vendor Assigned Extension|
+---+-------+---------------+-------------------------+
4.bit 24-bit  36-bit          64-bit

Das Feld OUI (24-bit) enthält die 24-bit vom IEEE zugewiesene ID.

Das Feld „Vendor Assigned“ (36-bit) kann vom Hersteller beliebig vergeben werden.

Das Feld „Vendor Assigned Extension“ (64-bit) kann ebenso vom Hersteller beliebig vergeben werden.

Beispiel:

6 005076 012345678 0123456789abcdef (Zur Verdeutlichung des Formats sind die Felder durch Leerzeichen getrennt)

 

7. IEEE EUI-64 Adresse (NAA=11)

Bei diesem Adress-Format ist das Feld NAA auf lediglich 2-bit verkürzt, wobei NAA den Wert 11 hat.

+---+-------------+---------------+
|NAA|OUI shortened|Vendor Assigned|
+---+-------------+---------------+
2-bit 22-bit       40-bit

Das Feld “OUI shortened” (22-bit) ist dabei eine auf 22-bit gekürzte Version der vom IEEE zugewiesenen 24-bit ID.

(Die beiden niederwertigsten Bit des 1 Byte werden hierbei weggelassen und die verbleibenden 6-Bit werden um 2 Bit-Positionen nach rechts verschoben um Platz für die beiden NAA Bits zu machen.)

Das Feld „Vendor Assigned“ (40-bit) kann vom Hersteller beliebig vergeben werden.

Diese Art von Adressen werden häufig im Bereich Virtualisierung verwendet, z.B. wenn es um NPIV (N_Port ID Virtualization) geht.

Beispiel:

C05076 0123456789 (Zur Verdeutlichung des Formats sind die Felder durch Leerzeichen getrennt)