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

Retransmission handling #381

Closed alex1230608 closed 4 years ago

alex1230608 commented 4 years ago

What are the key difference between mptcp and linux tcp from the aspect of handling retransmission.

I believe in order to keep the low-level tcp mechanism working (e.g., reducing window for congestion control) each subflow in mptcp should handle the retransmission or timeout just like how a linux tcp flow handle its. However, does mptcp do any trick such as reinjecting the same data-level packets to other subflows when timeout happens? How about when fast retransmission happens?

teto commented 4 years ago

Yes there are retransmissions across subflows; you can try to laod this pcap with wireshark to see it https://github.com/teto/mptcpanalyzer/blob/next/examples/client_2_redundant.pcapng (wireshark can show you retransmissions if you enable the options in the preference panel)

cpaasch commented 4 years ago

Indeed, each subflow handles its own retransmissions like standard TCP does (fast-retransmit, RTO,...)

There are a few conditions to trigger cross-subflow retransmissions at the MPTCP-layer. We do have a retransmission timer running at the MPTCP-level which is 2x the largest RTO among all subflows. Beyond that, each scheduler has its own logic to trigger cross-subflow retransmissions.

alex1230608 commented 4 years ago

I see. Thank you!