SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: iSCSI : Reject PDU Concerns.



    
    
    Santosh,
    
    my answers in text
    
    Julo
    
    Santosh Rao <santoshr@cup.hp.com> on 18/01/2001 23:53:38
    
    Please respond to Santosh Rao <santoshr@cup.hp.com>
    
    To:   IPS Reflector <ips@ece.cmu.edu>
    cc:
    Subject:  iSCSI : Reject PDU Concerns.
    
    
    
    
    Ref : Section 2.19 (Reject PDU), Section 5.5 (Digest Errors)
    
    Issue :
    =====
    1) Reject PDU must return an Initiator Task Tag in the Reject PDU
    header, which provides the initiator sufficient context to lookup the
    outbound exchange that was transmitted.
    
    <js> reject PDU can have a multitude of causes and those are/will be
    detailed to certain level
    (not too much.  Whenever the Initiator Task Tag is available and relevant
    it can be read from the returned information. However I am still looking to
    what it would take to get it back into the reject PDU itself </js>
    
    2) An error_byte field should be considered for inclusion in the Reject
    PDU which contains the byte offset of the errant byte[or word] in the
    received header/payload that caused the target to send a Reject response
    to the command.
    
    This is a simple solution that provides for quick fault isolation and
    root cause of the reason for the reject. This also rids the Reject PDU
    of any detailed elaboration of reason codes meant to allow root cause of
    the reason for the reject.
    
    <js> that is no big help since there can be more than one error and it
    helps mostly in debugging. For implementation errors in the target and/or
    initiator I am sure the protocol analyzer will be happy to help but running
    implementation should not be burdened with. For those that are running
    errors on good implementations we will provide some details when necessary
    </js>
    
    3) The Reject PDU should only be used for " Format Error" since the
    Reject mechanism  is a per-task error recovery to deal with header
    format problems.
    "Digest Error" handling is too complex dealing with too many situations.
    Digest error recovery should be simplified to a connection level error
    recovery which involves Logout or connection close/re-start.
    
    The current digest recovery is a ping-pong as follows :
    - Target sends REJECT
    - Initiator on seeing REJECT with "Digest Error" sends Logout
    - Target sends Logout response.
    (the spec is not clear on who drives the connection close. does the
    initiator close the connection on receiving logout response, or does the
    target close connection and send logout reponse on another connection
    ??).
    
    The above procedure is quite convoluted and the followinf simplification
    should be considered :
    - On a digest error, target sends Logout, indicating appropriate reason
    code.
    - Target follows up the Logout with a TCP connection close.
    
    <js> No. Command Response flow follows a regular client-server pattern and
    I am
    not willing to consider all the consequences of transforming it into a
    "peer to peer" </js>
    
    4) There is no value add in expecting a logout response on a logout
    which is intended to close a connection and is sent on the same
    connection. The logout can be followed up with a connection close.
    
    <js> That can be done at extreme anyhow. Logout is a late addition to this
    protocol  mainly to clean-up a failing connection before recovery. Logout
    response is there for symmetry and convenience. Even if the target follows
    logout with a connection close - the response can get to the initiator and
    recovery may proceed faster that in a complete failure in which it would
    have to wait for a timeout </js>
    
    Regards,
    Santosh
    
    
    
    
    
    
    
    


Home

Last updated: Tue Sep 04 01:05:48 2001
6315 messages in chronological order