All of lore.kernel.org
 help / color / mirror / Atom feed
* MPTCP Linux Implementation
@ 2022-03-19 18:54 Sam Kumar
  2022-03-21  9:43 ` Paolo Abeni
  0 siblings, 1 reply; 3+ messages in thread
From: Sam Kumar @ 2022-03-19 18:54 UTC (permalink / raw)
  To: mptcp

Hello MPTCP Linux Developers,
I'm Sam Kumar, a PhD student in Computer Science at UC Berkeley. I
read the NSDI 2011 paper about congestion control in MPTCP (this
paper: https://www.usenix.org/conference/nsdi11/design-implementation-and-evaluation-congestion-control-multipath-tcp).
I think it is really nice work and I would like to try running it.

I came across your community's work on upstreaming Multipath TCP
(https://github.com/multipath-tcp/mptcp_net-next/wiki), and I wanted
to ask about the congestion control algorithm that your implementation
supports. Does the version of Multipath TCP in Linux support the
congestion control protocols for preferring subflows with less packet
loss, such as the COUPLED, SEMICOUPLED, or MPTCP (Sec. 2.5) algorithms
described in the paper? If it is different from what's described in
the paper, I'd appreciate any pointers to resources describing how the
upstream Linux implementation splits traffic across the subflows.

In case it affects the answer, I'm on Linux 5.13. I'm happy to use a
more recent kernel version if newer kernels support these congestion
control algorithms.

I'm also aware of the MPTCPv0 work
(https://github.com/multipath-tcp/mptcp_net-next/wiki) --- are the
congestion control protocols supported by that work any different?

-Sam

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: MPTCP Linux Implementation
  2022-03-19 18:54 MPTCP Linux Implementation Sam Kumar
@ 2022-03-21  9:43 ` Paolo Abeni
  2022-03-21 12:32   ` Matthieu Baerts
  0 siblings, 1 reply; 3+ messages in thread
From: Paolo Abeni @ 2022-03-21  9:43 UTC (permalink / raw)
  To: Sam Kumar, mptcp

On Sat, 2022-03-19 at 11:54 -0700, Sam Kumar wrote:
> I'm Sam Kumar, a PhD student in Computer Science at UC Berkeley. I
> read the NSDI 2011 paper about congestion control in MPTCP (this
> paper: https://www.usenix.org/conference/nsdi11/design-implementation-and-evaluation-congestion-control-multipath-tcp).
> I think it is really nice work and I would like to try running it.
> 
> I came across your community's work on upstreaming Multipath TCP
> (https://github.com/multipath-tcp/mptcp_net-next/wiki), and I wanted
> to ask about the congestion control algorithm that your implementation
> supports. Does the version of Multipath TCP in Linux support the
> congestion control protocols for preferring subflows with less packet
> loss, such as the COUPLED, SEMICOUPLED, or MPTCP (Sec. 2.5) algorithms
> described in the paper? 

Nothing of the above. The in-kernel MPTCP implementation uses a single
scheduler algorithm, which is a custom heuristic based on the bleast
scheduler:

https://ieeexplore.ieee.org/document/7497206

For the gory details see:

https://elixir.bootlin.com/linux/latest/source/net/mptcp/protocol.c#L1431

and onwards.

> In case it affects the answer, I'm on Linux 5.13. 

Way too old.

> I'm happy to use a
> more recent kernel version if newer kernels support these congestion
> control algorithms.

The most up2date scheduler version is present into Linus tree since
v5.17-rc1, but if you are interested into any real devel work, I
suggest to check-out our devel branch, and keep your local tree
up2date:

https://github.com/multipath-tcp/mptcp_net-next.git

> I'm alsv5.17-rc1o aware of the MPTCPv0 work
> (https://github.com/multipath-tcp/mptcp_net-next/wiki) --- are the
> congestion control protocols supported by that work any different?

With 'MPTCPv0 work' do you refer to the out-of-tree implementation? 

In that case, yes: the the out-of-tree and upstream[1] implementations
are quite different independent. As said, the upstream packet scheduler
is somewhat related to the out-of-tree blest scheduler, which is the
default scheduler for the out-of-tree kernel.

Note that the vanilla Linux implementation has no support for the
version 0 of the MPTCP protocol.

Cheers,

Paolo

[1] note: I use 'in-kernel', 'upstream' and 'vanilla' as synonyms.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: MPTCP Linux Implementation
  2022-03-21  9:43 ` Paolo Abeni
@ 2022-03-21 12:32   ` Matthieu Baerts
  0 siblings, 0 replies; 3+ messages in thread
From: Matthieu Baerts @ 2022-03-21 12:32 UTC (permalink / raw)
  To: Paolo Abeni, Sam Kumar; +Cc: mptcp, mptcp-dev

Hi Sam, Paolo,

(+cc mptcp-dev as you also asked the question there)

On 21/03/2022 10:43, Paolo Abeni wrote:
> On Sat, 2022-03-19 at 11:54 -0700, Sam Kumar wrote:
>> I'm Sam Kumar, a PhD student in Computer Science at UC Berkeley. I
>> read the NSDI 2011 paper about congestion control in MPTCP (this
>> paper: https://www.usenix.org/conference/nsdi11/design-implementation-and-evaluation-congestion-control-multipath-tcp).
>> I think it is really nice work and I would like to try running it.
>>
>> I came across your community's work on upstreaming Multipath TCP
>> (https://github.com/multipath-tcp/mptcp_net-next/wiki), and I wanted
>> to ask about the congestion control algorithm that your implementation
>> supports. Does the version of Multipath TCP in Linux support the
>> congestion control protocols for preferring subflows with less packet
>> loss, such as the COUPLED, SEMICOUPLED, or MPTCP (Sec. 2.5) algorithms
>> described in the paper? 
> 
> Nothing of the above. The in-kernel MPTCP implementation uses a single
> scheduler algorithm, which is a custom heuristic based on the bleast
> scheduler:

Regarding the TCP CC, there is no coupled congestion control algorithms
implemented in the upstream kernel. A few are available in the fork:
lia, olia, balia, morena (not sure about this last one...), etc.

These CC are only needed if fairness is important for you when you have
multiple paths of the same MPTCP connection with regular TCP flows
sharing the same congested link. That is not often the case: it is more
needed for specific use cases. That's probably why nobody started to
work on that as long as I know. It was a popular topic a few years ago
because it is an interesting research subject from a mathematical point
of view. But I don't know if it solves "real-life" problems.

So in short, these coupled CC have not been implemented in the upstream
Linux kernel and as far as I know, nobody is working on that.

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-03-21 12:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-19 18:54 MPTCP Linux Implementation Sam Kumar
2022-03-21  9:43 ` Paolo Abeni
2022-03-21 12:32   ` Matthieu Baerts

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.