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:
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:
Both the Initiator and Target modules support almost all features and options specified in the iSCSI Draft 20 protocol. These include:
The features not currently supported are:
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.