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

Joe Touch <touch@strayalpha.com> Mon, 02 August 2021 19:31 UTC

Return-Path: <touch@strayalpha.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 8A8823A18AA for <tsvwg@ietfa.amsl.com>; Mon, 2 Aug 2021 12:31:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.319
X-Spam-Level:
X-Spam-Status: No, score=-1.319 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, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=strayalpha.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 NgjBY6Msrr-d for <tsvwg@ietfa.amsl.com>; Mon, 2 Aug 2021 12:31:13 -0700 (PDT)
Received: from server217-4.web-hosting.com (server217-4.web-hosting.com [198.54.116.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B6103A1898 for <tsvwg@ietf.org>; Mon, 2 Aug 2021 12:31:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=strayalpha.com; s=default; h=To:References:Message-Id:Cc:Date:In-Reply-To: From:Subject:Mime-Version:Content-Transfer-Encoding:Content-Type:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=CjSDRIG7xxR9mKZruZyp2ZtFZoSsHu8Kt/UmK+cCy9I=; b=UqAYmoVNAqaE+mQUyKutXuAC4G gzUIPzvJC+CrsNgxbqA3/2V500PXoRahohaXgtcm5EAoPrVN/S6bqcQrNndgtXKOknL358nAbqMZE EYY9SrVly/MNhpxzmTejKYGcyE0AyuUGM/TQP0Ym1MghcPzzc+drCROSaLY5Tmq3l/It7MC8q9faS CswUGgubi88oP9FDD7sIgXDYHr+/uv/STDx3llctKwiQQmp/rKFYkLIesYkXNSTL4yfhZRKqxnEGR wzo+amCRLsJR6/Q/+YhtHxC4NvqO1/Waab0pUS/OzSzHqNUy0SCYOfQalBXU9A9J5AtT2j/P4g0vz HP7mAu7w==;
Received: from cpe-172-114-237-88.socal.res.rr.com ([172.114.237.88]:55306 helo=smtpclient.apple) by server217.web-hosting.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <touch@strayalpha.com>) id 1mAdeV-004Dit-D0; Mon, 02 Aug 2021 15:31:11 -0400
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (1.0)
From: Joe Touch <touch@strayalpha.com>
In-Reply-To: <87881B84-5FFE-43EE-BF26-66E265C63D09@gmx.de>
Date: Mon, 02 Aug 2021 12:31:06 -0700
Cc: "C. M. Heard" <heard@pobox.com>, Tom Herbert <tom@herbertland.com>, TSVWG <tsvwg@ietf.org>
Message-Id: <CDC5E98F-10B7-4BE3-B74C-7A0323226991@strayalpha.com>
References: <87881B84-5FFE-43EE-BF26-66E265C63D09@gmx.de>
To: Sebastian Moeller <moeller0@gmx.de>
X-Mailer: iPhone Mail (18G82)
X-OutGoing-Spam-Status: No, score=-1.0
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - server217.web-hosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - strayalpha.com
X-Get-Message-Sender-Via: server217.web-hosting.com: authenticated_id: touch@strayalpha.com
X-Authenticated-Sender: server217.web-hosting.com: touch@strayalpha.com
X-Source:
X-Source-Args:
X-Source-Dir:
X-From-Rewrite: unmodified, already matched
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/RQ7TMLfkF42-RGsKt-c1KSl_kuU>
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 19:31:27 -0000


> On Aug 2, 2021, at 11:56 AM, Sebastian Moeller <moeller0@gmx.de> wrote:
> 
> Mmmh, I have  a quick question, actually two.
> 
> 
> a) who is the intended audience of the fragmentation feature? And why is IP or application level "fragmentation? not enough?

Any protocol using UDP where IP fragmentation won’t work - the most notable example is NAT traversal.  IP doesn’t copy the UDP ports into each fragment but UDP option fragmentation does. 

> b) instead of a trailer just add a bit to each option to denote per fragment or per aggregate, sure each option gets one bit longer, but on the flip side no trailer...

At a minimum, because there are options that could be used in either place, eg. OCS, AUTH, and ENCR at least. 

As noted, this won’t avoid the trailer for legacy mode. 

Joe

> 
> Regards
>    Sebastian
> 
> 
> 
> 
>> On Aug 2, 2021, at 20:12, C. M. Heard <heard@pobox.com> wrote:
>> 
>>> 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
>