Amr Ibrahim Enan is a Global Knowledge instructor who teaches and blogs from Global Knowledge Egypt.
When you connect your server or storage, it will send a Fabric login (FLOGI) request. This FLOGI request serves two purposes:
- Fibre Channel ID is the WWPN connection to this port from the FLOGI server
- Exchange buffer credits with the switch
To better understand the first function, it is exactly the same if I rewrite it as, “request an IP address for a MAC address from the DHCP server”.
Yes, that’s right, FCID in the FC world is more or less the same as an IP address in the networking world. An IP address has two main IDs. The network ID is unique to devices that exist in the same Layer 2 domain, and the host ID is unique to each host.
FCID has two main parts: the Domain ID is unique for all devices that are connected to the same switch, and the Port ID is unique to each device connected to the same switch.
If you connect your laptop to your network, what is the first thing it will do? It will request an IP address so that it can communicate with other devices. In order to do so, it will send a DHCP BC frame that contains the MAC address. The equivalent to MAC in the FC world is WWPN, and the equivalent to a DHCP server is the LOGIN server (a service running inside the FC switch).
LOGIN server is a service running inside each storage switch. It is responsible for providing a unique FCID to each device connected to your switch, just like the DHCP provides each network host with a unique IP address.
FLOGI is functional in that it provides the buffer credit exchange between server and switch.
The FC is lossless, and the way it achieves this is on a link-by-link basis, meaning that the two devices on the same link will exchange buffer credits with each other, but why?
Checking the above figure, you’ll see that the TX (Server) now knows that the maximum number of frames RX (Switch) can hold in the buffer is 4. It will then send another variable called BB_Credit_CNT. At the login, it will send its value to 0 and whenever the TX sends a frame to the RX, the value will increase by 1. Then TX can send frames to RX until the value of BB_Credit_CNT is less than the BB_Credit. When a buffer space is offloaded on the RX side, an upper layer RX will send the TX a RDY frame. When the TX receives that frame it will decrease the value of BB_Credit_CNT by one and be able to send one more frame to TX.
All of this is what makes FC lossless. No frame will be sent from one device to another unless it was a switch to switch or server to switch.
Port Login (PLOGI)
After each device finishes the FLOGI phase, they now each have their own FCID. But they don’t know how to reach other devices connected to the same switch or connected to other switches in the fabric. In order to communicate with other devices, each device will need to do PLOGI.
There’s another service running inside the switch called Name server. When any device registers with this server, it sends its WWPN map to its FCID. The Name server will expose that device and all the register requests it receives this way can communicate with each other.
And Finally Process Login (PRLI)
As the two devices can now communicate with each other using the FC network SCSI, communication now takes place between the two devices. The SCSI has two main operations which are SCSI read or SCSI write.
In my next post, I’ll demonstrate a communication scenario between server and storage and explain some advanced configuration options that network engineers will be interested in.