RFC 2143 (rfc2143) - Page 3 of 5


Encapsulating IP with the Small Computer System Interface



Alternative Format: Original Text Document



RFC 2143             Encapsulating IP with the SCSI             May 1997


3.  Link Encapsulation

   The ANSI SCSI standard defines classes of peripherals which may be
   interconnected with the SCSI protocol.  One of these is the class of
   "communication devices" [1].

   The standard defines three message types capable of carrying a
   general-purpose payload across communication devices.  Each of these
   are known as the "SEND MESSAGE" message type, but the size and and
   structure of the message header differs amongst them.  The three
   forms of message header are six (6), ten (10) and twelve (12) bytes
   long.

   It was decided that the ten byte header offers the greatest
   flexibility for encapsulating version 4 IP datagrams for the
   following reasons:

      a. The transfer length field is 16 bits in size which is perfectly
         matched to the datagram length field in IP version 4.
         Implementations of IP will run efficiently as datagrams will
         never be fragmented over SCSI networks.

      b. The SCSI "stream select" field, which was designed to permit
         a device to specify the stream of data to which a block
         belongs, may be used to encode the payload type (in a similar
         manner to the Ethernet frame type field).  For consistency, the
         lowest four bits of the "stream select" field should match the
         set of values assigned by the IEEE for Ethernet protocol types.

   Encapsulating an IP datagram within a SCSI message is
   straightforward:

      +------------------+-----------------------------------+
      | SCSI header      | IP datagram                       |
      +------------------+-----------------------------------+

   The fields of the SCSI header should be completed as follows:

        Byte  0:    0x2A (SEND_MESSAGE(10) opcode)
        Byte  1:    Logical unit number encoded into top 3 bits | 0x00
        Byte  2:    0x00
        Byte  3:    0x00
        Byte  4:    0x00
        Byte  5:    Protocol type encoded into lowest 4 bits | 0x00
        Byte  6:    0x00
        Bytes 7/8:  IP datagram length, big endian representation
        Byte  9:    0x00




Elliston                      Experimental