Fibre Channel Examination
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!
Table of Contents
1. Physical and Signaling Interface (FC-PH)
FC-PH version 4.2
1.1 Hierarchy
1.1.1 Which handshakes are performed
before the first frame can be sent?
- FC-0: In case of Laser Links: Open Fibre Control state machine.
[Disconnect state, Stop State, Reconnect State, Active State]
This is to make sure that a laser link when open can be classified
as a Safety Class 1 laser product. The protocol works on the level
of switching on and off the laser.
- FC-1: Receiver and Transmitter state machines.
These are to achieve bit and word synchronization on a link. It
is not a real handshake between the Receiver and Transmitter.
Transmitter: [Not Enabled, Working, Failure, Open Fibre]
Receiver: [Reset, Loss-of-Sync, Sync Acquired]
The methodology to acquire bit and word synchronization is not
specified in FC-PH. It works on detection of three Ordered Sets
with a Comma character in their leftmost bit positions (Comma
character: 7 bits that in the absence of transmission errors cannot
appear in any other location of a Transmission Character).
- Primitive Sequence Protocol (16.4)
[NOS: Not-Operational, OLS: Offline Sequence, LR: Link Reset,
LRR: Link Reset Response, Operational link]
The Primitive Sequence Protocol is uses to indicate specific conditions
within a Port or conditions encountered by the Receiver logic
of a Port. It is based on sending continuously Primitive Sequences
(K28.5 + 3 specific words) until a response (at least three times
the correct Primitive Sequence received) from the other port is
received. The protocol ends with each port sending Idles.
1.1.2 Which handshakes are performed
before the first data can be sent?
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.
1.1.3 Which parameters are exchanged
during those handshakes?
The parameters are split up in: Common Service Parameters and
Service Parameters for the different classes (23.6).
- N-port Common Service Parameters
- FC-PH version: lowest and highest
- Buffer to buffer credit
- Continuously Increasing and/or Random Relative Offset
- N-port / F-port
- Buffer to buffer Receive Data Field Size
- N-port total Concurrent Sequences
- Relative Offset by Info Category
- R_A_TOV
- E_D_TOV
- N-port Class Service Parameters
- Class validity
- Intermix mode
- Stacked connect requests
- Sequential delivery
- Initiator control
- X_ID reassignment
- Inititial Responder Process_Associator
- ACK_0 capable
- ACK_N capable
- Recipient control
- ACK_0 capable
- ACK_N capable
- X_ID interlock
- Error policy support
- Categories per Sequence
- Receive Data Field Size
- Concurrent Sequences
- N-port End-to-end Credit
- Open Sequences per Exchange
1.1.4 What is an Exchange, what is a
Sequence?
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.
1.1.5 How are the ports called in an
Exchange and in a Sequence?
Exchange: Originater and Responder
Sequence: Sequence Initiator and Sequence Recipient
1.1.6 What is the Error recovery hierarchy?
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).
Back to Table Of Contents
1.2 Sequence Qualifier
1.2.1 What is the Sequence_Qualifier?
S_ID, D_ID, OX_ID, RX_ID, SEQ_ID.
- S_ID (Source Identifier) gets assigned by the fabric at fabric
login if the fabric supports it, otherwise it is known implicitly.
- D_ID (Destination Identifier) see S_ID, but sent by Source.
(23.4.1): Can be collected from - the fabric; - a name server;
- implicit definition.
- OX_ID (Originator Exchange ID) is filled in by the Originator.
FFFF means that the field is not used. Note that FFFF is not allowed
in the FCSI profiles.
- RX_ID (Responder Exchange ID) (18.10), OX_ID, but responder
fills it in. RX_ID is set to FFFF by the Originator. RX_ID gets
filled in when the first ACK frame gets filled in by the Responder
(see X_ID interlock 23.6.8.4). RX_ID may be FFFF if not used in
the FCSI profiles.
- SEQ_ID (Sequence ID), gets assigned by the Sequence Initiator.
1.2.2 Which fields in the Sequence_Qualifier
change and when?
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.
1.2.3 Which fields in the frame header exist and when do they
change?
- Fields in the Sequence_Qualifier, see above.
- R_CTL, Routing control: can change within a Sequence (18.2).
It can change if several information categories are sent within
a Sequence. During login an N-port can restrict the number of
information categories it can accept in a single Sequence.
- Type: is the same with each frame in a Sequence.
- F_CTL, Frame control: changes basically only on the second
and last frame in a Sequence and in an Exchange (18.5). If fill
bytes are used (if data is sent in an amount that is not a multiple
of 4 bytes), the Fill Data Bytes field can change on the last
frame.
- DF_CTL, Date Field Control: it shows if there are any optional
headers before the payload in the frame. It does not change between
frames in a Sequence (?).
- SEQ_CNT, Sequence Count: is a 16 bit number that gets incremented
on each frame in a Sequence. See 18.8 on values of SEQ_CNT at
the beginning of a first Sequence of an Exchange.
- Parameter: for Link Control frames (20.3), it contains a fixed
value for a frame. E.g. for an ACK_N it gives the N value. For
P_RJT it gives the reason code etc. For Data Frames, Parameter
defines the Relative Offset. It depends on if it is supported
by both N-ports if this field is used or not (defined at N-port
Login).
1.2.4 Where does an N-port get its S_ID from?
S_ID (Source Identifier) gets assigned by the fabric at fabric
login if the fabric supports it. Otherwise it is known implicitly.
Back to Table Of Contents
1.3 F_Port login
1.3.1 Give four examples of when a fabric login can fail
- F_Login with S_ID=0 does not result in an ACC with a D_ID
set by the fabric, but it gives back a F_RJT with reason code
Invalid S_ID (23.3.1). In this case the fabric does not support
N_Port Identifier assignment.
- if a retry is done after a) a F_Login with an S_ID < >
0, and the fabric still responds with a F_RJT with reason code
Invalid S_ID.
- F_Login responds with F_RJT class not supported.
- F_Login responds with a LS_RJT with a reason code
1.3.2 What to do in those cases?
- Retry F_Login with S_ID < > 0.
- Retry F_Login with another value of S_ID.
- Retry F_Login in another class.
- The Service Parameters were logically inconsistant or in error.
Correct and retry.
Back to Table Of Contents
1.4 N_Port login
1.4.1 Give two examples of when an N-port login can fail
- P_Login responds with P_RJT class not supported.
- P_Login responds with LS_RJT with reason code. E.g. the Originator
doing the P_Login does not support X_ID reassignment while the
Responder N_Port requires it.
1.4.2 What to do in those cases?
- Retry P_Login with another class.
- Originator should support X_ID reassignment or else it cannot
communicate to this port.
Back to Table Of Contents
1.5 Flow control
1.5.1 Which flow control is used in the different classes?
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
1.5.2 Do Link Control frames participate in the flow control?
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.
1.5.3 How are the fields in the ACK frames filled in?
- R_CTL: fixed: ACKxx
- D_ID: comes from S_ID of data frame
- S_ID: comes from D_ID of data frame or from Recipient
- TYPE: reserved (0?)
- F_CTL: Sequence and Exchange context bits inverted from
- F_CTL from Source. Some bits such as
- Sequence_Initiative may be set by the ULP.
- SEQ_ID: comes from data frame
- DF_CTL: 0
- SEQ_CNT: same as data frame
- OX_ID: same as data frame
- RX_ID: set by ULP, stays the same for all ACKs in exchange
- Parameter: if no errors: stays the same for ACK_0 and ACK_1.
In ACK_N it will contain N.
(See 20.3.2.2)
Back to Table Of Contents
1.6 Exchanges and Sequences
1.6.1 Which frames are not part of an Exchange or a Sequence?
Link Control Command frames such as Link Credit Reset (LCR) are
not part of an Exchange or a Sequence (20.3.4).
Back to Table Of Contents
1.7 Sequence recovery
1.7.1 What happens if a frame is missing or in error?
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.
1.7.2 Is it possible that FC-4 still receives a good frame
in case of errors?
If yes, is it possible in all classes?
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.
- Discard multiple Sequences: a Sequence will be delivered only
if it is complete and received and all previous Sequences are
delivered as well.
- Discard a single Sequence: a Sequence will be delivered only
if it is complete. So there is no requirement that the previous
Sequences were delivered as well.
- Discard multiple Sequences with retransmission: in this case
the Sequence Recipient may request for a retransmission of a Sequence.
This policy is only possible in Class 1. Note that the Retransmission
Protocol is prohibited in the FCSI profiles.
- Process with infinite buffering: frames will be delivered
to FC-4 even if there is a frame in error. This method can be
useful for frame buffers and such.
1.7.3 Is there a maximum number of exchanges between N-ports?
If no, why not? If yes, how is this determined?
At N_Login the following parameters are defined:
- Total Concurrent Sequences (Common Service)
- Concurrent Sequences (Class Service)
- Open Sequences per Exchange (Class Service)
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.).
Back to Table Of Contents
2. FCSI Common FC-PH Feature Sets
Used in Multiple Profiles
FCSI - 101 Revision 2.0
2.1 General
2.1.1 What does the "FCSI Common FC-PH Feature Sets"
define?
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.
Back to Table Of Contents
2.2 FC-2 Layer Feature Sets for Normal
Operations
2.2.1 Which classes are used in the "Common FC-PH feature
sets"?
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.
2.2.2 Which ACK types are used in the "Common FC-PH feature
sets"?
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.
2.2.3 How is Relative offset used in the "Common FC-PH
feature sets"?
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.
2.2.4 Are Chained Sequences allowed in an Exchange?
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.
Back to Table Of Contents
2.3 FC-2 Layer Feature Sets for Error Detection
and Recovery
2.3.1 Which Error Recovery mechanisms are used?
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.
Back to Table Of Contents
2.4 Fabric Profiles
2.4.1 Which Fabric Profiles are defined?
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.
2.4.2 Which Complementary Fabric Profiles are defined?
The following four Complementary Fabric Profiles are defined in
the "Common FC-PH Feature Sets" document:
- P-CFAB-H1 : Host support for Full Class 1 / Limited Class
2 fabric
- P-CFAB-P1 : Peripheral support for Full Class 1 / Limited
Class 2 fabric
- P-CFAB-HB : Host support for Full Class 1 / Full Class 2 fabric
- P-CFAB-PB : Peripheral support for Full Class 1 / Full Class
2 fabric
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.
2.4.3 Which Cooperating Profiles are defined?
- P-COP-NSR : Name server registration functions
- P-COP-NSQ : Name server query plus registration functions
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.
Back to Table Of Contents
3. FCSI SCSI Profile
FCSI - 201 Revision 2.0
3.1 FCSI SCSI Profile
3.1.1 How many different types of FCSI SCSI implementations
are possible?
Physical layer: 3 versions: 25/50/100-M5-SL-I (all laser, multi-mode).
SCSI Application Logical Profiles: 4:
- PSCSI-HD2 : Multi-drive Mass Storage Host using Class 2
- PSCSI-HDM : Multi-drive Mass Storage Host using Mixed mode
- PSCSI-PD2 : Multi-drive Mass Storage Peripheral using Class
2
- PSCSI-PDM : Multi-drive Mass Storage Peripheral using Mixed
mode
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.
3.1.2 Which implementations interoperate?
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.
Back to Table Of Contents
4. FCSI IP Profile
FCSI - 202 Revision 1.0
4.1 FCSI IP Profile
4.1.1 How many different types of FCSI IP implementations
are possible?
Physical layer: 3 versions: 25/50/100-M5-SL-I (all laser, multi-mode).
IP Application Logical Profiles: 4:
- P-IP-H2 : IP Host using Class 2
- P-IP-HM : IP Host using Mixed mode
- P-COP-ARPC : Cooperating profile for ARP Client (using Class
2)
- P-ARP-SRVR : ARP Server (using Class 2)
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.
4.1.2 Which implementations interoperate?
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.
Back to Table Of Contents
This is one of the CERN High Speed Interconnect pages
- 21 September 1995 - Erik van der Bij