Re: [tsvwg] New Version Notification for draft-herbert-tcp-in-udp-00.txt

Sebastian Moeller <moeller0@gmx.de> Wed, 16 August 2023 18:47 UTC

Return-Path: <moeller0@gmx.de>
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 D3EB0C1519B5; Wed, 16 Aug 2023 11:47:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.854
X-Spam-Level:
X-Spam-Status: No, score=-6.854 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_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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=gmx.de
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 OLPw4f3Mk5gT; Wed, 16 Aug 2023 11:47:33 -0700 (PDT)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 44805C15EF2D; Wed, 16 Aug 2023 11:46:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1692211543; x=1692816343; i=moeller0@gmx.de; bh=rzl6IvIY8I5oCmrcEshaf18xOdnEw5e07Gxkw6qNra4=; h=X-UI-Sender-Class:Subject:From:In-Reply-To:Date:Cc:References:To; b=XJTJHB7lUNtGT5olXuy23ZdN/S+CrDwMnofa0jWaPu98XkAdN0ZaTv3bSuUFkoUz/5WM3Uo V0O2wDPzOMdNMud2cjefXVDnbSDlxvkyt2MDj3sKc5gqa5hS+xAbvXj3ULqQnzYBtJvfzBmtX bLipbfqsxT+RTcCvfARI4iPfXV9Y4AJ77QA55p+FL5MsmzlKM9wY02KyAHd5+PD5+EQDre+bo sj2WqgscRM7thFnG+dYM1i/yRY0FdbAYuw8p3mdwPzFtdIiODzsplVkMPVlA3wNNgJI8BXQCz BUFekAdzJy61tq0ddVB6X4tKTmWj6uF8B9KBSQKxYIooDOplHIpQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from smtpclient.apple ([77.3.94.188]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MD9T1-1qeu742VqT-0096OT; Wed, 16 Aug 2023 20:45:43 +0200
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.4\))
From: Sebastian Moeller <moeller0@gmx.de>
In-Reply-To: <D627976D-82FC-4C51-A983-FB724EFADC5B@ifi.uio.no>
Date: Wed, 16 Aug 2023 20:45:42 +0200
Cc: Tom Herbert <tom=40herbertland.com@dmarc.ietf.org>, tsvwg <tsvwg@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <2696484E-56AB-4ACC-B60D-BE28F15B63E8@gmx.de>
References: <169179236696.36797.6075120394432124931@ietfa.amsl.com> <CALx6S36-4d=48UMKusabbRnQiZ7B=0uTvd-Oksrnwj9bxN7xmg@mail.gmail.com> <579B1F7E-CE8C-47C5-94A8-39BE643C5796@ifi.uio.no> <CALx6S34aQ+cX--1OAs_TzjUxL2GwN2-5iigYegxWAzwv+_rR4A@mail.gmail.com> <D627976D-82FC-4C51-A983-FB724EFADC5B@ifi.uio.no>
To: Michael Welzl <michawe@ifi.uio.no>
X-Mailer: Apple Mail (2.3696.120.41.1.4)
X-Provags-ID: V03:K1:7z8FQBOeCdDDOeYJIMMwqoKeY7lkdTiHPjyG6HH8Hd0Q0NZ6XdS gEo+OtDGW50qSVfDbMCUhgCnZgNNTd+BUcdbbw4QUyQ80LdieDNKke+pDeFABYULKiCUjNg CmhTa4SlvKjKzkQPxYao7VKqFl8IPKrnbQe3xEkNrpCKXNJ6ENEX69wM+P52chvdv/wusIi +kAZJBjsYV5axRuU5A7Qw==
UI-OutboundReport: notjunk:1;M01:P0:1DADfKnD/pQ=;ELO1zMC1ClBWkStZTXj+u+A4tpQ Ao5s5MO1KeH/jEoEVKeMXg1XtW/mQ2XzwAu7w7uMLdqcpf0RRFDo8+W+sHxuEk4iEohLNa+c9 DKTEiM0iiFS/pGCn8bCNUE9GRnLVE9bMKd7AIKqiGPaqMa8xfx0HSzLXdhWDfy1Wc6knFFIfK 02yor0WuF+FXdCQV4hWPNs7XneKQHe/pniB6/lFRasEMBoyi8Gm/VSdp5vdX6R1HX1xujUMZI h4c1gPOqN/Jtc6K8CXNeAbpz/OYsdWTYznXdV/QYmNCJQDlGYCvl7/2ugX+MwCOvbY4xA5PxA hOW+gUT3fRl2QcGN+opg+yozYMkjUam/j4cwnCC4tV6NY+qA7byTtoOQZqcfevYhbiPARrqWP Z6muFTQa4EdZagN/yZTjNGVRY7RaP2DulRTKLZWGH2YP/ixz2Je7nmWfRD94CWgWtxpq8DWed /+Si1WwgR0c/3whHRiNwnHmp91aO+RrsCz6m054tM3LvIP6G9vBArjqw3hAqD6TFoKJkJDzwY gPv8oQ/OWHozM5rOi6hQCsYo622s/AhxGw4oTyEjgJPYBFmhV0jJ5mGdOlF3ofU7LzijnPVYk /y/yndQItj8vcgsC75mzyKrH6UgFQpzp3ralLnAQL0ZDpDzRH3XMOHoVloFwdy+Vf6/nVauPh bBr5PzOIUAYlgK6KYS5SY4HbPYXU6or7Gzg8XS2AmyfGcHUt+P3J4M1lcw56cgBJOrxjDAmmW TOBll2i8fL/G6h+bYfzVbU4mey3Tcj39ANZDcvIWsHbBBgRvSiLPD5gZFPVCbHqtjSkBQqZ5o xT98CH+lWjwrDC2QgINX0glnyfoWOx7YdI+Jds63eqblDgn2r56vffePkucvt4abmp4XK1P5W jhNjBIjx055p08sAXod5Wo2SysujpFQCzUOLJ1Sf5fVPkj4C2c1SMx2nCO3QPLAP8wCJ5JBCA SpN5V8MXQOan3S8QNWuBP5ljzMk=
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/fJ2dgyGPtNbb7rPQfeC1FsW0EyM>
Subject: Re: [tsvwg] New Version Notification for draft-herbert-tcp-in-udp-00.txt
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: Wed, 16 Aug 2023 18:47:36 -0000

