Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
xfrm: do not set IPv4 DF flag when encapsulating IPv6 frames <= 1280 …
…bytes. One may want to have DF set on large packets to support discovering path mtu and limiting the size of generated packets (hence not setting the XFRM_STATE_NOPMTUDISC tunnel flag), while still supporting networks that are incapable of carrying even minimal sized IPv6 frames (post encapsulation). Having IPv4 Don't Frag bit set on encapsulated IPv6 frames that are not larger than the minimum IPv6 mtu of 1280 isn't useful, because the resulting ICMP Fragmentation Required error isn't actionable (even assuming you receive it) because IPv6 will not drop it's path mtu below 1280 anyway. While the IPv4 stack could prefrag the packets post encap, this requires the ICMP error to be successfully delivered and causes a loss of the original IPv6 frame (thus requiring a retransmit and latency hit). Luckily with IPv4 if we simply don't set the DF flag, we'll just make further fragmenting the packets some other router's problems. We'll still learn the correct IPv4 path mtu through encapsulation of larger IPv6 frames. I'm still not convinced this patch is entirely sufficient to make everything happy... but I don't see how it could possibly make things worse. See also recent: 4ff2980 'xfrm: fix tunnel model fragmentation behavior' and friends Cc: Lorenzo Colitti <[email protected]> Cc: Eric Dumazet <[email protected]> Cc: Lina Wang <[email protected]> Cc: Steffen Klassert <[email protected]> Signed-off-by: Maciej Zenczykowski <[email protected]> Signed-off-by: Steffen Klassert <[email protected]>
- Loading branch information