All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH ipsec-next v4 00/18] Add IP-TFS mode to xfrm
@ 2024-06-17 20:52 Christian Hopps
  2024-06-17 20:52 ` [PATCH ipsec-next v4 01/18] xfrm: config: add CONFIG_XFRM_IPTFS Christian Hopps
                   ` (18 more replies)
  0 siblings, 19 replies; 26+ messages in thread
From: Christian Hopps @ 2024-06-17 20:52 UTC (permalink / raw)
  To: devel; +Cc: Steffen Klassert, netdev, Christian Hopps

* Summary of Changes:

This patchset adds a new xfrm mode implementing on-demand IP-TFS. IP-TFS
(AggFrag encapsulation) has been standardized in RFC9347.

  Link: https://www.rfc-editor.org/rfc/rfc9347.txt

This feature supports demand driven (i.e., non-constant send rate)
IP-TFS to take advantage of the AGGFRAG ESP payload encapsulation. This
payload type supports aggregation and fragmentation of the inner IP
packet stream which in turn yields higher small-packet bandwidth as well
as reducing MTU/PMTU issues. Congestion control is unimplementated as
the send rate is demand driven rather than constant.

In order to allow loading this fucntionality as a module a set of
callbacks xfrm_mode_cbs has been added to xfrm as well.

Patchset Changes:
-----------------

  23 files changed, 3300 insertions(+), 19 deletions(-)
  Documentation/networking/xfrm_sysctl.rst |   30 +
  include/net/netns/xfrm.h                 |    6 +
  include/net/xfrm.h                       |   40 +
  include/uapi/linux/in.h                  |    2 +
  include/uapi/linux/ip.h                  |   16 +
  include/uapi/linux/ipsec.h               |    3 +-
  include/uapi/linux/snmp.h                |    3 +
  include/uapi/linux/xfrm.h                |    9 +-
  net/ipv4/esp4.c                          |    3 +-
  net/ipv6/esp6.c                          |    3 +-
  net/netfilter/nft_xfrm.c                 |    3 +-
  net/xfrm/Makefile                        |    1 +
  net/xfrm/trace_iptfs.h                   |  218 +++
  net/xfrm/xfrm_compat.c                   |   10 +-
  net/xfrm/xfrm_device.c                   |    4 +-
  net/xfrm/xfrm_input.c                    |   14 +-
  net/xfrm/xfrm_iptfs.c                    | 2746 ++++++++++++++++++++++++++++++
  net/xfrm/xfrm_output.c                   |    6 +
  net/xfrm/xfrm_policy.c                   |   26 +-
  net/xfrm/xfrm_proc.c                     |    3 +
  net/xfrm/xfrm_state.c                    |   60 +
  net/xfrm/xfrm_sysctl.c                   |   38 +
  net/xfrm/xfrm_user.c                     |   75 +

Patchset Structure:
-------------------

The first 7 commits are changes to the xfrm infrastructure to support
the callbacks as well as more generic IP-TFS additions that may be used
outside the actual IP-TFS implementation.

  - xfrm: config: add CONFIG_XFRM_IPTFS
  - include: uapi: add ip_tfs_*_hdr packet formats
  - include: uapi: add IPPROTO_AGGFRAG for AGGFRAG in ESP
  - xfrm: sysctl: allow configuration of global default values
  - xfrm: netlink: add config (netlink) options
  - xfrm: add mode_cbs module functionality
  - xfrm: add generic iptfs defines and functionality

The last 11 commits constitute the IP-TFS implementation constructed in
layers to make review easier. The first 10 commits all apply to a single
file `net/xfrm/xfrm_iptfs.c`, the last commit adds a new tracepoint
header file along with the use of these new tracepoint calls.

  - xfrm: iptfs: add new iptfs xfrm mode impl
  - xfrm: iptfs: add user packet (tunnel ingress) handling
  - xfrm: iptfs: share page fragments of inner packets
  - xfrm: iptfs: add fragmenting of larger than MTU user packets
  - xfrm: iptfs: add basic receive packet (tunnel egress) handling
  - xfrm: iptfs: handle received fragmented inner packets
  - xfrm: iptfs: add reusing received skb for the tunnel egress packet
  - xfrm: iptfs: add skb-fragment sharing code
  - xfrm: iptfs: handle reordering of received packets
  - xfrm: iptfs: only send the NL attrs that corr. to the SA dir
  - xfrm: iptfs: add tracepoint functionality

