Re: [tsvwg] Alternative version of the UDP FRAG option

"C. M. Heard" <heard@pobox.com> Wed, 13 March 2019 04:36 UTC

Return-Path: <heard@pobox.com>
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 010E712D827 for <tsvwg@ietfa.amsl.com>; Tue, 12 Mar 2019 21:36:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=pobox.com; domainkeys=pass (1024-bit key) header.from=heard@pobox.com header.d=pobox.com
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 qVelddePacLI for <tsvwg@ietfa.amsl.com>; Tue, 12 Mar 2019 21:36:33 -0700 (PDT)
Received: from pb-smtp2.pobox.com (pb-smtp2.pobox.com [64.147.108.71]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8D41B1277DB for <tsvwg@ietf.org>; Tue, 12 Mar 2019 21:36:33 -0700 (PDT)
Received: from pb-smtp2.pobox.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 53A45140B4F for <tsvwg@ietf.org>; Wed, 13 Mar 2019 00:36:32 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=mime-version :references:in-reply-to:from:date:message-id:subject:to:cc :content-type; s=sasl; bh=PRD1AunDgRUVX3oGPTyJXY6BJ9I=; b=WKc5CX X1qjJPUegUTuqVhG3qLtVFjCAbrYAs5H1vY7TsoEWZoknmNMLCxIZVrGPFgdSgeI mo3Ctm//dJRv5zDzl5dxjaiQRqJb0RqhhZqbFhcNIsVsD5punwvVua0TS/gDeI1l 8vLN1Kkg3JkNBq3RiZ81Bn9A6lTvXNWsNZmdM=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=mime-version :references:in-reply-to:from:date:message-id:subject:to:cc :content-type; q=dns; s=sasl; b=vgcgzSgIBooNNYViYWEHlxpUxIhrIK1l dSvHbZ+9bqN/M9MI+OUX7s3pm4BfKtYZKWBh6gCPEn5o/oT5NgNe8scY8oseQpBS fVJMe5ZFh24u5IopbSMrRJArZzeIo6QWf6u8lgiURufKd5jBxS9SsYW6+V/0AWJZ CrPMiYaxikE=
Received: from pb-smtp2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 41E0E140B4E for <tsvwg@ietf.org>; Wed, 13 Mar 2019 00:36:32 -0400 (EDT)
Received: from mail-qt1-f177.google.com (unknown [209.85.160.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pb-smtp2.pobox.com (Postfix) with ESMTPSA id BA09D140B4B for <tsvwg@ietf.org>; Wed, 13 Mar 2019 00:36:31 -0400 (EDT)
Received: by mail-qt1-f177.google.com with SMTP id f11so453608qti.7 for <tsvwg@ietf.org>; Tue, 12 Mar 2019 21:36:31 -0700 (PDT)
X-Gm-Message-State: APjAAAUeFSsGL4H0trcnlgficRHaKdlmCvM/aQ1qfl7j1u33GAFMjXk6 GRNVcUsTa2wU8U1hhWmueEbATcmX7ozVF+IfDwQ=
X-Google-Smtp-Source: APXvYqw4IYXNdmEncZtsk8Q7tx/H9JBfvru37/pqtZuLnxWTeoX6X44uQHt9tJN9+DcXzdG3R7tquZIrMyTjEN74ZXQ=
X-Received: by 2002:ac8:3042:: with SMTP id g2mr2446qte.1.1552451791316; Tue, 12 Mar 2019 21:36:31 -0700 (PDT)
MIME-Version: 1.0
References: <CACL_3VFg-EWCYHZ4+kYV30vjNzPs90ysAu5SCdLNb+9OPxE+3g@mail.gmail.com> <B1D19ABC-428B-42D8-AE97-BF3B967B1140@strayalpha.com> <fd5a4cd7983862c376f1db9f324f4ea1@erg.abdn.ac.uk> <b25fcf12e33d8093b0a44d88f5c9dda1@strayalpha.com> <7b02a0ff2b33f504fa3b254996251992@erg.abdn.ac.uk> <2fa0ad4d9dcd54e5b78fd1a6cf86fbca@strayalpha.com> <CACL_3VGrFZV+4HEqVatR4QEJ2hStZutmMBXbeu5nzSQ012mn3A@mail.gmail.com> <277290A3-68D1-4DA5-BD56-D476AA672C6D@strayalpha.com>
In-Reply-To: <277290A3-68D1-4DA5-BD56-D476AA672C6D@strayalpha.com>
From: "C. M. Heard" <heard@pobox.com>
Date: Tue, 12 Mar 2019 21:36:16 -0700
X-Gmail-Original-Message-ID: <CACL_3VE5ObpOtCb9B11Y31EaX+De-MYGMJwFnv5bCuE==4efUA@mail.gmail.com>
Message-ID: <CACL_3VE5ObpOtCb9B11Y31EaX+De-MYGMJwFnv5bCuE==4efUA@mail.gmail.com>
To: Joe Touch <touch@strayalpha.com>
Cc: Raffaele Zullo <raffaele@erg.abdn.ac.uk>, Gorry Fairhurst <gorry@erg.abdn.ac.uk>, tsvwg <tsvwg@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000008d6bf00583f259a3"
X-Pobox-Relay-ID: 934E3C4A-4549-11E9-8052-DF19F34BB12D-06080547!pb-smtp2.pobox.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/FYjokUBTY7FZ6WCziSGTan-CH5w>
Subject: Re: [tsvwg] Alternative version of the UDP FRAG option
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 13 Mar 2019 04:36:36 -0000

On Tue, Mar 12, 2019 at 8:39 PM Joe Touch wrote:
>  On Mar 12, 2019, at 11:26 PM, C. M. Heard wrote:
[ ... ]
> > So, CS=0 does have its risks even for the length field.
>
> Fair enough. Now show us how to avoid that without recopying the
> payloads and/or recomputing the checksum twice.
>
> That’s the issue. A fix for a problem that current UDP already deals
> with and doesn’t come up vs so much extra work the result won’t be
> useful.

That is a fair request, considering that I have sowed ample confusion
by floating three variations of my proposal, and only the last achieved
that result. Here it is, again:

Maintain the format of the FRAG option as currently defined for a
non-terminal fragments, and allocate a new KIND to indicate a
terminal fragment. Both kinds would have the same format:

                   +--------+--------+--------+--------+
                   |  Kind  | Len=10 |  Frag. Offset   |
                   +--------+--------+--------+--------+
                   |          Identification           |
                   +--------+--------+--------+--------+
                   |    Checksum     |
                   +--------+--------+


The following requirements would apply:

   >> When the FRAG option appears, it MUST come last in the UDP options
   list.  All remaining octets in the packet are interpreted as fragment
   data.


   >> OCS, if present, covers both the FRAG option and the trailing
   fragment data.


   >> A host that wishes to signal that it is able to accept and process
   the FRAG option MAY do so by transmitting an unfragmented datagram
   with an empty terminal FRAG option whose Offset field is set to zero.


   >> Non-empty FRAG options MUST NOT be present in packets with ordinary
   UDP user data or LITE data. Any such options MUST be silently dropped.


   >> UDP options other than OCS and padding MUST NOT accompany the FRAG
   option in non-terminal fragments.  Any such options MUST be silently
   dropped.  All other options that apply to a reassembled packet must
   accompany the FRAG header in the terminal fragment.


To handle the case when the user UDP CS setting specifies that the UDP
checksum should be zero, then OCS would not accompany the FRAG option.
Otherwise it would, irrespective of the user OCS setting.

This version does not have a distinct overall checksum for the reassembled
packet, and so avoids duplicate work. Having the revised OCS cover the data
in each fragment provides protection that is essentially equivalent to that
provided by the post-reassembly checksum proposed in the current draft. For
in order to deliver the reassembled data, we require all fragments to be
present and to fit together exactly with no gaps and no overlap. Thus,
having each fragment pass its checksum is equivalent to passing an overall
checksum that covers the reassembled data plus the options. Note that ACS
is still available if a stronger post-reassembly checksum is wanted.

I think this answers the important objections. It offers a solution that
provides protection equivalent to conventional IP fragmentation coupled
with the standard UDP checksum, allows for middlebox traversal, and avoids

duplicate checksum computations.


Mike Heard