mptcp icon indicating copy to clipboard operation
mptcp copied to clipboard

Is it possible to switch scheduler during transforming a file

Open yuyujunjiang opened this issue 3 years ago • 2 comments

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?

yuyujunjiang avatar Sep 25 '22 03:09 yuyujunjiang

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:

  • default: only accept new subflows, doesn't establish or announce anything
  • fullmesh: establish a subflow per pair of local and remote addresses ("full mesh"), announce all available IP. Can be configured with ip tool to add IPs to the deny list: https://multipath-tcp.org/pmwiki.php/Users/Tools
  • binder: Loose Source Routing technique
  • netlink: to be controlled from userspace, e.g. with https://github.com/intel/mptcpd (if compiled to support the Out-of-tree kernel)
  • ndiffport, X subflows across the same pair of IP-addresses, modifying the source-port.

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 avatar Sep 26 '22 08:09 matttbe

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

matttbe avatar Sep 26 '22 08:09 matttbe