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:22 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 E344A12D5AA for <iccrg@ietfa.amsl.com>; Fri, 25 Mar 2016 11:22:14 -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 YfIqc9C8L2ec for <iccrg@ietfa.amsl.com>; Fri, 25 Mar 2016 11:22:13 -0700 (PDT)
Received: from mail-out4.uio.no (mail-out4.uio.no [IPv6:2001:700:100:10::15]) (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 AC83712D580 for <iccrg@irtf.org>; Fri, 25 Mar 2016 11:22:12 -0700 (PDT)
Received: from mail-mx4.uio.no ([129.240.10.45]) by mail-out4.uio.no with esmtp (Exim 4.80.1) (envelope-from <michawe@ifi.uio.no>) id 1ajWN8-0000ya-Qk; Fri, 25 Mar 2016 19:22:10 +0100
Received: from 3.134.189.109.customer.cdi.no ([109.189.134.3] helo=[192.168.0.107]) by mail-mx4.uio.no with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) user michawe (Exim 4.80) (envelope-from <michawe@ifi.uio.no>) id 1ajWN8-00007o-41; Fri, 25 Mar 2016 19:22:10 +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: <CALx6S340EQvRrrnhpJST-jDcx9RC4Auo8a6SUWw-AdqUc+VjXQ@mail.gmail.com>
Date: Fri, 25 Mar 2016 19:22:08 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <654BAAE2-7E75-417C-9A36-C5547015DAC0@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>
To: Tom Herbert <tom@herbertland.com>
X-Mailer: Apple Mail (2.3112)
X-UiO-SPF-Received:
X-UiO-Ratelimit-Test: rcpts/h 2 msgs/h 1 sum rcpts/h 5 sum msgs/h 2 total rcpts 39698 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: 10FC4876F9DA93423A82114C7C6CD4D07E7AC0D6
X-UiO-SPAM-Test: remote_host: 109.189.134.3 spam_score: -49 maxlevel 80 minaction 2 bait 0 mail/h: 1 total 592 max/h 14 blacklist 0 greylist 0 ratelimit 0
Archived-At: <http://mailarchive.ietf.org/arch/msg/iccrg/lF2x3hRZomqun8HhuTUnbAA5TQw>
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:22:15 -0000

> 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.

Cheers,
Michael