Subject: iSCSI Change - New NOP-Out/In text

From: "Julian Satran" <[email-masked]>
Date: Thu, 16 Aug 2001 18:09:03 +0300

Here  is the new NOP-Out/In text (2.12 & 2.13):

1.1  NOP-Out

   Byte /    0       |       1       |       2       |       3       |
      /              |               |               |               |
     |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|
     +---------------+---------------+---------------+---------------+
    0|X|I| 0x00      |1| Reserved (0)                                |
     +---------------+---------------+---------------+---------------+
    4| Reserved (0)  | DataSegmentLength                             |
     +---------------+---------------+---------------+---------------+
    8| LUN or Reserved (0)                                           |
     +                                                               +
   12|                                                               |
     +---------------+---------------+---------------+---------------+
   16| Initiator Task Tag or Reserved (0xffffffff)                   |
     +---------------+---------------+---------------+---------------+
   20| Target Transfer Tag or Reserved (0xffffffff)                  |
     +---------------+---------------+---------------+---------------+
   24| CmdSN                                                         |
     +---------------+---------------+---------------+---------------+
   28| ExpStatSN                                                     |
     +---------------+---------------+---------------+---------------+
   32/ Reserved (0)                                                  /
    +/                                                               /
     +---------------+---------------+---------------+---------------+
   48| Digests if any...                                             |
     +---------------+---------------+---------------+---------------+
     / DataSegment - Ping Data (optional)                            /
    +/                                                               /
     +---------------+---------------+---------------+---------------+

   The NOP-Out with the Initiator Task Tag set to valid value (not the
   reserved 0xffffffff) acts as a "ping command".

   This form of the NOP-Out can be used to verify that a connection is
   still active and all its components are operational. This command MAY
   use in-order delivery or immediate delivery. The NOP-Out may be useful
   in the case where an initiator has been waiting a long time for the
   response to some command, and the initiator suspects that there is some
   problem with the connection.  When a target receives the NOP-Out with a
   valid Initiator Task Tag, it should respond with a Nop-In Response,
   duplicating the data that was provided in the NOP-Out (if any) as much
   as possible.  If the initiator does not receive the NOP-In within some
   time (determined by the initiator), or if the data returned by the
   NOP-In is different from the data that was in the NOP-Out, the initiator
   may conclude that there is a problem with the connection. The initiator
   then closes the connection and may try to establish a new connection.

   A NOP-Out should also be used to confirm a changed ExpStatSN if there is
   no other PDU to carry it for a long time.

   The NOP-Out can be sent by an initiator because of a NOP-In with the
   Target Transfer Tag set to a valid value (not the reserved 0xffffffff).
   In this case the NOP-Out Target Transfer Tag must contain a copy of
   NOP-In Target Task Tag.

1.1.1     Initiator Task Tag

   An initiator assigned identifier for the operation.

   The NOP-Out must have the Initiator Task Tag set to a valid value only
   if a response in the form of NOP-In is requested.
   If the Initiator Task Tag does not contain a valid value, the CmdSN
   field contains as usual the next CmdSN but CmdSN is not advanced and the
   I bit must be set to 1.

1.1.2     Target Transfer Tag

   A target assigned identifier for the operation.

   The NOP-Out MUST have the Target Transfer Tag set only if it is issued
   in response to a NOP-In with a valid Target Transfer Tag, in which case
   it copies the Target Transfer Tag from the NOP-In PDU.

   When the Target Transfer Tag is set, the LUN field MUST be also copied
   from the NOP-In.

1.1.3     Ping Data

   Ping data is reflected in the NOP-In Response. Note that the length of
   the reflected data is limited to 4096 bytes and the initiator should
   avoid sending more than 4096 bytes. The length of ping data is indicated
   by the Data Segment Length.  0 is a valid value for the Data Segment
   Length - and indicates the absence of ping data.

1.2  NOP-In

   Byte /    0       |       1       |       2       |       3       |
      /              |               |               |               |
     |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|
     +---------------+---------------+---------------+---------------+
    0|1|1| 0x20      |1| Reserved (0)                                |
     +---------------+---------------+---------------+---------------+
    4| Reserved (0)  | DataSegmentLength                             |
     +---------------+---------------+---------------+---------------+
    8| LUN or Reserved (0)                                           |
     +                                                               +
   12|                                                               |
     +---------------+---------------+---------------+---------------+
   16| Initiator Task Tag or Reserved (0xffffffff)                   |
     +---------------+---------------+---------------+---------------+
   20| Target Transfer Tag or Reserved (0xffffffff)                  |
     +---------------+---------------+---------------+---------------+
   24| StatSN                                                        |
     +---------------+---------------+---------------+---------------+
   28| ExpCmdSN                                                      |
     +---------------+---------------+---------------+---------------+
   32| MaxCmdSN                                                      |
     +---------------+---------------+---------------+---------------+
   36/ Reserved (0)                                                  /
    +/                                                               /
     +---------------+---------------+---------------+---------------+
   48| Digests if any...                                             |
     +---------------+---------------+---------------+---------------+
     / DataSegment - Return Ping Data                                /
    +/                                                               /
     +---------------+---------------+---------------+---------------+

   When a target receives the NOP-Out with a valid Initiator Task Tag (not
   the reserved value 0xffffffff), it MUST respond with a NOP-In with the
   same Initiator Task Tag that was provided in the NOP-Out Command. It
   SHOULD also duplicate up to first 4096 bytes of the initiator provided
   Ping Data. For such a response, the Target Transfer Tag MUST be
   0xffffffff.

