SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: Concensus Call on Urgent Pointer.



    Daniel Smith wrote:
    > 
    > I'd word it closer to:
    > 
    > "During login, if the target reqests use of the Urgent Pointer (UP) then
    > this should be taken as meaning that the target will operate more
    > efficiently when the UP is used.  The initiator should make an effort to use
    > the UP.  If it is unable (or unwilling, because of user intervention*) to
    > use the UP then it must indicate its non-compliance to the target."
    
    Another approach is to go the pseudo code route, rather than get
    bogged down in English.  The MUSTs and SHOULDs complicate matters,
    so the result isn't really p-code, but does seem to be reasonably
    clear.
    
    I've allowed for a single user "switch" that turns of UP totally
    from either the initiator or the target for all sessions.
    We need some weasel words that allow a more fine-grained implementation
    without removing the user's ability to do away with UP if needed.
    
    TARGET
    
      T-EFFICIENT-SEND, boolean constant
    
         the target can efficently send iSCSI protocol data units with the
         TCP Urgent data feature being used to mark protocol data unit
         boundaries.
    
      T-EFFICIENT-RECEIVE, boolean constant
    
         the target can efficently receive iSCSI protocol data units with
         the TCP Urgent data feature being used to mark protocol data unit
         boundaries.
    
      T-URGENT-ALLOWED, boolean global variable, user settable, default true
    
         the user wishes for the TCP urgent data feature to be used if it
         enhances efficiency
    
      T-URGENT-SEND, boolean per-session variable
    
         if true, the TCP urgent data feature SHOULD be used
         for identifying iSCSI protocol data units when sending data
    
         if false, the TCP urgent data feature MUST NOT be used.
    
      T-URGENT-RECIEVE-HINT, boolean per-session variable
    
         if true, the TCP urgent data feature can be expected with
         received data.
    
         Of course, support for Urgent data is not optional
         with TCP, but this variable MAY be used to implement
         a more efficient handling of this usually rare data.
    
    
    INITIATOR
    
    And similarly for the initiator we define I-EFFICIENT-SEND,
    I-EFFICIENT-RECEIVE, I-WISHES-URGENT, I-URGENT-SEND,
    I-URGENT-RECEIVE-HINT.
    
    
    STATES
    
      Upon login the initiator MUST
    
        I-URGENT-SEND <- false
     
      and then SHOULD send
    
       I-URGENT-RECIEVE-HINT <- false
        if I-URGENT-ALLOWED
          if I-EFFICIENT-SEND
            send message UrgentPointerFromTarget: 1
          endif
          if I-EFFICIENT-RECEIVE
            send message UrgentPointerFromInitiator: 1
          endif
        endif
    
      The target MUST
    
         T-URGENT-SEND <- false
    
      and then SHOULD respond with
    
        T-URGENT-SEND <- false
        if received message UrgentPointerFromTarget: 1
          if T-URGENT-ALLOWED
            if T-EFFICIENT-SEND
              SHOULD send response UrgentPointerFromTarget: 1
              T-URGENT-SEND <- true
            else
              SHOULD send response UrgentPointerFromTarget: 0
            endif
          else
            MUST send response UrgentPointerFromTarget: 0
          endif
        endif
    
        T-URGENT-RECEIVE-HINT <- false
        if received message UrgentPointerFromInitiator: 1
          if T-URGENT-ALLOWED
            if T-EFFICIENT-RECEIVE
              SHOULD send response UrgentPointerFromInitiator: 1
              T-URGENT-RECIEVE-HINT <- true
            else
              SHOULD send response UrgentPointerFromInitiator: 0
            endif
          else
              MUST send response UrgentPointerFromInitiator: 0
          endif
        endif
    
      The initiator then SHOULD set
    
        if received response UrgentPointerFromInitiator: 1
          I-URGENT-SEND <- true
        endif
        if received response UrgentPointerFromInitiator: 0
          I-URGENT-SEND <- false
        endif
        if recieved response UrgentPointerFromTarget: 1
          I-URGENT-RECEIVE-HINT <- true
        endif
        if recieved response UrgentPointerFromTarget: 0
          I-URGENT-RECIEVE-HINT <- false
        endif
    
        if not I-URGENT-ALLOWED and I-URGENT-SEND
          SHOULD Log protocol error
        endif
        if not I-URGENT-ALLOWED and I-URGENT-RECEIVE-HINT
          SHOULD Log protocol error
        endif
    
    The initiator SHOULD use the TCP urgent data pointer feature to
    mark iSCSI PDU boundaries if I-URGENT-SEND is true.  It MUST
    wait until the login process has completed before doing so.
    
    Similarly, the target SHOULD use the TCP urgent data pointer
    feature to mark iSCSI PDU boundaries if T-URGENT-SEND is
    true. It MUST wait until the login process has completed
    before doing so.
    
    The robustness principle applies to received data.  Initiators
    and targets MUST allow TCP segments containing iSCSI PDUs
    delimited with the TCP Urgent Data feature to be correctly
    processed regardless of the value of I-URGENT-RECEIVE-HINT and
    T-URGENT-RECEIVE-HINT respectively.  However, initiators
    and targets SHOULD record the session details and number
    of occurances of this protocol violation.
    
    
    -- 
     Glen Turner                                 Network Engineer
     (08) 8303 3936      Australian Academic and Research Network
     glen.turner@aarnet.edu.au          http://www.aarnet.edu.au/
    --
     The revolution will not be televised, it will be digitised
    


Home

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