Skip to content

hostFirewall drops Neighbor Discovery Protocol(NDP/ICMP v6) packets between host and leaf router using Link Local Addresses(LLA) #33155

Closed as not planned

Description

@abckey

Is there an existing issue for this?

  • I have searched the existing issues

What happened?

My host uses Link Local Address(LLA) to do BGP peering with leaf routers, with hostFirewall disabled in cilium, everything works fine, but once I enabled hostFirewall, cilium starts to drop LLA based NDP traffics.

I suppose this is caused by Cilium's built-in protection, described in this blog ?

But my use case is a valid one, to achieve BGP routing on the host by BGP Unnumbered via LLA. Is it possible to configure Cilium in a way to support that ?

My cilium helm values(ipv6 is disabled):

hostFirewall:
  enabled: true
nodePort:
  directRoutingDevice: "eth+"
ipam:
  mode: kubernetes
bpf:
  masquerade: true
devices: "eth+"
tunnel: vxlan
securityContext:
  privileged: true
hostPort:
  enabled: true
hubble:
  enabled: true
  relay:
    enabled: true
  ui:
    enabled: true
kubeProxyReplacement: true
k8sServiceHost: "10.10.10.10"
k8sServicePort: "6443"
enableXTSocketFallback: false
cni:
  configMap: cni-configuration
extraConfig:
  derive-masquerade-ip-addr-from-device: dummy0
operator:
  replicas: 1
sctp:
  enabled: true

output of cilium monitor -t drop

# cilium monitor -t drop
Listening for events on 64 CPUs with 64x4096 of shared memory
Press Ctrl-C to quit
time="2024-06-14T12:32:08Z" level=info msg="Initializing dissection cache..." subsys=monitor
xx drop (Unsupported L3 protocol) flow 0x0 to endpoint 0, ifindex 9, file bpf_host.c:1406, , identity unknown->unknown: fe80::526b:4bff:feb6:d437 -> ff02::1:ff6d:122 NeighborSolicitation
xx drop (Unsupported L3 protocol) flow 0x99ad3e17 to endpoint 0, ifindex 9, file bpf_host.c:1189, , identity unknown->unknown: fe80::b24f:13ff:fe6d:122 -> ff02::1:ffb6:d437 NeighborSolicitation
xx drop (Unsupported L3 protocol) flow 0xe8c8fc7f to endpoint 0, ifindex 8, file bpf_host.c:1406, , identity unknown->unknown: fe80::526b:4bff:feb6:d436 -> ff02::1 RouterAdvertisement
xx drop (Unsupported L3 protocol) flow 0xbd40f179 to endpoint 0, ifindex 8, file bpf_host.c:1189, , identity unknown->unknown: fe80::b24f:13ff:fe6d:a9a2 -> ff02::1:ffb6:d436 NeighborSolicitation
xx drop (Unsupported L3 protocol) flow 0x0 to endpoint 0, ifindex 9, file bpf_host.c:1406, , identity unknown->unknown: fe80::526b:4bff:feb6:d437 -> ff02::1:ff6d:122 NeighborSolicitation
xx drop (Unsupported L3 protocol) flow 0x6379c6d0 to endpoint 0, ifindex 9, file bpf_host.c:1406, , identity unknown->unknown: fe80::526b:4bff:feb6:d437 -> ff02::1 RouterAdvertisement

Cilium Version

1.15.6

Kernel Version

6.6.32-talos

Kubernetes Version

v1.28.10

Regression

No response

Sysdump

No response

Relevant log output

No response

Anything else?

No response

Cilium Users Document

  • Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

  • I agree to follow this project's Code of Conduct

