Subject: [rddp] Some questions about marker in MPA

From: Kohta NAKASHIMA <[email-masked]>
Date: Mon, 16 Dec 2002 14:03:47 +0900

Hello,

I have some questions. The questions may be thought to be in the natural 
order of things, but I have no answer for them.

First, if middle boxes modify the TCP stream by changing the segmentation 
and the TCP segments arrive out-of-order, how do I detect nearest DDP header 
by using markers? I know the markers indicate "current address" in TCP 
Sequence Number Space. If the FPDUs are aligned in the TCP segments, I 
can easily detect start of the FPDUs from the FPDUPTRs, because 
(FPDUPTR - "SeqNum of the TCP segment") points to start of FPDU.
But if TCP stream are re-segmented, (FPDUPTR - "SeqNum of the TCP segment") 
doesn't point to start of FPDU but points to start of the TCP segment.
I'd like to know a concrete algorithm how to detect nearest DDP header by 
using markers.
 
Second, why is the interval of markers 512 octets? In this case, length of 
the data between two markers is usually 508 octets. I think it is lukewarm 
value, and I think it is more natural that length of the data between two 
markers is 512 octets because we often use 512 * n octets data such as disk 
block, memory page, and so on. 
I'd like to know the reason why the interval of markers is 512 octets.

Thank you,

Kohta
--
Kohta NAKASHIMA, Grid Computing and Bioinformatics Laboratory,
Fujitsu Laboratories, Ltd.
_______________________________________________
rddp mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rddp

---

From: "Culley, Paul" <[email-masked]>
Date: Mon, 16 Dec 2002 09:14:07 -0600

The presence or absence of a middle box does not change the algorithm (as long as the middle box did not add or subtract bytes from the TCP stream).  

I cannot find where in the MPA spec the words (FPDUPTR - "SeqNum of the TCP segment") appear; perhaps that is the cause of the mis-understanding.  The actual text is:

If the FPDUPTR's value is non-zero, the FPDU Pointer is a 16 bit relative back-pointer. FPDUPTR MUST contain the number of octets in the TCP stream from the beginning of the current FPDU to the first octet of the marker, unless the marker falls between FPDUs. Thus the location of the first byte of the previous FPDU header can be determined by subtracting the value of the given marker from the current byte-stream sequence number (e.g. TCP sequence number) of the first byte of the marker. Note that this computation must take into account that the TCP sequence number could have wrapped between the marker and the header.

An FPDUPTR value of 0x0000 is a special case - it is used when the marker falls exactly between FPDUs.  In this case, the marker MUST be placed in the following FPDU and viewed as being part of that FPDU (e.g. for CRC calculation). Thus an FPDUPTR value of 0x0000 means that immediately following the marker is an FPDU header.

The marker interval was chosen as a fixed 512 bytes because:
1) that resulted in relatively low marker overhead
2) it was easy to locate in the receive stream [(seqnum-startseqnum)mod 512]
3) the interval was small enough to make it likely that any given TCP segment found in common practice contained a marker.

Paul Culley
HP Sr. Fellow
281-514-5543

-----Original Message-----
From: Kohta NAKASHIMA [mailto:[email-masked]]
Sent: Sunday, December 15, 2002 11:04 PM
To: [email-masked]
Cc: Kohta NAKASHIMA
Subject: [rddp] Some questions about marker in MPA

Hello,

 

Thank you,

Kohta