SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    RE: iscsi : numerical negotiation wording is ambiguous



    Excerpt of message (sent 3 October 2001) by Julian Satran:
    > An example:
    >  08.txt logic
    > i->t DataPDULength=16k
    > t->i DataPDULength= 24k
    > 
    > Selected value is 16k 
    > 
    > i->t DataPDULength=16k
    > t->i DataPDULength= 8k
    > 
    > Selected value is 8k
    > 
    > t->i DataPDULength=16k
    > i->t DataPDULength= 24k
    > 
    > Selected value is 16k 
    > 
    > t->i DataPDULength=16k
    > i->t DataPDULength= 8k
    > 
    > Selected value is 8k
    > 
    > -----
    > 
    > Responder selects logic
    > 
    > i->t DataPDULength=16k
    > t->i DataPDULength= 24k
    > 
    > Error - Initiator Reject - Closes connection
    > 
    > i->t DataPDULength=16k
    > t->i DataPDULength= 8k
    > 
    > Selected value is 8k
    > 
    > t->i DataPDULength=16k
    > i->t DataPDULength= 24k
    > 
    > Error Target has to terminate with parameter error
    > 
    > t->i DataPDULength=16k
    > i->t DataPDULength= 8k
    > 
    > Selected value is 8k
    
    In most protocols, "responder selects" is used.  And the rule is that
    the responder MUST respond with a value acceptable to both sides.
    
    Therefore, if the negotiation rule for DataPDULength is to pick the
    smaller of the two values preferred by the two sides, your first and
    third examples would be defective implementations.  Often, protocol
    specs don't say what to do with defective implementations; a typical
    answer is to terminate the conversation, which is a sensible answer.
    Sending rejects is not that useful for defective implementations,
    since there is no reason to assume that they will all of a sudden
    start to act correctly.  Also, it is useful to build in protocol
    mechanisms for bit errors, memory errors, dropped packets, etc. -- but
    it is generally NOT useful to build mechanisms that apply only when
    the other side has a software bug.  I agree with Deva that the
    appropriate response to a protocol violation is to terminate the
    conversation. 
    
    So for "responder selects" examples 1 and 3 should have read like
    this:
    
    i->t DataPDULength=16k
    t->i DataPDULength= 16k		(t wants 24 but 16 is the agreed value)
    
    ...
    
    t->i DataPDULength=16k
    i->t DataPDULength= 16k		(i wants 24 but 16 is the agreed value)
    
         paul
    


Home

Last updated: Wed Oct 03 15:17:26 2001
7007 messages in chronological order