Re: [tsvwg] design assumptions - draft-ietf-udp-options

Joe Touch <touch@strayalpha.com> Wed, 17 July 2019 19:39 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 98AC0120071 for <tsvwg@ietfa.amsl.com>; Wed, 17 Jul 2019 12:39:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.218
X-Spam-Level:
X-Spam-Status: No, score=-1.218 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_NONE=-0.0001, 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 PjkY7fH8A75L for <tsvwg@ietfa.amsl.com>; Wed, 17 Jul 2019 12:39:25 -0700 (PDT)
Received: from server217-3.web-hosting.com (server217-3.web-hosting.com [198.54.115.226]) (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 CF0C112051E for <tsvwg@ietf.org>; Wed, 17 Jul 2019 12:39:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=strayalpha.com; s=default; h=Message-ID:References:In-Reply-To:Subject:Cc: To:From:Date:Content-Type:MIME-Version:Sender:Reply-To: Content-Transfer-Encoding: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=ONIGZu7KxKJ/SI3f5UG1AzugK9RRlcutroHAu82K+ls=; b=coIP5cnu9eJIO0Zao4dgWl9tZ IrZubWyTSEHBc0LBjUitRn5Lyad37EM0r5JxzR134DwVPBTEFB1RnDWCK1ahT3jzbZef+hcCYmd8F d7khsHOP9bDgwGYOZq7NAEdLIPEmANWKqigAb95ZDx6JZdHdMnHizU17FaJvhFzq1QgPvg3TY9gT9 aW+t+ygC/apAMysMmK0sgC3y0zr6Q24uOoouSa0CuqNo4Vhwxv4yyIcB12k78x8IoICumXMCwDYSF S4QZeiXlBYDvbIzMHFx/4012Poomp7RA/SGkoUSSOjbFGzkug0I75f8gGJJDpa23AtrYEs1RoqB1G ZAbUHhPRg==;
Received: from [::1] (port=49500 helo=server217.web-hosting.com) by server217.web-hosting.com with esmtpa (Exim 4.92) (envelope-from <touch@strayalpha.com>) id 1hnpln-003yBQ-QE; Wed, 17 Jul 2019 15:39:24 -0400
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=_b135b0192d4fe741df752a926796b60b"
Date: Wed, 17 Jul 2019 12:39:19 -0700
From: Joe Touch <touch@strayalpha.com>
To: Tom Herbert <tom@herbertland.com>
Cc: tsvwg <tsvwg@ietf.org>
In-Reply-To: <CALx6S37oWYPkhZB+A3RG_p2devUF97GirTVC8H0M7kUi+b10SA@mail.gmail.com>
References: <CAPDqMeq9GjEQKukH1pZOTdE50e_rc3U6gpdxT-5qrS5phD0RGw@mail.gmail.com> <646D45AD-D79B-4BD2-A084-7DA97CE2C415@strayalpha.com> <7EC37B50-45D5-4CF1-B113-205E55BF244E@strayalpha.com> <CALx6S34s7L7xo+26bt5Cdaqi4Es5Aci42GHk1WNKzugr5st-Gw@mail.gmail.com> <B525BF50-EFCC-44A5-A604-6CDDA914A1CB@strayalpha.com> <CAPDqMep3R6z9PRKkHyOvrh6sV9n5Sc0B++-zVz0FYJCwE6swrQ@mail.gmail.com> <E42A2AE2-F499-465E-BDE6-5EFC0AB20042@strayalpha.com> <CE03DB3D7B45C245BCA0D24327794936306138E9@MX307CL04.corp.emc.com> <CAPDqMeoyNb7vQTdqxLpZpnKb9S7QKeDJNLyQJBmq95yXhB+xfQ@mail.gmail.com> <7D365770-64FE-40BC-901D-B4D7DF6B484B@strayalpha.com> <20190713182554.GB39770@clarinet.employees.org> <CALx6S36mH2M6SYnRSecWXa7k_d1u8O43+CXE-=KqeO0x2e5+qw@mail.gmail.com> <82FF6486-FABF-4D2C-B5E2-178779C720A4@strayalpha.com> <30c17e9c174f6b0da3ecc6b503a8cb17@strayalpha.com> <CACL_3VGs7j+y5vFNT3OL9OKX8ue4rv-Cxi467KR-vbhnMdx86g@mail.gmail.com> <2f71a292f924a9b8de4227c4bbc2f809@strayalpha.com> <0ce46e21249f0dc55310b192d382f50a@strayalpha.com> <CALx6S36gaMqNRo_hYKr45T_vTkUB-vRrYRYJz2_KgvejNsJtLQ@mail.gmail.com> <efbf65646a0e0d2535dc5726b34f3472@strayalpha.com> <CALx6S37sZxmGQJq5mxDiF88NeUjj2HMRnQG5KyZA_4ujrLJkqg@mail.gmail.com> <079d7d849d0e6260497a6c0ed37595a2@strayalpha.com> <CALx6S37wOkz0436CmevOjSe=VwAxKstSR9Jc66PUmXwUKK4vBw@mail.gmail.com> <075C3166-DF88-4160-8E6C-1C32511F4D46@strayalpha.com> <811C4C35-48D8-4382-A4B4-784FAC1B9F1D@strayalpha.com> <CALx6S36P0s0Uz8wuQNt+nLihAn_vLqOJydrAhx5cbv2wch=-oQ@mail.gmail.com> <D68DDA75-D45A-45AF-8C08-B599152D638D@strayalpha.com> <CALx6S37oWYPkhZB+A3RG_p2devUF97GirTVC8H0M7kUi+b10SA@mail.gmail.com>
Message-ID: <02b2e2f81da17024d27ebc3ab2db2516@strayalpha.com>
X-Sender: touch@strayalpha.com
User-Agent: Roundcube Webmail/1.3.7
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/k3DLktDtZQTY8EVPj1jBX_S4--4>
Subject: Re: [tsvwg] design assumptions - draft-ietf-udp-options
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, 17 Jul 2019 19:39:28 -0000

Tom, 

On 2019-07-17 08:35, Tom Herbert wrote:

> On Wed, Jul 17, 2019 at 7:58 AM Joe Touch <touch@strayalpha.com> wrote: 
> 
>> Tom,
>> 
>> Some of these are design assumptions; some of these are design *approaches*. Can we please focus on the former? I'll try for a few below:
>> 
>> ...
>> 
>> - Fallback mechanism to use when intermediate devices drop packets
>> with UDP surplus space
>> 
>> I don't see a way to make this a design goal; UDP is unreliable and we can't know where or why packets are dropped per se
> It's a common problem to deal with the situation where the network
> drops packets with new protocols or formats it hasn't seen before.
> Some kind of falback is generally required to a rudimentary protocol.
> See Happy Eyeballs for TCP, QUIC fallback to TCP, etc.

Those are hard-state protocols; we're dealing with UDP. I think the U
keeps being forgotten. 

>> - Extensibility, i.e. something like version number for the protocol
>> 
>> it's already extensible with the KIND codepoint space; given UDP lacks version numbers, it would not be useful to impose them on options alone
> 
> It's generally useful to have something that allows version or
> alternative formats.

Again, that's what the KIND codepoint is for. 

> For instance, five years from now someone may
> discover a fatal flaw in UDP Options deployment that makes them
> unusable in that format. Or maybe options become so popular that we
> run out of option space.

We can't in the current approach. Even if we hit a KIND limit, we can
define one of the last KINDs as "use the next byte as extended KIND". 

> For example, TCP option space is quite
> limited and has caused problems with extensibility-- if there was a
> version number in the protocol we could define a new version to allow
> larger options space and still use protocol number 6. Having the
> ability to fundamental change the format is very useful for the cost
> of a few bits and is common in protocols.

TCP option space is limited exactly because of the fixed header
structure you keep advocating. 

The current udp-opt structure has no such limit, but you complain that
this creates a DOS vector. 

Hmm... 

>> - Protocol headers versus protocol trailers
>> 
>> that's a mechanism; what behavior are you describing?
> 
> The use of protocol trailers is a design decision. The consequences of
> taking this path may be significant since it is a departure from
> convention for nearly all other IP protocols.

This isn't IP. 

And "trailers" is where we are unless we send packets twice, which we
don't want to do. (there's no such thing as a "header" unless there is
zero data, which means legacy receivers won't see them, which means we
need to send two packets) 

