-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Are the endpoint flags signal
and subflow
meant to be exclusive? or how to get MPTCP to work for both directions?
#459
Comments
Hello, I understand that the terminology might be confusing, we should improve that somehow. I think your configuration is OK:
That's strange. The fact the subflow is established then closed is abnormal: try to increase the limits, check the packet traces (the subflow got reset?), I guess you don't have hosts in the middle that could alter the connection or block it?
Do you mind trying with a more recent kernel? At least the last LTS (v6.1) on both, ideally the last stable one (v6.6/v6.5). (e.g. on Ubuntu, you can usually easily install a newer kernel: either HWE or OEM: e.g. |
Thanks for the detailed reply!
It's assuring to know that my previous understanding was alright, it's just this issue made me doubt it.
So I increase the limit to 8 (apparently the max), to my disbelief (since it was previously set to 3, which it never reached), it actually worked, to a degree, now 1 additional subflow is established and it didn't close immediately. but still less ideal. More tests show it's the Coincidentally, I noticed the number of total endpoints on Host A was also 7 (sorry I simplified my case in OP), and after more tests it's indeed relevant, if I remove some endpoints to make it 4, the magic number also becomes 4.
I haven't done this yet, since I guess that probability is minimal?
I simplified my case in the OP, Host A is actually behind a NAT router, I ran 3 wireguard links between A and B, so there's nothing between them, and I think my firewall configuration was alright, since when the flag was only
I'll definitely try this when I get the chance, I did test directly (without wireguard, just Internet) between NAT router (which runs kernel 6.0) and Host B (6.1), the symptom is identical. output of
Host B:
Host A when
Host B:
It looks like iperf3 made two connections, one for ctrl, one for test, in both connections, there's 1 add_addr announcement, and established subflow. Another observation is which ever address I choose for the initial connection, it's always that particular address been announced, except when I chose that address for the initial connection, then another address is announced. |
Yeah.
Shouldn't that be a limit on "subflows established" instead of "subflow attempts made" though? |
After more tinkering, I now have 4 endpoints set as |
How can we control, which address pairs are reasonable for subflow creation between client and server? I would like to point out that it makes sense to define VLANs with their own subnets to which the relevant network interfaces that are supposed to communicate with each other belong. Corresponding routing rules in a routing table are defined for each interface. |
Sorry if this question is too naive, I do have quite a bit of experience with Linux and networking but very new to MPTCP, I did try to search for documents but couldn't find the answer.
Network setup:
Host A: has 3 interfaces, policy routing was set and tested.
Host B: has one.
What I found working:
then
mptcpize iperf3 -s
on Host A andmptcpize iperf3 -c 10.0.0.1
(or.2
or.3
) on Host B works.If I changed the flags on Host A from
signal
tosubflow
, thenmptcpize iperf3 -s
on Host B andmptcpize iperf3 -c 10.0.0.100
on Host A works.But if both the
signal
andsubflow
flags are set, only the second scenario would work (Host A being the client), when Host A is the server, I can see inip mp m
that additional subflows were established but closed immediately, then only one of Host A's interface was utilized.Host A is running kernel 5.15, and Host B 6.1.
Any suggestions if I want Host A to be able to act as both MPTCP server and client?
The text was updated successfully, but these errors were encountered: