Table of Contents
- General Overview
- Detailed Discussion
- Fibre Channel Layers
- Organization of Fibre Channel Standards
- Fibre Channel Topologies
- Fibre Channel Ports
- Media Options
- Flow Control
- Classes of Service
- Transmission Hierarchy
- Other Storage Technologies
- Glossary of Fibre Channel Terms
Fibre Channel is a computer communications protocol designed to meet the many requirements related to the ever increasing demand for high performance information transfer. The goals of Fibre Channel include:
- Developing practical, inexpensive, yet expandable means of quickly transferring data between workstations, mainframes, supercomputers, storage devices, desktop, displays and other peripherals.
- Allowing many well-known existing channel and networking protocols to run over the same physical interface and media
- High bandwidth (100MB/s and beyond)
- Flexible topologies
- Connectivity over several kilometers
- Support for multiple data rates, media types, and connectors
There are two basic types of data communications between processors and between processors and peripherals: channels and networks.
A channel is a closed, direct, structured, and predictable mechanism for transmitting data between relatively few entities. It provides a direct or switched point-to-point connection between the communicating devices. Typically, once a channel is set up, there is very little decision making needed, thus allowing for a hardware-intensive environment and transports data at the high speed with low overhead.
Channels are commonly used to connect peripheral devices such as a disk drive, printer, tape drive, etc. to a workstation. Common channel protocols are Small Computer System Interface (SCSI) and High Performance Parallel Interface (HIPPI).
In contrast Networks are aggregations of distributed nodes(like workstations, file servers or peripherals) with there own protocol that support interaction among these nodes. They are unstructured and unpredictable. Networks are able to automatically adjust to changing environments and can support a larger number of connected nodes. These factors require that much more decision making take place in order to successfully route data from one point to another. Networks have relatively high overhead since they are software-intensive where decision making is done making networks inherently slower than channels. Examples of common networks are Ethernet, Token Ring, and Fiber Distributed Data Interface (FDDI).
Although its called Fibre Channel, it's architecture doesn't represent neither a channel nor a real network topology. It allows for active intelligent interconnection scheme, called a Fabric, to connect devices. All a Fibre channel port has to do is to manage a simple point-to-point connection between itself and the fabric. In general, Fibre Channel attempts to combine the best of these two methods of communication into a new I/O interface that meets the needs of channel users and also network users.
In 1988, the American National Standards Institute (ANSI) Task Group X3T11 began work on the Fibre Channel standards. At this time, at least 20 separate documents, each defining an aspect of Fibre Channel, are either proposed or in draft form. Although several of the standards are in their early stages, Fibre Channel products are being shipped today. A list of companies involved in Fibre Channel can be found on the Fibre Channel Industry Association web site.
Today's data explosion presents unprecedented challenges incorporating data warehousing, imaging, integrated audio/video, networked storage, real-time computing, collaborative projects and CAD/CAE. Fibre channel is simply the easiest, most reliable solution for information storage and retrieval.
Fibre Channel, a powerful ANSI standard, economically and practically meets the challenge with these advantages:
- Price Performance Leadership - Fibre Channel delivers cost-effective solutions for storage and networks.
- Solutions Leadership - Fibre Channel provides versatile connectivity with scalable performance. A developed market exists for Fibre Channel with over 100 companies, including well known storage and server suppliers, which supply thousands of products. This ensures that any investments made into this technology have staying power and will be safe and secure investments for the future.
- Reliable - Fibre Channel, a most reliable form of communications, sustains an enterprise with assured information delivery.
- Gigabit Bandwidth Now - Gigabit solutions are common in modern Fibre Channel solutions. Speeds up to 8 gigabit are frequently used, and technologies can be seen supporting higher speeds up to 40 gigabit-per-second in the future.
- Multiple Topologies - Dedicated point-to-point, shared loops, and scaled switched topologies meet application requirements.
- Multiple Protocols - Fibre Channel delivers data. SCSI, TCP/IP, video, or raw data can all take advantage of high performance, reliable Fibre Channel technology.
- Scalable - From single point-to-point gigabit links to integrated enterprises with hundreds of servers, Fibre Channel delivers unmatched performance.
- Congestion Free - Fibre Channel's credit-based flow control delivers data as fast as the destination buffer is able to receive it.
- High Efficiency - Real price performance is directly correlated to the efficiency of the technology. Fibre Channel has very little transmission overhead. Most important, the Fibre Channel protocol is specifically designed for highly efficient operation using hardware.
Fibre Channel is making the biggest impact in the storage arena, in particular, using SCSI as an upper layer protocol. Compared with traditional SCSI, the benefits of mapping the SCSI command set onto Fibre Channel include:
- faster speed
- more devices can be connected together
- larger distance allowed between devices
Essentially, Fibre Channel, using the Arbitrated Loop topology, is simply being used as a replacement for SCSI. Many companies are already shipping SCSI adapter cards for several platforms and operating systems, as well as disk drives and storage devices with Fibre Channel interfaces. There is currently interest in connecting SCSI Tape devices as well.
In addition to using SCSI, several companies are selling Fibre Channel devices that run Internet Protocol (IP). Although the ULP is independent of the topology, IP is more commonly found in switched fabric environments. At the present time, SCSI and IP are pretty much the only two ULPs commercially used on Fibre Channel.
Fibre Channel will most likely continue to expand into the storage markets, which will make use of its benefits over traditional channel technologies such as SCSI. Being able to access mass storage devices quicker and from greater distances is very attractive to such applications as multimedia, medical imaging, and scientific visualization. Because of the greater distances allowed, Fibre Channel has advantages in disaster recover situations as storage devices can be placed remotely.
Unfortunately, the current trend in Fibre Channel is to continue to define more and more standard documents that increase the complexity of the protocol. This is probably the biggest threat to its future.
The UNH-IOL offers testing in many Fibre Channel areas; you can follow this link to see the UNH-IOL Fibre Channel test offerings: Fibre Channel Test Offerings.
Fibre Channel Layers
It is often easier to understand a communications protocol if it is first broken down into parts or layers. Some people are familiar with the International Standards Organization (ISO) - Open Systems Interconnect (OSI) model, which breaks the communications puzzle into seven layers: Physical, Data Link, Network, Transport, Session, Presentation, and Application. Fibre Channel does not follow this model, but instead, the protocol has been broken into five layers: FC-0, FC-1, FC-2, FC-3, and FC-4. FC-0 to FC-2 contains the physical description of Fibre Channel defined in the FC-PH and FC-PI standards, while FC-3 and FC-4 describe the interface with other applications, as well as some protocol specific information. Each is described below along with the main functions it defines.
The lowest Fibre Channel layer defines the physical media used to link two Fibre Channel ports, including cabling types, optical and electrical parameters for a variety of data rates, maximum transfer distances, and noise limits. Fibre Channel supports two types of cables: Copper and optical. Copper cables are mainly used for interconnecting storage devices over short distances, while optical cabling is used for all connections over longer distances due to its noise immunity. Both copper and optical cables come in a variety of flavors including single-mode and multi-mode fibers for the optical, and shielded twisted pair and coaxial for copper. Each link must connect two Fibre Channel ports, a transmitting port at one end and a receiving port at the other end.
FC-1 defines the transmission protocol including serial encoding and decoding rules, special characters and error control. The information transmitted over a fibre is encoded 8 bits at a time into a 10 bit Transmission Character. The primary rationale for use of a transmission code is to improve the transmission characteristic of information across a fibre. The layer also controls the media access, defining the receiving and transmitting ports and there operations.
The Signaling Protocol (FC-2) layer serves as the transport mechanism of Fibre Channel.The framing rules of the data to be transferred between ports, the different mechanisms for controlling the three service classes and the means of managing the sequence of a data transfer are defined by FC-2. The layer defines most of the Fibre Channel specific handling like flow control, encapsulation of data into frames and sequence exchanges. The layer provides Fibre Channel classes of service information, which allows a variety of different connection types and connection management options. The layer also defines the physical models for the Fibre Channel components, including the definition of nodes, ports, segmentation and reassembly, Login/Logout and Fibre Channel topologies.
The FC-3 layer is intended to provide the common services required for advanced features such as:
- Striping-To multiply bandwidth using multiple N_Ports in parallel to transmit a single information unit across multiple links.
- Hunt groups-The ability for more than one Port to respond to the same alias address. This improves efficiency by decreasing the chance of reaching a busy N_Port.
- Multicast-Multicast delivers a single transmission to multiple destination ports. This includes sending to all N_Ports on a Fabric(broadcast) or to only a subset of the N_Ports on a Fabric.
FC-4, the highest level in the FC structure defines the application interfaces that can execute over Fibre Channel.It specifies the mapping of upper layer protocols using the FC levels below. Fibre Channel is equally adept at transporting both network and channel information and allows both protocol types to be concurrently transported over the same physical interface.
The following network and channel Upper Layer Protocols (ULP) mapping are currently specified or proposed as FC-4s.
- Small Computer System Interface (SCSI)
- Internet Protocol (IP)
- High Performance Parallel Interface (HIPPI)Framing Protocol
- Link Encapsulation (FC-LE)
- IEEE 802.2
- Asynchronous Transfer Mode - Adaption Layer 5 (ATM-AAL5)
- Intelligent Peripheral Interface - 3 (IPI-3) (disk and tape)
- Single Byte Command Code Sets (SBCCS)
- future ULPs…
FC-0 and FC-1 can be thought of as defining the Physical Layer of the OSI model. FC-2 is similar to what other protocols define as a Media Access Control (MAC) layer, which is typically the lower half of the Data Link layer. Fibre Channel, however, does not define the concept of a MAC. FC-3 is not really a layer at all, and was designed in Fibre Channel's early development to be a placeholder for future functions. It is still a largely undefined set of services for devices having more than one port. An example is striping, where data is transmitted out of all ports at the same time in order to increase bandwidth. FC-4 defines how other well-known higher layer protocols are mapped onto and transmitted over Fibre Channel. Thus, one can roughly think of the Fibre Channel layers defining up through the Transport layer of the OSI model.
Organization of Fibre Channel Standards
Fibre Channel without a doubt wins the award for the largest and most complex set of standards documents for a communications protocol. The initial effort was started back in 1988, and much of it continues to undergo significant development to this day. There are now well over 20 individual standards documents, some of which have been adopted as standards, but many remain in draft form. The standards body under which the documents are being developed is the American National Standards Institute (ANSI).
The main document by which all others are based is FC-PH (ANSI X3.230-1994, Fibre Channel - Physical and Signaling Interface). It defines the FC-0, FC-1, and FC-2 layers. In addition to FC-PH, two other Physical and Signaling Interface documents have been developed: FC-PH-2 (ANSI X3.297-1997, Fibre Channel - Physical and Signaling Interface - 2) and FC-PH-3 (Project 1119-D, Fibre Channel - Physical and Signaling Interface - 3). These add various functions and features to the original FC-PH. This has since expanded into FC-PI, currently up to FC-PI-5 (Project 2118-D, Physical Interface - 5). This was done to separate and better define the electrical and optical standards for the physical layer of Fibre Channel technologies. Future generations are under development for FC-PI to accommodate faster speeds and to anticipate future technologies.
Another key document is FC-AL (ANSI X3.272-1996, Fibre Channel - Arbitrated Loop). This describes the behavior of an Arbitrated Loop device. The Arbitrated Loop topology was an afterthought to the original design of Fibre Channel. As a result, it was not defined in FC-PH, but instead became its own standard. It extends the rules and definitions of FC-PH to accommodate the topology. FC-AL-2 (Project 1133-D, Fibre Channel - Arbitrated Loop - 2) and FC-AL-3 (unassigned, Fibre Channel - Arbitrated Loop - 3) are being developed to expand on the original.
Several documents exist that describe how ULPs are to be mapped onto Fibre Channel:
- SCSI-FCP ANSI X3.269-1996 Fibre Channel Protocol for SCSI
- FC-PLDA Project 1162-DT Fibre Channel Private Loop Direct Attach
- FC-LE ANSI X3.287-1996 Fibre Channel - Link Encapsulation
- FC-FP ANSI X3.254-1994 Fibre Channel - Mapping - to HIPPI-FC
- HIPPI-FC ANSI X3.283-1996 HIGH-PERFORMANCE PARALLEL INTERFACE - Encapsulation of Frames of the Fibre Channel Physical and Signaling Interface (FC-PH Encapsulation)
- FC-SB ANSI X3.271-1996 Fibre Channel Single-Byte Command Code Sets (SBCCS) Mapping Protocol
There are many more projects in various stages of completion such as:
- FC-GS ANSI X3.288-1996 Fibre Channel - Generic Services
- FC-GS-2 Project 1134-D Fibre Channel - Generic Services - 2
- FC-GS-3 Project 1356-D Fibre Channel - Generic Services - 3
- FC-GS-4 Project 1505-D Fibre Channel - Generic Services - 4
- FC-GS-5 Project 1677-D Fibre Channel - Generic Services - 5
- FC-GS-6 Project 1833-D Fibre Channel - Generic Services - 6
- FC-GS-7 Project 2204-D Fibre Channel - Generic Services - 7
- FC-FG ANSI X3.289-1996 Fibre Channel - Fabric Generic Requirements
- FC-AV Project 1237-D Fibre Channel - Audio-Visual (FC-AV)
- FC-AE Project 2009-DT Fibre Channel - Avionics Environment (FC-AE)
- FC-AE-1553 Project 1648-DT Fibre Channel Avionics Environment - Upper Layer Protocol MIL-STD-1553
- FC-AE-ASM Project 1649-DT Fibre Channel Avionics Environment - Anonymous Subscriber Messaging
- FC-AE-LP Project 1650-DT Fibre Channel Avionics Environment - SCSI-3 Lightweight Protocol
- FC-AE-RDMA Project 1651-DT Fibre Channel Avionics Environment - SCSI-3 Remote Direct Memory Access
- FC-SW Project 959-D FC Switch Fabric and Switch Control Requirements
- FC-SL Project 1232-D Fibre Channel - Slotted Loop
- FC-FLA Project 1235-DT Fibre Channel - Fabric Loop Attachment
- FC-BB Project 1238-D Fibre Channel - Backbone
- FC-PI-6 Project 32GFC - Fibre Channel Physical Interfaces - 6
- FC-PI-6P Project 533-201x Fibre Channel Physical Interfaces - 6P 128 GFC Four Lane Parallel
- and more…
Fibre Channel Topologies
Fibre Channel defines three topologies, namely Point-to-Point, Arbitrated Loop, and Fabric. Each of these is described below.
A Point-to-Point topology is the simplest of the three. It consists of two and only two Fibre Channel devices connected directly together. The transmit fibre of one device goes to the receive fibre of the other device, and vice versa. There is no sharing of the media, which allows the devices to enjoy the total bandwidth of the link. A simple link initialization is required of the two devices before communication can begin.
Arbitrated Loop has become the most dominant Fibre Channel topology, but it is also the most complex. It's a cost-effective way of connecting up to 127 ports in a single network without the need of a Fabric switch. Unlike the other two topologies, the media is shared among the devices, limiting each device's access. Not all devices are required to operate on an Arbitrated Loop; the added functionality is optional. Thus, for a Loop to operate, all devices must be Loop devices.
Arbitrated Loop is not a token-passing scheme. When a device is ready to transmit data, it first must arbitrate and gain control of the Loop. It does this by transmitting the Arbitrate (ARBx) Primitive Signal, where x = the Arbitrated Loop Physical Address (AL_PA) of the device. Once a device receives its own ARBx Primitive Signal, it has gained control of the Loop and can now communicate with other devices by transmitting an Open (OPN) Primitive Signal to a destination device. Once this happens, there essentially exists point-to-point communication between the two devices. All other devices in between simply repeat the data.
If more than one device on the Loop is arbitrating at the same time, the x values of the ARB Primitive Signals are compared. When an arbitrating device receives another device's ARBx, the ARBx with the numerically lower AL_PA is forwarded, while the ARBx with the numerically higher AL_PA is blocked. Thus, the device with the lower AL_PA will gain control of the Loop first. Once that device relinquishes control of the Loop, the other device can have a chance.
Unlike token-passing schemes, there is no limit on how long a device may retain control of the Loop. This demonstrates the "channel" aspect of Fibre Channel. There is, however, an Access Fairness Algorithm, which prohibits a device from arbitrating again until all other devices have had a chance to arbitrate. The catch is that the Access Fairness Algorithm is optional.
Before the Loop is usable, it must be initialized so that each port obtains an Arbitrated Loop Physical Address (AL_PA), a dynamically assigned value by which the ports communicate. It maps to the lowest byte of the Native Address Identifiers (D_ID and SI_ID). Although the AL_PA is a byte, only 127 values are valid (neutral running disparity). If more than 127 devices are present on the Loop, some will not be able to select an AL_PA and will be forced into non-participating mode. Without getting into all the details of Loop initialization, the basics are as follows.
The LIP Primitive Sequence begins the process. LIP is transmitted by an L_Port after it powers on, or when it detects Loop Failure (loss of synchronization at its receiver). The LIP will propagate around the Loop, triggering all other L_Ports to transmit LIP as well. At this point, the Loop is not usable.
The next major step is to select a Loop master that will control the process of AL_PA selection. This is done by the L_Ports constantly transmitting Loop Initialization Select Master (LISM) frames. The process is designed so that if an Fabric is present, it will become Loop master (by receiving back its own LISM frames), otherwise, the port with the numerically lowest Port Name will win. All other L_Ports propagate the higher priority LISM frames.
The third step is to allow the L_Ports to select an AL_PA. The concept of an AL_PA bitmap is used, where each L_Port selects (and sets) a single bit in the bitmap of a frame originated by the Loop master and repeats the frame back on the Loop. There are 127 available bits, corresponding to the 127 valid AL_PAs. This process is done using four frames, breaking the selection down according to priority. The following table explains:
|Frame||reason||priority / order transmitted|
|LIFA Loop Initialization Fabric Assigned||a certain AL_PA was assigned by the Fabric||1|
|LIPA Loop Initialization Previously Acquired||before this initialization, the L_Port had a valid AL_PA||2|
|LIHA Loop Initialization Hard Assigned||the L_Port has a certain AL_PA it tries to claim||3|
|LISA Loop Initialization Soft Assigned||the L_Port claims the first available AL_PA that is left||4|
So for example, if an L_Port had a valid AL_PA before the Loop began this initialization, it will attempt to reclaim this previously acquired value by looking for that bit to be available in the LIPA frame. If it is, it will set the bit and repeat the frame. If it is not available (already been claimed), the L_Port will wait for the LISA frame to come around and claim one there.
Once the LISA frame has come back to the Loop master, all L_Ports (hopefully) have selected an AL_PA. Two additional frames may be sent by the Loop master, but only if all L_Ports on the Loop support them. The first is the Loop Initialization Report Position (LIRP). As the frame traverses the Loop, each port adds its AL_PA to the end of a list. When done, the relative positions of all L_Ports is known. Finally, the Loop Initialization Loop Position (LILP) frame is transmitted, which simply allows all L_Ports to look at the finished list.
Whether or not LIRP and LILP are used, the Loop master transmits the CLS Primitive Signal to let each port know that the process has finished. At this point, the Loop has finished initializing and ready to be used.
Like most ring topologies, life is made easier if the devices can be connected to a central hub or concentrator. The cabling is easier to deal with, and the hub can usually determine when to insert or de-insert a device. Thus, a "bad" device or broken fibre won't keep the whole network down.
Fibre Channel has hubs as well. Most hubs will simply look for valid signal on a port before it will insert the port in the data path. Some hubs are "smarter", and will provide the user with information on each of its ports, allow the user to transmit from the ports, and be more selective as to when ports are inserted.
The Fabric topology is used to connect many (224) devices in a cross-point switched configuration. The benefit of this topology is that many devices can communicate at the same time; the media is not shared. Of course, it also requires the purchase of a switch.
When the N_Ports log into the Fabric, the Fabric will assign Native Address Identifiers (S_ID). Other functions of the Fabric include a multicast server, broadcast server, alias server, quality of service facilitator, and directory server. Some Fabrics have FL_Ports, allowing Arbitrated Loops to be connected to the Fabric.
Fibre Channel Ports
Fibre Channel defines several types of ports. They can be grouped a couple of ways. First, any port on a node device, e.g., a disk, a PC, is an N_Port as compared with a port on a Fabric, which is an F_Port. At the same time, any port that happens to have Arbitrated Loop capabilities, it is called an L_Port. Combining these groupings, we also have NL_Ports and FL_Ports.
Ports that connect switches together are called E_Ports. They generally do not need to follow Fibre Channel rules and protocols. A port that can act as either an E_Port or an F_Port is called a G_Port. Finally, a G_Port with Loop capabilities, is a GL_Port.
Fibre Channel offers a very wide range of media speeds. One of the goals of Fibre Channel is to allow HIPPI to map to it. HIPPI is a 100MB/s technology, thus Fibre Channel's primary data rate allows for data to travel 100MB/s. After factoring in 8B/10B encoding, frame headers, and other overhead, the transmission speed is 1063 Mb/s. This speed is referred to as full speed. There also exists half speed, quarter speed, and eighth speed. In addition, double and quadruple speeds are defined. The following table illustrates. By far, the most common speed is full speed, with some quarter speed devices also in existence.
|Speed (MB/s)||Speed (Mb/s)||Name|
Despite the name, Fibre Channel can run over both copper and fiber media. The main tradeoffs are that although longer distances can be achieved with fiber, it is more expensive. Speeds up to 100MB/s can run on both copper and fiber; 200MB/s and 400MB/s require fiber media.
For copper, the following cable types are used: video cable, miniature cable, and shielded twisted pair. The most common by far is shielded twisted pair, using a DB-9 connector. For fiber, the choices are: 62.5µm multi-mode, 50µm multi-mode, and single-mode. The SC connector is used. Also for fiber, both long wave and short wave lasers can be used. Short wave seem to be most popular now. The short wave transmitters have the option to implement the open fibre control (OFC). This is a scheme designed to prevent disconnected fibers from continuously transmitting light, as a safety precaution. There is a simple protocol where each transmitter on a link periodically transmits short pulses of light to the other receiver. When the receivers detect this, the transmitters can operate normally. Most devices however, are non-OFC.
The concept of flow control deals with the problem where a device receives frames faster than it can process them. When this happens, the result is that the device is forced to drop some of the frames. Fibre Channel has a built-in flow control solution to this problem.
The idea is simple enough. A device can transmit frames to another device only when the other device is ready to accept them. Before the devices can send data to each other, they must login to each other. One of the things accomplished in login is establishing credit. Credit refers to the number of frames a device can receive at a time. This value is exchanged with another device during login, so each knows how many frames the other can receive. After enough frames have been transmitted and credit runs out, no more frames can be transmitted until the destination device indicates it has processed one or more frames and is ready to receive new ones. Thus, no device should ever be overrun with frames. Fibre Channel uses two types of flow control, buffer-to-buffer and end-to-end.
This type of flow control deals only with the link between an N_Port and an F_Port or between two N_Ports. Both ports on the link exchange values of how many frames it is willing to receive at a time from the other port. This value becomes the other port's BB_Credit value and remains constant as long as the ports are logged in. For example, when ports A and B log into each other, A may report that it is willing to handle 4 frames from B; B might report that it will accept 8 frames from A. Thus, B's BB_Credit is set to 4, and A's is set to 8.
Each port also keeps track of BB_Credit_CNT, which is initialized to 0. For each frame transmitted, BB_Credit_CNT is incremented by 1. The value is decremented by 1 for each R_RDY Primitive Signal received from the other port. Transmission of an R_RDY indicates the port has processed a frame, freed a receive buffer, and is ready for one more. If BB_Credit_CNT reaches BB_Credit, the port cannot transmit another frame until it receives an R_RDY.
End-to-End flow control is not concerned with individual links, but rather the source and destination N_Ports. The concept is very similar to buffer-to-buffer flow control. When the two N_Ports log into each other, they report how many receive buffers are available for the other port. This value becomes EE_Credit. EE_Credit_CNT is set to 0 after login and increments by 1 for each frame transmitted to the other port. It is decremented upon reception of an ACK Link Control frame from that port. ACK frames can indicate the port has received and processed 1 frame, N frames, or an entire Sequence of frames.
Classes of Service
Fibre Channel defines several communication strategies called Classes of service. The Class used greatly depends on the type of data to be transmitted. The major difference between the Classes is the types of flow control used. If two N_Ports are to communicate or if an N_Port is to successfully log into a Fabric, there must be at least 1 common Class of service supported between them, since Sequences and Exchanges must take place using a single Class of service. This information is exchanged during Fabric Login and N_Port Login.
In Class 1, a dedicated connection is established between two N_Ports. Once established, the two N_Ports may communicate using the full bandwidth of the connection; no other network traffic affects this communication. Due to this, frames are guaranteed to arrive in the order in which they were transmitted. In addition, the media speeds must be the same for all links which make up the dedicated connection. Because of the nature of the dedicated connection, there is no need for buffer-to-buffer flow control; the Fabric does not need to buffer the frames as they are routed. Thus, only end-to-end flow control is used in Class 1. Class 1 would be used when the data needs to be continuous and time critical, such as voice or video.
Intermix is an option of Class 1 whereby Class 2 and Class 3 frames may be transmitted at times when Class 1 frames are not being transmitted. The Class 2 and Class 3 frames may or may not be destined to the same N_Port as the Class 1 frames. Both N_Ports as well as the Fabric must support Intermix for it to be used.
Class 2 is referred to as multiplex due to the fact that it is a connectionless Class of service with notification of delivery and non-delivery of frames. Since no dedicated connection needs to be established, a port can transmit frames to and receive frames from more than one N_Port. As a result, the N_Ports share the bandwidth of the links with other network traffic. Frames are not guaranteed to arrive in the order in which they were transmitted, except in the point-to-point or Loop topologies. Also, the media speeds may vary for different links which make up the path. Both buffer-to-buffer and end-to-end flow control are used in Class 2. Class 2 is more like typical LAN traffic, such as IP or FTP, where the order and timeliness of delivery is not so important.
Class 3 is very similar to Class 2. The only exception is that it only uses buffer-to-buffer flow control. It is referred to a datagram service. Class 3 would be used when order and timeliness is not so important, and when the ULP itself handles lost frames efficiently. Class 3 is the choice for SCSI.
Class 4 provides fractional bandwidth allocation of the resources of a path through a Fabric that connects two N_Ports. Class 4 can be used only with the pure Fabric topology. One N_Port will set up a Virtual Circuit (VC) by sending a request to the Fabric indicating the remote N_Port as well as quality of service parameters. The resulting Class 4 circuit will consist of two unidirectional VCs between the two N_Ports. The VCs need not be the same speed.
Like a Class 1 dedicated connection, Class 4 circuits will guarantee that frames arrive in the order they were transmitted and will provide acknowledgement of delivered frames (Class 4 end-to-end credit). The main difference is that an N_Port may have more than one Class 4 circuit, possibly with more than one other N_Port at the same time. In a Class 1 connection, all resources are dedicated to the two N_Ports. In Class 4, the resources are divided up into potentially many circuits. The Fabric regulates traffic and manages buffer-to-buffer flow control for each VC separately using the FC_RDY Primitive Signal. Intermixing of Class 2 and 3 frames is mandatory for devices supporting Class 4.
The idea for Class 5 involved isochronous, just-in-time service. However, it is still undefined, and possibly scrapped altogether. It is not mentioned in any of the FC-PH documents.
Class 6 provides support for multicast service through a Fabric. Basically, a device wishing to transmit frames to more than one N_Port at a time sets up a Class 1 dedicated connection with the multicast server within the Fabric at the well-known address of hex'FFFFF5'. The multicast server sets up individual dedicated connections between the original N_Port and all the destination N_Ports. The multicast server is responsible for replicating and forwarding the frame to all other N_Ports in the multicast group. N_Ports become members of a multicast group by registering with the Alias Server at the well-know address of hex'FFFFF8'. The Class 6 is very similar to Class 1; Class 6 SOF delimiters are the same as used in Class 1. Also, end-to end flow control is used between the N_Ports and the multicast server.
Unlike many LAN technologies that use a fixed six-byte Media Access Control (MAC) address, Fibre Channel uses a three byte address identifier, which is dynamically assigned during Login. N_Ports transmit frames from their own Source_ID (S_ID) to a Destination_ID (D_ID). Addresses in the range of hex'FFFFF0' to hex'FFFFFE' are special, well-known addresses uses for such things as the Fabric, Alias Server, or the Multicast Server. Before Fabric Login, the N_Port's S_ID is undefined: hex'000000'. Hex'FFFFFF' is reserved for broadcast. In a point-to-point topology, Fabric Login will fail of course, and the two ports will simply chose two unique addresses.
Arbitrated Loop devices still use the three byte address identifiers, but also use an Arbitrated Loop Physical Address (AL_PA). AL_PAs are one byte values dynamically assigned each time the Loop is initialized. Once the Loop is initialized and (hopefully) each L_Port has selected an AL_PA, public NL_Ports will attempt Fabric Login. If there is an FL_Port, the Fabric will assign the upper two bytes of the NL_Port's address identifier and usually allow the low byte to be the NL_Port's AL_PA. (If not, the Loop will need to be re-initialized so the NL_Port can select the Fabric assigned AL_PA). If no Fabric exists or if an NL_Port is a private NL_Port (does not login with the Fabric), the upper two bytes of the address identifier will remain '0000', and the lower byte will simply be the NL_Port's AL_PA.
But there still needs to be a way of uniquely identifying a port - even for much of the above initialization to take place. This is accomplished using Name_Identifiers, a fixed 64-bit value. Name_Identifiers are used to uniquely identify nodes (Node_Name), a Port (Port_Name), and a Fabric (Fabric_Name). Name Identifiers are not used to route frames, but are used in mapping to upper layer protocols.
Fibre Channel defines two types of login procedures, Fabric and N_Port. With the exception of private NL_Ports, all other node ports must attempt to log in with the Fabric. This is typically done right after the link or the Loop has been initialized. It consists of the node port transmitting an Fabric Login (FLOGI) frame to the well-known Fabric address hex'FFFFFE'. The normal response is an Accept (ACC) frame from the Fabric back to the node port. Fabric Login accomplishes the following things:
- It determines the presence or absence of a Fabric.
- If a Fabric is present, it provides a specific set of operating characteristics associated with the entire Fabric, including which Classes of service are supported.
- If a Fabric is present, it shall optionally assign or shall confirm the native N_Port Identifier of the N_Port that initiated the Login.
- If a Fabric is not present, an ACC from an N_Port indicates that the requesting N_Port is attached in a point-to-point topology.
- If a Fabric is present, it initializes the buffer-to-buffer credit.
Before a node port can communicate with another node port, it must first perform N_Port Login with that node port. Similar to Fabric Login, the process entails transmitting a PLOGI frame to the destination node port. Again, the normal response is an ACC frame. N_Port Login accomplishes the following things:
- It provides a specific set of operating characteristics associated with the destination N_Port, including which Classes of service are supported.
- Initializes the destination end-to-end credit.
- In point-to-point topology, buffer-to-buffer credit is initialized.
Both Fabric Login and N_Port Login are intended to be long-lived. Once logged in, a device can stay logged in indefinitely, even if it has no further data to transmit at that time.
The easiest way to understand the methods by which information is transmitted over Fibre Channel is by looking at the problem in the form of a hierarchy.
8B/10B Transmission Character
At the lowest level, Fibre Channel uses the IBM 8B/10B encoding scheme. Basically, every byte of data that is to be transmitted is first converted into a 10-bit value called a Transmission Character. Using this encoding scheme has the following benefits:
- improvement of the transmission characteristics of information to be transferred
- provides enough transitions to make clock recovery possible at the receiver
- improves the detection of single and multiple bit errors
- Some Transmission Characters contain a unique bit pattern (comma) to aid in achieving word alignment.
Fibre Channel defines a "1" to simply be the state with more optical power (for optical links), or the state where the "+" pin is more positive than the "-" pin (in the case of copper). The 8B/10B encoding uses the idea of running disparity, which is concerned with the number of 1s and 0s in each Transmission Character. Running disparity is evaluated after the first 6 bits of each Transmission Character and again after the last 4 bits and can be either positive (more 1s than 0s) or negative (more 0s than 1s). It is desirable to try and equalize the number of 1s and 0s over time. Thus, every byte to be transmitted is encoded into one of two 10-bit representations depending on the current running disparity.
As stated, every byte to be transmitted is first converted into a 10-bit Transmission Character. But there are many more possible 10-bit Transmission Characters than are needed to map to particular bytes. Most of the remaining 10-bit encodings are not defined, and only one is used. This is the special K28.5 Transmission Character which contains the "comma", a 7-bit string that cannot occur in any Data Transmission Character. Because of this, the K28.5 is used as a special control character.
All information in Fibre Channel is transmitted in groups of four Transmission Characters called Transmission Words. Some Transmission Words have K28.5 as the first Transmission Character. These are special Transmission Characters called Ordered Sets. Some Ordered Sets mark the beginning and end of frames (frame delimiters). Others convey information in between frames in the form of Primitive Signals (a single Ordered Set) and Primitive Sequences (a stream of the same Ordered Set). Examples of Ordered Sets are: Start of Frame (SOF), End of Frame (EOF), Idle, Receiver_Ready (R_RDY), Loop Initialization Primitive (LIP), Arbitrate (ARB), Open (OPN), Close (CLS), and several others.
Fibre Channel defines a variable length frame consisting of 36 bytes of overhead and up to 2112 bytes of payload for a total maximum size of 2148 bytes. The total size of the frame must be an even multiple of four bytes so that partial Transmission Words are not sent. Between 0 and 3 pad bytes are appended to the end of the payload to satisfy this rule. A Start of Frame (SOF) delimiter and End of Frame (EOF) delimiter mark the beginning and end of each Fibre Channel frame. The Cyclic Redundancy Check (CRC) is the same 32-bit CRC used in FDDI.
A Fibre Channel Sequence is a series of one or more related frames transmitted unidirectionally from one port to another. All frames must be part of a Sequence. Frames within the same Sequence have the same SEQ_ID field in the header. The SEQ_CNT field identifies individual frames within a Sequence. For each frame transmitted in a Sequence, SEQ_CNT is incremented by 1. This provides a means for the recipient to arrange the frames in the order in which they were transmitted and to verify that all expected frames have been received. Multiple Sequences to multiple ports may be active at a time.
A Fibre Channel Exchange is a series or one or more nonconcurrent Sequences between two ports. The Sequences may be in either direction. All Sequences (and therefore all frames) must be part of an Exchange. The originator of the Exchange assigns the OX_ID field. The responder assigns the RX_ID field. As another perspective, one can use the following analogy:
frame ~ word
sequence ~ sentence
exchange ~ conversation
Of course, one main difference is that a Fibre Channel device can "speak" more than one sentence and hold more than one "conversation" at a time.
Other Storage Technologies
If you have questions about storage technologies outside of Fibre Channel, UNH-IOL has other consortia that can meet your needs:
Glossary of Fibre Channel Terms
Accept Link Service reply. Accept is the normal reply to an Extended Link Service request (such as FLOGI) and indicates that the request has been completed.
Acknowledgement Frame. An ACK is used for end-to-end flow control. An ACK is sent to verify receipt of one or more frames in Class 1 and Class 2 Services.
A 3-byte value typically assigned by the Fabric used to address an N_Port. Used in frames in the S_ID (source identifier) and D_ID (destination identifier) fields.
Arbitrated Loop Physical Address. A 1-byte value used in the Arbitrated Loop topology used to identify L_Ports. This value will then also become the last byte of the address identifier for each public L_Port on the loop
Arbitrated Loop Timeout value. Twice the amount of time it would take for a Transmission Word to propagate around a worst-case Loop, i.e. a Loop with 134 L_Ports and 10 km links between each L_Port, with a 6 Transmission Word delay through each L_Port. This value is set at 15 ms.
One of the three Fibre Channel topologies. Up to 126 NL_Ports and 1 FL_Port are configured in a unidirectional loop. Ports arbitrate for access to the Loop based on their AL_PA. Ports with lower AL_PA's have higher priority than those with higher AL_PA's.
Arbitrate Primitive Signal. This Primitive Signal applies only to the Arbitrated Loop topology. It is transmitted as the Fill Word by an L_Port to indicate that the L_Port is arbitrating to access to the Loop.
Buffer-to-buffer credit value. Used for buffer-to-buffer flow control, this determines the number of frame buffers available in the port it is attached to, i.e., the maximum number of frames it may transmit without receiving an R_RDY.
Class 1 Service
A method of communicating between N_Ports in which a dedicated connection is established between them. The ports are guaranteed the full bandwidth of the connection and frames from other N_Ports may be blocked while the connection exists. In-order delivery of frames is guaranteed. Uses end-to-end flow control only.
Class 2 Service
A method of communicating between N_Ports in which no connection is established. Frames are acknowledged by the receiver. Frames are routed through the Fabric, and each frame may take a different route. In-order delivery of frames is not guaranteed. Uses both buffer-to-buffer flow and end-to-end flow control.
Class 3 Service
A method of communicating between N_Ports similar to Class 2 service, except there is no acknowledgment of received frames. Frames are routed through the Fabric as in Class 2, and in-order delivery is not guaranteed. Uses only buffer-to-buffer flow control.
Close Primitive Signal. This Primitive Signal applies only to the Arbitrated Loop topology. It is Primitive Signal is sent by an L_Port which is currently communicating on the Loop (i.e., it has won access to the loop or was opened by another L_Port which had won access to the Loop) to close communication with the other L_Port.
Destination identifier. A 3-byte field in the frame header used to indicate the address identifier of the N_Port the frame is to be delivered to.
The difference between the number of 1's and 0's in a Transmission Character. A Transmission Character with more 1's than 0's is said to have positive running disparity. A Transmission Character with more 0's than 1's is said to have negative running disparity. A Transmission Character with an equal number of 1's and 0's is said to have neutral disparity.
Error Detect Timeout value. A timer used to represent the longest possible time for a frame to make a roundtrip through the Fabric. This value is negotiated at N_Port Login and will typically be on the order of a few seconds. E_D_TOV is used to decide when some particular error recovery action must be taken.
End-to-end credit value. Used for end-to-end flow control, determines the maximum number of frames that may remain unacknowledged.
End of Frame delimiter. This Ordered Set is always the last Transmission Word of a Frame. It is used to indicate that a Frame has ended and indicates whether the Frame is valid or invalid.
The highest level Fibre Channel mechanism used for communication between N_Ports. Exchanges are composed of one or more related sequences. Exchanges may be bidirectional or unidirectional.
One of the three Fibre Channel topologies. In the Fabric topology, N_Ports are connected to F_Ports on a switch. Depending on vendor support, fabric switches may be interconnected to support up to 16 million+ N_Ports on a single network.
Fabric Port Busy Frame. This Frame is issued by the Fabric to indicate that a particular cannot be delivered because the Fabric or the destination N_Port is too busy.
Fibre Channel Arbitrated Loop. Refers to the ANSI FC-AL document which specifies operation of the Arbitrated Loop topology.
Fibre Channel Physical and Signaling Interface. Refers to the ANSI FC-PH document which specifies the FC-0, FC-1, and FC-2 layers of the Fibre Channel protocol. FC-0 Fibre Channel layer 0. Specifies the physical signalling used in Fibre Channel, as well as cable plants, media types, and transmission speeds.
Fibre Channel layer 1. Specifies the IBM patented 8B/10B data encoding used in Fibre Channel.
Fibre Channel layer 2. Specifies the frame format, Sequence/Exchange management, and Ordered Set usage in Fibre Channel.
Fibre Channel layer 3. Specifies services provided for multiple N_Ports in a single node.
Fibre Channel layer 4. Specifies mapping of Upper Level Protocols such as SCSI and IP onto the Fibre Channel Protocol.
The Primitive Signal is used by L_Ports to be transmitted in between Frames. This may be Idle or ARBx, depending on which, if any, L_Ports are Arbitrating for Loop access, and will not necessarily be the same for all L_Ports on the Loop at any given time.
Fabric-Loop port. An F_Port which is capable of supporting an attached Arbitrated Loop. An FL_Port on a Loop will have the AL_PA hex'00', giving the Fabric highest priority access to the Loop. An FL_Port is the gateway to the Fabric for NL_Ports on a Loop.
An NL_Port which is capable of providing certain Fabric services to other NL_Ports on a Loop in the absence of a Fabric. This NL_Port will respond to requests to open communication with AL_PA hex'00', even though it may actually have another value for its AL_PA.
Fabric port. A port on a fabric switch to which N_Ports may be directly connected. An F_Port is uses the address identifier hex'FFFFFE'.
The basic unit of communication between two N_Ports. Frames are composed of a starting delimiter (SOF), a header, the payload, the Cyclic Redundancy Check (CRC), and an ending delimiter (EOF). The SOF and EOF contain the Special Character and are used to indicate where the frame begins and ends. The 24-byte header contains information about the frame, including the S_ID, D_ID, routing information, the type of data contained in the payload, and sequence/exchange management information. The payload contains the actual data to be transmitted, and may be 0-2112 bytes in length. The CRC is a 4-byte field used for detecting bit errors in the received frame.
Fabric Port Reject Frame. This Frame is issued by the Fabric to indicate that delivery of a particular frame is being denied. Some reasons for issuing an F_RJT include: Class not supported; invalid header field(s); and N_Port unavailable.
An Ordered Set transmitted continuously over a link when no data are being transmitted. Idle is transmitted to maintain an active link over a fibre and lets the receiver and transmitter maintain bit, byte, and word synchronization.
A service in which Class 2 and Class 3 frames may be delivered to an N_Port which has a Class 1 dedicated connection open. The Class 2 and 3 frames are delivered during times which no Class 1 frames are being delivered on the connection.
Link Services are facilities used between an N_Port and a Fabric or between two N_Ports and are used to for such purposes as Login, Sequence and Exchange management, and maintaining connections.
Loop Initialization Primitive Sequence. This Primitive Sequence applies only to the Arbitrated Loop topology. It is transmitted by an L_Port to (re)initialize the Loop.
Loop Initialization Fabric Assigned Frame. This is the first Frame transmitted in the Loop initialization process after a temporary Loop master has been selected. L_Ports which have been assigned their AL_PA by the Fabric will select their AL_PA's in this frame as it makes its way around the Loop.
Loop Initialization Hard Assigned Frame. This is the third Frame transmitted in the Loop initialization process after a temporary Loop master has been selected. L_Ports which have been programmed to select a particular AL_PA (if available) by the manufacturer will select their AL_PA's in this frame as it makes its way around the Loop.
Loop Initialization Loop Position Frame. This is the second Frame transmitted in the Loop initialization process after all L_Ports have selected an AL_PA (after LISA has been around the loop). This Frame is transmitted around the Loop so that all L_Ports may know the relative position of all other L_Ports around the Loop. Support for this Frame by an L_Port is optional.
Loop Initialization Previously Assigned Frame. This is the second Frame transmitted in the Loop initialization process after a temporary Loop master has been selected. L_Ports which had an AL_PA prior to the Loop initialization will select their AL_PA's in this frame as it makes its way around the Loop.
Loop Initialization Report Position Frame. This is the first Frame transmitted in the Loop initialization process after all L_Ports have selected an AL_PA (after LISA has been around the loop). This Frame is transmitted around the Loop so that all L_Ports report their relative physical position on the loop. Support for this Frame by an L_Port is optional.
Loop Initialization Soft Assigned Frame. This is the fourth Frame transmitted in the Loop initialization process after a temporary Loop master has been selected. L_Ports which did not select an AL_PA in any of the previous Loop Initialization Frames (LIFA, LIPA, or LIHA) will select their AL_PA's in this frame as it makes its way around the Loop.
Loop Initialization Select Master Frame. This Frame applies only to the Arbitrated Loop topology. It is the first frame transmitted in the initialization process in which L_Ports select an AL_PA. It is used to select a temporary Loop master, or the L_Port that will subsequently initiate transmission of the remaining initialization frames (LIFA, LIPA, LIHA, LISA, LIRP, and LILP).
Loop Port Bypass Primitive Sequence. This Primitive Sequence applies only to the Arbitrated Loop topology. It is transmitted by an L_Port to bypass the L_Port it is directed to. For example, if Port A suspects that Port B is malfunctioning, Port A can send an LPB to Port B so that Port B will only retransmit everything it receives, and will not be active on the Loop.
Loop Port Enable Primitive Sequence. This Primitive Sequence applies only to the Arbitrated Loop topology. It is transmitted by an L_Port to enable an L_Port which has been bypassed with the LPB Primitive Sequence.
Loop port. Generic term for an NL_Port or FL_Port, i.e., any Fibre Channel port which supports the Arbitrated Loop topology.
Loop Port State Machine. This is a state machine maintained by an L_Port to track its behavior through different phases of Loop operation, i.e., how it behaves when it is arbitrating for Loop access, how it behaves when it has control of the Loop, etc.
Link Reset Primitive Sequence. This Primitive Sequence is used during link initialization between two N_Ports in the Point-to-point topology or an N_Port and an F_Port in the Fabric topology. The expected response to a port sending LR is the LRR Primitive Sequence.
Link Reset Response Primitive Sequence. This Primitive Sequence is used during link initialization between two N_Ports in the Point-to-point topology or an N_Port and an F_Port in the Fabric topology. It is sent in response to the LR Primitive Sequence. The expected response to a port sending LRR is Idle.
Mark Primitive Signal. This Primitive Signal applies only to the Arbitrated Loop topology. It is transmitted by an L_Port for synchronization purposes and its use is vendor specific.
Node-Loop port. An N_Port which can operate on the Arbitrated Loop topology.
An L_Port will enter the nonparticipating mode if there are more than 127 devices on a Loop, and it thus cannot acquire an AL_PA. An L_Port may also voluntarily enter the nonparticipating mode if it is still physically connected to the Loop, but wishes not to participate. An L_Port in the nonparticipating mode is not capable of generating Transmission Words on the Loop and may only retransmit words received on its inbound fibre.
Not Operational Primitive Sequence. This Primitive Sequence is used during link initialization between two N_Ports in the Point-to-point topology or an N_Port and an F_Port in the Fabric topology. It is sent to indicate that that transmitting port has detected a link failure or is offline. The expected response to a port sending NOS is the OLS Primitive Sequence.
Node port. A port on a computer, disk drive, etc. through which the device does its Fibre Channel communication.
An 8-byte manufacturer-assigned value which uniquely identifies the N_Port throughout the world.
Offline Primitive Sequence. This Primitive Sequence is used during link initialization between two N_Ports in the Point-to-point topology or an N_Port and an F_Port in the Fabric topology. It is sent to indicate that the transmitting port is attempting to initialize the link, has recognized the NOS Primitive Sequence, or is going offline. The expected response to a port sending OLS is the LR Primitive Sequence.
Open Primitive Signal. This Primitive Signal applies only to the Arbitrated Loop topology. The OPN Primitive Signal is sent by an L_Port that has won the arbitration process to open communication with with one or more other ports on the Loop.
A 4-byte Transmission Word which has the Special Character as its first Transmission Character. An Ordered Set may be a Frame Delimiter, a Primitive Signal, or a Primitive Sequence. Ordered Sets are used to distinguish Fibre Channel control information from data.
The N_Port which originated an Exchange.
Originator Exchange Identifier. A 2-byte field in the frame header used by the originator of an Exchange to identify frames as being part of a particular Exchange.
The normal operating mode for an L_Port on a Loop. An L_Port in this mode has acquired an AL_PA and is capable of communicating on the Loop.
An Ordered Set transmitted repeatedly and used to establish and maintain a link. LR, LRR, NOS, and OLS are Primitive Sequences used to establish an active link in a connection between two N_Ports or an N_Port and an F_Port. LIP, LPB, and LPE are Primitive Sequences used in the Arbitrated Loop topology for initializing the Loop and enabling or disabling an L_Port.
An Ordered Set used to indicate an event. Idle and R_RDY are used in all three topologies. ARB, OPN, CLS, and MRK are used only in the Arbitrated Loop topology.
An Arbitrated Loop which stands on its own, i.e., it is not connected to a Fabric.
An NL_Port which only communicates with other ports on the loop, not with the Fabric. Note that a Private NL_Port may exist on either a Private Loop or a Public Loop.
An Arbitrated Loop which is connected to a Fabric.
An NL_Port which may communicate with other ports on the Loop as well as through an FL_Port to other N_Ports connected to the Fabric.
The N_Port to with which an Exchange originator wishes to communicate.
Responder Exchange Identifier. A 2-byte field in the frame header used by the responder of the Exchange to identify frames as being part of a particular Exchange.
A group of related frames transmitted unidirectionally from one N_Port to another.
Sequence Identifier. A 1-byte field in the frame header used to identify which Sequence of an Exchange a particular frame belongs to.
The N_Port which began a new Sequence and transmits frames to another N_Port.
The N_Port to which a particular Sequence of data frames is directed.
Source Identifier. A 3-byte field in the frame header used to indicate the address identifier of the N_Port the frame was sent from.
Start of Frame delimiter. This Ordered Set is always the first Transmission Word of a Frame. It is used to indicate that a Frame will immediately follow and indicates which class of service the Frame will use.
A special 10-bit Transmission Character which does mot have a corresponding 8-bit value, but is still considered valid. The Special Character is used to indicate that a particular Transmission Word is an Ordered Set. The Special Character is the only Transmission Character to have 5 1's or 0's in a row. The Special Character is also referred to as K28.5 when using K/D format.
A (valid or invalid) 10-bit character transmitted serially over the fibre. Valid Transmission Characters are determined by the 8B/10B encoding specification.
A string of four consecutive Transmission Characters.
Upper Level Protocol. The protocol which runs on top of Fibre Channel through the FC-4 layer. Typical ULPs running over Fibre Channel are Small Computer System Interface (SCSI), Internet Protocol (IP), High Performance Parallel Interface (HIPPI), and Intelligent Peripheral Interface (IPI).
The IBM patented encoding method used for encoding 8-bit data bytes to 10-bit Transmission Characters. Data bytes are converted to Transmission Characters to improve the physical signal such that the following benefits are achieved: bit synchronization is more easily achieved, design of receivers and transmitters is simplified, error detection is improved, and control characters (i.e., the Special Character) can be distinguished from data characters.