Unclear what is required

"Barry Reinhold" <[email protected]> Tue, 30 Nov 2004 14:06:01 -0500
Newsgroups gmane.ietf.rddp
Message-ID <001c01c4d70f$a5733a50$217fa8c0@i8600>
Clause 7 of MPA states:

" The following errors MUST be detected by MPA and the codes SHOULD be
   provided to DDP or other consumer:


       Code Error


       1   TCP connection closed, terminated or lost.  This includes
           lost by timeout, too many retries, RST received or FIN
           received.


       2   Received MPA CRC does not match the calculated value for the
           FPDU.


       3   In the event that the CRC is valid, received MPA marker (if
           enabled) and 'ULPDU Length' fields do not agree on the start
           of a FPDU.  If the FPDU start determined from previous ULPDU
           Length fields does not match with the MPA marker position,
           MPA SHOULD deliver an error to DDP.  It may not be possible
           to make this check as a segment arrives, but the check
           SHOULD be made when a gap creating an out of order sequence
           is closed and any time a marker points to an already
           identified FPDU.  It is OPTIONAL for a receiver to check
           each marker, if multiple markers are present in an FPDU, or
           if the segment is received in order."

I am having a hard time understanding what is "MUST", what is "SHOULD"
and what is "OPTIONAL" for item 3.

Here is how I am taking the above paragraph:

1. A device is not required (MUST) to do anything by item 3.
2. A receiver SHOULD compare a marker to the position shown by the ULPDU
length field of the previous FPDU if a TCP segment has arrived that
fills in a gap.
3. It is optional for all other cases (based on the "or" clause in the
last sentence of item 3).

Hence item 3 sums to a suggestion that markers be compared to FPDU start
based on ULPDU length when filling in a gap created by out of order TCP
segments. 

Is there another take on this?

Barry Reinhold
Lamprey Networks
[email protected]
(603) 868-8411