mptcp
mptcp copied to clipboard
Is it possible to switch scheduler during transforming a file
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?
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
iptool 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?
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