Re: [tsvwg] UDP options and header-data split (zero copy)

"C. M. Heard" <heard@pobox.com> Mon, 02 August 2021 18:12 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 0448D3A13DE for <tsvwg@ietfa.amsl.com>; Mon, 2 Aug 2021 11:12:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.798
X-Spam-Level:
X-Spam-Status: No, score=-2.798 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) 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 fbr-AepvgZhx for <tsvwg@ietfa.amsl.com>; Mon, 2 Aug 2021 11:12:46 -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 4E7DD3A13D5 for <tsvwg@ietf.org>; Mon, 2 Aug 2021 11:12:45 -0700 (PDT)
Received: from pb-smtp2.pobox.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 7A435D09A3 for <tsvwg@ietf.org>; Mon, 2 Aug 2021 14:12:41 -0400 (EDT) (envelope-from heard@pobox.com)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=pobox.com; h= mime-version:references:in-reply-to:from:date:message-id:subject :to:content-type; s=sasl; bh=PKXeTAu76ShEmwK31feU+8vJxWcs6p5mGSf +XtJD8ko=; b=TJ7HLFrxSfls/qNwGRV9rd1jJGyCcNQZRlnGLHU1eFLXBF/YChO Al+cQdfamD+lWDb2o+unsFfmWEbyvlmo2s8cxfBQdSwZPGZAlh4BsPD//U8g5KZ+ pHCzQKGLpEn4N/Xln5O8FO4yZ/15zrb6Yv2ewqH60+bRMZxUQcgMKJr0=
Received: from pb-smtp2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 72ED7D09A2 for <tsvwg@ietf.org>; Mon, 2 Aug 2021 14:12:41 -0400 (EDT) (envelope-from heard@pobox.com)
Received: from mail-pj1-f51.google.com (unknown [209.85.216.51]) (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 E87CAD09A0 for <tsvwg@ietf.org>; Mon, 2 Aug 2021 14:12:40 -0400 (EDT) (envelope-from heard@pobox.com)
Received: by mail-pj1-f51.google.com with SMTP id u9-20020a17090a1f09b029017554809f35so78589pja.5 for <tsvwg@ietf.org>; Mon, 02 Aug 2021 11:12:40 -0700 (PDT)
X-Gm-Message-State: AOAM530dJRHsIKNU5dqyaQqYf/rf7Y/LI6M71h+cUrCJ6+xE1rqQd2T2 ZLjKpKLDmt2TuHwfd0JMRxhEBmA2N2VJR8u5uu0=
X-Google-Smtp-Source: ABdhPJz6IpcYRSSx0HpOTQB52dfv4O8IYjxyKyTN1fiMqbYnIeI6ANzC/gNfn4HowBbc+TSF+lXk2zdXdw6qaYTQZE4=
X-Received: by 2002:a17:90a:f68f:: with SMTP id cl15mr157438pjb.234.1627927960039; Mon, 02 Aug 2021 11:12:40 -0700 (PDT)
MIME-Version: 1.0
References: <A0932E7C-183B-41EF-B2AA-838FC45A087E@strayalpha.com> <28339CB5-2C9D-4870-9F25-07D6BBF43BDD@strayalpha.com> <CACL_3VEo75pKTOhizO1AhvqW7vCkOnaerDi6UNRA6e5K5mKYfQ@mail.gmail.com> <F35E0828-1F8F-4D7C-A570-32A2F47F773F@strayalpha.com> <CACL_3VFdzrTXZ8rAGPF=hXJ56zwy9KRxqERO_9doVUB4wFft4g@mail.gmail.com> <CALx6S37XLfGBFVMCAhbFjKfsRrevbzOPxP9CT28cpzmzQRBwPw@mail.gmail.com>
In-Reply-To: <CALx6S37XLfGBFVMCAhbFjKfsRrevbzOPxP9CT28cpzmzQRBwPw@mail.gmail.com>
From: "C. M. Heard" <heard@pobox.com>
Date: Mon, 02 Aug 2021 11:12:28 -0700
X-Gmail-Original-Message-ID: <CACL_3VGBp5ZcCvYRtmzxjC9X_Sov39QdJWjbShSdwKxiKCZPTw@mail.gmail.com>
Message-ID: <CACL_3VGBp5ZcCvYRtmzxjC9X_Sov39QdJWjbShSdwKxiKCZPTw@mail.gmail.com>
To: Tom Herbert <tom@herbertland.com>, Joseph Touch <touch@strayalpha.com>, TSVWG <tsvwg@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000c735b805c89783f2"
X-Pobox-Relay-ID: 39D6AA38-F3BD-11EB-9F6C-FD8818BA3BAF-06080547!pb-smtp2.pobox.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/HWSfxN-9LPNsbAthkBAFnE_nQ5E>
Subject: Re: [tsvwg] UDP options and header-data split (zero copy)
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: Mon, 02 Aug 2021 18:12:51 -0000

On Mon, Aug 2, 2021 at 7:38 AM Tom Herbert wrote:
> No, it's not simpler for an implementation. In the current design
> options are in trailers for legacy mode and headers in non-legacy mode
> so by definition we need divergent code paths code paths for those two
> case. In the non-legacy mode case we need to support both options in
> headers and options in trailers within the same packet which
> contradicts the principle of having fewer ways to do the same thing.
> In any case, having divergent code paths isn't a problem for
> implementations, the real complication to implementations would be the
> requirement to process protocol trailers.

Actually, in non-legacy mode options may appear BOTH in headers (for
per-fragment options) AND in trailers (for the per-datagram options),
and in the current draft the latter can fill a complete fragment. An
upcoming revision is pending that will change this to allow the options
trailer to span multiple fragments.

As I understand it, the procedure (in concept) is to create a datagram
in legacy format with its per-datagram options, and then split that up
into fragments, each of which can have its own per-fragment options.
The per-fragment options precede the corresponding fragment data; in
the current draft, the  per-datagram options follow the data in the
final fragment.

The upcoming revision will change this a bit ... FRAG END in the
terminal FRAG option will be replaced with USER DATA LENGTH. In this
case the per-datagram options will be carried within the fragment
data. It won't be possible, in general, to tell where the user data
ends and the options begin until the reassembly process is complete.

Joe: please offer corrections if I have misrepresented your intent in
the thumbnail sketch above.

WG: I understand Joe's point about conceptual simplicity in a common
format for all cases, but I have to agree with Tom's point that having
divergent code paths isn't the main problem for implementations,
overall complexity is, and I remain concerned about what I perceive as
the ever-growing complexity of the fragmentation and reassembly
specification for UDP options.

Mike Heard