mbox series

[net-next,0/7] mptcp: rx path refactor

Message ID 20250218-net-next-mptcp-rx-path-refactor-v1-0-4a47d90d7998@kernel.org (mailing list archive)
Headers show
Series mptcp: rx path refactor | expand

Message

Matthieu Baerts Feb. 18, 2025, 6:36 p.m. UTC
Paolo worked on this RX path refactor for these two main reasons:

- Currently, the MPTCP RX path introduces quite a bit of 'exceptional'
  accounting/locking processing WRT to plain TCP, adding up to the
  implementation complexity in a miserable way.

- The performance gap WRT plain TCP for single subflow connections is
  quite measurable.

The present refactor addresses both the above items: most of the
additional complexity is dropped, and single stream performances
increase measurably, from 55Gbps to 71Gbps in Paolo's loopback test. As
a reference, plain TCP was around 84Gbps on the same host.

The above comes to a price: the patch are invasive, even in subtle ways.

Note: patch 5/7 removes the sk_forward_alloc_get() helper, which caused
some trivial modifications in different places in the net tree: sockets,
IPv4, sched. That's why a few more people have been Cc here. Feel free
to only look at this patch 5/7.

Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
---
Paolo Abeni (7):
      mptcp: consolidate subflow cleanup
      mptcp: drop __mptcp_fastopen_gen_msk_ackseq()
      mptcp: move the whole rx path under msk socket lock protection
      mptcp: cleanup mem accounting
      net: dismiss sk_forward_alloc_get()
      mptcp: dismiss __mptcp_rmem()
      mptcp: micro-optimize __mptcp_move_skb()

 include/net/sock.h   |  13 ---
 net/core/sock.c      |   2 +-
 net/ipv4/af_inet.c   |   2 +-
 net/ipv4/inet_diag.c |   2 +-
 net/mptcp/fastopen.c |  27 +----
 net/mptcp/protocol.c | 317 ++++++++++++++++-----------------------------------
 net/mptcp/protocol.h |  22 ++--
 net/mptcp/subflow.c  |  36 +++---
 net/sched/em_meta.c  |   2 +-
 9 files changed, 134 insertions(+), 289 deletions(-)
---
base-commit: b4cb730862cf4f59ac3dcb83b9ac4eeb29dbfb0e
change-id: 20250106-net-next-mptcp-rx-path-refactor-f44579efb57c

Best regards,

Comments

patchwork-bot+netdevbpf@kernel.org Feb. 20, 2025, 3:10 a.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 18 Feb 2025 19:36:11 +0100 you wrote:
> Paolo worked on this RX path refactor for these two main reasons:
> 
> - Currently, the MPTCP RX path introduces quite a bit of 'exceptional'
>   accounting/locking processing WRT to plain TCP, adding up to the
>   implementation complexity in a miserable way.
> 
> - The performance gap WRT plain TCP for single subflow connections is
>   quite measurable.
> 
> [...]

Here is the summary with links:
  - [net-next,1/7] mptcp: consolidate subflow cleanup
    https://git.kernel.org/netdev/net-next/c/c3349a22c200
  - [net-next,2/7] mptcp: drop __mptcp_fastopen_gen_msk_ackseq()
    https://git.kernel.org/netdev/net-next/c/f03afb3aeb9d
  - [net-next,3/7] mptcp: move the whole rx path under msk socket lock protection
    https://git.kernel.org/netdev/net-next/c/bc68b0efa1bf
  - [net-next,4/7] mptcp: cleanup mem accounting
    https://git.kernel.org/netdev/net-next/c/6639498ed85f
  - [net-next,5/7] net: dismiss sk_forward_alloc_get()
    https://git.kernel.org/netdev/net-next/c/c8802ded4658
  - [net-next,6/7] mptcp: dismiss __mptcp_rmem()
    https://git.kernel.org/netdev/net-next/c/51fe9cb9213e
  - [net-next,7/7] mptcp: micro-optimize __mptcp_move_skb()
    https://git.kernel.org/netdev/net-next/c/e0ca4057e0ec

You are awesome, thank you!