SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: Unsolicited data



    Robert,
    
    The warning is not wrong. Variable length unsolicited data might be a
    legitimate requirement is some applications.
    And a clever target can take care of that by issuing an R2T "in advance"
    and fill the gap (if any) later.
    
    However in order to let only consenting initiators and targets do this I
    will add the following text to 2.3.5
    
       If the Expected Data Transfer Length is higher than the FirstBurstSize
       (the negotiated maximum amount of unsolicited data the target will
       accept) the initiator SHOULD send the maximum size of unsolicited data.
       The target MAY terminate in error a command for which the Expected Data
       Transfer Length is higher than the FirstBurstSize and for which the
       initiator sent less than FirstBurstSize unsolicited data.
    
     In addition 2.4.3 reads:
    
       This field contains iSCSI service response.
    
       Valid iSCSI service response codes are:
    
          0x00 - Command Completed at Target
          0x01 - Target Failure
          0x02 - Delivery Subsystem Failure
          0x03 - Unsolicited data rejected
          0x04 - Not enough unsolicited data
          0x05 - Command in progress
          0x80-0xff - Reserved for Vendor-Unique Responses
    
       N.B. Response code 0x04 must be used only if the target does not support
       output (write) operations in which the total data length is higher than
       FirstBurstSize but the initiator sent less than first burst size and
       out-of-order R2Ts can't be used.
    
       The Response is used to report a Service Response. The exact mapping of
       the iSCSI response codes to SAM service response symbols is outside the
       scope of this document.
    
       Certain response codes MUST be associated by the target with a Check
       Condition Status as outlined in the next table:
    
       +--------+------------------------------+---------------------------+
       | Code   | Reason                       | with SCSI CHECK CONDITION |
       +--------+------------------------------+---------------------------+
       |0x01    | Target Failure               | ASC = 0x44 ASCQ = 0x00    |
       +--------+------------------------------+---------------------------+
       |0x02    | Delivery Subsystem Failure   | ASC = 0x47 ASCQ = 0x03    |
       +--------+------------------------------+---------------------------+
       |0x03    | Unsolicited data rejected    | ASC = 0x49 ASCQ = 0x00    |
       +--------+------------------------------+---------------------------+
       |0x04    | Not enough unsolicited       | ASC = 0x49 ASCQ = 0x00    |
       +--------+------------------------------+---------------------------+
       |0x05    | SNACK rejected               | ASC = 0x47 ASCQ = 0x03    |
       +--------+------------------------------+---------------------------+
    
       As listed above, each defined response code MUST be used (under the
       conditions described in the 'Reason' field), only when the corresponding
       SCSI CHECK CONDITION is signaled, to convey additional protocol service
       information.  A SCSI CHECK CONDITION with the ASC and ASCQ values as
       tabulated MUST be signaled by iSCSI targets for all the instances in
       this document referring to usage of one of the above defined response
       codes.
    
       Please note that a response of "Command Completed at Target" may also be
       associated with an error status.
    
       The warning will now read:
    
    1.1  Unsolicited data and performance
    
       Unsolicited data on write are meant to reduce the effect of latency on
       throughput (no R2T is needed to start sending data).  In addition
       immediate data are meant to reduce the protocol overhead (both bandwidth
       and execution time).
    
       However negotiating an amount of unsolicited data for writes and sending
       less than the negotiated amount when the total data amount to be sent by
       a command is larger than the negotiated amount may negatively impact
       performance and may not be supported by all the targets.
    
       Regards,
       Julo
    
    "Robert D. Russell" <rdr@mars.iol.unh.edu> on 19-07-2001 20:59:22
    
    Please respond to "Robert D. Russell" <rdr@mars.iol.unh.edu>
    
    To:   Julian Satran/Haifa/IBM@IBMIL
    cc:   ips@ece.cmu.edu
    Subject:  Unsolicited data
    
    
    
    
    
    Julian:
    
    The warning in section 8.6 of draft 06-99 still does not solve the
    problem and is in fact wrong.  It now reads:
    
      "However negotiating an amount of unsolicited data for writes and
       sending less than the negotiated amount when the total data amount to
       be sent by a command is larger than the negotiated amount may
       negatively impact performance as the targets will not be able to ask
       for the remainder of the data."
    
    The problem is, even if the initiator DOES send the full negotiated
    amount, the target does NOT know this in advance and therefore cannot
    send out the R2T for the rest until getting the unsolicited data PDU
    with the F bit set to 1.  In other words, even the very best
    implementation of an initiator does NOT solve the problem -- the target
    still does NOT know what is coming because the initiator can NOT tell him.
    Performance is ALWAYS impacted, regardless of what the initiator does.
    
    The simplest solution would be to REQUIRE the initiator to send
    the negotiated amount (after all, if he doesn't want to send that much
    every time then why did he negotiate that much?).  Then the target
    will know, in advance, what is coming and send out the R2T for the
    rest of the data WITHOUT WAITING!  This is where the performance gain
    is to be found.
    
    (In all of the above discussion I am assuming the Expected Transfer
    Length is greater than the First Burst Size.  The acutal requirement
    for sending unsolicited data is that the initiator be required to
    send min(Expected Transfer Length, First Burst Size) as unsolicited
    data if unsolicited data has been negotiated.)
    
    Thanks,
    
    Bob Russell
    InterOperability Lab
    University of New Hampshire
    rdr@iol.unh.edu
    603-862-3774
    
    
    
    
    
    


Home

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