Re: [tsvwg] Fwd: New Version Notification for draft-touch-tsvwg-udp-options-05.txt

Joe Touch <touch@isi.edu> Tue, 28 February 2017 21:16 UTC

Return-Path: <touch@isi.edu>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AA13D1296CD for <tsvwg@ietfa.amsl.com>; Tue, 28 Feb 2017 13:16:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ART7OxGtDwVn for <tsvwg@ietfa.amsl.com>; Tue, 28 Feb 2017 13:16:26 -0800 (PST)
Received: from nitro.isi.edu (nitro.isi.edu [128.9.208.207]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DDCFF124281 for <tsvwg@ietf.org>; Tue, 28 Feb 2017 13:16:26 -0800 (PST)
Received: from [128.9.160.81] (nib.isi.edu [128.9.160.81]) (authenticated bits=0) by nitro.isi.edu (8.13.8/8.13.8) with ESMTP id v1SLG76Q029823 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Tue, 28 Feb 2017 13:16:07 -0800 (PST)
To: tsvwg <tsvwg@ietf.org>
References: <148823787288.13843.6091386736320524682.idtracker@ietfa.amsl.com> <800de1a6-cb9b-f22b-946a-8b6832fc9a05@isi.edu> <20170228163751.GA89477@cowbell.employees.org> <7d58ead9-2d1a-d35c-7cd2-90526918838c@isi.edu> <20170228204607.GA71184@cowbell.employees.org>
From: Joe Touch <touch@isi.edu>
Message-ID: <d03f54c3-46cd-7023-0d2f-70b3831ad067@isi.edu>
Date: Tue, 28 Feb 2017 13:16:07 -0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1
MIME-Version: 1.0
In-Reply-To: <20170228204607.GA71184@cowbell.employees.org>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: quoted-printable
X-MailScanner-ID: v1SLG76Q029823
X-ISI-4-69-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/mggG0HFg3gHKN4TUQsCDK6O8cpE>
Subject: Re: [tsvwg] Fwd: New Version Notification for draft-touch-tsvwg-udp-options-05.txt
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg/>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Feb 2017 21:16:33 -0000

Hi Derek,


On 2/28/2017 12:46 PM, Derek Fawcus wrote:
> ...
>>> Section 5.3 (Option Checksum)
> ...
>>> This would be compatible with the LITE swap scheme
>>> you describe in section 5.5, just with one having
>>> to swap 6 bytes rather than 4 bytes.  It would also
>>> take no more space than the existing checksum - assuming
>>> such was always included.
>> It takes two additional bytes - we can't redefine the existing checksum
>> and be compatible with legacy receivers.
> Sorry,  I've lost the thread here.
>
> I was not suggesting altering how the normal UDP checksum works.
>
> I was mainly driving at how in implementing this in a host stack I'd
> like to verify the options.  Namely that in the absense of the Lite
> option,  it would allow one to use the existing checksum validation
> routine to run across the whole of the surplus area, and if it summed
> to the usual (1's complement) zero,  it is good.
I'm not sure I see that.
The existing checksum runs over the IP pseudoheader, the UDP header, and
the UDP body.

OCS runs over just the option area.

Even in the absence of LITE, the UDP checksum wouldn't cover the option
area.

> In the presence of Lite option it only becomes slightly more complex,
> in that one performs the check as two partial sums.
>
> This could be combined with whatever logic is extracting/detecting
> the presence of the options.  That would obviously requiring using
> the usual 1s complement of the 1s complement sum.  It would have
> to occur before normal UDP processing, and be driven off the UDP
> length and the IP header payload length being different
>
> [I'm assuming the presence of a routine like:
>    uint16_t ip_partial_checksum(uint16_t old_sum, void *start, uint16_t length)
>  which sums the supplied range in to the old_sum, returning the new value.
>  Initialisation and final 1s-complement being done outside that routine.
> ]
>
>
> Or are you referring to existing implementations of your current
> option code?

The spec. There are two checksum options:
    OCS - over just the option area
    ACS - a stronger replacement for the UDP checksum over the same area
as the UDP checksum carries (though it might need to just be the body,
since a NAT is going to mess up the IP pseudoheader and UDP ports)
>
>> I don't want to design a transport protocol capability based on what a
>> middlebox might do. That's "laws for the lawless", IMO, and there's
>> little point. So I'd rather not address this.
> The reference to middle boxes was an unimportant side comment,
> please forget I mentioned it.
>
> The significant point was allowing the same style of checksum
> as already exists, and hence using the same (or similar)
> set of routines.  Especially since if we assume the checksum
> is always present, it costs no more in terms of payload that
> the 8 bit scheme.
The offload routines could be adapted to handle this, sure.

>>> If fragmentation is present with Lite, and two such packets
>>> are received to be reassembled, what happens to the Lite data
>>> from each packet?  Should this combination be rejected, or
>>> defined in some fashion?
>> Good point. I'll think about this and create an ordering list.
> Tom's suggestion here was interesting.  It would seem to be
> re-defining the FRAG+LITE case where the UDP User Data is zero length,
> such that the LITE is now segmented,  and non-Lite.  I'm not sure
> about that yet,  it feels a bit weird.
>
> However, the overall checksum he mentioned could itself be in an
> option,  and would only need to be in one of the fragments.
Right - that would be reassembly verification checksum.

Joe