Hi Michael,


> On Aug 16, 2023, at 19:45, Michael Welzl <michawe@ifi.uio.no> wrote:
> 
> Below:
> 
>> On Aug 16, 2023, at 6:52 PM, Tom Herbert <tom=40herbertland.com@dmarc.ietf.org> wrote:
>> 
>> 
>> 
>> On Wed, Aug 16, 2023, 3:17 AM Michael Welzl <michawe@ifi.uio.no> wrote:
>> Hi again, Tom, all,
>> 
>> In my previous email I have stated that I think this is worth doing, and pointed at some previous designs that encapsulate TCP in UDP.
>> 
>> Now, I would like to discuss some design details. I have two comments, for now:
>> 
>> 1)
>> Generally, these designs remove some elements of the TCP header (such as the urgent pointer, and in some of the designs also the checksum).
>> Two of the proposals ( draft-cheshire-tcp-over-udp-00 and our own, draft-welzl-tcp-ccc ) cut down the length of the TCP header in this way so much that this encapsulation can be done without changing the MTU. I think this is a great benefit - which you lose by maintaining the checksum. Why do you think the TCP checksum is still needed when you already have a TCP checksum?
>> 
>> Hi Michael,
>> 
>> I assume you mean we already have the UDP checksum.
> 
> Oops, yes.
> 
> 
>> Design rationale is:
>> 
>> 1) The UDP checksum is optional in IPv4. We'd have to make a requirement in TCPinUDP.
> 
> Okay, yes, that’s a very minor reason though…  (side note: this made me check QUIC: it doesn’t have a checksum either, right?  Actually, I’m surprised: I couldn’t find the word “checksum" in RFCs 9000, 9001, 9002, 9308, 9312??  What am I missing?  Surely, if it doesn’t have one, there should be some words somewhere about *not* disabling the UDP checksum when encapsulating it?!).
> 
> 
>> 2) TCP checksum is always required. To make it optional or use TCP checksum would require changes to core TCP stack
> 
> Yes, just item 4) below - but small ones. Many things require changes to the stack.
> 
> 
>> 3) There's no performance cost to hosts for having redundant checksums (assuming reasonable checksum offload is available). This is already true for TCP/IP in UDP encapsulation like VXLAN.
> 
> True, but a not much of an argument: “it’s there because it doesn’t hurt”…
> 
> 
>> 4) IMO, the benefits to avoid reducing the MTU don't outweigh the complexity to implement a compressed TCP header. The additional 12 bytes of overhead is easily accounted for determining MSS (we already do this for other forms of encapsulation also). PLMTUD continues to work, and so the only real cost is only 12 bytes on the wire overhead (<1% of typical MTU and less that any IPinIP encapsulation)
> 
> I see the point of the wire overhead gain being small, and you’re right: since we negotiate the MSS anyway it’s not a problem for PLPMTUD etc. At the same time, I think your arguments in favor are also not strong…  well, I can see that there could be a benefit in being able to hand a packet over to a 100% unchanged TCP stack, even with hardware support, which this encapsulation probably allows. I don’t have a very strong opinion here myself.
> 
> 
>> 2)
>> The UDP source port. I dislike this rule:
>> 
>>    The port value SHOULD be derived
>>    from the TCP 5-tuple; this can either be a hash over the 5-tuple, or
>>    simply a random number that is assigned by the source for the TCP
>>    connection maintained in its PCB (Protocol Control Block).
>>  
>> ...because TCP-in-UDP encapsulation yields a great opportunity to combine the congestion controls of multiple TCP connections (as in our design)  **IFF**  they share the same outer (UDP) 5-tuple, with many benefits (as described in my previous email, with pointers to results). Not sharing the same 5-tuple can also be beneficial, e.g. to make use of in-network load balancing with a mechanism such as TCP. There can be security reasons to decide for one or the other, too.
>> 
>> How to set the source port is a SHOULD. The source could set it differently assuming the implementation supports it.
> 
> That’d be okay with me if we’d be discussing how to implement the RFC that this spec is. But, we have an opportunity for clearer words about this  :-)    and in fact, I’d rather say: unless someone has good reasons NOT to do this, the default should be to use the same port for multiple connections, so that coupled cc. can do its job.

	[SM] I respectfully disagree, this will essentially require that flow-queuing schedulers/AQMs look into the secondary TCP header*... Could I ask you to make a prediction about the number of coupled CCs deployed in the field versus flow-queuing schedulers? My intuition is that we have considerably more FQ schedulers in the field, so the default should cater to those.

