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

Is there an option for hardware offloading-support(tso) in MPTCP? #418

Closed micturkey closed 3 years ago

micturkey commented 3 years ago

Hi, I am now working on a project using MPTCP in virtual network. In my test, the MPTCP connections are much slower than traditional TCP (1Gbps v.s. 10Gbps); so I used wireshark to dump the packets. What I noticed is that each packet's length of MPTCP is up to only 1464, which means many packets were segmented. The traditional TCP's packet's length were up to 64374. I checked it on the Internet and the answer is hardware offloading-support(TSO) decided it. So I turned tso off and the traditional TCP's speed is as slow as MPTCP's. I found that in MPTCP ver 0.87, MPTCP supports TSO but I don't think it works on my virtual machine. My question is, is there an option for TSO in MPTCP?

matttbe commented 3 years ago

Hi @micturkey ,

Are you using MPTCP DSS Checksum feature? net.mptcp.mptcp_checksum sysctl.

If you are looking at getting the best perf, you might have to do some tweaking. Here are the ones related to MPTCP: http://multipath-tcp.org/pmwiki.php/Main/50Gbps But this page is a bit old. Methods that you can find on Internet to improve perf with TCP are most probably valid with MPTCP as well.

micturkey commented 3 years ago

Hi @micturkey ,

Are you using MPTCP DSS Checksum feature? net.mptcp.mptcp_checksum sysctl.

If you are looking at getting the best perf, you might have to do some tweaking. Here are the ones related to MPTCP: http://multipath-tcp.org/pmwiki.php/Main/50Gbps But this page is a bit old. Methods that you can find on Internet to improve perf with TCP are most probably valid with MPTCP as well.

Hi, @matttbe , Thanks for your reply! After checking the DSS Checksum feature and setting it off, the speed turns as fast as TCP's. Your answer really helps.😀

To be frank, I turned this feature off when I initially met this problem but it didn't help.😣 I reinstalled the VM's system to figure it out, and today I found the problem about TSO: one tso option of my VM's NIC is off where I didn't turn on. I turned it on but the speed was still slow, so I think it is because MPTCP‘s TSO function didn't work. However, I forgot the new VM's DSS Checksum feature is turned on...😂 So these two wrong settings: NIC's TSO option is off and DSS Checksum is on result my problem. Therefore, to get full speed, I have to turn TSO on and DSS Checksum off. And MPTCP works with TSO if NIC's options about TSO are on.

Thank you very much! Now it works well!