SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Comments to draft-ietf-ips-iSCSI-00.txt



    Comments to draft-ietf-ips-iSCSI-00.txt:
    
    * Section 1.2, Concepts:
    "SCSI RPC model" is not defined and I couldn't find it in SAM.
    
    * Section 1.2.1, Layers, last part should say:
    "iSCSI initiators and targets MUST support at least one TCP connection,
    and SHOULD support several connections in a session."
    
    * Section 1.2.2.1 Command numbering
    The section does not specify what the target is to do with command
    numbering.  The iSCSI layer must not deliver commands to the SCSI
    delivery port until all lower numbered commands have been delivered
    to the SCSI delivery port (or something along those lines).
    Also, the section needs to be broken into smaller paragraphs.
    
    * Section 1.2.4, Login:
    "A session is used to identify to a target all the connections with
    a given initiator."
    
    This is not true.  A session is used to identify
    all the connections in a logical connection between the initiator
    and the target.  There could be more than one session between an
    initiator and a target, in which case a session does not identify
    "all" the connections.
    
    * Section 1.2.6 Full feature: should say (somewhere in the middle)
    "If an initiator issues a WRITE command, the initiator must send
    the data, if any, for that command and the target MUST return the
    status and R2T (if any) over the same TCP connection that was used
    to deliver the SCSI command." [ add the text "and R2T (if any)".
    
    Also, this is another paragraph that is too long and should be
    broken into smaller pieces.
    
    * Section 1.2.6 Full feature, tags:
    "Target tags for pending commands are unique LU-wide for
    the session; together with the LUN they form a target-wide unique
    composite tag for a session."
    
    I don't see why this is specified.  The target should be free to
    choose how it wants to allocate Target Tags.  Indeed, in section
    2.19.2 it says "There is no protocol rule about Target Transfer Tag
    but it is assumed that it will be used to tag the response data to
    the target (alone or combination with the LUN)."  I like this latter
    rule better.
    
    * Section 1.2.6 Full feature, unsolicited data:
    "If the amount of data exceeds the amount allowed for unsolicited
    write data, the specific connection MUST be stalled - no new data
    will be sent on the specific connection until initiator receives
    an R2T iSCSI PDU from the target."
    
    Why must the connection be stalled?  If the initiator has sent the
    maximum amount of allowed unsolicited data, the I/O by definition
    becomes a solicited data only I/O, and the unsolicited I/O rules
    apply.  It is undesirable to not be able to send data for other
    I/Os on this connection simply because one I/O has been sent the
    maximum amount of unsolicited data that's allowed.
    
    * Section 2.1.1, F bit:
    The definition of the F bit is wrong.  It must be zero always.
    The algorithm to figure out the particular urgent TCP implementation
    is correctly specified in section 1.2.9.  All the "F" bits in the
    iSCSI headers should be changed to "0" (zero).
    
    * Section 2.1.2 Opcode:
    "The initiator MUST NOT send target opcodes and the target MUST NOT
    send initiator opcodes."
    
    The target should be allowed to "ping" the initiator to see if
    it is still alive.  Also, the target should be able to "logout" with
    the initiator (FC allows this).
    
    * Section 2.1.6 Initiator Task tag
    "To enable gateways to older networks to operate without retaining
    per/LU state" this text should be deleted.  There does not need to
    be a reason to why the target may want to restrict the size of the
    initiator task tag.
    
    * Section 2.1.7 Digests
    There must be a mechanism in the iSCSI header to identify the
    location and lengths of the header and data digests to avoid
    login context lookups for every data PDU - especially if they
    can vary in size.
    
    * Section 2.2.5 Transfer Length
    "Upon completion of a data transfer, the target will inform the
    initiator of how many bytes were actually processed (sent or
    received) by the target."
    
    Should indicate that this is specified via residual counts, not
    actual counts.
    
    * Section 2.3 SCSI response
    The "Basic Residual Count" and the "Bidi Residual Count" fields
    need to be swapped because the Target Task Tag is required in the
    Data PDU (see comment below)
    
    * Sections 2.4 and 2.5 (NOP) should be deleted because they
    duplicate Sections 2.13 and 2.14.
    
    * Section 2.8 SCSI Data PDU
    The field starting at offset 20 needs to be the Target Task Tag
    because if a NOP is to be sent, the target will need the Target
    Task Tag to match it up with an I/O.
    
    The field starting at offset 24 should be called "DataRN/StatRN"
    
    The "iSCSI Status" field should be deleted because it doesn't
    exist in the Status PDU.
    
    * Section 2.8.5 (DataRN)
    "...  for a maximum of 32 incoming data PDUs."
    Section 1.2.2.3 specifies that this is negotiated at login.
    
    * Section 2.13 NOP command
    The NOP command should be allowed to be originated by the target
    to determine if the initiator is still alive and well.
    
    The field starting at offset 20 needs to be called the
    Target Task Tag for those NOPs that are sent in response to a
    Numbered Data PDU. [ Perhaps the initiator should send a NOP
    Response instead of a NOP command in response to a numbered
    data PDU? ]
    
    "unlike the NOP message, NOP has an Initiator Task Tag and can be
    delivered in order."  I have no idea why this is in here.  Only
    commands need to be delivered in order.
    
    "...  the initiator may conclude that there is a problem with the
    connection."  Or, there could be a problem with the target itself...
    
    "... initiator will then close the connection and may try to
    establish a new connection."  will?  does will mean "must" or "may"?
    
    "The NOP command with the P bit not set MAY be used to acknowledge
    data received from a target (data-ack)." May?  what other mechanism
    is there?
    "In this case, the command caries the same Initiator Task Tag as the
    data it acknowledges" it must also carry the Target Task Tag.
    
    "and the CmdRN field MUST be zero. The field ExpStatRN/ ExpDataRN is
    then understood to be ExpDataRN."
    There is no "ExpStatRN/ExpDataRN" field.  They are two separate
    fields in the described header.
    
    * Section 2.13.1 This should be named the "Ping" bit, not Poll.
    
    Section 2.14 NOP Response
    The field starting at offset 20 needs to be called the
    Target Task Tag for those NOPs that are originated by the target
    for the purposes of determining if the initiator is still alive
    and well.
    
    * Section 2.17 Logout command
    The logout command should be allowed to be originated by the target
    to disconnect under error or other conditions.
    
    * Section 2.19 R2T
    "An R2T MUST be answered with one and only one iSCSI Data-out PDU
    with matching Target Task Tag."
    
    The initiator should be allowed to send as many Data PDUs
    as it wants, as long as they are within the range of data requested
    by the R2T.  For example, suppose the R2T was for a 1Meg transfer.
    The initiator must be allowed to send smaller sized Data PDUs so that
    it can interleave commands or other iSCSI messages with the data.
    
    -Matt Wakeley
    Agilent Technologies
    
    


Home

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