Subject: Re: [tsvwg] I-D Action: draft-ietf-tsvwg-udp-options-08.txt

From: raffaele <[email-masked]>
Date: Sat, 29 Feb 2020 17:47:57 +0000

On 2019-12-31 15:11, Joe Touch wrote:
> Hi, Mike,
> 
> Many thanks for these detailed comments. They’ll be incorporated in
> the next rev.
> 
> Joe
> 
>> On Dec 28, 2019, at 2:53 PM, C. M. Heard <[email-masked]> wrote:
>>> - fix the figure and description of OCS to use a 16-bit checksum
>> 
>> The work on this section is incomplete, as it does not specify
>> that a two-byte pseudo header containing the length of the surplus
>> area be conceptually prefixed to the surplus area data. As noted in
>> https://tools.ietf.org/html/draft-fairhurst-udp-options-cco-00,
>> that pseudo-header is necessary to fix the most common middlebox
>> traversal issue that has been found (i.e., calculating the UDP
>> checksum based in the IP payload length instead of the UDP length).
>> Since the result will not be an overall ones-complement sum of
>> zero, that language needs to be dropped from the draft.

Hello everyone,

I wanted to add one thing about how the pseudo-header (the Options 
length) is added to the checksum, just in case it hasn't been already 
considered.

In the current OCS design the potential misalignment between the start 
of the Options area and the OCS field is taken into account through a 
byte swap.

However, the misalignment between the start of UDP header and the OCS 
field should be also taken into account, when adding the Options length.
If OCS field is aligned with UDP header (and thus with UDP Length), the 
Options length should be added as-is.
If OCS is not aligned with UDP header, the Options length should be 
byte-swapped and then added.

Sorry for unnecessary caveat if you have already considered this.

Best regards,
Raffaele Zullo

>> 
>> I would also recommend that the next version of the draft
>> explicitly mention that for the purpose of the checksum
>> calculation the surplus area needs to be conceptually
>> padded by zero bytes that are not actually transmitted
>> if its start and/or end are on odd boundaries relative
>> to the start of the UDP data area.
>> 
>>> - define OCS as required when UDP CS != 0
>> 
>> Changes look good.
>> 
>>> - change ACS from a 16-bit CRC to CRC32c
>> 
>> Changes look good, but it should be explicitly stated whether it is
>> REQUIRED that an option-aware receiver discard a packet with
>> an incorrect ACS (which I believe is the intent of the draft) or
>> whether it is at the receiver's discretion (presumably not, since
>> ACS is listed as one of the options that an options-aware
>> implementation is required to support).
>> 
>>> There are more than a few other changes underway based on feedback
>>> from
>>> the last meeting. The concept behind those changes will be posted
>>> for
>>> feedback when developed further for WG feedback before being
>>> included in
>>> the next update.
>>> 
>>> I.e., please don't treat the fact that the rest hasn't changed as
>>> anything beyond "TBD".
>>> 
>>> Comments on *these changes* welcome, of course.
>> 
>> Editorial: section numbers for Echo (6.) and Experimental (6.1) are
>> incorrect.
>> 
>> Substantive comments later on the proposed path forward presented at
>> IETF 106.
>> 
>> Mike Heard