1.2.1     Target Transfer Tag

   A target assigned identifier for the operation.

   A target may issue a NOP-In on its own to test the connection and the
   state of the initiator. If the target wants to test the initiator, it
   sets the Target Task Tag to a valid value (not the reserved 0xffffffff)
   in order to ask for an answer from the initiator. In this case the
   Initiator Task Tag MUST be 0xffffffff and the LUN field MUST contain a
   valid LUN. If the target wants only to test the connection, both tags
   MUST hold the reserved value 0xffffffff and the LUN field is reserved.

   A target may also issue a NOP-In on its own to carry a changed ExpCmdSN
   and/or MaxCmdSN if there is no other PDU to carry them for a long time.

   Whenever the NOP-In is not issued in response to a NOP-Out the StatSN
   field will contain as usual the next StatSN but StatSN for this
   connection is not advanced.

1.2.2     LUN

   A LUN MUST be set to a correct value when the Target Transfer Tag is
   valid (not the reserved value 0xffffffff).

---

From: Sandeep Joshi <[email-masked]>
Date: Thu, 16 Aug 2001 11:39:34 -0400

Julian,

Two comments

(1) Sec 1.1.1 should state that the initiator task tag is also valid 
    when the initiator sends a NOP-Out on its own.
    The word "only" below is misleading (and perhaps misplaced)

  >  if a response in the form of NOP-In is requested.

(2) does "as much as possible" imply zero is value (i.e. duplicate
nothing?)
  >    duplicating the data that was provided in the NOP-Out 
  >    (if any) as much as possible.
   
-Sandeep

---

From: "Ayman Ghanem" <[email-masked]>
Date: Thu, 16 Aug 2001 11:08:59 -0500

From reading the new text, the initiator/target task tags are used to
indicate what the poll-bit used to do. If the task tag is valid, then a
response is requested, otherwise its a one-way message. The way I understand
1.1.1 is that the initiator can send a NOP-Out on its own and set the itt to
valid/reserved value depending on whether it is requesting a NOP-In or not.

-Ayman

> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]]On Behalf Of
> Sandeep Joshi
> Sent: Thursday, August 16, 2001 10:40 AM
> To: Julian Satran
> Cc: [email-masked]
> Subject: Re: iSCSI Change - New NOP-Out/In text
>
>
>
> Julian,
>
> Two comments
>

---

From: "Asai Thambi S P" <[email-masked]>
Date: Fri, 17 Aug 2001 12:57:42 +0530

Sorry for the previous mail, which was sent accidentally.

Julian,

I have some questions.

* Section 1.1  NOP-Out

                                            The NOP-Out may be useful
   in the case where an initiator has been waiting a long time for the
   response to some command, and the initiator suspects that there is some
   problem with the connection. .....
   
   If the initiator does not receive the NOP-In within some
   time (determined by the initiator),

    ? The draft doesn't say what a long time is? 
    
    Section 7.11.1 says as follows:

         The timeout value to be used by a target is outside the scope 
           of this document.  
    and
         The timeout value to be used by an initiator is outside the 
           scope of this document. 

    ? How the initiator/target times out is not defined? Then what that long time refers 
    to?

* Section 1.1.3     Ping Data

    ? The text starts abruptly that ping data is reflected....
       It doesn't say what the ping data is?

- asai.

----- Original Message ----- 
From: Julian Satran <[email-masked]>
To: <[email-masked]>
Sent: Thursday, August 16, 2001 08:39 PM
Subject: iSCSI Change - New NOP-Out/In text

1.1  NOP-Out

   Byte /    0       |       1       |       2       |       3       |
      /              |               |               |               |

1.1.1     Initiator Task Tag

1.1.3     Ping Data

1.2  NOP-In

   Byte /    0       |       1       |       2       |       3       |
      /              |               |               |               |

1.2.2     LUN

---

From: "Asai Thambi S P" <[email-masked]>
Date: Fri, 17 Aug 2001 12:45:54 +0530

I have some questions.

* Section 1.1
    The NOP-Out may be useful in the case where an initiator has been waiting a long time for the
   response to some command, and the initiator suspects that there is some
   problem with the connection.
----- Original Message ----- 
From: Julian Satran <[email-masked]>
To: <[email-masked]>
Sent: Thursday, August 16, 2001 08:39 PM
Subject: iSCSI Change - New NOP-Out/In text

1.1  NOP-Out

   Byte /    0       |       1       |       2       |       3       |
      /              |               |               |               |

1.1.1     Initiator Task Tag

1.1.3     Ping Data

1.2  NOP-In

   Byte /    0       |       1       |       2       |       3       |
      /              |               |               |               |

1.2.2     LUN