Re: [Edm] On Section 3.2. At what level should versioning occur?

Martin Thomson <mt@lowentropy.net> Fri, 06 August 2021 01:33 UTC

Return-Path: <mt@lowentropy.net>
X-Original-To: edm@ietfa.amsl.com
Delivered-To: edm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7003A3A1623 for <edm@ietfa.amsl.com>; Thu, 5 Aug 2021 18:33:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=lowentropy.net header.b=LVvY5Yj2; dkim=pass (2048-bit key) header.d=messagingengine.com header.b=lOhNKYme
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 3SAb6BQTSwIC for <edm@ietfa.amsl.com>; Thu, 5 Aug 2021 18:33:49 -0700 (PDT)
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 537A33A1626 for <edm@iab.org>; Thu, 5 Aug 2021 18:33:48 -0700 (PDT)
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 18C615C0163 for <edm@iab.org>; Thu, 5 Aug 2021 21:33:48 -0400 (EDT)
Received: from imap41 ([10.202.2.91]) by compute5.internal (MEProxy); Thu, 05 Aug 2021 21:33:48 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lowentropy.net; h=mime-version:message-id:in-reply-to:references:date:from:to :subject:content-type:content-transfer-encoding; s=fm2; bh=sXJAC yXXl5JEs0Ao27s1q31KayxCWwewzDyj7DUWWH8=; b=LVvY5Yj2U7J4MdtpdRS24 HtCtTQi48C90xt+GvUYVNTvRyNHPJQ7cVF6NwZ+yI6K/Pk16ZiZvm/ArJTGURtrV Fve5NEiOGs5EVhlbOsf3j0CAHmSgyddI6OuNruHu82oFAh6eRnaYyLFHXhKfDLAU UktJtQJQigePdGv+O2w302aFKksOrTu6u+bpKeuwe6/zCzmxJ5YQSc8N2e1zPt97 PBuGQtGjrl/uTfow0kSOzjvFbXRw3bD8mlRy9cJEZsL9WGa9Mkv040JXl6xDlbdq 7ufgHLImRnFt1zGa1zqFxNXqoQMbCHvycOaqLN48UdHoBNq3n0LmvbjOQnPZ2eJQ g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; bh=sXJACyXXl5JEs0Ao27s1q31KayxCWwewzDyj7DUWW H8=; b=lOhNKYmeNhiAFVlGmSjEXP91fbZwa+T8U4pxktVElF0EctOIKBQYGDoG3 1DdcHDnlu+T8YXr8S0tS8547MQiqWpdGbGy6yedWD3OjIOZMGwxEj7ZvPj0jZgeG w3Q1+OcpcAoTsTJc2Oz7X1f5MehtPqjIBiK0Gr0+ddaBlD2oG+TA3yQNAwJI/Vpw aALSAuOHjxHxH6aT5PqlKP6RdPws/+B0kwtIxWY5LBGhAhuijnWFkARscy0oh2G1 PZ+jhaDahr0th/T2uVT0XXes3Xxy1q09j++ki2z7ulhP0uuubyCUvOfy0a7+xC2E FAVkSoJ8OwnYPPPKeiljGtUbdWRqw==
X-ME-Sender: <xms:e5EMYdIwOhYjimDLXj4GrczBdXGzDc9gdulEV-Ni4BAFbH1fBy5Dlw> <xme:e5EMYZKRMSQgPDqg-aNVRnUt1MODw4S8O7Wx22ox7d1j6arxO3mvSQFUS0-bIw7pA 3Ctr2WJDZ44wCrLGe8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrjedtgdeggecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkjghffffhvffutgfgsehtqh ertderreejnecuhfhrohhmpedfofgrrhhtihhnucfvhhhomhhsohhnfdcuoehmtheslhho figvnhhtrhhophihrdhnvghtqeenucggtffrrghtthgvrhhnpefgjeeuudeiffeltdegle ehjedvtedtjeduudehgfegfefgkefgueeiteegffdttdenucevlhhushhtvghrufhiiigv pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmtheslhhofigvnhhtrhhophihrdhnvg ht
X-ME-Proxy: <xmx:e5EMYVt_3LcR23PFmCtsejYYLRkirh0XJBmA8OnSAYA7kH-KBO3wdQ> <xmx:e5EMYeZnFfrWapVDvrIkT2EkIJkaIdgxNB7_m0SnTa-0f1-M3p--fQ> <xmx:e5EMYUalwS77LDyejPiTYG4uucXchGlS_aprZCXNzQ-fzvdWhlmFJw> <xmx:fJEMYdkjfQqCn_VU0HJNFKUUNehKldPorbKBOwagXmZ3eioIKutiIw>
Received: by mailuser.nyi.internal (Postfix, from userid 501) id 888F43C0449; Thu, 5 Aug 2021 21:33:47 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
User-Agent: Cyrus-JMAP/3.5.0-alpha0-552-g2afffd2709-fm-20210805.001-g2afffd27
Mime-Version: 1.0
Message-Id: <63bd41ea-9088-4480-b4bd-107cda212aaa@www.fastmail.com>
In-Reply-To: <d1efb181-7b45-16e3-19f2-e03a8dd1c24a@lear.ch>
References: <d1efb181-7b45-16e3-19f2-e03a8dd1c24a@lear.ch>
Date: Fri, 06 Aug 2021 11:33:18 +1000
From: Martin Thomson <mt@lowentropy.net>
To: edm@iab.org
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/edm/uWymGVe9fziEynGrVP_9o1E6ze0>
Subject: Re: [Edm] On Section 3.2. At what level should versioning occur?
X-BeenThere: edm@iab.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Evolvability, Deployability, & Maintainability \(Proposed\) Program" <edm.iab.org>
List-Unsubscribe: <https://www.iab.org/mailman/options/edm>, <mailto:edm-request@iab.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/edm/>
List-Post: <mailto:edm@iab.org>
List-Help: <mailto:edm-request@iab.org?subject=help>
List-Subscribe: <https://www.iab.org/mailman/listinfo/edm>, <mailto:edm-request@iab.org?subject=subscribe>
X-List-Received-Date: Fri, 06 Aug 2021 01:34:05 -0000

