| I helped write our hardware specification on this 
issue and going over the specification again just now, I realized that I 
referenced the Internet draft for the definitive description of marker 
insertion. So, I certainly have an interest in getting 
this right.   >> From this text, it is not clear whether 
the two "copies" of the marker are identical copies  
  Pat, you are right, you need to look beyond the 
text that you quoted to get clarity. Some ambiguity is resolved when you realize 
that markers "don't count".     [quote]
The Marker scheme uses payload 
byte stream counting that includes
 every byte placed by iSCSI 
in the TCP stream except for the markers
 themselves. It also 
excludes any bytes that TCP counts but are not
 originated by 
iSCSI.
 
 [end quote]   Thus,   1. Since "counting ... includes every byte ... 
except for the markers themselves," I believe the markers are both 
identical (in particular, the count in the two markers is the same, since we 
don't count the marker bytes).   [quote]Marker is eight bytes in 
length and contains two 32-bit offset fields
 that indicate how 
many bytes to skip in the TCP stream in order to
 find the next 
iSCSI PDU header.
 [end quote]   [quote]
 The marker interval and 
the initial marker-less interval are counted
 in terms of the 
bytes placed in the TCP stream data by iSCSI.
 [end quote]   >> From this text, it is not clear ... 
whether each marker specifies how many bytes to skip from its position in the 
stream. It also isn't entirely clear where the count of bytes to skip starts 
(which is related to the first).    Again the two markers don't matter. 
Thus,   2. The count is how many TCP stream bytes to skip, 
forget about the markers. The definition of "TCP Stream" needs a stretch, but 
between the first and third sections quoted above, I think it is "TCP Stream := 
every byte placed by iSCSI in the TCP stream except for the 
markers themselves and any bytes that TCP counts but are 
not originated by iSCSI".   I had to think a few times about "bytes that TCP 
counts but are not originated by iSCSI", and I can't think of any strange 
cases that leave ambiguity in this definition, but can anyone else? 
   On the other hand if we were to add ""The count of 
bytes begins with the first byte after the Marker", I think there is a 
possibility for confusion unless you again declare "count of bytes" means TCP 
Stream (as defined).   I'm probably too close to this now to render an 
objective opinion on whether ambiguity exists, but I think an example will help, 
and Pat's is as good as any to resolve this particular (possible) ambiguity (in 
her example, I believe both marker copies contain zero).   Onto a very related issue: Our technical team just 
got back from the UNH plugfest and were unable to perform more testing 
on our marker implementation because nobody else at UNH had 
implemented markers yet. We would be very interested in hearing from anyone who 
would like to test against us. Please contact me as a starting point. 
Thanks!   Aloha   Mike Smith CTO, iReady     ----- Original Message ----- 
 Sent: Tuesday, August 06, 2002 4:57 PM Subject: Markers
 I was reading the text of Appendix A and noticed an 
ambiguity.  The text says: The Marker indicates the offset to 
the next iSCSI PDU header. The
 Marker is eight bytes in length 
and contains two 32-bit offset fields
 that indicate how many 
bytes to skip in the TCP stream in order to
 find the next iSCSI 
PDU header. The marker uses two copies of the
 pointer so that a 
marker that spans a TCP packet boundary should
 leave at least 
one valid copy in one of the packets.
 From this text, it is not clear whether the two 
"copies" of the marker are identical copies or whether each marker specifies how 
many bytes to skip from its position in the stream. It also isn't entirely clear 
where the count of bytes to skip starts (which is related to the first). 
 For example, if a PDU starts right after a marker: 
       Next-iSCSI-PDU-start 
pointer - copy #1 Next-iSCSI-PDU-start 
pointer - copy #2
 PDU header start
 Do Copy #1 and Copy #2 both contain 0x00000000, or 
does copy #1 contain 0x00000004 because the packet starts 4 bytes after copy 1 
while copy #2 contains 0x00000000 because the packet starts 0 bytes after copy 2? 
 Since "copy" implies they are the same, I think they 
should both contain 0x00000000.  This could be clarified by adding, "The count of 
bytes begins with the first byte after the Marker." One could also include the 
example above. Regards, Pat
 |