Fiber Channel Switching in Deep

Amr Ibrahim Enan is a Global Knowledge instructor who teaches and blogs from Global Knowledge Egypt.

Previously I gave you a brief overview on the differences between Fiber Channel switching and Ethernet switching. The major difference between FC and Ethernet is that FC is lossless while Ethernet is lossly.  In this post, I’ll explain how FC achieves a lossless behavior.

First, let me ask you what is the difference between TCP and UDP protocol? TCP provides you with extra services that UDP doesn’t, like lost frame recover flow control. But, you might ask, how? Before any two hosts communicate using TCP, they will first go through some sort of negotiation on parameters for those services to be possible. And that is exactly what happens in FC switching.

Whenever you connect a storage device or a server to a storage switch, before they exchange any data frames, they will do some negotiations to guarantee lossless behavior. Also, when you connect a FC switch to another FC switch they will perform some sort of negotiating to guarantee lossless behavior. But, negotiations that the switch does with one switch are completely different from the negotiations that the switch does with another switch.

The port type needs to be configured on FC switches but not on Ethernet switches. You’ll need to tell the switch what type of device is on the other end so it knows which set of negotiations it should use (a switch-to-switch negotiation or a server/storage-to-switch negotiation).

In the above figure, you can see that when you connect a switch with a server you need to configure the switch port as F_port, and if you’re connecting a storage device to a switch you should configure it as FL_port. If you are connecting a switch to another switch, then you should configure it as an E_port. Now let’s examine the negotiation that takes place between the server and the switch.

One thing that makes storage communication easy to understand is that we only have one protocol we need to understand in FClevel 4, which is SCSI protocol. SCSI has two main operations, SCSI read and SCSI write, which are always initiated from the server to the storage.

As you can see in the figure above, before the server can send a data frame to storage both devices need to go through three negotiations phases. Two phases are done between the server and the switch:

  • FLOGI (Fabric login )
  • PLOGI(Port login )

The final phase is done during the SCSI process, running on both devices:

  • PRLI (Process login )

In the next post, we’ll talk about a FLOGI and PLOGI requests and the purposes it serves.

In this article

Join the Conversation


  1. prli question Reply

    I’m a little confused on the need for PRLI. Is it relevant in today’s implementation and exists only for legacy reasons.

    Will you able to explain a practical application for PRLI or a deployment scenario.


  2. Justin Reply

    What a great series or articles, well written and concise. Gave me exactly what I needed to know in a useful way.

    This has really helped clear this up for me. I can now dig deeper with a better understanding of the components.

    Thank you

  3. Manjula Reply

    I have a doubt. FLOGI happens between n_port and f_port; PLOGI between n_port and n_port and PRLI also between n_port and n_port.
    If this is the case, then how PLOGI happens between the server nd the switch ? Does a n_port resides an switch for this communication purpose apart from f_port ? Can somebody please clear my doubt.