Fundamentals of SCSI and iSCSI
SCSI (Small Computer Systems Interface), which is present in all personal, defines an initiator/target client/server relationship that includes addresses, commands, and specified operations. The SCSI model has numerous interfaces, including TCP/IP, fibre channel, directly attached parallel bus, and firewire. Fibre Channel and iSCSI are the two major choices for building out SCSI over a network. Both are present in modern data centers.
The computer world is full of buses. Most people are familiar with the universal serial bus (USB), which works fine for storing photos, and music files, but it is not big enough to support the types of file and data retrieval functions needed in a corporate data center. To support the retrieval of stored data from a disk, group of disks, optic memory array, or tape drives, another type of bus and protocol is required.
Small Computer Systems Interface (SCSI) was originally a proprietary design by Shugart Associates in the 1970s. In 1986 the SCSI (pronounced scuzzy) standard was released by the American National Standards Institute (ANSI), and since then it has evolved through SCSI-1 and SCSI-2, to the current SCSI-3. This white paper will focus on:
Protocol Overview and Role
Parallel Bus Technology
SCSI over Fibre Channel
Commands and Messages
Building an I/O Request
Internet SCSI (iSCSI)
SCSI Protocol Overview and Role
SCSI defines the relationship between initiators (hosts) and targets (disk or tape). The SCSI-3 application resides in the host and provides middle-layer OSI Model (session and transport) services for upper layer file management protocols. Several components and options are defined:
The Software initiator uses code in the OS (kernel-resident device driver) which uses the existing infrastructure. This is the most common type.
The Hardware initiator uses dedicated hardware, typically in combination with firmware running on the hardware to implement SCSI. The hardware is the Host Bus Adapter (HBA), and is more common for servers in data centers.
SCSI targets include the following:
A single disk
Just a Bunch of Disks (JBOD)
RAID - Redundant Array of Independent Disks
Each individual disk is identified in SCSI as a Logical Unit Number (LUN). SCSI is fast (320 Megabytes per second), but limited to 25 meters of cable.
Parallel Bus Technology
The SCSI parallel bus is either narrow (8 bits) or wide (16 bits), with wide used more often in modern systems. Data is sent simultaneously over multiple wires (in parallel, see Figure 2 below).
SCSI is half-duplex meaning data travels in one direction at a time, and only one device can control the bus at one time. A device must assume exclusive control over the bus in order to communicate. Another name for this is simplex communication (Like a Western Union telegram).
The SCSI initiator selects the SCSI target and sends a command to initiate data transfer. At the end of the transfer, the bus is deselected and the bus is free.
Data bits and control bits are sent on separate wires; this is called "out of band" control.
Each SCSI device has a unique Identifier (ID). The initiator is always ID = 7, which is the highest priority. In a SCSI target, in addition to the ID, a LUN then identifies the specific target disk. The process requires an exchange of commands to and from the two addresses, then the transfer of data.
SCSI-3 Architecture Model
Figure 3 represents the SCSI-3 architecture model. The model consists of four layers of functionality (from the bottom of the graphic working up, with number one at the bottom of the graphic and number four at the top).
The physical interconnect layer defines the characteristics of the link between initiator and target.
FC is fibre channel
Serial Storage Architecture (SSA) is common in data centers where scalability is an issue
IEEE 1394 is the Firewire specification
SCSI Parallel Interface (SPI) is in every PC (on the far left side of the graphic)
The transport protocol layer defines session management, which is techno-speak for the rules of the conversation.
SCSI-FCP for fibre channel
Serial Storage Protocol (SSP) for SAS devices
Serial Bus Protocol (SBP) for IEEE 1394
The shared command set layer consists of command sets for accessing storage resources (disk arrays, optic arrays, etc.).
The SCSI Common Access Method (CAM) defines the SCSI drive application programming interface (API). APIs are used by application program developers to insure that the application written has proper access to storage.
In a medium-to-large enterprise data center, there will be a fibre channel fabric. The SCSI initiator and target will communicate over this fabric. SCSI commands, data, and responses are carried in the payload of fibre channel frames. Fibre channel can be described as a very fast "pipe," which never loses any data or becomes congested, that provides a conduit for the SCSI commands and traffic.