Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

From: "Culley, Paul" <[email-masked]>
Date: Fri, 16 Jan 2004 14:27:43 -0600

Below...

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----
From: [email-masked] [mailto:[email-masked]] On Behalf Of
Barry Reinhold
Sent: Friday, January 16, 2004 1:09 PM
To: RDDP
Subject: [rddp] DDP segment sequences for Untagged DDP message

So, is there agreement, for the sequences that follow, that the
specified "result" given below is the correct (and desired?) behavior as
defined by the 01 draft.

Untagged DDP Segment Sequences:

1. QN = 0, MSN = 1, MO = 100 L = 1 Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 0   L = 0 Payload = 100 bytes
Result: DDP Message (bytes 0-200) is delivered to ULP
[prc] yes

1. QN = 0, MSN = 1, MO = 100, L = 0, Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 0,   L = 1, Payload = 100 bytes
Result: ULP sent Error type=Untagged Buffer Error, Error Code=Invalid MO
[prc] No, the receiver will place both segments, but inform the ULP that
only 100 bytes was delivered, ending at MO=99.  No error should be
detected or reported, unless the receiver's buffer was not large enough
to hold the second 100 bytes.

1. QN = 0, MSN = 1, MO = 0, L = 0, Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 0, L = 1, Payload = 100 bytes
Result: DDP Message (bytes 0-100) is delivered to ULP
[prc] yes, but it is not certain which segment ends up in the buffer, it
won't matter unless the two payloads are different.

1. QN = 0, MSN = 1, MO = 000, L = 0, Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 200, L = 1, Payload = 100 bytes
Result: DDP Message (bytes 0-300) is delivered to ULP
[prc] yes, but the middle 100 will contain unknown values (probably what
they had before the buffer went through DDP).