*) That or the coupled TCP flows are treated like a single flow in the aggregate, which might not give the expected throughput.


> 
> 
>> So, I would say that the choice of the UDP source port should be a conscious decision based on such considerations rather than generally derived from the TCP 5-tuple with a SHOULD.
>> 
>> We could, but again the implementation needs to support it. And  we want to make sure there is a recommended default that makes sense which I believe should be to automatically set an entropy value for the flow
> 
> Aha, I see, your primary intention is to leave the TCP code entirely unchanged. That could go in the list of arguments to exceptionally set the port as you suggest, diverging from my proposed default ;-)
> Otherwise… we’re here to change things, right?  and single-path cc coupling is a big win. Software and hardware can change when it’s worth it.

	[SM] "single-path cc coupling is a big win" over a flow queuing scheduler/AQM? Interested in data supporting your claim.

Regards
	Sebastian


> 
> Cheers,
> Michael
> 
> 
> 
>> 
>> 
>> If you wonder where “such considerations” would come from - e.g., a TAPS implementation would have the necessary inputs:
>> https://ietf-tapswg.github.io/api-drafts/draft-ietf-taps-interface.html#name-connection-groups
>> vs. https://ietf-tapswg.github.io/api-drafts/draft-ietf-taps-interface.html#name-isolate-session
>> ( All of this has been tried and tested. We did implement TCP connection coupling below a TAPS-like interface in the NEAT project. )
>> 
>> Yes, there is an interesting benefit since the UDP ports can be decoupled from the TCP ports. This is also a property of the IPv6 flow label and in fact both the flow label and UDP source port in UDP encapsulation are set in Linux using the same functions.
>> 
>> Tom
>>  
>> 
>> Cheers,
>> Michael
>> 
>> 
>> 
>>> On 12 Aug 2023, at 00:22, Tom Herbert <tom=40herbertland.com@dmarc.ietf.org> wrote:
>>> 
>>> Hi,
>>> 
>>> This is a draft describing how TCP could be encapsulated in UDP. This
>>> would be useful if UDP really is to be the "new network layer" and we
>>> want to use UDP Options with TCP to carry network layer options.
>>> 
>>> Thanks,
>>> Tom
>>> 
>>> 
>>> ---------- Forwarded message ---------
>>> From: <internet-drafts@ietf.org>
>>> Date: Fri, Aug 11, 2023 at 3:19 PM
>>> Subject: New Version Notification for draft-herbert-tcp-in-udp-00.txt
>>> To: Tom Herbert <tom@herbertland.com>
>>> 
>>> 
>>> 
>>> A new version of I-D, draft-herbert-tcp-in-udp-00.txt
>>> has been successfully submitted by Tom Herbert and posted to the
>>> IETF repository.
>>> 
>>> Name:           draft-herbert-tcp-in-udp
>>> Revision:       00
>>> Title:          TCP-in-UDP Encapsulation
>>> Document date:  2023-08-11
>>> Group:          Individual Submission
>>> Pages:          10
>>> URL:            https://www.ietf.org/archive/id/draft-herbert-tcp-in-udp-00.txt
>>> Status:         https://datatracker.ietf.org/doc/draft-herbert-tcp-in-udp/
>>> Htmlized:       https://datatracker.ietf.org/doc/html/draft-herbert-tcp-in-udp
>>> 
>>> 
>>> Abstract:
>>>   This document specifies a method of encapsulating TCP protocol
>>>   packets within UDP headers.  TCP-in-UDP is useful in situations where
>>>   network capabilities specific to UDP can be leveraged for TCP
>>>   packets.
>>> 
>>> 
>>> 
>>> 
>>> The IETF Secretariat