SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    RE: ISCSI: More on Urgent pointer



    David,
    
    There are two cases here.  One where the iSCSI proposal is repaired to
    reflect normal operation of TCP and another case where the present proposal
    stands as written.  As written, there is an expectation of there being a
    record mark for every TCP segment that contains the beginning of the first
    PDU as denoted by:
    
      "The result is the TCP urgent pointer will point to the first byte
      of the iSCSI message in the TCP segment."
    
    The wording should be changed to:
    
      If the urgent pointer option is used, the result is the TCP urgent
      pointer MAY point to the first or second byte of the last PDU
      contained within the segment.  For this to occur, single byte sends
      flagged urgent of the first byte of every PDU must be made.
    
    As you have indicated, the first PDU is not possible without violating TCP
    even if within the segment, it would be the last and not the first PDU
    receiving the pointer.  At the very least, as you have indicated, the word
    "will" must be changed to "may" together with this clarification of which
    PDU and byte receives the pointer and how the urgent pointer was flagged.
    
    This 16 bit urgent pointer offset is determined from a single variable.  In
    my view, the accuracy of this variable to an offset conversion is in
    question together with TCP option handling or other factors not fully tested
    to assure a level of reliability required for use of this TCP feature as a
    record mark never required if used as intended as an urgent data pointer.
    The accuracy of this pointer is paramount if used as a means to facilitate
    data placement following a lost segment.  Already there must be extra
    operations to facilitate a pointer to the first or last octet of urgent
    data.
    
    Although the PSH flag has often been explicitly rejected for use as a record
    mark within several RFCs, the urgent pointer has not been given this
    explicit treatment.  I suspect a reason for this obvious omission.  Does the
    urgent pointer offset from the end of the TCP header accurately if the
    option field is used?  In other words is the option length or data offset or
    just the typical header length used to calculate the urgent offset in every
    case.  As as silly side note, with a required use of the urgent pointer,
    jumbo frames can never exceed 65536 in length if containing a PDU beyond
    this range.
    
    With a long history of RPC using a header to determine a record mark, the
    urgent pointer has not acted as an alternative.  As urgent pointer accuracy
    is an unknown, there should be a means to disable this feature should it be
    found not to work for a particular implementation at least.  Should the
    urgent pointer be used as an "occasional" record mark, its use should be
    fully documented with a modified iSCSI-TCP API.  The same level of
    documentation should also be afforded connection allegiance for iSCSI
    recovery.  A protocol does not end with the wire.  Also, as there is limited
    flow control to each target, additional connections to add flow control
    resolution will assure there is no long fat pipes demanding this record
    marking feature anyway.
    
    Doug
    
    
    
    > The discussion on where the Urgent pointer points has
    > been oversimplified.  Returning to Silvano's question:
    >
    > >  if Command A and Command B are transmitted in the same
    > > segment, do you care to specify if the urgent pointer points to the
    > > first or second command?
    >
    > The Urgent pointer will definitely not point to the first
    > command because both commands are in the same segment and
    > the Urgent pointer is coalesced by the sending TCP.  It
    > might point to the second command, or it might point to
    > a command in a future segment that has not arrived (if the
    > future command was queued before the segment containing
    > A and B was sent).  iSCSI cannot be any more specific
    > than this, because to do so (e.g., always require the
    > Urgent pointer to point within the segment or to the
    > first command within the segment) would violate RFC 793.
    >
    > I think Matt and Doug are talking past each other in part
    > by assigning different meanings to the term "record mark".
    > Doug appears to be using the term "record mark" to refer
    > to something that marks every record boundary between
    > SCSI commands, allowing any command to be recovered from
    > any point in the stream based solely on knowing where its
    > "record mark" is.  The Urgent pointer cannot do this (e.g.,
    > the above paragraphs describe a counter-example with two
    > record boundaries and only one Urgent pointer).  Matt seems
    > to have used the term "record mark" to refer to something
    > that marks a record boundary somewhere (in the hope that
    > his implementation will find the boundary to be useful).
    >
    > I will again note that concrete indications from implementers
    > of how much of a difference this makes in specific scenarios
    > and how often those scenarios occur/can be expected to occur
    > would be useful.
    >
    > Thanks,
    > --David
    >
    > ---------------------------------------------------
    > David L. Black, Senior Technologist
    > EMC Corporation, 42 South St., Hopkinton, MA  01748
    > +1 (508) 435-1000 x75140     FAX: +1 (508) 497-8500
    > black_david@emc.com       Mobile: +1 (978) 394-7754
    > ---------------------------------------------------
    >
    >
    
    


Home

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