1. QN = 0, MSN = 1, MO = 300, L = 1, Payload = 100 bytes
Result: DDP Message (bytes 0-400) is delivered to ULP
(This is based on wording in 6.3, MO field. Note that the second
sentence simply says that the MO "that references the first octet MUST
be set to zero", not that a segment having a zero MO is required)
[prc] yes, but first 300 is unknown

1. QN = 0, MSN = 1, MO = 100, L = 0, Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 000, L = 1, Payload = 0 bytes
Result: ULP sent Error type=Untagged Buffer Error, Error Code = Invalid
MO (There is ambiguity between 6.1 L bit field description ( Segment w/
L bit set must have highest MO), and 9.1 (implies that for non-zero
length segments the header fields are not validated.)
[prc] no, at least not because of a protocol error.  There is only an
error if the buffer limits as defined by the ULP is exceeded.  You
should get an indication that a zero length message was delivered.

1. QN = 0, MSN = 1, MO = 000, L = 0, Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 100, L = 1, Payload = 0 bytes
Result: DDP Message (bytes 0 - 100) is delivered to ULP
[prc] yes

1. QN = 0, MSN = 1, MO = 100, L = 1, Payload = 0 bytes
Result: DDP Message (bytes 0 - 100) id delivered to ULP. 
[prc], yes, but with unknown data values.

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

_______________________________________________
rddp mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rddp

_______________________________________________
rddp mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/rddp

---

From: "Barry Reinhold" <[email-masked]>
Date: Fri, 16 Jan 2004 16:06:31 -0500

Oops, forgot to post to reflector...

-----Original Message-----
From: Barry Reinhold [mailto:[email-masked]] 
Sent: Friday, January 16, 2004 3:41 PM
To: 'Culley, Paul'
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

Paul,
	How do you understand clause 6.1 under the description of the L
bit, which reads...

        The DDP Segment with the L bit set to 1 MUST be posted to the 
        LLP after all other DDP Segments of the associated DDP Message 
        have been posted to the LLP. For an Untagged DDP Message, the 
        DDP Segment with the L bit set to 1 MUST carry the highest MO.

The second segment w/ L=1 arrives, but its MO is not the highest MO.
What happens (as in the case below) when this condition is not true?

>Result: ULP sent Error type=Untagged Buffer Error, Error Code=Invalid
MO >[prc] No, the receiver will place both segments, but inform the ULP
that >only 100 bytes was delivered, ending at MO=99.  No error should be
detected >or reported, unless the receiver's buffer was not large enough
to hold the >second 100 bytes.

-----Original Message-----
From: Culley, Paul [mailto:[email-masked]] 
Sent: Friday, January 16, 2004 3:28 PM
To: Barry Reinhold; RDDP
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

Below...

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----

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

---

From: "Culley, Paul" <[email-masked]>
Date: Fri, 16 Jan 2004 16:09:56 -0600

I stand by my response below; the case described is a technical
violation by the transmitter, however the receiver is not required to
(and I think should not) detect this case.  Because the transmitter
violated the spec, the receiver is not required to indicate the full
amount of data placed in the buffer.  The spec was written this way to
avoid making the receiver scoreboard or perform a MAX operation on MO+L
to determine the size of the message delivered and that it was filling
the buffer without gaps.

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----
From: [email-masked] [mailto:[email-masked]] On Behalf Of
Barry Reinhold
Sent: Friday, January 16, 2004 3:07 PM
To: RDDP
Subject: FW: [rddp] DDP segment sequences for Untagged DDP message

-----Original Message-----
From: Barry Reinhold [mailto:[email-masked]] 
Sent: Friday, January 16, 2004 3:41 PM
To: 'Culley, Paul'
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

Paul,

-----Original Message-----
From: Culley, Paul [mailto:[email-masked]] 
Sent: Friday, January 16, 2004 3:28 PM
To: Barry Reinhold; RDDP
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

Below...

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----

1. QN = 0, MSN = 1, MO = 300, L = 1, Payload = 100 bytes
Result: DDP Message (bytes 0-400) is delivered to ULP
(This is based on wording in 6.3, MO field. Note that the second
sentence simply says that the MO "that references the first octet MUST
be set to zero", not that a segment having a zero MO is required) [prc]
yes, but first 300 is unknown

1. QN = 0, MSN = 1, MO = 100, L = 0, Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 000, L = 1, Payload = 0 bytes
Result: ULP sent Error type=Untagged Buffer Error, Error Code = Invalid
MO (There is ambiguity between 6.1 L bit field description ( Segment w/
L bit set must have highest MO), and 9.1 (implies that for non-zero
length segments the header fields are not validated.) [prc] no, at least
not because of a protocol error.  There is only an error if the buffer
limits as defined by the ULP is exceeded.  You should get an indication
that a zero length message was delivered.

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

---

From: [email-masked]
Date: Fri, 23 Jan 2004 15:45:03 -0700

My responses are marked pat

-----Original Message-----
From: Culley, Paul [mailto:[email-masked]]
Sent: Friday, January 16, 2004 12:28 PM
To: Barry Reinhold; RDDP
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

Below...

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----

1. QN = 0, MSN = 1, MO = 100 L = 1 Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 0   L = 0 Payload = 100 bytes
Result: DDP Message (bytes 0-200) is delivered to ULP
[prc] yes
[pat]DDP message (bytes 0-200) occurs after 1.
     2 will cause an invalid MSN error

[pat] Checking for the error of last segment not containing highest MO is optional. Both behaviors above would be valid responses.

[pat] agree. 

[pat] There are two valid behaviors. The receiver may deliver the message as above or it may be checking and report an error.

[pat] Again the receiver is allowed to deliver or to report an error.

[pat] The ambiguity you point out is probably an error. The MUST on checking Untagged DDP segments required that they be validated before placement. A zero length segment isn't placed so the MUST didn't apply to it. There probably should be a statement about checking the fields before delivery of zero length untagged messages or zero length segments with the L bit set. Also even if that statement is added, this is another case where the receiver is allowed to deliver or report an error.

1. QN = 0, MSN = 1, MO = 000, L = 0, Payload = 100 bytes
2. QN = 0, MSN = 1, MO = 100, L = 1, Payload = 0 bytes
Result: DDP Message (bytes 0 - 100) is delivered to ULP
[prc] yes
[pat] yes. Note that this is another case where there should be a requirement that the zero length segment header values be checked before delivery.

1. QN = 0, MSN = 1, MO = 100, L = 1, Payload = 0 bytes
Result: DDP Message (bytes 0 - 100) id delivered to ULP. 
[prc], yes, but with unknown data values.
[pat] May deliver the message or may scoreboard and report an error.

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

---

From: [email-masked]
Date: Fri, 23 Jan 2004 15:54:56 -0700

As MikeC pointed out to me, in the examples below the message end is off by one byte. For example, 

                             ^^^
                 should be   199
                          ^^^
                          199

The first byte in the message was 100 and there were 100 bytes so the last byte was 199.

Pat

-----Original Message-----
From: Culley, Paul [mailto:[email-masked]]
Sent: Friday, January 16, 2004 12:28 PM
To: Barry Reinhold; RDDP
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

Below...

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----

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

---

From: Michael Krause <[email-masked]>
Date: Tue, 27 Jan 2004 06:37:52 -0800

At 08:01 AM 1/27/2004 -0600, Culley, Paul wrote:
>Note: this is the second sending, it did not show after the first time
>within 24 hours...
>
>OK, I realize that I missed a small point; in the first case below
>
>I was thinking of TCP segments as they arrive at the receiver, not as
>sent at the transmitter.  If the example was sent in this order, I agree
>that an invalid MSN error is the correct answer, if they were merely
>received in this order (they got flipped in route and were received out
>of order, but sent in order), then the result would be a normal
>delivery.
>
>I am not certain I agree with Pat on the "optional" nature of checking
>for errors that are not even mentioned in the specification.  I think
>that if we have to list all of the checks that we DO NOT perform in the
>specifications, then we have quite a bit of writing left to do.

It would be both impractical to document all that should not be done and a 
pain / low ROI to test for compliance.

>That said, we should perhaps be a bit more clear about the rules on
>Sending overlapped segments, or Sending Gaps.  I am definitely not in
>favor of requiring the receiver to check for either case.

Concur.

>If we were to add text to DDP for this I think it would say something like:
>
>When sending an Untagged Message, the Sender MUST send data to each
>offset within the target buffer only one time.
>
>When sending an Untagged Message, the Sender MUST send a contiguous
>stream of bytes to the destination buffer, starting at offset 0.
>
>In my mind, we should allow the receiver to check for these conditions
>only if these rules are made on the sender.

I don't think we need to add these.

Mike

>From: [email-masked] [mailto:[email-masked]]
>Sent: Friday, January 23, 2004 4:45 PM
>To: Culley, Paul; [email-masked]; [email-masked]
>to hold the second 100 bytes. [pat] Checking for the error of last
>segment not containing highest MO is optional. Both behaviors above
>would be valid responses.
>
>won't matter unless the two payloads are different. [pat] agree.
>
>they had before the buffer went through DDP). [pat] There are two valid
>behaviors. The receiver may deliver the message as above or it may be
>checking and report an error.
>
>yes, but first 300 is unknown [pat] Again the receiver is allowed to
>deliver or to report an error.
>
>that a zero length message was delivered. [pat] The ambiguity you point
>out is probably an error. The MUST on checking Untagged DDP segments
>required that they be validated before placement. A zero length segment
>isn't placed so the MUST didn't apply to it. There probably should be a
>statement about checking the fields before delivery of zero length
>untagged messages or zero length segments with the L bit set. Also even
>if that statement is added, this is another case where the receiver is
>allowed to deliver or report an error.
>
>[pat] yes. Note that this is another case where there should be a
>requirement that the zero length segment header values be checked before
>delivery.
>

---

From: "Culley, Paul" <[email-masked]>
Date: Mon, 26 Jan 2004 08:39:59 -0600

That said, we should perhaps be a bit more clear about the rules on
Sending overlapped segments, or Sending Gaps.  I am definitely not in
favor of requiring the receiver to check for either case.  If we were to
add text to DDP for this I think it would say something like:

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----
From: Culley, Paul [mailto:[email-masked]]
Sent: Friday, January 16, 2004 12:28 PM
To: Barry Reinhold; RDDP
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message

Below...

Paul R. Culley
HP Fellow
281-514-5543

-----Original Message-----

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