Subject: [Taps] TCP connection grouping

From: Michael Welzl <[email-masked]>
Date: Fri, 14 Sep 2018 13:51:51 +0200

Hi,

Ekr asked for it, but I think this could be of interest to more in TAPS, even though it's nothing that today's protocols can do:

Ekr's question was "how do you group TCP connections?".

Safiqul and I worked on this - with lightweight code that combines the congestion controls of multiple TCP connections, we were able to get a behavior that resembles a single transport connection with multi-streaming: it acts as if it's one connection in terms of congestion control, and allows to assign a precise share of the used capacity to the individual connections in the group.

The algorithm is described here:
http://safiquli.at.ifi.uio.no/paper/tcp-ccc-techrep.pdf

An obvious issue with the idea is that the TCP connections can take different paths, while we assume that they _always_ share the same bottleneck (*). One idea, described in the document above and implemented and tested by us, was to encapsulate multiple TCP connections within one UDP 5-tuple.

More documents, and code are available at:
http://safiquli.at.ifi.uio.no/tcp-ccc/

We also once presented a draft about this:
https://tools.ietf.org/html/draft-welzl-tcp-ccc-00
... to ICCRG, but then dropped this work due to lack of interest. If interest would pick up again, we'd be quite happy to continue this.

Cheers,
Michael

--

(*) Note the subtle difference with MPTCP, which is designed with the assumption that they *might* share a bottleneck - this leads to quite a different coupling algorithm).