Activity

  1. added
    kind/bugThis is a bug in the Cilium logic.
    kind/community-reportThis was reported by a user in the Cilium community, eg via Slack.
    needs/triageThis issue requires triaging to establish severity and affected area.
    on Jun 14, 2024
  2. added
    area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.
    feature/ipv6Relates to IPv6 protocol support
    and removed
    needs/triageThis issue requires triaging to establish severity and affected area.
    on Jun 19, 2024
  3. YutaroHayakawa commented on Jun 24, 2024

    @YutaroHayakawa
    Member

    I know NodePort (kubeProxyReplacement=true) has this issue, but not aware of the hostFirewall. I guess in your use case (BGP Unnumbered), you want to accept RA, and I know that hostFirewall is intended to accept it.

    Could you try to disable KPR and see if that solve the problem?

  4. abckey commented on Jun 24, 2024

    @abckey
    Author

    thx @YutaroHayakawa , I tried with kubeProxyReplacement=false, it does not help, still those NDP/ICMP v6 and BGP(TCP/179) packets are dropped.

  5. YutaroHayakawa commented on Jul 1, 2024

    @YutaroHayakawa
    Member

    Hmm, ICMP is understandable, but I'm not sure why BGP packets are dropped. Are you allowing BGP traffic in HostFirewall? BGP speaker is in the host namespace (part of Cilium agent), so you need to allow it as well.

  6. github-actions commented on Aug 31, 2024

    @github-actions

    This issue has been automatically marked as stale because it has not
    had recent activity. It will be closed if no further activity occurs.

  7. added
    staleThe stale bot thinks this issue is old. Add "pinned" label to prevent this from becoming stale.
    on Aug 31, 2024
  8. abckey commented on Sep 13, 2024

    @abckey
    Author

    Hmm, ICMP is understandable, but I'm not sure why BGP packets are dropped. Are you allowing BGP traffic in HostFirewall? BGP speaker is in the host namespace (part of Cilium agent), so you need to allow it as well.

    I have following policy, but it does not help:

    apiVersion: cilium.io/v2
    kind: CiliumClusterwideNetworkPolicy
    metadata:
      name: cilium-host-firewall
    spec:
      nodeSelector:
        matchLabels:
          node-type: master
      ingress:
      - toPorts:
        - ports:
          - port: "179"
            protocol: TCP
          - port: "6443"
            protocol: TCP
          - port: "50000"
            protocol: TCP
      - icmps:
        - fields:
          - type: RouterSolicitation
            family: IPv6
          - type: RouterAdvertisement
            family: IPv6
          - type: NeighborSolicitation
            family: IPv6
          - type: NeighborAdvertisement
            family: IPv6
    

    Actually to make BGP unnumered to work, NDP/ICMP v6 has to work first, if they don't, we can not get to the BGP session creation phase(TCP/179). So the problem is cilium drops e.g. RouterAdvertisement packet in both directions:

    # RA sent from host to leaf router
    xx drop (Unsupported L3 protocol) flow 0x496dd881 to endpoint 0, ifindex 8, file bpf_host.c:1604, , identity unknown->unknown: fe80::526b:4bff:feb6:d436 -> ff02::1 RouterAdvertisement
    xx drop (Unsupported L3 protocol) flow 0x91ae139 to endpoint 0, ifindex 9, file bpf_host.c:1604, , identity unknown->unknown: fe80::526b:4bff:feb6:d437 -> ff02::1 RouterAdvertisement
    
    # RA sent from leaf router to host
    xx drop (Unsupported L3 protocol) flow 0xce7d94d5 to endpoint 0, ifindex 9, file bpf_host.c:1210, , identity unknown->unknown: fe80::b24f:13ff:fe6d:122 -> ff02::1 RouterAdvertisement
    xx drop (Unsupported L3 protocol) flow 0xf7a4b2bd to endpoint 0, ifindex 8, file bpf_host.c:1210, , identity unknown->unknown: fe80::b24f:13ff:fe6d:a9a2 -> ff02::1 RouterAdvertisement
    

    I found there is a config enable-ipv6-ndp, but it requires enable-ipv6: "true" to work, we are running the cluster with ipv4 only, can not enable ipv6 at this stage yet.

  9. removed
    staleThe stale bot thinks this issue is old. Add "pinned" label to prevent this from becoming stale.
    on Sep 14, 2024
  10. github-actions commented on Dec 8, 2024

    @github-actions

    This issue has been automatically marked as stale because it has not
    had recent activity. It will be closed if no further activity occurs.

  11. added
    staleThe stale bot thinks this issue is old. Add "pinned" label to prevent this from becoming stale.
    on Dec 8, 2024
  12. github-actions commented on Dec 23, 2024

    @github-actions

    This issue has not seen any activity since it was marked stale.
    Closing.

  13. nfarhadian commented on Mar 26, 2026

    @nfarhadian

    I have the same problem on Cilium 1.18.6 and I get following error on FRR:
    Tx RA failed, socket 12 error 105 (No buffer space available)

  14. added 3 commits that reference this issue on Jun 10, 2026
    8c60e5e
    dce834f
    4a21948
  15. added a commit that references this issue on Jul 3, 2026
    21a06ed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.feature/ipv6Relates to IPv6 protocol supportkind/bugThis is a bug in the Cilium logic.kind/community-reportThis was reported by a user in the Cilium community, eg via Slack.staleThe stale bot thinks this issue is old. Add "pinned" label to prevent this from becoming stale.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions