UNH-iSCSI Project overview

iSCSI is a newly-developed IETF (Internet Engineering Task Force) protocol for Storage Area Networking. It is designed to transport SCSI commands and data over an IP network between an Initiator application (client) and a Target device (server).

The UNH-iSCSI project consists of vendor-independent reference implementations of both a software initiator and a software target emulator. The UNH iSCSI Initiator and Target are implemented as independently loadable software modules for the Linux kernel, versions 2.4.18 or later. These modules are coded entirely in "C".

This software conforms to the latest IPS Draft (20) of the IETF proposed standard for iSCSI, and performs extensive checking for conformance to the standard during operation. It supports almost all components of the iSCSI standard, and development is underway to provide support for the few remaining components. A list of the implemented features is given below. Management for these modules is provided through the Linux /proc interface, and future development plans include user-level management tools to utilize this interface in a user-friendly manner. Although these modules have been developed and tested together, they operate independently of one another, and do not have to be used together -- that is, the UNH-iSCSI Initiator is capable of connecting with a target from any vendor, and the UNH-iSCSI Target emulator is capable of accepting connections from any vendor's initiator. Both have been tested extensively with targets and initiators from several vendors.

The UNH-iSCSI Initiator kernel module registers itself with SCSI as a Host Bus Adaptor (HBA). It accepts SCSI commands and data from the Linux SCSI Midlevel, encapsulates them in the iSCSI protocol, and sends them over the standard TCP/IP stack to a remote target.

The Initiator is capable of:

  • Supporting multiple iSCSI sessions
  • Multiple TCP/IP connections per iSCSI session
  • Multiple SCSI LUNs per session.

  • The UNH-iSCSI Target Emulator module establishes itself as a TCP/IP server to accept connections from remote iSCSI Initiators. It is capable of three modes of operation:

  • In Memory mode, all storage data is kept in the memory of the target machine. This data-area is made to appear like a very small disk device to the remote initiator. This mode is used primarily for testing and to study the performance of the iSCSI protocol without the overhead of actual I/O to storage. Of necessity, the amount of storage is severely limited.
  • In File mode, the Target allocates a file on the target host's file system and appears like small disk devices to the remote initiator. This is also primarily a testing mode of operation, but one which allows larger simulated storage devices than the memory mode. Because these simulated storage devices are accessed via the Linux file system, performance is very limited. File mode is the "default" mode of operation.
  • In Device mode, the Target interfaces to devices on the target host via the Linux SCSI subsystem. These devices can be any type of device that has a HBA SCSI driver. To date, most of the testing has been done using HBA fibre channel disks.
  • Both the Initiator and Target modules support almost all features and options specified in the iSCSI Draft 20 protocol. These include:

  • Support for all login negotiations, keys, options via configuration utilities.
  • Discovery sessions
  • Support for CHAP authentication
  • Support for all full-feature-phase operations including:
  • Header and data digests
  • Error recovery at level 0 and 1
  • Multiple sessions
  • Multiple connections per session
  • Multiple LUNs per session
  • The features not currently supported are:

  • Error recovery at level 2
  • Markers
  • Additional Header Segments
  • Task Attributes other than Untagged
  • Ongoing development is planned for adding the missing features and optional authentication methods such as SRP. In addition, further testing and performance tuning is underway, and more user-friendly management tools will be developed. We would also like to develop tools for performance monitoring and reporting, and to experiment with multiple transports such as TCP Off-load Engines (TOEs) and iSCSI Extensions for RDMA (iSER).

    This project is a collaborative effort between the UNH IOL and Hewlett Packard Company in Austin, Texas.