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

Michael Welzl <michawe@ifi.uio.no> Fri, 25 March 2016 18:53 UTC

Return-Path: <michawe@ifi.uio.no>
X-Original-To: iccrg@ietfa.amsl.com
Delivered-To: iccrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D585D12D0BE for <iccrg@ietfa.amsl.com>; Fri, 25 Mar 2016 11:53:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.21
X-Spam-Level:
X-Spam-Status: No, score=-4.21 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, T_RP_MATCHES_RCVD=-0.01] autolearn=ham autolearn_force=no
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 CvF0ij8CX0ih for <iccrg@ietfa.amsl.com>; Fri, 25 Mar 2016 11:53:58 -0700 (PDT)
Received: from mail-out5.uio.no (mail-out5.uio.no [IPv6:2001:700:100:10::17]) (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 353E412D140 for <iccrg@irtf.org>; Fri, 25 Mar 2016 11:53:57 -0700 (PDT)
Received: from mail-mx3.uio.no ([129.240.10.44]) by mail-out5.uio.no with esmtp (Exim 4.80.1) (envelope-from <michawe@ifi.uio.no>) id 1ajWrr-00057f-Fz; Fri, 25 Mar 2016 19:53:55 +0100
Received: from 3.134.189.109.customer.cdi.no ([109.189.134.3] helo=[192.168.0.107]) by mail-mx3.uio.no with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) user michawe (Exim 4.80) (envelope-from <michawe@ifi.uio.no>) id 1ajWrq-0000xX-MV; Fri, 25 Mar 2016 19:53:55 +0100
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 9.2 \(3112\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <CALx6S34aA-=0xxWg2t2yLz48-y6U6OcnUP-5HoTH51AEMR9t-w@mail.gmail.com>
Date: Fri, 25 Mar 2016 19:53:54 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <D9A4CF71-CA89-426F-AA2D-51A653B384C7@ifi.uio.no>
References: <E5DC1ACF-3403-4112-9DB8-9AAE4E5B7428@ifi.uio.no> <28FFF903-C446-46A1-AA9E-4BD2566F1088@ifi.uio.no> <CALx6S37-QdSaGTB9kXyaqvG36GPzd9e2A6jqG=qByrj2U1_rSA@mail.gmail.com> <C43CBFF8-6D87-4B08-B80E-C20736AB8529@ifi.uio.no> <CALx6S340EQvRrrnhpJST-jDcx9RC4Auo8a6SUWw-AdqUc+VjXQ@mail.gmail.com> <654BAAE2-7E75-417C-9A36-C5547015DAC0@ifi.uio.no> <CALx6S34aA-=0xxWg2t2yLz48-y6U6OcnUP-5HoTH51AEMR9t-w@mail.gmail.com>
To: Tom Herbert <tom@herbertland.com>
X-Mailer: Apple Mail (2.3112)
X-UiO-SPF-Received:
X-UiO-Ratelimit-Test: rcpts/h 4 msgs/h 2 sum rcpts/h 7 sum msgs/h 3 total rcpts 39700 max rcpts/h 54 ratelimit 0
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, TVD_RCVD_IP=0.001, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: CD892474598A76BD9EF3D9FA574DCE720EA630CE
X-UiO-SPAM-Test: remote_host: 109.189.134.3 spam_score: -49 maxlevel 80 minaction 2 bait 0 mail/h: 2 total 593 max/h 14 blacklist 0 greylist 0 ratelimit 0
Archived-At: <http://mailarchive.ietf.org/arch/msg/iccrg/eukaeSQA4shqWAO4e_R2LuAYnB0>
Cc: iccrg@irtf.org
Subject: Re: [iccrg] [tsvwg] New Version Notification for draft-welzl-irtf-iccrg-tcp-in-udp-00.txt
X-BeenThere: iccrg@irtf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Discussions of Internet Congestion Control Research Group \(ICCRG\)" <iccrg.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/iccrg>, <mailto:iccrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/iccrg/>
List-Post: <mailto:iccrg@irtf.org>
List-Help: <mailto:iccrg-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/iccrg>, <mailto:iccrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Mar 2016 18:54:00 -0000

> On 25. mar. 2016, at 19.51, Tom Herbert <tom@herbertland.com> wrote:
> 
> On Fri, Mar 25, 2016 at 11:22 AM, Michael Welzl <michawe@ifi.uio.no> wrote:
>> 
>>> On 25. mar. 2016, at 18.58, Tom Herbert <tom@herbertland.com> wrote:
>>> 
>>> On Fri, Mar 25, 2016 at 10:29 AM, Michael Welzl <michawe@ifi.uio.no> wrote:
>>>> Hi!
>>>> 
>>>> 
>>>>> On 25. mar. 2016, at 18.00, Tom Herbert <tom@herbertland.com> wrote:
>>>>> 
>>>>> Hi Michael,
>>>>> 
>>>>> For encapsulation format I suggest that you look at GUE
>>>>> (https://tools.ietf.org/html/draft-ietf-nvo3-gue-02). GUE can
>>>>> encapsulate TCP in UDP and inserts a GUE header that allows extra meta
>>>>> data.  The connection ID could be moved to the GUE header so that no
>>>>> special modification of the encapsulated TCP header would be needed.
>>>>> The connection ID would be a new field in the GUE header. There is
>>>>> already a session ID option defined, but that is 96 bits which is
>>>>> probably overkill.
>>>> 
>>>> I have, as I wrote this draft. It struck me as something that isn’t really necessary just for the purpose of what TCP-in-UDP is trying to achieve. In particular, other than GUE (if I got it correctly), TCP-in-UDP strictly assumes end-to-end operation, and requires changing the sender-side TCP code too because the main point is to combine congestion controls. This makes it possible to do whatever we want with the encapsulated TCP header.
>>>> 
>>> Then you are redefining TCP.
>> 
>> Yes - that’s the whole point
>> 
>> 
>>> You can do that, but this substantially
>>> reduces the possibility of deployment. In real networks we need
>>> tcpdump, netflow, diagnostics, other debugging tools. Encapsulation
>>> works best when it does not require changes to the encapsulated
>>> packet. Besides that if your willing to change TCP for this use, why
>>> not just go a little farther and use SCTP/UDP which I believe already
>>> has a concept of shared congestion window amongst sub-flows?
>> 
>> You’re completely right. In fact I expect the performance of this TCP coupling to be quite similar to SCTP/UDP with multistreaming. The difference is in how this is implemented: it can, for example, be plugged underneath existing applications that use TCP, and it’s also a way to play with new TCP options that middleboxes wouldn’t like. It’s a small overhead method - TCP code has been optimized to death, SCTP comes with some overheads such as the CRC checksum (but it also has some more benefits).
>> 
>> 
>>>>> Another consideration is the UDP checksum. This must be set in IPV6
>>>>> (excepting that the requirements in RFC6935 and RFC6936 are met) and
>>>>> is recommended for encapsulation any way. This means that there are
>>>>> two checksums (TCP and UDP) per packet which becomes a performance
>>>>> issue since most NICs can offload at most one checksum and often that
>>>>> is restricted to only the checksum in a plain TCP or UDP packet with
>>>>> no encapsulation. We solved this in GUE with remote checksum offload
>>>>> (https://tools.ietf.org/html/draft-herbert-remotecsumoffload-02) which
>>>>> should work fine with TCP over UDP case.
>>>> 
>>>> We (and the preceding proposals that are cited in the draft) removed the redundant TCP checksum from the encapsulated TCP header. Because it’s end-to-end and changes TCP anyway, we can do that.
>>>> 
>>> That will break our ability to use NIC offload with TCP/UDP
>>> (segmentation offload for instance). Everything, including many
>>> performance optimizations, is already designed around the requirement
>>> that the TCP checksum must be set. Trying to undo that requirement is
>>> actually a complication, not a simplification in practice.
>> 
>> Interesting… here I lack knowledge about offloading. Are you saying that GUE doesn’t have that problem? That would make it a more attractive encapsulation option then.
>> 
> 
> There's been a lot of work in this area since encapsulation over UDP
> is very hot as a solution for tunneling. So we are working on
> solutions that are generic across all flavors of foo-over-udp for L2
> and L3 encapsulation. I believe these solutions should be applicable
> to L4 encapsulation also (e.g. TCP/UDP). What we don't want is HW
> vendors endlessly adding protocol specific support in HW for all these
> foo-over-udp. With some care, we should be able to design new
> encapsulations and generic HW support that avoid the need for
> protocol-specific awareness in HW.

Understood, makes perfect sense to me.

Cheers,
Michael