mbox series

[net-next,0/8] mptcp: MSG_FASTOPEN and TFO listener side support

Message ID 20221125222958.958636-1-matthieu.baerts@tessares.net
Headers show
Series mptcp: MSG_FASTOPEN and TFO listener side support | expand

Message

Matthieu Baerts Nov. 25, 2022, 10:29 p.m. UTC
Before this series, only the initiator of a connection was able to combine both
TCP FastOpen and MPTCP when using TCP_FASTOPEN_CONNECT socket option.

These new patches here add (in theory) the full support of TFO with MPTCP, which
means:

 - MSG_FASTOPEN sendmsg flag support (patch 1/8)
 - TFO support for the listener side (patches 2-5/8)
 - TCP_FASTOPEN socket option (patch 6/8)
 - TCP_FASTOPEN_KEY socket option (patch 7/8)

To support TFO for the server side, a few preparation patches are needed
(patches 2 to 5/8). Some of them were inspired by a previous work from Benjamin
Hesmans.

Note that TFO support with MPTCP has been validated with selftests (patch 8/8)
but also with Packetdrill tests running with a modified but still very WIP
version supporting MPTCP. Both the modified tool and the tests are available
online:

  https://github.com/multipath-tcp/packetdrill/


Dmytro Shytyi (5):
  mptcp: add MSG_FASTOPEN sendmsg flag support
  mptcp: implement delayed seq generation for passive fastopen
  mptcp: add subflow_v(4,6)_send_synack()
  mptcp: add TCP_FASTOPEN sock option
  selftests: mptcp: mptfo Initiator/Listener

Matthieu Baerts (1):
  mptcp: add support for TCP_FASTOPEN_KEY sockopt

Paolo Abeni (2):
  mptcp: track accurately the incoming MPC suboption type
  mptcp: consolidate initial ack seq generation

 net/mptcp/Makefile                            |   2 +-
 net/mptcp/fastopen.c                          |  73 ++++++++
 net/mptcp/options.c                           |  25 ++-
 net/mptcp/protocol.c                          |  39 +---
 net/mptcp/protocol.h                          |  28 ++-
 net/mptcp/sockopt.c                           |   9 +-
 net/mptcp/subflow.c                           | 105 ++++++++---
 .../selftests/net/mptcp/mptcp_connect.c       | 171 +++++++++++++-----
 .../selftests/net/mptcp/mptcp_connect.sh      |  21 +++
 9 files changed, 358 insertions(+), 115 deletions(-)
 create mode 100644 net/mptcp/fastopen.c


Cc: Benjamin Hesmans <benjamin.hesmans@tessares.net>
base-commit: a6e3d86ece0b42a571a11055ace5c3148cb7ce76

Comments

patchwork-bot+netdevbpf@kernel.org Nov. 30, 2022, 4:30 a.m. UTC | #1
Hello:

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

On Fri, 25 Nov 2022 23:29:46 +0100 you wrote:
> Before this series, only the initiator of a connection was able to combine both
> TCP FastOpen and MPTCP when using TCP_FASTOPEN_CONNECT socket option.
> 
> These new patches here add (in theory) the full support of TFO with MPTCP, which
> means:
> 
>  - MSG_FASTOPEN sendmsg flag support (patch 1/8)
>  - TFO support for the listener side (patches 2-5/8)
>  - TCP_FASTOPEN socket option (patch 6/8)
>  - TCP_FASTOPEN_KEY socket option (patch 7/8)
> 
> [...]

Here is the summary with links:
  - [net-next,1/8] mptcp: add MSG_FASTOPEN sendmsg flag support
    https://git.kernel.org/netdev/net-next/c/1e777f39b4d7
  - [net-next,2/8] mptcp: track accurately the incoming MPC suboption type
    https://git.kernel.org/netdev/net-next/c/fe33d3862677
  - [net-next,3/8] mptcp: consolidate initial ack seq generation
    https://git.kernel.org/netdev/net-next/c/b3ea6b272d79
  - [net-next,4/8] mptcp: implement delayed seq generation for passive fastopen
    https://git.kernel.org/netdev/net-next/c/dfc8d0603033
  - [net-next,5/8] mptcp: add subflow_v(4,6)_send_synack()
    https://git.kernel.org/netdev/net-next/c/36b122baf6a8
  - [net-next,6/8] mptcp: add TCP_FASTOPEN sock option
    https://git.kernel.org/netdev/net-next/c/4ffb0a02346c
  - [net-next,7/8] mptcp: add support for TCP_FASTOPEN_KEY sockopt
    https://git.kernel.org/netdev/net-next/c/cb99816cb59d
  - [net-next,8/8] selftests: mptcp: mptfo Initiator/Listener
    https://git.kernel.org/netdev/net-next/c/ca7ae8916043

You are awesome, thank you!