Messages in this thread | | | Date | Tue, 12 Jul 2022 15:14:50 -0700 | Subject | Re: [net 0/3] seg6: fix skb checksum for SRH encapsulation/insertion | From | sdf@google ... |
| |
On 07/12, Andrea Mayer wrote: > The Linux kernel supports Segment Routing Header (SRH) > encapsulation/insertion operations by providing the capability to: i) > encapsulate a packet in an outer IPv6 header with a specified SRH; ii) > insert a specified SRH directly after the IPv6 header of the packet. > Note that the insertion operation is also referred to as 'injection'.
> The two operations are respectively supported by seg6_do_srh_encap() and > seg6_do_srh_inline(), which operate on the skb associated to the packet as > needed (e.g. adding the necessary headers and initializing them, while > taking care to recalculate the skb checksum).
> seg6_do_srh_encap() and seg6_do_srh_inline() do not initialize the payload > length of the IPv6 header, which is carried out by the caller functions. > However, this approach causes the corruption of the skb checksum which > needs to be updated only after initialization of headers is completed > (thanks to Paolo Abeni for detecting this issue).
> The patchset fixes the skb checksum corruption by moving the IPv6 header > payload length initialization from the callers of seg6_do_srh_encap() and > seg6_do_srh_inline() directly into these functions.
> This patchset is organized as follows: > - patch 1/3, seg6: fix skb checksum evaluation in SRH > encapsulation/insertion; > (* SRH encapsulation/insertion available since v4.10)
> - patch 2/3, seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps > behaviors; > (* SRv6 End.B6 and End.B6.Encaps behaviors available since v4.14)
> - patch 3/3, seg6: bpf: fix skb checksum in bpf_push_seg6_encap(); > (* bpf IPv6 Segment Routing helpers available since v4.18)
BPF changes make sense. I've tested them by applying the whole series and running test_lwt_seg6local.sh.
Reviewed-by: Stanislav Fomichev <sdf@google.com> Tested-by: Stanislav Fomichev <sdf@google.com>
> Thank you all, > Andrea
> Andrea Mayer (3): > seg6: fix skb checksum evaluation in SRH encapsulation/insertion > seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps behaviors > seg6: bpf: fix skb checksum in bpf_push_seg6_encap()
> net/core/filter.c | 1 - > net/ipv6/seg6_iptunnel.c | 5 ++++- > net/ipv6/seg6_local.c | 2 -- > 3 files changed, 4 insertions(+), 4 deletions(-)
> -- > 2.20.1
| |