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

Michael Welzl <michawe@ifi.uio.no> Fri, 25 March 2016 17:43 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 A9A9012D1E7 for <iccrg@ietfa.amsl.com>; Fri, 25 Mar 2016 10:43:56 -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 WacGFfGyDfs6 for <iccrg@ietfa.amsl.com>; Fri, 25 Mar 2016 10:43:55 -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 9D45B12D0DC for <iccrg@irtf.org>; Fri, 25 Mar 2016 10:43:54 -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 1ajVm4-0002UR-Uw; Fri, 25 Mar 2016 18:43:52 +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 1ajVm4-0002d0-Bs; Fri, 25 Mar 2016 18:43:52 +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: <56F57258.1000203@gmail.com>
Date: Fri, 25 Mar 2016 18:43:51 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <A12DD1D6-12C0-40E7-A9A8-5297209929C4@ifi.uio.no>
References: <A741874C-0E2C-4905-9FD3-D29B4B94A9C0@ifi.uio.no> <56F3212B.5020408@isi.edu> <20F3E6FF-DED4-46BD-BFD5-C76F8A6A8D40@ifi.uio.no> <56F32C47.6080707@isi.edu> <271375F3-2B9D-4C61-9C6E-468E6423A1A4@ifi.uio.no> <56F427D9.9030208@isi.edu> <C6E55B03-FD33-4EAB-B814-8A4C3E9657EA@ifi.uio.no> <56F5538D.3040408@gmail.com> <8669865D-1302-4221-A18A-806FEE8502ED@ifi.uio.no> <56F57258.1000203@gmail.com>
To: Alexandre Petrescu <alexandre.petrescu@gmail.com>
X-Mailer: Apple Mail (2.3112)
X-UiO-SPF-Received:
X-UiO-Ratelimit-Test: rcpts/h 5 msgs/h 3 sum rcpts/h 7 sum msgs/h 4 total rcpts 39696 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: 7010228FC2FE08DA2CE07F1FFA73FF49253AC8C7
X-UiO-SPAM-Test: remote_host: 109.189.134.3 spam_score: -49 maxlevel 80 minaction 2 bait 0 mail/h: 3 total 591 max/h 14 blacklist 0 greylist 0 ratelimit 0
Archived-At: <http://mailarchive.ietf.org/arch/msg/iccrg/P_eDB9XuaBuXbzVJbeTTHJLCJQw>
Cc: iccrg@irtf.org
Subject: Re: [iccrg] [Stackevo-discuss] 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 17:43:56 -0000

> On 25. mar. 2016, at 18.16, Alexandre Petrescu <alexandre.petrescu@gmail.com> wrote:
> 
> 
> 
> Le 25/03/2016 17:57, Michael Welzl a écrit :
>> Please discuss this draft on the ICCRG list. I’ll keep
>> stackevo-discuss in cc just this once as a reminder to folks here
>> that this has moved, but please remove it in your response. Let’s try
>> to cleanly transition to ICCRG if we can.
>> 
>> 
>> About your email, my general answer is: you seem to be reading more
>> into this than it is.
>> 
>> You mention reliability, applicability to video streaming, etc.: this
>> is still “normal” TCP.
> 
> Ok for TCP, but the question was of TCP-in-UDP applicability to
> video-streaming as opposed to UDP applicability in video-streaming.

It’s as applicable or non-applicable as TCP.


>> In fact a design goal was to minimize the changes that we need to do
>> to it, so it’s a relatively easy code change.
> 
> I can agree.
> 
>> The intention is only to be able to combine the congestion
>> controllers of multiple flows, as has been suggested before (CM,
>> Ensemble sharing, ..). The outcome is that multiple flows are closer
>> to being like one flow, and there should be some benefits there in
>> terms of new flows immediately being able to use a larger cwnd,
>> priority-based cwnd share assignment etc.
> 
> I guess you mean multiple TCP flows.

Yes


>> Since you mention tunnels, issues with traceroute, overlays, etc.:
>> this is an e2e encapsulation. Same TCP source and destination
>> endpoints as before.
> 
> But different couples of port numbers, right?  It would be
> transport-layer encapsulation similar to network-layer encapsulation
> which uses different couples of IP addresses.

Exactly: you have one UDP port number pair, using a well-known port, that encapsulates several separate TCP port number pairs.
To the TCP’s on both sides, its normal port numbers are still there - they’re preserved, by first exchanging them on the SYN / SYN-ACK and then just “compressing” them into a connection ID.


>> Does it require rendez-vous points: it requires a well-known UDP
>> port.
> 
> Ok, so the TCP and UDP endpoitns would be on a same machine.  I was
> thinking they were on different machines, and the machine owning the
> well-known UDP port (rdv point) would multiplex to other TCP-only
> machines which dont implement TCP-in-UDP.

Aha! Well yes indeed, on the same machine. We change the TCP code on the client, we change the TCP code on the server, we involve no extra system.


>> The idea is that a client checks using UDP if the server is
>> TCP-in-UDP capable (listening on the UDP port), and if not, falls
>> back to TCP.
> 
> There are a few questions here.
> 
> If a destination is not TCP-in-UDP capable will it tell it explicitely
> to the source?  This is hard to do.
> 
> Or will the source decide based on the reception of a "UDP Port
> Unreachable"?  If so, then you hit this need of the UDP layer to
> communicate to the TCP layer: if  UDP port number is unavailable then
> use this other TCP port number.  And there are so many ways to do that,
> that at some point one may think it's better to leave them alone
> separate, not one in the other.

The way we do it may not be optimal but it’s pretty simple, see below:


>> This is achieved by “happy eyeballing” (sending out packets of both
>> types in one go).
> 
> I didnt know.  I will look.

It’s described in section 4 of the draft:
https://tools.ietf.org/html/draft-welzl-irtf-iccrg-tcp-in-udp-00#section-4
The explanation begins under the bullet list, at the paragraph starting with "Unless it is known that…”.   Note to self: make a subsection for this in the next version…
We don’t wait for “UDP Port Unreachable”: we try both and use what comes back first.

Cheers,
Michael