SANs are awash with ports. There are N_ports, F_ports, G_ports and more. What are they for and what do they do?
The simplest Fibre Channel (FC) connection is a point-to-point link between a server and a storage device, between the two nodes as it were of this very simple network. Each one has an N_Port, standing for node port. N_Ports are end-points in a FC network. The transmit lead of one N_Port is connected via the FC cable to the receive lead of the other N_Port. Its transmit port is connected to the first N_Port's receive lead.
There is dedicated bandwidth between the two ports, with throughput of up to 100MB/sec for a 1Gbit/s FC link and up to 200MB/sec for a 2Gbit/s FC link. The ports handle the creation, detection and flow of message units to and from the connected systems.
Additional ports are needed when there are multiple devices on the FC network, in either an arbitrated loop or a fabric.
FC arbitrated loop (FC-AL) is a network topology for connecting three or more devices (nodes). It might be used to connect servers, bunches of disks in cabinets and to support NAS processors. For example, FC-AL could be used to link a server and two separate disk arrays in a daisy chain-like arrangement. The cable's bandwidth is shared between the devices on the loop. If they are all active then they all get a fraction of the bandwidth.
Alternatively a central FC-AL hub might be used, in a star topology, which limits the scope of cable break problems to individual nodes and doesn't let them destroy the whole loop. Internal circuitry in the hub enables the bypass of non-functioning ports to which the nodes' NL_Ports are connected. The hub ports themselves are dumb.
A single loop may have have fifty, even a hundred drives on it but typically only three or four initiators would be sending requests to the drives resulting in each one of four getting 25MB/sec if they are equally active in a 1Gbit/sec FC set-up.
An L_Port or NL_Port connects a node to the loop. Each NL_Port's transmit lead is connected to the receive lead of the NL-Port downstream of it. Thus the upstream node's NL_Port transmit lead is connected to the receive lead of the NL_Port we started with and so we have a continuous loop.
The NL_Port has to arbitrate with the other ports to temporarily win control of the available bandwidth. When it has done so it has all of it at its disposal. When the transaction finishes (data of some sort is sent to the receiving NL_Port) then it relinquishes control and other ports can compete in the arbitration process to win it. Over time, as the many individual per-port transactions take place, the bandwidth is effectively shared between them.
There can be up to 126 NL_Ports on a loop and one FL_Port. An FL_Port is a fabric port used for connection to a loop. This enables loop nodes to link to fabric nodes.
A FC fabric is defined as having one or more FC switches inter-connecting servers and storage nodes. A switch is an 8-, 16-, 32- or 64-port device. Ones with 128 or more ports are typically classed as Directors and have additional functionality. In a fabric full bandwidth is given to each port; that is 200MB/sec full duplex in a 1GBit/s FC set-up. This bandwidth is not shared with other ports connected to N_Ports on the fabric.
The servers and storage nodes, the end-points of the fabric, have N_Ports. The switch has F_Ports (F for fabric) which connect to the N_Ports on a one-to-one basis. At its simplest a server will connect to a particular storage node in a fabric in the sequence; server N-Port to front switch F-Port to back switch F_Port to storage node N_Port.
However, switches can be linked to provide a greater number of ports and thus scope for more server and storage nodes. The switches are linked by inter-switch links (ISL) and these are shared between all the F_Ports on the switch. The ISLs use switch E_Ports (E for expansion). Multiple E_Ports can be used to provide the bandwidth needed.
An additional type of switch port is a G_Port. These can function either as F_Ports or E_Ports. A G_Port functions as an F_Port when it is connected to a node's N_Port, and as an E_Port when connected to another switch's E_Port.
That completes the basic SAN port alphabet.