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
890 stars 335 forks source link

mptcp uses only one subflow #309

Closed FiratA closed 3 years ago

FiratA commented 5 years ago

Hello guys,

i have question. I am using the linux kernel version 4.9.80 and i have the following MPTCP configuration: net.mptcp.mptcp_checksum=1 net.mptcp.mptcp_debug=0 net.mptcp.mptcp_enabled=1 net.mptcp.mptcp_path_manager=fullmesh net.mptcp.mptcp_scheduler=default net.mptcp.mptcp_syn_retries=3 net.mptcp.mptcp_version=0

I have 2 paths with a capacity of 10 MBit/s each.

Now i am using iperf with 13MBit/s but MPTCP is only using one path, instead of shifting the additional traffic on path 1. Wireshark shows me that there was a connection establishment for one path (SYN,SYN-ACK,ACK) but not for the second one?

Thanks in advance.

matttbe commented 5 years ago

Hi FiratA,

As you certainly know, it is the path-manager who takes the decision to create/remove subflows. By default with this Fullmesh PM set on a client, it will try to connect from each public and available address on this device to each address of the same family of the server it knows (MP_ADD_ADDR). For example, if you client has two IPv4 addresses that can be used and the server has only one, you should have 2 subflows.

Now the Fullmesh PM doesn't use IP addresses to establish new subflows if this IP addresses is not public or the interface is down but also if the routing is not properly configured (https://multipath-tcp.org/pmwiki.php/Users/ConfigureRouting) or if they are marked as NO_MULTIPATH (https://multipath-tcp.org/pmwiki.php/Users/Tools).

If everything looks good, it might be good to check the debug info and ftrace what's going on in this mptcp_fullmesh module.

linhnt31 commented 3 years ago

Hi @matttbe,

I face the same similar problem, my hosts only sent packets through 1 path. But, I am using OVS so I cannot route it by using configure Routing. I checked mptcp which is enabled with set up path manager, the number of subflows and use SDN to route. My scenario (using mininet) is drawn in this link ( I upload it online): Topo Can you give me a clue? Thank you so much.

matttbe commented 3 years ago

Hi @linhnt31

I guess in you have a typical use case for the ndiffport path-manager (configured on the client only) or IPv6 Segment Routing. Papers are freely available on both subjects. Best to look at them.

linhnt31 commented 3 years ago

@matttbe Thank you. I will check it out

matttbe commented 3 years ago

I guess I can close this story