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

Michael Welzl <> Thu, 24 March 2016 08:20 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 53F0412D695 for <>; Thu, 24 Mar 2016 01:20:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.21
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 ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id mZZOh6RA2SLi for <>; Thu, 24 Mar 2016 01:20:12 -0700 (PDT)
Received: from ( [IPv6:2001:700:100:10::17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 3F45D12D5B3 for <>; Thu, 24 Mar 2016 01:20:11 -0700 (PDT)
Received: from ([]) by with esmtp (Exim 4.80.1) (envelope-from <>) id 1aj0Uz-0005zE-Rc; Thu, 24 Mar 2016 09:20:09 +0100
Received: from ([] helo=[]) by with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) user michawe (Exim 4.80) (envelope-from <>) id 1aj0Uz-00047E-2x; Thu, 24 Mar 2016 09:20:09 +0100
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 9.2 \(3112\))
From: Michael Welzl <>
In-Reply-To: <>
Date: Thu, 24 Mar 2016 09:20:07 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <> <>
To: Joe Touch <>
X-Mailer: Apple Mail (2.3112)
X-UiO-Ratelimit-Test: rcpts/h 2 msgs/h 1 sum rcpts/h 6 sum msgs/h 4 total rcpts 39632 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: 96E61F97A78B939C7379B69BAB16186774C4D572
X-UiO-SPAM-Test: remote_host: spam_score: -49 maxlevel 80 minaction 2 bait 0 mail/h: 1 total 554 max/h 14 blacklist 0 greylist 0 ratelimit 0
Archived-At: <>
Subject: Re: [Stackevo-discuss] New Version Notification for draft-welzl-irtf-iccrg-tcp-in-udp-00.txt
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: IP Stack Evolution Discussion List <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 24 Mar 2016 08:20:15 -0000

> On 24. mar. 2016, at 00.52, Joe Touch <> wrote:
> On 3/23/2016 4:43 PM, Michael Welzl wrote:
>>> On 24. mar. 2016, at 00.05, Joe Touch <> wrote:
>>> On 3/23/2016 4:42 AM, Michael Welzl wrote:
>>>> I'm sending this here as well because it relates to the idea of "running the Internet over UDP" (which, I noticed, is presentation that Brian will give in MAPRG: ).
>>>> This draft explains how we think it should be done with TCP; we believe that it can have quite significant positive side-effects, mainly because of the opportunity to combine the congestion controls of multiple connections.
>>> Ick.
>>> We went through this before multiple times. One notable was the impact
>>> of chunking and muxing in HTTP, effectively reinventing IP inside.
>>> "A person with one watch always knows what time it is. A person with two
>>> is never sure.”
>> I don’t think I follow this, sorry.
> Having one uniform layer at which multiplexing occurs makes things easy.
> Having two means you have to wonder what the other is doing all the time
> and whether the two correlate.

Is this a real practical problem related to this draft?

>>> I can't imagine what combined congestion control of TCP would mean
>>> inside the network - we had a hard enough time defining it for either
>>> TCB sharing or the Congestion Manager just at the endpoints.
>> I don’t get this either; it sounds like a misunderstanding?
>> So the encapsulation here is just meant to force packets to take the 
>> same path - else the Congestion Manager may be doing something
>> pretty wrong.
> The CM is supposed to react to E2E congestion, which is the sum of all
> effects of the different paths that packets can take.

I’ll have to disagree. The CM is one congestion control instance, and E2E TCP-like congestion control is based on the assumption of a single path. Things go wrong if this assumption is broken, e.g. when packets from a single connection are sent in different directions inside the network. This is not only due to possible reordering, but also because e.g. a congestion event on path 1 would make the controller reduce its rate, even if path 2 still has 3 times more capacity available.

> The idea that packets need to take a single path is an ATM concept, not
> IP. I think the Internet would be a lot better off if we just admit that
> it's *based* on the idea that packets can use different paths, and that
> this is a good thing.

I agree with everything you say here, but only in my research world of non-Internet-compatible things. However, for the Internet, TCP’s end-to-end congestion control really doesn’t allow us to admit that packet can take different paths. (*)   I remember Van Jacobson presenting in his SIGCOMM 2001 keynote how we’ve wrongly applied circuit-style thinking to the Internet, and how this really isn’t how things should be. I sat there, trying to understand what he says, because I thought that *he* did this to us?!?!   (I don’t blame him for having made a quick fix that worked, this was a great job!  - but, to me, folks should have understood early on that this can only be a temporary fix, not a “clean” solution: if anything has made the Internet circuit-like then it’s TCP’s end-to-end congestion control, I’d say. Well, now we’re kind of stuck with this end-to-end thing that tries to guess the right rate over a path that can consist of an arbitrary composition of link layers… “IP over everything, and then let TCP try to do the right thing over it”. Nonsense, I say! But super hard to fix...)

>> The sender-side behavior then couples connections; this could be 
>> done via the Congestion Manager, or in a way similar to TCB sharing,
>> or with our algorithm (which is somewhat similar to TCB sharing).
>> That’s why we call it “example algorithm” - think of this as “UDP
>> encapsulation forces TCP connections on the same path so we can use
>> the CM”. That’s really all it is.
> "all it is" is a complete reimplementation of everything in IP inside
> UDP -- because everything that IP provides will ultimately be need by
> this layer, as well as a way to map this to the corresponding IP mechanism.
> I think it would be useful to take a deeper look at the implications
> before jumping into this water.
> Joe

I don’t get it. Why do you say “everything that IP provides will ultimately be needed by this layer”? I can’t see why the implications would be as bad as you say, at least not for the draft we’re discussing here. It’s only 4 bytes of UDP header that map a few TCP connections to one UDP port number pair using a well-known UDP port… the way you talk about this, these must be the world’s most dangerous 4 bytes  :)


(*) Researchy side note here: I’m all for fixing this, but this would require putting congestion controls inside the network, which you said you didn’t like earlier in this conversation if I understood you correctly. Well, definitely this is a research topic, not an engineering one, at this stage - but I’m convinced that this is the right direction to pursue. Indeed, THEN we can admit that packet networks can allow packets to take different paths. Moving such stuff to the Internet would require making PEPs first-class network citizens, and doing away with the notion that taking care of congestion control (not necessarily reliability! so these are not your standard TCP splitters) is a security breach. I have no idea if that can ever be made to happen, and lots of homework about control loop interactions and such is necessary before even thinking further on this I’d say.