SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    RE: ISCSI: Urgent Flag requirement violates TCP.



    Dave Black wrote:
    > It is not clear to me that the Urgent feature is "required for
    > interoperation or to limit behavior which has potential for
    > causing harm". I'm prepared to be convinced otherwise, and would
    > like to hear from implementers other than Matt on this subject,
    > and specifically comments on his statement that:
    >    "... high speed implementations will require framing in order
    > 	to prevent a massive amount of buffer resources to 'buffer up' TCP
    > 	segments that arrive after a dropped TCP segment."
    
    My apology for taking so long to respond to this request.
    
    I support Matt whole heartedly.  A TCP-Offload-Engine (TOE), a hardware-aid
    TCP implementation doing zero-copy TCP, is essential for Gb-plus Ethernet
    and Fibre Channel and InfiniBand adapters supporting iSCSI over TCP.  Using
    urgent bit to identify the beginning of an iSCSI message enables the TOE to
    parse an incoming TCP/IP segment quickly and deals with out-of-order and
    duplicated frames efficiently. Most arguments against Matt's position were
    based on existing software TCP implementation.  While supporting TCP 100%,
    the TOE adapter does require some changes to the TCP implementation at
    installation. The change is necessary to enable the zero-copy function.
    However, an TOE adapter with its hardware and software will inter-operate
    with any existing TCP implementation on any client or server.
    
    An TOE is a multi-function adapter that supports both TCP/IP and iSCSI.  The
    NFS implementation with UDP or TCP over IP can be supported by a
    scatter/gather DMA list which splits the TCP/IP header from the data payload
    such that the data payload are copied directly from and to the NFS cache
    buffers.  This is the essence of the zero-copy function. To deal with
    out-of-order and duplicated frames, the TOE adapter works with one IP packet
    at a time with a score card that tracks all incoming frames.  The maximum IP
    packet size is 65K.  Of course, some implementations call for "jumbo"
    packets or frames.  Inside each IP packet, the TOE adapter finds the UDP/TCP
    segments.
    
    For iSCSI support, the TOE adapter receives its SCSI requests directly from
    the iSCSI driver instead from a TCP/IP driver.  As a target, the TOE adapter
    passes incoming SCSI commands directly back to waiting application software
    like RAID or tape or JBOD storage devices.  For outgoing frames or packets,
    the TOE adapter creates TCP segments with IP headers.  It will bundle
    several iSCSI PDUs in one TCP/IP packet destined for the same target.  For
    incoming frames, the TOE adapter must know the iSCSI message boundary.  This
    is why the urgent bit is extremely useful.  Without it, the TOE adapter must
    buffer the whole IP packet before it can process an iSCSI header.  While an
    TOE adapter can deal with a 65K IP packet with ease, the "jumbo" frame
    places a large SRAM requirement on the adapter.  Several incoming packets
    from different sources just aggregate the SRAM requirements.  For iSCSI,
    jumbo frames are very useful for clients or servers thousands miles away.
    
    Many objections of the "MUST" word were based on out-of-order delivery of
    SCSI commands.  For outgoing SCSI commands, the TOE adapter will deliver
    them in the same order received from its iSCSI driver.  For incoming SCSI
    commands, an TOE adapter operates in the same manner as current SCSI, 1394,
    and fibre channel adapters, meaning, no guarantee to in-order command
    execution.
    
    For a SCSI adapter lets use an example of command A being followed by
    command B.  If a target gets the command A with bus parity check, it would
    return check status for command A and proceed to accept B happily, even
    there is dependency between command A and B.  Several weeks ago, Bob Snively
    and I posted messages stating that this was OK because if B depended on A,
    all file system software would hold command B until the completion of
    command A.
    
    For a 1394 adapter both command A and B are stored in ORB's.  A target 1394
    device will fetch the ORB's.  Again, after encountering error in fetching
    the ORB for A, a target device is more than happy to proceed to fetch the
    ORB for B.
    
    For a fibre channel adapter, the initiator will send command A and B in two
    separate FCP_CMD frames.  If frame A arrives with bad CRC, a target device
    simply throws the frame away and proceeds with execution of command B, if it
    is arrived with good CRC.
    
    Y.P. Cheng, CTO, ConnectCom Solutions Corp.
    
    


Home

Last updated: Tue Sep 04 01:06:27 2001
6315 messages in chronological order