Skip to content

Commit

Permalink
mptcp: retrans optimization
Browse files Browse the repository at this point in the history
scheduler: implement a "opportunistic retransmission"

The goal of the "opportunistic retransmission" is to quickly reinject
packets when we notice the window has just been closed on one path, see
the section 4.2 of:

https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf

This is implemented in mptcp.org, see mptcp_rcv_buf_optimization().

With the current API in the Upstream kernel, a new scheduler doesn't have
the ability to trigger a reinjection. Currently there are only hooks to
initiate reinjection when the MPTCP RTO fires.

The packet scheduler should be able to get more info:

    not just when MPTCP cwnd close or the seq num has increased (max
allowed MPTCP level seq num to be sent == last ack + (...))
    but also when there is a RTO at subflow level: maybe linked to

    scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343

Note that the packet scheduler never significantly queue more than what
the cwnd of a subflow would accept: currently, the in-kernel only accepts
to queue up to the MPTCP level cwnd (a few more bytes due to round-up)

Closes: multipath-tcp#332
Signed-off-by: Geliang Tang <geliang@kernel.org>
  • Loading branch information
geliangtang authored and Geliang Tang committed Mar 16, 2024
1 parent 66e1d9d commit ed0db49
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions net/mptcp/protocol.c
Original file line number Diff line number Diff line change
Expand Up @@ -1988,6 +1988,7 @@ static int __mptcp_recvmsg_mskq(struct mptcp_sock *msk,
/* receive buffer autotuning. See tcp_rcv_space_adjust for more information.
*
* Only difference: Use highest rtt estimate of the subflows in use.
* mptcp_rcv_buf_optimization
*/
static void mptcp_rcv_space_adjust(struct mptcp_sock *msk, int copied)
{
Expand Down

0 comments on commit ed0db49

Please sign in to comment.