multipath-tcp / mptcp

⚠️⚠️⚠️ Deprecated 🚫 Out-of-tree Linux Kernel implementation of MultiPath TCP. 👉 Use https://github.com/multipath-tcp/mptcp_net-next repo instead ⚠️⚠️⚠️
https://github.com/multipath-tcp/mptcp_net-next
Other
889 stars 336 forks source link

Is it possible to switch scheduler during transforming a file #497

Open yuyujunjiang opened 2 years ago

yuyujunjiang commented 2 years ago

Hi there. 1、I am studying scheduler of MPTCP to improve performance. It is difficult to implement a new scheduler in underlying code. So I am wondering if I can switch the scheduler during transforming a file to combine the advantages of all the scheduler having existed by setsockopt(sock, SOL_TCP, MPTCP_SCHEDULER, scheduler, strlen(scheduler)); For example, scheduler swiches form roundrobin to deafult when gap of RTT is large. 2、At present, there are two pathManager : default and fullmesh. What If I want to use two of the three interfaces?

matttbe commented 2 years ago

Hello,

So I am wondering if I can switch the scheduler during transforming a file

No, this is not possible. You can only ask to use a specific scheduler before the creation of a connection. The reason is technical: there are data to initiate, switching from one to another while the connection has been established increase the complexity. This has not been implemented (yet).

At present, there are two pathManager : default and fullmesh

There are more than two in this repo: binder, ndiffport, netlink.

What If I want to use two of the three interfaces?

The path managers have different goals:

For more details, see the Configure the path-manager section from https://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP

Does this reply to all your questions?

matttbe commented 2 years ago

What If I want to use two of the three interfaces?

You certainly want to use fullmesh and set multipath off on one specific interface, e.g. for the eth0 interface:

ip link set dev eth0 multipath off

or

FLAGS=$(cat /sys/class/net/eth0/flags)
printf "0x%x" $(( FLAGS | 0x80000 )) > /sys/class/net/eth0/flags