CS 635 Lecture 6, Part 2
Frames, Sequences, Exchanges
All traffic between N_Ports is in the form of a stream of frames. There
are two categories of frames:
Three types of data frame have been defined:
Data frames - transfer higher level information between source and destination
Link control frames - used to manage frame transfer and to provide some
control for FC-2 class 1 and class 2 services . Link control frames are
used to indicate receipt or loss of a frame, to provide flow control functions,
and to indicate when a destination N_Port of the fabric is busy.
Three types of link frames are:
FC-4 device data: used to transfer higher-layer data units from supported
FC-4 protocols, such as IEEE 802, SCSI, and IP
FC-4 video data: transferred by an N_Port directly to and from a video
buffer without first directing them to an intermediate storage location
Link data: used to transfer link application information between N_Ports;
supports a control function of a higher level, such as the transmission
of abort sequences, echo, and termination of class 1 connections
Link continue (acknowledge): used in various Fibre Channel sliding window
flow control mechanisms to report successful delivery
Link response: used in various Fibre Channel sliding window flow control
mechanisms to report unsuccessful delivery
Link command: a reset command used to reinitialize the sliding window credit
Fibre Channel places no limits on the size of transfers between applications.
Frame sizes are transparent to software using Fibre Channel because a buffer,
called a sequence, is the unit of transfer. A sequence is composed of one
ore more related frames for a single operation, flowing in the same direction
on the link. It is the FC-2 layer's responsibility to break a sequence
into the frame size that has been negotiated between the communicating
ports and between the ports and the fabric.
A sequence is also the recovery boundary in Fibre Channel. When an error
is detected Fibre Channel identifies the sequence in error and allows that
sequence to be retransmitted. Each sequence is uniquely identified by the
initiator of the sequence via the Sequence Identifier (SEQ_ID) field
within the frame header. Additionally, each frame within the sequence is
uniquely numbered with a Sequence Count (SEQ_CNT).
An exchange is composed of one or more non-concurrent sequences for a single
operation. For example, an operation may consist of several phases: a command
to read some data, followed by the data, followed by the completion status
of the operation. Each phase of command, data, and status is a separate
sequence, but they can form a single exchange. Within a single exchange,
only a single sequence may be active at any one time, although sequences
for different exchanges may be concurrently active. THis is one form of
multiplexing supported by Fibre Channel. The exchange is uniquely identified
by each participating N_Port.
An Originator Exchange ID (OX_ID) is assigned, in an implementation-dependent
manner, by the originating N_Port, and a Responder Exchange ID (RX_ID)
is assigned, in an implementation-dependent manner, by the responding N_Port.
The exchange IDs are contained within the frame header and are used locally
by the N_Ports to manage the exchange.
Fibre Channel services provide a set of functions, some of which are required
by Fibre Channel protocols and some of which provide optional enhancements
to Fibre Channel's basic protocols.
Fibre Channel management functions are handled by special servers within
the switch and do not have to be handled at each node, resulting in a simpler
and less costly system.
Multiple switches linked together form a fabric. SOme server functions
may be attached to a single switch but are made available to all switches
in the fabric.
Login Server (Mandatory) : Helps discover operating characteristics;
Provides N_Port address assignment
Fabric/Switch Controller (Mandatory): Assists initialization
connection; Routing management; Optional fabric-assisted services.
Two categories of flow control are supported:
End-to-end flow control: used between two communicating N_Ports. Each of
the two N_Ports in a communication provides credit for a certain number
of frames. This is the only type of flow control available on dedicated
connections after the first frame.
Buffer-to-buffer flow control: used between two ports connected by a single
point-to-point link. This type of flow control regulates traffic between
an N_Port and the F_Port to which it is attached.
End-to-End flow control
Can only be used for Class 1 and class 2 since it requires acknowledgments.
Flow control is activated by the flow of class 1 or class 2 data frames
from the initiator of a sequence of frames to the sequence recipient.
The available Credit_Count begins at 0 and is incremented by one for each
transmission. Three types of ACK frames can be returned:
The acknowledgment types cannot be mixed.
ACK_1: acknowledges an individual data frame; the sequence initiator decrements
Credit_Count by 1
ACK_N: acknowledges one or more data frames; the sequence initiator decrements
Credit_Count by the amount indicated in the control frame
ACK_0: acknowledges an entire sequence; the sequence initiator decrements
Credit_Count by the number of frames in the sequence.
In addition, busy and reject control frames are used to regulate flow.
The F_BSY control frame indicates that the fabric is unable to deliver
a frame. The P_BSY control frame indicates the destination port is temporarily
unable to accept a frame. When an N_Port receives a busy response,
it retransmits the data frame up to a predefined retry limit. An F_BSY
can also be issued by an F_Port in response to a link control frame.
The F_RJT and P_RJT reject control frames indicate that delivery of
a data frame is being denied. In the case of a reject, however, the entire
sequence containing the rejected frame is aborted. Depending on the reason
for the reject, the sequence initiator may or may not be able to try to
resent the entire sequence.
Buffer-to-Buffer flow control
Local link control mechanism between ports connected by a point-to-point
link. Applicable to class 2 and class 3 service. It is also applicable
to the initial frame used in setting up a connection for class 1 service
(SOFc1 frame). Otherwise, buffer-to-buffer flow control is not used for
class 1 service , since class 1 service provides a transparent circuit
switched type of connection between N_PORTs.
R_RDY primitive signal is used for buffer-to-buffer flow control.