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

Redundant scheduler's bug after rt-tree based retransmit queue changes #392

Closed vuva closed 4 years ago

vuva commented 4 years ago

After the commit introducing rt-tree based retransmit queue, skb(s) that have been transmitted by a subflow are moved to rt-tree rtx_queue and deleted from sk_write_queue. If the subflows have different sending rate, the slower subflow will miss those skb if it doesn't check the rtx_queue. To follow the semantic meaning of the Redundant scheduler, the slower subflow should also transmit the unACKed segment in rtx_queue.

To fix this, check both skb_queue_empty and tcp_rtx_queue_empty when select next_segment and tcp_rtx_queue_head when selects skb. Pull request #391 should do it.