mptcp
mptcp copied to clipboard
Porting MPTCP v0.95 to android O
Hi,
We have ported the mptcp kernel v0.95 to the Android O device, we are able to see the MPTCP option and analysis in the TCP SYN packet as follow
However we are not able to receive any SYN ACK hence MPTCP is not working via either wlan or rmnet interface but the same is working in nexus 5 device! Are we missing something here to figure out why SYN ACK is not being received ? please help us debug.
Isn’t this the same problem as #347?
Isn’t this the same problem as #347?
The issue is #347 is different. The access point was the culprit there. To root-cause Nexus 5 was verified by connecting to a hotspot, and it worked well after that.
In this case, the device is connected to a hotspot when the tcpdump was captured. So there should not be any problem with access point in this case. As part of the protocol, the device sends SYN as expected. However there is no SYN-ACK received from the server. Any pointer regarding this is greatly appreciated. The server in this case is "http://amiusingmptcp.de/".
Thanks and have a good day!
Hi,
On which Android device are you working on? I know that devices with old kernels (e.g. v3.4 with the Nexus 5) have a lot of modifications compared to the upstream kernel. It is then difficult to port MPTCP on these ones. The easiest is certainly to work on more recent devices having newer kernel, at least 4.x (e.g. 4.9, 4.14) and then less big modifications.
The Kernel version is 4.4. So, "MPTCP v0.92 Release" which is based on 4.4 is being used for porting.
OK, I guess the title is then not correct. I don't have experience with this kernel and Android devices. Maybe there are known issues others could share :)
All I can say is if the SYN+MP_CAPABLE is OK (maybe check on the next hop and not directly on the device), either the packet is corrupted (checksum, etc.) or there is a middlebox somewhere.
If you were not able to generate a SYN with MPTCP options, that could have been multiple things, selinux for example. Turning on 'net.mptcp.mptcp_debugand reading messages in
dmesg` might help.
Hi,
Infrastructure used (Access point and SIM) for android device with kernel 4.4 is same as the one used for Nexus 5. However MPTCP works for Nexus 5 ,but failing for our devices. Hence it doesn't look like middlebox problem.
Please see the following sysctl flags for our device
net.mptcp.mptcp_checksum = 1
net.mptcp.mptcp_debug = 0
net.mptcp.mptcp_enabled = 1sysctl net.mptcp.
net.mptcp.mptcp_path_manager = default
net.mptcp.mptcp_scheduler = default
net.mptcp.mptcp_syn_retries = 3
net.mptcp.mptcp_version = 0
Could you please help me debug the packet corruption problem? Like any flags/option that can be seen in the capture?
If you send a SYN+MP_CAPABLE but no SYN-ACK+MP_CAPABLE is received, you need to find where the MPTCP options are dropped. The packet could be corrupted, maybe something wrong with the MPTCP checksum, etc.
The best is then to do tcpdump elsewhere. Maybe setup your own MPTCP server to do the monitoring and see what you receive from the phone and what the server replies.