A Conceptual Overview of iSCSI

4
At this point, the terminology may be getting a bit confusing. The confusion results from the use of
2 previously separate technologies (mass storage and networking) by a single subsystem (iSCSI).
From a mass storage perspective, transport drivers such as Parallel SCSI, Fibre Channel, and
iSCSI transmit SCSI operations. But for networking, the Transport Layer (TCP) is a layer of the
network stack, not the mass storage transport driver. A mass storage host refers to an initiator;
however, a network host is any connectivity endpoint. Servers are typically host systems, but SCSI
servers are iSCSI targets. For these reasons, in any discussion about iSCSI, you must be aware of
the context in which terms are used.
In Figure 2, from an application on the initiator side (Host A), mass storage I/Os are performed
through a variety of system calls. When these I/Os reach the SCSI Protocol layer, device specific
SCSI Command Descriptor Blocks (CDBs) are constructed to perform the requested operation. A
host memory buffer descriptor for transmission or receipt of data (if necessary) is constructed. The
SCSI info is then passed to the iSCSI Initiator Protocol layer where iSCSI constructs a Protocol
Data Unit (PDU) containing the CDB and SCSI data (if data is to be transmitted/written). The PDU
is then passed to the TCP/IP layer, where packetization for TCP segments and IP datagrams is
performed. Next, the IP datagram is passed to the link layer, where Ethernet frame packetization is
performed. Finally, the Ethernet frames are placed on the network.
When the target side (Host B) receives Ethernet frames, it will remove the frame encapsulation and
pass the results up to the TCP/IP Protocol Layer. The IP protocol will remove the IP datagram
encapsulation, and the TCP Protocol will remove the TCP segment encapsulation, leaving a PDU to
be passed up to the iSCSI Target Protocol Layer. The iSCSI Target Protocol Layer will remove the
SCSI CDB and data (if present) from the PDU and pass them to the SCSI Target Layer for
interpretation. Finally, the requested mass storage operation will be performed at the SCSI Target
Layer.
The operations described in the example above have been greatly simplified. The important thing
to note is that each layer of the stack, on either the initiator or the target side, is not dependent on
any layer above it in the stack. Functionality defined at the lower levels of the stack will continue to
work as defined, regardless of the protocol used in the upper layers of the stack. In effect, existing
conformant network functionality is not impacted by the addition of iSCSI.
3. Hardware/Software Separation
At any stack layer below the application layer on Host A in Figure 2, the protocol may be
implemented in hardware. Hardware is meant to include tangible components as well as the
firmware that runs on those components. Similarly, at any stack layer below the actual SCSI logical
units on Host B, the protocol implementation may be in hardware. Layers below the first hardware
implementation in either stack must also exist in hardware.
Hardware currently available for offloading protocol processing include
Network Interface Cards (NICs) for offloading the Physical and Data Link Layer
TCP Offload Engines (TOE cards) for offloading TCP, IP, and the Physical and Data Link
Layers
iSCSI Host Bus Adapters (iSCSI HBAs) for offloading the iSCSI, TCP, IP, and the Physical
and Data Link Layers
NICs, TOE cards, and iSCSI HBAs may be used on the initiator or target side of the connection.
There is no iSCSI requirement that corresponding layers of the stack on the initiator or target side
both be implemented in hardware/firmware or software. An example would be a target that uses a
NIC and an initiator that uses an iSCSI HBA.