Subject: iSCSI: Marker negotiation - draft 11

From: Michael Schoberg <[email-masked]>
Date: Tue, 12 Mar 2002 11:11:52 -0600

A.2  Initial Marker-less Interval
 
           To enable the connection setup including the login phase
negotiation, 
           marking (if any) is started only at the first marker interval
after 
           the end of the login phase. However, in order to enable the
marker 
           inclusion and exclusion mechanism to work without knowledge of
the 
           length of the login phase, the first marker will be placed in the
TCP 
           stream as if the Marker-less interval had included markers.
 
           Thus all markers appear in the stream at locations conforming to
the 
           formula: [(MI + 8) * n - 8] where MI = Marker Interval, n =
integer 
           number.
 
           As an example if the marker interval is 512 and the login ended
at 
           byte 1003 (first iSCSI placed byte is 0) the first marker will be

           inserted after byte 1031 in the stream. 

The formula doesn't make sense to me.  An interval of 512 = 2048 bytes.
Wouldn't the first marker would be placed around byte 2048 instead of 1032?

A.3.2   OFMarkInt, IFMarkInt
 
           Use: IO
           Senders: Initiator and Target
           Scope: CO
 
           Offering:
 
           OFMarkInt=<integer-from-1-to-65535>[,<integer-from-1-to-65535>] 
           IFMarkInt=<integer-from-1-to-65535>[,<integer-from-1-to-65535>]
 
           Responding:
 
           OFMarkInt=<integer-from-1-to-65535>|Reject
           IFMarkInt=<integer-from-1-to-65535>|Reject
 
           OFMarkInt is used to set the interval for the initiator to target

           markers on the connection.  IFMarkInt is used to set the interval
for 
           the target to initiator markers on the connection.
 
           For the offering the initiator or target indicates the minimum to
max-
           imum interval (in 4-byte words) it wants the markers for one or
both
           directions. In case it only wants a specific value, only a single

           value has to be specified. The responder selects a value within
the 
           minimum and maximum offered or the only value offered or
indicates 
           through the xFMarker key=value its inability to set and/or
receive 
           markers. When the interval is unacceptable the responder answers
with 
           "Reject".  Reject is resetting the marker function in the
specified 
           direction (Output or Input) to No.
 
           The interval is measured from the end of a marker to the
beginning of 
           the next marker. For example, a value of 1024 means 1024 words
(4096 
           bytes of iSCSI payload between markers). 
 
           The default is 2048.

Why allow for intervals as small as 4-bytes on markers?  Is a range of
values really necessary?
 
I: OFMarker=yes | IFMarker=yes | OFMarkInt=1,512 | IFMarkInt=1,512
T: OFMarker=yes | IFMarker=yes | OFMarkInt=1 | IFMarkInt=1
 
(BTW: Why was the above naming chosen over: ITMarker, TIMarker, ITMarkInt,
TIMarkInt.  OF & IF prefixes don't seem intuitively perspective-obvious.)
 
Instead of offering a range (which seems kind of unnecessary), how about
offering only the value the entity wishes to receive?  Example:
 
I: TIMarker=yes | TIMarkInt=512 | ITMarker=yes | ITMarkInt=0
T: TIMarker=yes | TIMarkInt=512 | ITMarker=yes | ITMarkInt=2048

The draft says "Default is 2048", how does that get negotiated?
 
I: OFMarker=yes | IFMarker=yes
T: OFMarker=yes | IFMarker=yes
 
Will the above negotiate the default OF & IF Marker Intervals?
 
Also, section 9.10.4 does not explicitly say that only a parameter
negotiated by the initiator may be returned in a target's response.  So
would this be possible?
 
I: OFMarker=yes | IFMarker=yes | OFMarkInt=1,512
T: OFMarker=yes | IFMarker=yes | OFMarkInt=1 | IFMarkInt=1

---

From: "John Hufferd" <[email-masked]>
Date: Tue, 12 Mar 2002 10:44:35 -0800

512+8+512=1032 (-1 since it starts at 0) = 1031.

...the first marker will be placed in the TCP stream as if  the Marker-less
interval had included markers.

.
.
.
John L. Hufferd
Senior Technical Staff Member (STSM)
IBM/SSG San Jose Ca
Main Office (408) 256-0403, Tie: 276-0403,  eFax: (408) 904-4688
Home Office (408) 997-6136, Cell: (408) 499-9702
Internet address: [email-masked]

Michael Schoberg <[email-masked]>@ece.cmu.edu on 03/12/2002
09:11:52 AM

Sent by:    [email-masked]

To:    "IPS Reflector (E-mail)" <[email-masked]>
cc:
Subject:    iSCSI: Marker negotiation - draft 11

           length of the  login phase, the first marker will be placed in
the TCP

            Thus all markers appear in the stream at locations conforming
to the
           formula: [(MI +  8) * n - 8] where MI = Marker Interval, n =
integer
            number.

            As an example if the marker interval is 512 and the login ended
at
           byte 1003  (first iSCSI placed byte is 0) the first marker will
be
           inserted after  byte 1031 in the stream.

The formula doesn't make sense to me.  An  interval of 512 = 2048 bytes.
Wouldn't the first marker would be placed  around byte 2048 instead of
1032?

            Use: IO

            Offering:

            Responding:

            OFMarkInt is used to set the interval for the initiator to
target
           markers on the  connection.  IFMarkInt is used to set the
interval for
           the target to  initiator markers on the connection.

            For the offering the initiator or target indicates the minimum
to  max-
           imum  interval (in 4-byte words) it wants the markers for one or
both
           directions.  In case it only wants a specific value, only a
single
           value has to be  specified. The responder selects a value within
the
           minimum and  maximum offered or the only value offered or
indicates
           through the  xFMarker key=value its inability to set and/or
receive
           markers. When  the interval is unacceptable the responder
answers with
           "Reject".   Reject is resetting the marker function in the
specified
           direction  (Output or Input) to No.

            The default is 2048.