Outlining iSCSI

This post will be exploring iSCSI protocol, which allows a server to act as a data storage center accessible through existing TCP/IP protocols and, therefore, around the world.  A follow-up will be posted detailing installation instructions for Linux, using CentOS.

1.  The Protocol: General Overview

Initiator

This is the iSCSI client machine.  It is granted block level access to the iSCSI devices on the storage server.

Target

The term for the iSCSI server. This is the machine with the data to be accessed remotely, and with the iSCSI server protocols set up.

Discovery & Discovery Methods

For our purposes, static target addressing is likely the simplest route.  For scalability however, there is also the iSNS or Internet Storage Name Service standard which will likely be detailed in a later posting.  In short, iSNS servers add another layer of protocols that allows for centralized storage of iSCSI server addresses and also manages iSCSI client requests of those servers.

Details here: http://en.wikipedia.org/wiki/Internet_Storage_Name_Service

2.  The Protocol: Basic Technical Terminology & Concepts

SCSI Layer

The SCSI Layer builds/receives SCSI Command Descriptor blocks (CDBs), the data structures used to contain the command parameters that the Initiator Node sends to a Target Node. It passes/receives them to/from the iSCSI layer.

iSCSI Layer

The iSCSI layer receives both CDBs (SCSI commands to SCSI devices, AKA Logical Units) and data from the SCSI layer. It then processes these commands, combines them with its own instructions and packages them into a PDU, or Protocol Data Unit. These messages define how iSCSI nodes communicate.

iSCSI Nodes

Each iSCSI node represents a machine sending a request to a remote server (Initiator Node) or receiving one from from a remote machine (Target Node).  They are identified by iSCSI Names, which allows for flexibility in IP addressing.  Simply put, each node may have many IP addresses, and each IP address may have many nodes.

Network Entity

After the iSCSI layer has created a PDU, it must establish a connection with the remote machine.  This is the simplest concept to understand: A Network Entity is a device or gateway that is accessible through the internet (or, more literally, from the IP network).

Network Portal

Specifically, the iSCSI layer will use a Network Portal, a component of a Network Entity with a TCP/IP address, to send its PDUs.  In more common terminology, this would be a machine connected to a LAN, with the LAN itself being the Network Entity and the machine (or switch/router) being the Network Portal.

3. Conclusion

iSCSI protocol acts like a layer between a server using SCSI standards and the machine requesting the data stored on the server. In technical terms, the SCSI Layer builds/receives SCSI CDBs and passes/receives them to/from the iSCSI layer which, in turn, builds/receives iSCSI PDUs and relays/receives them through TCP to/from a node.

The next step will be an investigation of the Open-iSCSI project, and a test implementation.

References:

RFC 3720

http://www.howtoforge.com/iscsi_on_linux

About these ads