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

From: Christian Hopps <chopps@labn.net>

* 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, 3252 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                    | 2741 ++++++++++++++++++++++++++++++
  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                     |   32 +

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.

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

The last 9+1 commits constitute the IP-TFS implementation constructed in
layers to make review easier. The first 9 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.

  - iptfs: impl: add new iptfs xfrm mode impl
  - iptfs: impl: add user packet (tunnel ingress) handling
  - iptfs: impl: share page fragments of inner packets
  - iptfs: impl: add fragmenting of larger than MTU user packets
  - iptfs: impl: add basic receive packet (tunnel egress) handling
  - iptfs: impl: handle received fragmented inner packets
  - iptfs: impl: add reusing received skb for the tunnel egress packet
  - iptfs: impl: add skb-fragment sharing code
  - iptfs: impl: handle reordering of received packets
  - iptfs: impl: 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

  - 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] 19+ messages in thread

end of thread, other threads:[~2024-06-07  5:46 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-07  5:40 [PATCH ipsec-next v2 0/17] Add IP-TFS mode to xfrm Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 01/17] xfrm: config: add CONFIG_XFRM_IPTFS Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 02/17] include: uapi: add ip_tfs_*_hdr packet formats Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 03/17] include: uapi: add IPPROTO_AGGFRAG for AGGFRAG in ESP Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 04/17] xfrm: sysctl: allow configuration of global default values Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 05/17] xfrm: netlink: add config (netlink) options Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 06/17] xfrm: add mode_cbs module functionality Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 07/17] xfrm: add generic iptfs defines and functionality Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 08/17] xfrm: iptfs: add new iptfs xfrm mode impl Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 09/17] xfrm: iptfs: add user packet (tunnel ingress) handling Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 10/17] xfrm: iptfs: share page fragments of inner packets Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 11/17] xfrm: iptfs: add fragmenting of larger than MTU user packets Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 12/17] xfrm: iptfs: add basic receive packet (tunnel egress) handling Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 13/17] xfrm: iptfs: handle received fragmented inner packets Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 14/17] xfrm: iptfs: add reusing received skb for the tunnel egress packet Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 15/17] xfrm: iptfs: add skb-fragment sharing code Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 16/17] xfrm: iptfs: handle reordering of received packets Christian Hopps
2024-06-07  5:40 ` [PATCH ipsec-next v3 17/17] xfrm: iptfs: add tracepoint functionality Christian Hopps
2024-06-07  5:42 ` [PATCH ipsec-next v3 0/17] Add IP-TFS mode to xfrm Christian Hopps

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.