On Thu, Aug 5, 2021, at 19:00, Eliot Lear wrote:
> I really like your section 3.2, but it does presume that the lower 
> layers are able to accommodate exposing of version information.  Below 
> the IP layer, when IEEE 802 is used, we are in very good shape; but does 
> everything below that hourglass neck have that attribute, and do we want 
> to demand that in order to implement v4/v6?  To that end, my suggestion 
> is that you simply note this as an issue when we interact with other 
> technologies.

More on this below, but I don't read Section 3.2 as declaring a mandate, but just as making a suggestion.
 
> Interestingly, when we do port allocations, we generally say that 
> applicants SHOULD include versioning information in their protocols 
> because the IANA will not allocate new port numbers for existing 
> services.  But is that the right approach, and what is meant by an 
> existing service?  

The idea that port == service is largely a dead idea, so I don't see port numbers are relevant to this discussion.  (I think that we should probably not accept more allocations, without exceptional justification.  We have SRV and SVCB and other discovery/configuration things in ample measure.)

Your advice is very much valid there.  You are saying that TCP/UDP port numbers are not good for versioning.  That's right because they aren't.  That's not what they were designed for and that is not how they are used in practice.

> If the service is accomplishing the same thing, but 
> the encoding of the underlying protocol has shifted, should we really be 
> so strict?  While some quickly envision the world moving to QUIC, let's 
> agree that there are some applications that won't find QUIC to be The 
> Answer, and that port numbers may remain a somewhat scarce resource.  
> And so maybe a version field ISN'T such a big deal, but requires 
> additional protections for future use for those who are keeping score, 
> yes I'm arguing both sides of the issue].  

This is probably a different question now, and outside the scope of this work.  (I'll note that you said "strict" here, but I don't see anything that mandates a particular design direction in the draft. It seems pretty clearly optional advice to me.)

FWIW, as you mention ports, my position on *transport-level* versioning goes something like:

1. port numbers are not for versioning
2. consequently new transport protocols need versioning (this includes transport-adjacent protocols like TLS) or some way to allow for their eventual replacement; this is because there is no functioning facility in the IP layer (or UDP or TCP for that matter)
3. new transport protocols are expensive to build and should be rare (the difficulty of building a versioning scheme is part of that)
4. new uses of transport protocols should be secured and should use TLS or QUIC
5. new uses of transport protocols that use TLS or QUIC can use ALPN to manage their own versioning and so do not need their own versioning design

This document covers points 2 and 3 and talks generically about point 5, which is all it can really do.

> One example might be that 
> two-party protocols never FAIL when they see a greased version but 
> simply come back with "version not supported" or "I see grease" or some 
> such.

That is essentially how QUIC and TLS work (though "I see grease" => "grease is just ignored").