I have written this document to help me improving my knowledge on Fibre Channel. I started by writing down questions which seem to be reasonable to ask and found the answers afterwards. I allowed myself to use the specification when making the exam.
As I am not a specialist and don't have much practical experience, the information in this document is not necessarily correct; it merely shows my understanding of the Fibre Channel specifications I had at 7 April 1994.
If you find any errors in it, I would appreciate if you send me an e-mail.
Erik (Erik.van_der_Bij@cern.ch)
Updates
21/09/95 Jean-Francois GILLOT found error in 1.1.2. He earned a coffee with it!
Fabric login and N-port login. The logins are started by sending a FLOGI or a NLOGI frame in which the payload contains the service parameters. The responses are coming back in ACC frames (LS_Command code of ACC). The logins are done in seperate Exchanges.
In class 1 connections, the first frame must have a frame starting with SOFc1 to open a dedicated connection to the Destination port. The first frame can contain data as well.
The parameters are split up in: Common Service Parameters and Service Parameters for the different classes (23.6).
An Exchange is the mechanism for coordinating the interchange of information and data between two N_Ports or nodes.
A Sequence is a set of one or more related Data frames transmitted unidirectionally from one N_Port to another. There may be only one Sequence active in an Exchange. However, there may be many Exchanges open between two N_Ports.
Exchange: Originater and Responder
Sequence: Sequence Initiator and Sequence Recipient
Abort Exchange Abort Exchange Protocol-frames
Abort Sequence Abort Sequence Protocol-frames
This is a frame that is sent with the same SEQ_ID as the last
frame sent.
Link Reset Link Reset Protocol-primitives
Link Initialization Link Init Protocol-primitives
Link Failure Link Failure Protocol-primitives
Those recovery primitives are going less or further back in the
Primitive Sequence protocol. Link Failure is the worst, Link Reset
is the most gentle recovery in the hierarchy (see 4.15).
S_ID, D_ID, OX_ID, RX_ID, SEQ_ID.
All fields are fixed for a given Sequence. All but RX_ID are known by the Originator at the start of the Sequence. RX_ID will be known after reception of the first ACK.
S_ID (Source Identifier) gets assigned by the fabric at fabric login if the fabric supports it. Otherwise it is known implicitly.
Buffer-to-buffer End-to-End
[R_RDY] [ACK]
Class 1 SOFc1: yes
other frames: no yes
Class 2 yes yes
Class 3 yes no
Link Control frames such as ACK_x, P_RJT, P_BSY, do not participate in end-to-end flow control (20.3.4). An N_Port shall not transmit P_BSY response frames for them either (20.3).
How can an N_Port make sure that it will not get an overflow in class 1 because of those Link Control frames? The N_Port should have enough resources to receive one Link Control frame in response to each data frame sent. This means that the N_Port should have at least as many receive buffers as it has sent Data Frames in addition to the End-to-end credit that it has given at P_Login.
(See 20.3.2.2)
Link Control Command frames such as Link Credit Reset (LCR) are not part of an Exchange or a Sequence (20.3.4).
In case of a missing frame, the recipient of the Sequence will find this by either timing out after E_D_TOV, or in case of class 1, by having a missing 'SEQ_CNT' value between two frames. In this case, the Recipient will transmit an ACK corresponding to the missing frame with the Abort Sequence bits set to (01).
In case of errors in a frame, it could be found by the CRC that is located at the end of a frame. The Recipient will send a P_RJT when it has detected a frame in error.
The Sequence will be aborted by the Initiator (24.3.10) after he has detected the error or has received the P_RJT frame or has received an ACK with the Abort Sequence bits set to (01). It will do so by sending the Abort Sequence (ABTS) Basic Link Service command.
There are four different ways of handling errors. The Policy used, is decided by the Exchange Originator, which has to take into account the Error Policy supported by the Responder, which is shown at N_Port login (29.6.1). The method chosen will be shown in the F_CTL field in the data frame. The discard policies will deliver a complete Sequence or, it will not be delivered to FC-4 at all.
At N_Login the following parameters are defined:
As there can be maximum one Sequence Open per Exchange, the maximum number of Exchanges is limited to Total Concurrent Sequences.
The Open Sequences per Exchange parameter is used only in case of Streamed Sequences, where a Sequence Initiator can send several Sequences without waiting for the ACK on the last frame of the Sequence. Note that there is a difference between Streamed Sequences (18.6) and Chained Sequences(18.5, see as well question 2.2.4.).
The "Common Feature Sets" document makes certain selections from the FC-PH specification. The Profiles, such as SCSI and IP prescribe which Feature Sets to use and define also other, extra features. A device that is compliant to a certain Profile will interoperate with another device that is defined in the same Profile document, but there still are different options within each profile document, such as the physical layer and usage of Class 1 and Class 2.
The "Common Feature Sets" document defines as well the procedures to follow for error recovery. Here as well it defines a subset from the possibilities that the FC-PH document allows.
Furthermore the document specifies certain Features that a Fabric should have to be able to interoperate with N_Ports that operate according to the FCSI profiles. Also Complementary Fabric Profiles and Name Server Cooperating Profiles are defined.
Only Class 1 and Class 2 are used in the Profiles. The F-FC2-C2 Feature Set defines features and behaviour required when all Exchanges are performed in Class 2 only. F-FC2-CM defines the features required when both Class 1 and Class 2 are used in the same Exchange. In F-FC2-CM intermix mode support (sending Class 2 frames within a Class 1 connection), is required for both Transmission and Reception.
The usage of ACK_N is prohibited in both Class 1 and Class 2. In Class 1 usage, only ACK_1 may be used. In Class 2 usage, both ACK_1 and ACK_0 may be used.
Only Continuous Relative Offset is needed to be supported. This means that when the frames are put in order, the data can be put in the memory in the same order. Random Relative Offset is therefore prohibited.
Chained Sequences, which is that the Sequence Initiator requires a reply Sequence from the Sequence Recipient within the existing Dedicated Connection, is not allowed in FCSI compliant devices. This to prevent that Dedicated Connections stay open too long.
The Error Recovery mechanisms used do not resend the data (Process policy is prohibited). The recovery procedures are only to recover from failures such as lost frames or frames in error. The mechanisms as defined in FC-PH are used (sending ABTS, see question 1.7.1.) with additional specifications such as time-out usage, SEQ_CNT, RX_ID assignment and such.
If the ABTS protocol fails, different Second-Level Error Recovery mechanisms are defined for Class 1 and Class 2.
Two fabric profiles are defined: P-FAB-C1, which has Full Class 1 and Limited Class 2 capability, and P-FAB-BC, which has Full Class 1 and Full Class 2 capability. The difference is on the Buffer-to- Buffer Data Field size (128 and 512 byte respectively) and that the -BC version can support Class 2 operations in full duplex at the speed of the N_Port technology. The -BC version is also required to do Class 2 speed matching, which is that if both N_Ports support different link speeds. Class 3 is allowed, but not required and Intermix support is required.
The following four Complementary Fabric Profiles are defined in the "Common FC-PH Feature Sets" document:
These Profiles specify extra features needed, such as Local Mapping of N_Port IDs and World-Wide- Names and Stacked Connect Requests. It is not clear what is the difference between -H1 and -HB Complementary Fabric Profiles and -P1 and -PB.
These two Cooperating Profiles are needed in a Name Server is being used in an environment with a fabric. Those profiles are not yet defined. Also the Name Server Logical Profile is not yet defined.
Physical layer: 3 versions: 25/50/100-M5-SL-I (all laser, multi-mode).
SCSI Application Logical Profiles: 4:
So there are two possibilities for each Host and Peripheral, of which each one has three possible physical options. Note that electrical versions will be defined later.
The -HD2 and PD-2 will interoperate in point-to-point connections, and with a Full Class1 / Full Class 2 fabric (P-FAB-BC). In the latter case the Class 2 speed matching makes that even the different physical layers will interoperate. They won't work with a Limited Class 2 fabric as the limited Class 2 bandwidth and Class 2 frame Receive Data Field Size make them unsuitable.
The -HDM and -PDM will interoperate when the physical layers are matched.
Physical layer: 3 versions: 25/50/100-M5-SL-I (all laser, multi-mode).
IP Application Logical Profiles: 4:
So there are two possibilities for the Hosts, of which each one has three possible physical options. Note that electrical versions will be defined later. If needed, the ARP Server or ARP Client profiles have to be added to the host.
The -H2 hosts will interoperate in point-to-point connections, and with a Full Class1 / Full Class 2 fabric (P-FAB-BC). In the latter case the Class 2 speed matching makes that even the different physical layers will interoperate. They won't work with a Limited Class 2 fabric as the limited Class 2 bandwidth and Class 2 frame Receive Data Field Size make them unsuitable.
The -HM and -PM will interoperate when the physical layers are matched.
This is one of the CERN High Speed Interconnect pages - 21 September 1995 - Erik van der Bij