-
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
No new subflow when removing an endpoint and adding a new one #416
Comments
Hi Chris, Thank you for this bug report! (and sorry for the delay) (Note that MPTCPv0 and MPTCPv1 refers to the protocol, not the implementation)
When
On the server side, I guess you use |
Good Morning Mat,
Yes that's right, I flush all tables
Well, on the server I tried both but couldn't observe an other behavior. It's a bit unclear for me what I need to configure. On the shadowsocks (tessares) or RedHat tutorial it is described as signal on the server site but did not understand why I have to configure with signal. Chris |
OK, thank you, maybe we don't cover well this case where a new endpoint is added later on. It would be good to try to reproduce it in a simpler setup. I just changed the title of the ticket, I hope it represents well the issue you have. If not, feel free to modify it.
You are not the only one to be confused by that, we should improve something there but not sure what :) If your server doesn't have additional IP addresses, no need to configure additional endpoints. |
Could you please list the full configuration steps you use, including devices and endpoints removal and recreation? Just to avoid natural language ambiguity. A shell script including all the relevant commands would be ideal. Thank! |
good morning team, sorry for my big delay. i am currently on vacation and since 17 jul. i am back in office on 14 aug. (yeah thats large vacations 😃 ) Chris |
hey hey, sorry for delay, daily business and cold delayed me a liitle bit. Chris |
The scripts leaves several questions open/gray areas: how many vpn tunnels are you using in your test? does that use a tun or a tap interface? are the defined endpoints all 'fullmesh' ? it looks there are also 'backup' ones. It would be more clear if you could provide, after recreating your setup, the output of the following commands: And additionally the paired "ip mptcp monitor" output and finally the output of the above commands just after the failures.
Note that this subflow closed due to a connection reset (errno=104) and the 0 dport value is really unexpected here. I suspect something like the attached patch below could help, @ChrisChoke: could you please give it a shot in your testbed? |
hey paolo, thank you very much for reply. i am compiling kernel at the moment at will test after finished. graph TD;
A[client]-->| wwan1 tun tcp | B[server];
A[client]-->| wwan2 tap udp| C[compat server];
C[compat server]-->| eth0 | B[server];
i hope this diagram will help a bit. i use 2 tunnels. one tun tcp tunnel for mptcp in case that the provider supports mptcp and one tap udp tunnel to a compat server without mptcp kernel in case the provider block native mptcp. the backup interface is the created tun interface. do i need to install the patched kernel on client and server site?! or just on client?! Chris |
To be sure I'm on the same page: do you want to use mptcp as transport for the openvpn tunnel? And not as the application level protocol? Out of sheer ignorance on my side is not clear what are the different between the tun and tap tunnels WRT the protocol headers stacking. Could you please list the expected headers for egress packets on each interface? Please, additionally share the other info as per my previous comment.
Just on the side actually creating the additional subflows, that is the client. |
no i dont think so. its application level. i use
okay, now i dont understand what i should do or describe :-) i am sorry. i will recreate my setup with the new patched kernel at the moment. Chris |
hey paolo, i attached your requested output. test1: test2: test3: test4: Chris |
hey guys, how are you? its been a long time since i heard anything. so since february/march its looks like vodafone updated their setup in the field. Now they do not block mptcp anymore. My mptcp capable tests are successful now. So my backup solution for this cellular connection (the solution to create tap vpn interfaces for using as sublow.) will fade more and more in the background. but one behavior leave me some questions in my head. My established connections for example. Both are natively mptcp capable.
if i restart/loose connection from wwan1/cellular1. which behavior should i expect? (the interface which is "Netid" mptcp) currently the subflow(tcp part) will change his state to FIN_WAIT and disappears after a while.
the second question is: What will happen if the mptcp-interface will go down and come back with a new ip-address?! what sould i expect in this case?! looking forward to resolve my issues. Chris |
Hey Team,
thanks for this great project and the work to get it in the linux kernel. nice job.
i ve been using mptcpV0 since a while and want to migrate my setup to mptcpV1. but i have some strange behavior when my interfaces is reconnecting.
My setup has a client with 2 or more cellular interfaces while my server just have one wired interface. On both site i run Debian 12. Kernel 6.1.
But i tried Kernel 6.3 from sid and your mptcp-next/export Kernel as well with a patch from #391.
On Server site i have openVPN up an running via
mptcpize enabled openvpn@server.service
ss command show me listen mptcp port.mptcpd.service is stopped and masked.
On client site i using openvpn via
mptcpize run openvpn --some-options
. mptcpd is stopped and masked. i setup endpoint viaip mptcp endpoint
manually.the limits are on
subflow 8 and add_addr_accepted 8
when all provider i use support mptcp it looks great. but in my case i have a provider which seems to block mptcp since of beginning 2021 if i remember.
so in that case i creating a udp openvpn tunnel to another server and use the created tap interface as subflow. sometimes i get it up and running.
but if i reconnect the wwan interface which i am using for the udp connection and the tap interface is closed and created again, the subflow dont come back.
another scenario is when i reconnect wwan1 which is the mainflow part, the wwan1 dont come back to the mptcp connection as well. ``ìp mptcp monitor```show
me nothing about SF_CLOSED or something. just this:
initial connection:
after reconnect wwan1:
the second sceanrio is that the tap interface is the mainflow mptcp connection like so:
if i reconnect wwan1, all is fine and the interface come back to the mptcp connection. but if i reconnect the wwan2 for the udp tap interface,
this interface dont come back to the mptcp connection. in this case i see in
ip mptcp monitor
this:initial connection:
reconnecting interface of mptcp mainflow:
the destination port printed out as 0.
If the tap interface is recreated with openvpn the ifindex number is increasing. so i always have a new ifindex number. can this be a problem?
This setup works very well and stable with mptcpV0. Most of this run with mptcpV1 as well, but i run into this trouble when a cellular interface is reconnecting.
my endpoints on client site are configured with
subflow fullmesh
just like on the server side, too.ip rules and routing tables for the interfaces are setted up.
hope we can explain this behavior and could find a working solution. :-)
if you need further information, feel free asking. i will help where i can. but i am not familiar with gdb or something, here need some explanation beforehand.
greets
Chris
The text was updated successfully, but these errors were encountered: