Re: [tsvwg] Review of draft-ietf-tsvwg-udp-options-32

Martin Duke <martin.h.duke@gmail.com> Fri, 05 April 2024 16:49 UTC

Return-Path: <martin.h.duke@gmail.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 A962AC15155E; Fri, 5 Apr 2024 09:49:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.094
X-Spam-Level:
X-Spam-Status: No, score=-2.094 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dnSuW6Gz2Wai; Fri, 5 Apr 2024 09:49:32 -0700 (PDT)
Received: from mail-ua1-x932.google.com (mail-ua1-x932.google.com [IPv6:2607:f8b0:4864:20::932]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BA69AC151553; Fri, 5 Apr 2024 09:49:32 -0700 (PDT)
Received: by mail-ua1-x932.google.com with SMTP id a1e0cc1a2514c-7e376672375so1068656241.2; Fri, 05 Apr 2024 09:49:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712335772; x=1712940572; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HQmJxG+6OqsYHCxRnj+yxrbkWjdaSUII4/9YhJxNd5w=; b=B4JeKb9mKlmj63LVE+xh9w42nC4supHHGU5RVlXfBmy9ivr6VZNJzCtnV6JbnU6N1M 3DYP6yZ2VcNvMa3wKNIFj/wtE/W7o0MLRIUN6CDkKoGDEQT3A1EmBbRXKJnwF3m2GRoY 9LFrgqce/8IfgYC+HJJp/Ciipursr/V4/scB75Ds3p35cJ1HGx+kuJOvux8jEzyH2XKQ Liq6h+vnRhwQO/Cwo8g9+wBpbC9AL9jp1veAFRiOc+FzbINyQ0648c0Anzal99OncFng hEJ5CuqgWGa20W9au342VTlW/Q5KS++m2jeQFKUdQGcUv9vDou6lNyOrMILP+5iG1IJi WkIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712335772; x=1712940572; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HQmJxG+6OqsYHCxRnj+yxrbkWjdaSUII4/9YhJxNd5w=; b=VcZwIN38fyQoYu9zLhvpTecbjhgZKoW17OUD8uY0DT8Ct/9GBl8E/w7doItG+HImcw WXtLDpPj6JMTOxvLv1xLNzzddbU7dq9F8Ioc+YVCPnJdbdNErj6xN5u+y8d1JEpqFssV gWSGaTfvF1zdSg+LMxYOfzD48wuRgFOXRSjPYhGfHbJGEVCfMWaZX/B/JfDk/dERwdKb ITQVDYsMgMLRmVYJVJhGBro6L1UeQXnZ54SFqdO+Ar54P95zyOL0fr8mhpO7ea9mAiKO h3KTGEDEXQxXhuPv0Re3hwCTEbUR8hIQT6PWNei7FNP4ncFHxwBV2CQ8LvZZ66Z8GONA S4XQ==
X-Forwarded-Encrypted: i=1; AJvYcCWNe462+2gbzhIN7mqLPavN4zx0iRZOmllHBskQ3lhHaLob21JCoMcrrpTOGLaXztvZSCDwekkjICoHkjXIZBftxPezw77gExPWnJnlXo/ODbNd8V3SQBMyOw==
X-Gm-Message-State: AOJu0YwCIh7Tgk/XeSQFvm1YLZCmmYB2r3WWZRHk6yX//mV08DukH5i8 8FRgC9ZYyCb2Q3/Y9A6UNmVkE59JawZwWCM+eMvBMQox00JVdilRbpEwwBy43evELbB6pGlVpiL crk1SDDI9ryyonqdbejnN1ySPPgk=
X-Google-Smtp-Source: AGHT+IH7ot1IRzY7EI1w6O/Yt8g4/GBTO2x1bF6qZ4rhKKYKRM5YxNglE8v7jzCEL01yLzhjcL22us7fgo/AiP/u8wE=
X-Received: by 2002:a05:6102:390a:b0:479:e27e:16a0 with SMTP id e10-20020a056102390a00b00479e27e16a0mr1313061vsu.5.1712335771612; Fri, 05 Apr 2024 09:49:31 -0700 (PDT)
MIME-Version: 1.0
References: <CAM4esxSpwRF5E3Xc_hotgvCSdKVe4BY_zRUKAzHvW48JEtWqTA@mail.gmail.com> <CACL_3VGOLkJU1m7pqSXRRouCKwdQ6yrbmaPwoa22Jr-N3FZNzA@mail.gmail.com>
In-Reply-To: <CACL_3VGOLkJU1m7pqSXRRouCKwdQ6yrbmaPwoa22Jr-N3FZNzA@mail.gmail.com>
From: Martin Duke <martin.h.duke@gmail.com>
Date: Fri, 05 Apr 2024 09:49:19 -0700
Message-ID: <CAM4esxSY6uTrE=ta2_rWwvDNmiocu_MVGArvCkecwWwmX4wLjg@mail.gmail.com>
To: "C. M. Heard" <heard@pobox.com>
Cc: tsvwg <tsvwg@ietf.org>, draft-ietf-tsvwg-udp-options.all@ietf.org
Content-Type: multipart/alternative; boundary="0000000000006747c806155c3df7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/yvjU69glx1QctQiaEGukXABcPfs>
Subject: Re: [tsvwg] Review of draft-ietf-tsvwg-udp-options-32
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.39
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: Fri, 05 Apr 2024 16:49:36 -0000

Hi Mike,

On Thu, Apr 4, 2024 at 2:22 PM C. M. Heard <heard@pobox.com> wrote:

> TSVWG went over this ground, to some extent at least, during the initial
> discussions of the initial versions of draft-reddy-tsvwg-explcit-signal
> (now expired) and draft-kaippallimalil-tsvwg-media-hdr-wireless (still
> active). After several threads in which the merits of using UDP options for
> host-to-network signaling was discussed (see, e.g., Challenges for host
> to network signaling via UDP Options
> <https://mailarchive.ietf.org/arch/msg/tsvwg/SpcVd6EB1Zi6FUhhyn2-o6nxuq4/> and
> other messages in that thread), I think most in the WG came around to the
> position of *not* wanting to see UDP options used for host-to-network
> signaling, The chairs are, or course, the folks who can make authoritative
> statements, but that was my impression, at least. The current version of
> draft-kaippallimalil-tsvwg-media-hdr-wireless does propose to use UDP
> options for signaling, but as part of a tunnel encapsulation arrangement,
> which does not conflict with the desired E2E nature of UDP options.
>

Thanks for the pointer. I'm glad that the WG has already done what I've
asked.


> Some minor points:
>> (11.4) It might be worth clarifying at the start that fragmentation is
>> purely E2E, not something that routers can do.
>>
>
> Is that not made clear enough by 16
> <https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-udp-options#section-16>.
> UDP Options are for Transport, Not Transit?
>

It certainly is. But people don't always read the whole document and when I
hear "fragmentation" I automatically think about IP. This is definitely
just a nit, but if you think it prevents confusion, add it.


> (11.4) What if Frag. Start is inconsistent with the location of EOL?
>>
>
> Do you mean when Frag. Start points past the end of the packet? It was
> clear enough to me that this would be considered malformed and discarded,
> but maybe that's just me being too familiar with the intent, and not
> actually scrutinizing the text.
>

"End of the packet" is a pretty ambiguous phrasing at this point :-). What
I mean is, what if the datagram contains zero payload, a FRAG option, a
series of other options, EOL, some random bytes, and then the frag start?
Is that legal? I gathered that the intent would be that Frag Start was
immediately after EOL, but then there are alignment issues, etc. What's
legal and what's malformed?

>
>
>> (11.4) 2 fragments/3000 bytes as a minimum will work, of course, but it
>> seems like an odd number. This seems to be related to the canonical 1500B
>> MTU, but that would imply that 2 fragments would be 2926 for IPv4 and 2886
>> in IPv6, if my math is correct. (To be clear, I can live with 3000)
>>
>
> I had a similar clarification request about what the value of MRDS size
> (11.6) means. My assumption is that parameter means the size of the
> Original UDP Datagram (or equivalently, the size of the reassembled
> datagram) as shown in Figure 12. If that is the case, we would be referring
> to the size of the reassembled datagram EXCLUDING the IPv4 or IPV6 headers
> but INCLUDING the UDP header and UDP options transmitted over the wire in
> the surplus area. The exact numbers are not that important, but a clear
> definition is. It may be appropriate to open a Github issue covering these
> points.
>

I agree that the MRDS definition is vague but I don't think MDS is
ambiguous at all. It's just that 3000 is a weird number for a minimum
because it's 2-point-something datagrams assuming a 1500B MTU.


> (11.4) "the OCS value of the original packet SHOULD be zero if each
>> fragment will have a non-zero OCS value"
>>
>> I don't understand the purpose of this. First, it complicates packet
>> processing because the full datagram has to use a different OCS
>> verification path if it's reassembled. Second, if the fragment OCSes are
>> sufficient, why not simply say that the original packet MUST NOT have an
>> OCS option?
>>
>
> Actually, the idea was that reassembly could be implemented as a "bump in
> the stack" and that the handling of reassembled datagrams would not vary
> much from how it's done for datagrams that are not received as fragments.
> IPv4 (and under certain circumstances IPv6) allow zero UDP checksum. The
> OCS is mandatory when UDP checksum is non-zero and recommended (but not
> required) when the UDP checksum is non-zero. So an implementation already
> has to deal with datagrams that have UDP CS == 0 but OCS != 0. Given that,
> it seems (to me at least) fair to keep this as a SHOULD, as it does not
> require any mechanisms that are not otherwise required.
>

I'm concerned about the opposite: if UDP CS != 0, then the normal
processing path is to expect OCS != 0, but the recommendation in (11.4)
means that OCS will be zero! So there's a special path if the packet is
reassembled. Am I mixing this up?


> (11.7) Is the token generated by the UDP implementation or the upper
>> layer? Is there any guidance on how to choose the token (should it be
>> random or monotonically increasing? Is any method OK as long as they don't
>> repeat? Given that UDP is connectionless, what would it even mean that it
>> doesn't repeat?)
>>
>
> It was my understanding -- and maybe I am simply too close to the spec --
> that the upper layer, or a library acting on its behalf, chooses the token
> value in a REQ option. I see text that says  "Both the REQ and RES are
> under the control of these upper layers." Is this not sufficiently clear,
> especially after reading the normative reference [Fa24]?
>

I took that text to mean that sending and receiving this option were under
control of the upper layer. I can see that [Fa24] has some useful guidance
here, and maybe it answers my question that it's an upper layer thing, not
a UDP kernel function.

But does anything belong in this draft? Are there any questions to answer
about token selection in general like the ones I proposed? Can there be
collisions where an application uses a DPLPTMUD library and then does its
own REQ/RESP that happens to use the same token? Do we need a UDP API to
say "you used this token recently"?