Patchset History:
-----------------

RFCv1 (11/10/2023)

RFCv1 -> RFCv2 (11/12/2023)

  Updates based on feedback from Simon Horman, Antony,
  Michael Richardson, and kernel test robot.

RFCv2 -> v1 (2/19/2024)

  Updates based on feedback from Sabrina Dubroca, kernel test robot

v1 -> v2 (5/19/2024)

  Updates based on feedback from Sabrina Dubroca, Simon Horman, Antony.

  o Add handling of new netlink SA direction attribute (Antony).
  o Split single patch/commit of xfrm_iptfs.c (the actual IP-TFS impl)
    into 9+1 distinct layered functionality commits for aiding review.
  - xfrm: fix return check on clone() callback
  - xfrm: add sa_len() callback in xfrm_mode_cbs for copy to user
  - iptfs: remove unneeded skb free count variable
  - iptfs: remove unused variable and "breadcrumb" for future code.
  - iptfs: use do_div() to avoid "__udivd13 missing" link failure.
  - iptfs: remove some BUG_ON() assertions questioned in review.

v2->v3
  - Git User Glitch

v2->v4 (6/17/2024)

  - iptfs: copy only the netlink attributes to user based on the
    direction of the SA.

  - xfrm: stats: in the output path check for skb->dev == NULL prior to
    setting xfrm statistics on dev_net(skb->dev) as skb->dev may be NULL
    for locally generated packets.

  - xfrm: stats: fix an input use case where dev_net(skb->dev) is used
    to inc stats after skb is possibly NULL'd earlier. Switch to using
    existing saved `net` pointer.

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2024-06-26 14:52 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-17 20:52 [PATCH ipsec-next v4 00/18] Add IP-TFS mode to xfrm Christian Hopps
2024-06-17 20:52 ` [PATCH ipsec-next v4 01/18] xfrm: config: add CONFIG_XFRM_IPTFS Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 02/18] include: uapi: add ip_tfs_*_hdr packet formats Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 03/18] include: uapi: add IPPROTO_AGGFRAG for AGGFRAG in ESP Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 04/18] xfrm: sysctl: allow configuration of global default values Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 05/18] xfrm: netlink: add config (netlink) options Christian Hopps
2024-06-24 15:29   ` Antony Antony
2024-06-26 13:38     ` [devel-ipsec] " Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 06/18] xfrm: add mode_cbs module functionality Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 07/18] xfrm: add generic iptfs defines and functionality Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 08/18] xfrm: iptfs: add new iptfs xfrm mode impl Christian Hopps
2024-06-19 18:22   ` Jeff Johnson
2024-06-26 14:52     ` Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 09/18] xfrm: iptfs: add user packet (tunnel ingress) handling Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 10/18] xfrm: iptfs: share page fragments of inner packets Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 11/18] xfrm: iptfs: add fragmenting of larger than MTU user packets Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 12/18] xfrm: iptfs: add basic receive packet (tunnel egress) handling Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 13/18] xfrm: iptfs: handle received fragmented inner packets Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 14/18] xfrm: iptfs: add reusing received skb for the tunnel egress packet Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 15/18] xfrm: iptfs: add skb-fragment sharing code Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 16/18] xfrm: iptfs: handle reordering of received packets Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 17/18] xfrm: iptfs: only send the NL attrs that corr. to the SA dir Christian Hopps
2024-06-24 15:27   ` [devel-ipsec] " Antony Antony
2024-06-24 15:46     ` Christian Hopps
2024-06-17 20:53 ` [PATCH ipsec-next v4 18/18] xfrm: iptfs: add tracepoint functionality Christian Hopps
2024-06-18 18:17 ` [PATCH ipsec-next v4 00/18] Add IP-TFS mode to xfrm Simon Horman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.