Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

srv6: Fix packet drop with GSO type mismatch #30732

Merged
merged 1 commit into from
Feb 15, 2024

Commits on Feb 13, 2024

  1. srv6: Fix packet drop with GSO type mismatch

    When the Pod generates a TCP stream larger than MSS, it may be sent as a
    GSO large packet. We observed in such a case, SRv6-encapsulated packet
    is dropped.
    
    The root cause was a misuse of ctx_adjust_hroom. We call it
    ctx_adjust_hroom(ctx, growth, BPF_ADJ_ROOM_MAC, 0), but this way, the
    helper is not aware of what kind of encapsulation we want to perform, so
    it doesn't adjust skb->inner_protocol (should be ETH_P_IP) and
    skb_shinfo->gso_type (should be SKB_GSO_IPXIP6 | SKB_GSO_TCPV4)
    appropriately. As a result, the packet will be dropped in
    ip4ip6_gso_segment due to the flag mismatch.
    
    Use BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 flag which is introduced to solve this
    problem.
    
    Signed-off-by: Yutaro Hayakawa <yutaro.hayakawa@isovalent.com>
    YutaroHayakawa committed Feb 13, 2024
    Configuration menu
    Copy the full SHA
    74b77c1 View commit details
    Browse the repository at this point in the history