mbox series

[net-next,00/16] mptcp: DSS checksum support

Message ID 20210617234622.472030-1-mathew.j.martineau@linux.intel.com
Headers show
Series mptcp: DSS checksum support | expand

Message

Mat Martineau June 17, 2021, 11:46 p.m. UTC
RFC 8684 defines a DSS checksum feature that allows MPTCP to detect
middlebox interference with the MPTCP DSS header and the portion of the
data stream associated with that header. So far, the MPTCP
implementation in the Linux kernel has not supported this feature.

This patch series adds DSS checksum support. By default, the kernel will
not request checksums when sending SYN or SYN/ACK packets for MPTCP
connections. Outgoing checksum requests can be enabled with a
per-namespace net.mptcp.checksum_enabled sysctl. MPTCP connections will
now proceed with DSS checksums when the peer requests them, whether the
sysctl is enabled or not.


Patches 1-5 add checksum bits to the outgoing SYN, SYN/ACK, and data
packet headers. This includes calculating the checksum using a range of
data and the MPTCP DSS mapping for that data.

Patches 6-10 handle the checksum request in the SYN or SYN/ACK, and
receiving and verifying the DSS checksum on data packets.

Patch 11 adjusts the MPTCP-level retransmission process for checksum
compatibility.

Patches 12-14 add checksum-related MIBs, the net.mptcp.checksum_enabled
sysctl, and a checksum field to debug trace output.

Patches 15 & 16 add selftests.


The series is slightly longer than the preferred 15-patch limit that
patchwork warns about. I do try to stay below that whenever possible -
this series does implement one feature and is, I think, cohesive enough
to justify keeping it together. If it's at all problematic please let me
know!

A trivial merge conflict with net/master is introduced in patch 15: a
commit in net/master removes a couple of nearby lines of code.


Geliang Tang (14):
  mptcp: add csum_enabled in mptcp_sock
  mptcp: generate the data checksum
  mptcp: add csum_reqd in mptcp_out_options
  mptcp: send out checksum for MP_CAPABLE with data
  mptcp: send out checksum for DSS
  mptcp: add sk parameter for mptcp_get_options
  mptcp: add csum_reqd in mptcp_options_received
  mptcp: receive checksum for MP_CAPABLE with data
  mptcp: receive checksum for DSS
  mptcp: add the mib for data checksum
  mptcp: add a new sysctl checksum_enabled
  mptcp: dump csum fields in mptcp_dump_mpext
  selftests: mptcp: enable checksum in mptcp_connect.sh
  selftests: mptcp: enable checksum in mptcp_join.sh

Paolo Abeni (2):
  mptcp: validate the data checksum
  mptcp: tune re-injections for csum enabled mode

 Documentation/networking/mptcp-sysctl.rst     |   8 +
 include/net/mptcp.h                           |   9 +-
 include/trace/events/mptcp.h                  |  17 +-
 include/uapi/linux/mptcp.h                    |   1 +
 net/mptcp/ctrl.c                              |  16 ++
 net/mptcp/mib.c                               |   1 +
 net/mptcp/mib.h                               |   1 +
 net/mptcp/mptcp_diag.c                        |   1 +
 net/mptcp/options.c                           | 154 +++++++++++++-----
 net/mptcp/protocol.c                          |  29 +++-
 net/mptcp/protocol.h                          |  23 ++-
 net/mptcp/subflow.c                           | 120 ++++++++++++--
 .../selftests/net/mptcp/mptcp_connect.sh      |  13 +-
 .../testing/selftests/net/mptcp/mptcp_join.sh | 107 +++++++++++-
 14 files changed, 431 insertions(+), 69 deletions(-)


base-commit: 8fe088bd4fd12f4c8899b51d5bc3daad98767d49

Comments

patchwork-bot+netdevbpf@kernel.org June 18, 2021, 6:50 p.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (refs/heads/master):

On Thu, 17 Jun 2021 16:46:06 -0700 you wrote:
> RFC 8684 defines a DSS checksum feature that allows MPTCP to detect

> middlebox interference with the MPTCP DSS header and the portion of the

> data stream associated with that header. So far, the MPTCP

> implementation in the Linux kernel has not supported this feature.

> 

> This patch series adds DSS checksum support. By default, the kernel will

> not request checksums when sending SYN or SYN/ACK packets for MPTCP

> connections. Outgoing checksum requests can be enabled with a

> per-namespace net.mptcp.checksum_enabled sysctl. MPTCP connections will

> now proceed with DSS checksums when the peer requests them, whether the

> sysctl is enabled or not.

> 

> [...]


Here is the summary with links:
  - [net-next,01/16] mptcp: add csum_enabled in mptcp_sock
    https://git.kernel.org/netdev/net-next/c/752e906732c6
  - [net-next,02/16] mptcp: generate the data checksum
    https://git.kernel.org/netdev/net-next/c/d0cc298745f5
  - [net-next,03/16] mptcp: add csum_reqd in mptcp_out_options
    https://git.kernel.org/netdev/net-next/c/06fe1719aa50
  - [net-next,04/16] mptcp: send out checksum for MP_CAPABLE with data
    https://git.kernel.org/netdev/net-next/c/c94b1f96dcfb
  - [net-next,05/16] mptcp: send out checksum for DSS
    https://git.kernel.org/netdev/net-next/c/c5b39e26d003
  - [net-next,06/16] mptcp: add sk parameter for mptcp_get_options
    https://git.kernel.org/netdev/net-next/c/c863225b7942
  - [net-next,07/16] mptcp: add csum_reqd in mptcp_options_received
    https://git.kernel.org/netdev/net-next/c/0625118115cf
  - [net-next,08/16] mptcp: receive checksum for MP_CAPABLE with data
    https://git.kernel.org/netdev/net-next/c/208e8f66926c
  - [net-next,09/16] mptcp: receive checksum for DSS
    https://git.kernel.org/netdev/net-next/c/390b95a5fb84
  - [net-next,10/16] mptcp: validate the data checksum
    https://git.kernel.org/netdev/net-next/c/dd8bcd1768ff
  - [net-next,11/16] mptcp: tune re-injections for csum enabled mode
    https://git.kernel.org/netdev/net-next/c/4e14867d5e91
  - [net-next,12/16] mptcp: add the mib for data checksum
    https://git.kernel.org/netdev/net-next/c/fe3ab1cbd357
  - [net-next,13/16] mptcp: add a new sysctl checksum_enabled
    https://git.kernel.org/netdev/net-next/c/fc3c82eebf8e
  - [net-next,14/16] mptcp: dump csum fields in mptcp_dump_mpext
    https://git.kernel.org/netdev/net-next/c/401e3030e68f
  - [net-next,15/16] selftests: mptcp: enable checksum in mptcp_connect.sh
    https://git.kernel.org/netdev/net-next/c/94d66ba1d8e4
  - [net-next,16/16] selftests: mptcp: enable checksum in mptcp_join.sh
    https://git.kernel.org/netdev/net-next/c/af66d3e1c3fa

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html