All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 net-next 0/3] ipv6: avoid atomic fragment on GSO output
@ 2023-10-24  2:35 Yan Zhai
  2023-10-24  2:35 ` [PATCH v4 net-next 1/3] ipv6: drop feature RTAX_FEATURE_ALLFRAG Yan Zhai
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Yan Zhai @ 2023-10-24  2:35 UTC (permalink / raw)
  To: netdev
  Cc: David S. Miller, David Ahern, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Aya Levin, Tariq Toukan, linux-kernel, kernel-team,
	Florian Westphal, Willem de Bruijn, Alexander H Duyck

When the ipv6 stack output a GSO packet, if its gso_size is larger than
dst MTU, then all segments would be fragmented. However, it is possible
for a GSO packet to have a trailing segment with smaller actual size
than both gso_size as well as the MTU, which leads to an "atomic
fragment". Atomic fragments are considered harmful in RFC-8021. An
Existing report from APNIC also shows that atomic fragments are more
likely to be dropped even it is equivalent to a no-op [1].

The series contains following changes:
* drop feature RTAX_FEATURE_ALLFRAG, which has been broken. This helps
  simplifying other changes in this set.
* refactor __ip6_finish_output code to separate GSO and non-GSO packet
  processing, mirroring IPv4 side logic.
* avoid generating atomic fragment on GSO packets.

Link: https://www.potaroo.net/presentations/2022-03-01-ipv6-frag.pdf [1]

change log:
V3 -> V4: cleaned up all RTAX_FEATURE_ALLFRAG code, rather than just
drop the check at IPv6 output.
V2 -> V3: split the changes to separate commits as Willem de Bruijn suggested
V1 is incorrect and omitted

V3: https://lore.kernel.org/netdev/cover.1697779681.git.yan@cloudflare.com/
V2: https://lore.kernel.org/netdev/ZS1%2Fqtr0dZJ35VII@debian.debian/

Yan Zhai (3):
  ipv6: drop feature RTAX_FEATURE_ALLFRAG
  ipv6: refactor ip6_finish_output for GSO handling
  ipv6: avoid atomic fragment on GSO packets

 include/net/dst.h                  |  7 -----
 include/net/inet_connection_sock.h |  1 -
 include/net/inet_sock.h            |  2 +-
 include/uapi/linux/rtnetlink.h     |  2 +-
 net/ipv4/tcp_output.c              | 20 +------------
 net/ipv6/ip6_output.c              | 45 ++++++++++++++++--------------
 net/ipv6/tcp_ipv6.c                |  1 -
 net/ipv6/xfrm6_output.c            |  2 +-
 net/mptcp/subflow.c                |  1 -
 9 files changed, 28 insertions(+), 53 deletions(-)

-- 
2.30.2



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

end of thread, other threads:[~2023-10-24 14:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-24  2:35 [PATCH v4 net-next 0/3] ipv6: avoid atomic fragment on GSO output Yan Zhai
2023-10-24  2:35 ` [PATCH v4 net-next 1/3] ipv6: drop feature RTAX_FEATURE_ALLFRAG Yan Zhai
2023-10-24 10:22   ` Florian Westphal
2023-10-24 10:30     ` Eric Dumazet
2023-10-24 14:28       ` Yan Zhai
2023-10-24  2:35 ` [PATCH v4 net-next 2/3] ipv6: refactor ip6_finish_output for GSO handling Yan Zhai
2023-10-24  2:35 ` [PATCH v4 net-next 3/3] ipv6: avoid atomic fragment on GSO packets Yan Zhai

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.