SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    RE: iSCSI: Flow Control



    > As I understand it, TCP should not have any intelligence
    > of the iSCSI layer above it.  Thus, TCP does not know if
    > the oncoming data is an iSCSI data PDU or a command PDU.
    > If it is receiving a long stream of data, TCP can't tell
    > if it's 1 short command PDU and a very long data PDU, or
    > 100 short command PDU's. 
    
    I agree completely.
    
    > The latter case could overwhelm the
    > SCSI command queue, but still be within the TCP window of
    > the receiving node.  
    
    This I don't understand. The act of TCP receiving data into
    its window (and thus causing the window to shrink) is
    complete independant of the application (aka iSCSI) grabbing
    the data (causing the window to grow). As an extreme example
    a naught initiator sends 1,000 commands down to a target that
    has a command queue depth of 2, will it be overwhelmed?  I think
    not.  A sane implementation of the target will detect that there
    is data on the connection, read a chunk large enough to grab
    the first command and stuff it in the command queue, read the
    next command and stuff it in the command queue, then simply
    waits for one of the commands to finish leaving the other 998
    commands in the TCP receive buffers.  When one of the commands
    completes it sucks in the next command and puts it in the queue.
    
    > That is, unless you want iSCSI to talk
    > to TCP to tell it to close the window.  But that would
    > violate layering principles, I believe.
    
    The above example violates not layering, the TCP window closes because
    the application does not read all of the data because its command
    queue is too small.  Now a clever implementation can do interesting
    tricks in hardware where it copies the data stream straight into
    the command queue based on its interpretation of the data stream.
    The overly clever (and thus dangerous) implementation could also
    play with the window and not open it up until *after* the command
    is executed.  But again this is an implementation hack that 
    saves a copy but then violates layering, but the proposed protocol
    does not violate layering.
    
    Still don't see the issue.
    
    	-David
    	
    
    


Home

Last updated: Tue Sep 04 01:07:10 2001
6315 messages in chronological order