From ee68430e412a972e038c58f0cd15ccf1ddf74c5e Mon Sep 17 00:00:00 2001 From: Geliang Tang Date: Thu, 18 Jan 2024 13:34:49 +0800 Subject: [PATCH] mptcp: retrans optimization 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) #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: https://github.com/multipath-tcp/mptcp_net-next/issues/332 Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 0bcc645be5d5f..5d3aaaa201115 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1998,6 +1998,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) {