Buffer-to-buffer credits (BB_credits) are a flow control mechanism to ensure that FC switches do not run out of buffers because switches must not drop frames. BB_credits are negotiated on a per-hop basis between ports when the link is brought up. When the transmitter sends a port login request, the receiver responds with an accept (ACC) frame that includes information on the size and number of frame buffers (BB_credits) the receiver has. The transmitter stores the BB_credits value and another value called buffer-to-buffer credits count (BB_credit_CNT) in a table. The BB_credits_CNT decreases with each packet placed on the wire from the transmitter side independent of the packet size. When a “receiver ready” acknowledgment signal is received from the receiver side, the BB_credits_CNT value is increased by one. The transmitting port keeps track of the BB_credits_CNT value to avoid overrunning the buffers on the receiving end. If the count becomes zero, no more packets are transmitted.
The BB_credit value can decrease the overall throughput of the link if insufficient BB_credits are available. The receive BB_credit value can be configured manually also for each FC interface. In most cases, you do not need to modify the default configuration. The receive BB_credit values depend on the switch/module type and the port mode. The range for assigning BB_credits is between 1 and 500 in all port modes. This value can be changed as required.
In Figure 8-14, the initiator has three transmit credits, and the receiver has three receive credits. When the initiator sends two frames on the wire, the transmit credits is decreased by two. When the initiator receives a “receiver ready” frame from the receiver, it increases its transmit credit by one and so on.
Figure 8-14 Flow Control Using Buffer-to-Buffer Credits
End-to-end credits are the maximum number of data frames a source port can send to a destination port without receiving an acknowledgment frame (ACK). This credit is granted during N port login and is replenished with the return of the ACK response frame. Buffer-to-buffer credits are negotiated on a per-hop basis between ports when the link is brought up, whereas end-to-end credits are negotiated between the source and destination port across the fabric.
Switched Fabric Initialization
The fabric initialization process consists of four phases:
Principal switch selection: This phase guarantees the selection of a unique principal switch (PS) across the fabric.
Domain ID distribution: This phase guarantees each switch in the fabric obtains a unique domain ID.
FCID allocation: This phase guarantees a unique FCID assignment to each device attached to the corresponding switch in the fabric.
Fabric reconfiguration: This phase guarantees a resynchronization of all switches in the fabric to ensure they simultaneously restart a new principal switch selection phase.
Each switch in a fabric is assigned one or more unique domain IDs using a two-step process. First, one switch, called the principal switch, is selected from the switches of a fabric. Then the principal switch assigns domain IDs to the other switches of the fabric. FCID address assignment within a domain is performed by the switch to which that domain ID is granted. The domains are configured on a per-VSAN basis. If you do not configure a domain ID, the local switch uses a random ID.
Note
Changes to fcdomain parameters should not be performed on a daily basis. These changes should be made by an administrator or individual who is completely familiar with switch operations. Fibre Channel domain parameters can be configured using the fcdomain command.