As MikeC pointed out to me, in the examples below the message end is off by one byte. For example,
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
^^^
should be 199
[prc] yes
[pat]DDP message (bytes 0-200) occurs after 1.
^^^
199
2 will cause an invalid MSN error
The first byte in the message was 100 and there were 100 bytes so the last byte was 199.
Pat
-----Original Message-----
From: [email protected]
Sent: Friday, January 23, 2004 2:45 PM
To: [email protected]; [email protected]; [email protected]
Subject: RE: [rddp] DDP segment sequences for Untagged DDP message
My responses are marked pat
-----Original Message-----
From: Culley, Paul [mailto:[email protected]]
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-----
From: [email protected] [mailto:[email protected]] 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
[pat]DDP message (bytes 0-200) occurs after 1.
2 will cause an invalid MSN error
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.
[pat] Checking for the error of last segment not containing highest MO is optional. Both behaviors above would be valid responses.
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.
[pat] agree.
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).
[pat] There are two valid behaviors. The receiver may deliver the message as above or it may be checking and report an error.
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
[pat] Again the receiver is allowed to deliver or to report an error.
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.
[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 protected]
(603) 868-8411
_______________________________________________
rddp mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/rddp
_______________________________________________
rddp mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/rddp
_______________________________________________
rddp mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/rddp
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.