>> - Implementation and deployment considerations
>> 
>> what is the design goal here? maximizing initial deployment probability of success? and if so, at what cost to future use?
>> 
>> i.e., this seems useful ONLY if it takes into consideration the ephemeral nature of the current deployment environment
> I'm not sure how ephermeral deployment is. Consider that it "only"
> took IPv6 twenty years to get to deployment. If you design it a
> protocol for an idealized Internet and ignore reality it won't get
> deployed.

Here's an example: 

IP was assigned one Ethernet codepoint, 0x0800 
IP has a version field, which was 4 at the time. 

When IPv6 was created, it complied with IP's generic structure and
version indication, using v6 in that field. 

However, a new Ethernet codepoint was assigned - 0x86dd 

This additional codepoint was assigned because *ethernet hardware at the
time* was parsing IP packets, but not fast enough to do the right thing
for IPv4 and IPv6 at the same time. 

So now we're stuck with two codepoints when we should have had one. 

> - Integration into a host stack
> 
>> what's the goal here?
> 
> It's "rough consensus and _running_ code"

I'm being more specific - "integration into the host stack" - are you
asking for running code (Gorry has some). Are you asking for design
advice in the doc (that's not appropriate). Are you asking for something
else? 

>> - Interaction with common accelerations for UDP
>> 
>> again, what's the goal? again, would this be maximizing for the short term?
> Deployability. Accelerations have existed since the 90's and will be
> with us with the next thirty years. There's nothing short term about
> them and it's not like it's a stop gap we wait for CPU performance and
> power to catch up with network speeds.

Accelerators change. Common ones today won't be common in 10 years
necessarily. 

Designing for "accelerators" (including zero-copy) is fine, but it
shouldn't be tied to too many details of today's implementations. 

>> - Middleboxes interactions (particularly guidelines for protocols
>> suggested in https://datatracker.ietf.org/meeting/104/materials/slides-104-wgtlgo-forwarding-plane-realities-00)
>> 
>> Those are ROUTER guidelines; middleboxes that want to look inside transport protocols would already fail if limited to many of these constraints.
>> 
>> And many don't apply from the start for us:
>> - we do not have fixed offset (we're already at a variable location when used with legacy-compatible data)
>> - we do not have a fixed header structure (even if we assume we start with either OOC or CCO and even length, there's not much more; the rest is necessarily a chain)
>> 
>> And what about some of that advice? not being a draft, its advice wasn't widely discussed or vetted, and in some places is wrong IMO. In fact, I suspect you would agree, because that advice specifically says:
>> - avoid checksums over the entire packet
>> - make checksums optional
>> 
>> These are both points you've argued against here.
> 
> Yes, but these are guidelines offered which is more than we've had
> before.

I can point to car buying advice sites too, but they're no more relevant
for us. 

> IMO it's a mistake to just ignore them considering that these
> are the devices the will be transporting the packets.

Yes. Transporting. 

Routers shouldn't be this deep into a transport protocol; if they are,
they're not routers and not limited this way anyway. 

> And as we've
> seen all too often, it routers or middleboxes for whatever reason
> decide to arbitrarly drop packets, say a firewall drops packets with
> UDP options because it doesn't have visibiity into the surplus space,
> then the protocol is doomed.

Remember that ALL routers dropped IPv6 when it was introduced. 

We should fix what's broken, not continue to try to design around it. 

And as long as we lack compliance enforcement (e.g., via an endorsement
mechanism), we should stop trying so hard to write our way around what
are clearly bugs. 

>> (and, as a side note, another case in point, the idea of not going through the pipeline twice for tunnel exit and entry is basically denying that tunnels are inherently a kind of recursion that needs to be fully reentrant, i.e., it would be much safer to claim "tunnel entry and exit MUST behave EXACTLY as if the packet traverses the pipeline and all its processing EXACTLY twice: once for exit and once for entry, and that information between the two be limited to the context contained in the packet only")
>> 
>> - Running code that implements UDP option to evaluate and guide
>> above. Preferably open source in Linux since that is the most deployed
>> end host OS that would support UDP options
>> 
>> There are at many more OSes that are more widely deployed (e.g., in cellphones, etc.). We should not design for the short term.
> I'm not how this is designing for the short term. There's over 2.5
> billion users of Linux on smart phones for instance, i don't think
> it's going away any time soon.
> 
>> And Gorry's team has running code.
> 
> Great. Please include a reference to the source code in the next
> update of the UDP options draft which I assume is forthcomoing.

It isn't for several reasons: 

a) there has been no consensus so far on substantive changes 

b) the ID queue is closed 

As to source code, that's Gorry's decision on how and where to post. 

Joe