In SAN environment, every port has to go through initialization process. During that process every port is categorized under specific type. Depends if the port is a device port – it can become N_Port or NL_Port. If it’s a switch port – it usually becomes either U_Port, F_Port or E_Port. Let me go through port types with short explanation.
- N_Port – Node Port – a Fabric device directly attached. Such device can be either an initiator or a target. In storage world targets are storage arrays, and initiators are hosts/servers.
- NL_Port – Node Loop Port – a device attached to a loop. The device has an arbitrated loop code, and switched fabric code in its code base. As a consequence, once the device finishes the arbitrated loop initialization it starts sending out FLOGI (fabric logins). This process I will explain more carefully in futures post. But in few words – it need to do that to get 24bit fabric address and be able to exist in Switched Fabric environment.
- U_Port – Universal Port. U_Port means that the Port does not have a topology assigned yet, it is basically waiting to become another port type. Normally when nothing is attached to a port it is a U_Port.
- FL_Port – Fabric Loop Port. A switch port becomes FL_Port only when it is directly connected to NL_Port on the device side.
- G_Port – Generic Port. It is a state through-out Port Initialization before a port can become either a F_Port or E_Port. If a port stayed as a G_Port there is probably some issue during Port Initialization
- F_Port – Fabric Port. It means that the port is connected to a Full Fabric device – so to a N_Port. In other words F_Port means that this port is directly connected to either a initiator or target.
- E_Port – Expansion Port. This kind of port is used for inter-switch links (ISL). It is the connection between two switches.
Port Initialization Process
(Click on the diagram to see it in better resolution.)
- Port Initialization Process becomes from the U_Port (called a State1).
- If the port can detect that something is connected (something is sending a signal to the port), it goes through the first transaction.
- During the Transaction1 port is transmitting at least 12 Primitive Sequences LIP(F7) – as a try for arbitrated loop initialization sequence.
- If the port receives at least 3 consecutive pritimite sequences, the port is going through the arbitrated loop initialization, becoming a FL_Port (State2)
- If the attached device is not a loop, the initialization continues into the G_Port stage (state3).
- If the attached device is a initiator or a target – the port state is changing from G_Port to F_Port (state5). And it is waiting for the Fabric Login to be received.
- If the attached device is another switch, then the port changes its state from G_Port to E_Port (state4)
Of course this is just a high overview of the initialization process.