Repository navigation
Labels
area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.Impacts bpf/ or low-level forwarding details, including map management and monitor messages.feature/l2-announcementkind/bugThis is a bug in the Cilium logic.This is a bug in the Cilium logic.kind/community-reportThis was reported by a user in the Cilium community, eg via Slack.This was reported by a user in the Cilium community, eg via Slack.pinnedThese issues are not marked stale by our issue bot.These issues are not marked stale by our issue bot.
Description
Is there an existing issue for this?
- I have searched the existing issues
What happened?
I have
- a
CiliumL2AnnouncementPolicyconfigured to expose 2LoadBalancertype services - 2
Serviceone withexternalTrafficPolicy: Localthe otherexternalTrafficPolicy: Cluster
The service with the Cluster type works as expected.
The service with the Local type only works if I force the pod to the same node which have the lease for the given service.
I could see that the announcement worked and the node with the lease was exposed but if the pod is not running on that node with the lease it will not handle the traffic.
Cilium Version
cilium-cli: v0.15.6 compiled with go1.21.0 on darwin/arm64
cilium image (default): v1.14.0
cilium image (stable): v1.14.1
cilium image (running): 1.14.1
Kernel Version
Linux k3s-worker-4 6.1.0-11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-4 (2023-08-08) x86_64 GNU/Linux
Kubernetes Version
Client Version: v1.28.1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.27.5+k0s
Sysdump
No response
Relevant log output
No response
Anything else?
When pod is on a different node:
❯ curl -vvvvvvv -k http://192.168.2.110:8443
* Trying 192.168.2.110:8443...
* connect to 192.168.2.110 port 8443 failed: Operation timed out
* Failed to connect to 192.168.2.110 port 8443 after 75006 ms: Couldn't connect to server
* Closing connection 0
curl: (28) Failed to connect to 192.168.2.110 port 8443 after 75006 ms: Couldn't connect to server
When pod is running on the same node:
❯ curl -vvvvvvv -k http://192.168.2.110:8443
* Trying 192.168.2.110:8443...
* Connected to 192.168.2.110 (192.168.2.110) port 8443 (#0)
> GET / HTTP/1.1
> Host: 192.168.2.110:8443
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/1.1 400
< Content-Type: text/plain;charset=UTF-8
< Connection: close
<
Code of Conduct
- I agree to follow this project's Code of Conduct
Reacted by Štěpán Dalecký, katia ⋆╶⃝⃤, Danil Uzlov, Gürkan ŞAHİN, Ondřej Molík, Teju Nareddy, Oleg Basov, Christian Ciach, Kuangda He, Matheus Canon and 17 more
Metadata
Metadata
Assignees
Labels
area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.Impacts bpf/ or low-level forwarding details, including map management and monitor messages.feature/l2-announcementkind/bugThis is a bug in the Cilium logic.This is a bug in the Cilium logic.kind/community-reportThis was reported by a user in the Cilium community, eg via Slack.This was reported by a user in the Cilium community, eg via Slack.pinnedThese issues are not marked stale by our issue bot.These issues are not marked stale by our issue bot.
Activity
aditighag commentedon Aug 29, 2023
I wonder if that's expected with
externalTrafficPolicy: Local. /cc @dylandreimerinkdylandreimerink commentedon Aug 30, 2023
Hmm. So the L2Announcement feature doesn't "implement"
externalTrafficPolicyas in, we ignore the setting at the present. That means that we might announce the IP from a node that doesn't have a pod for the service, thus violating the wish expressed withexternalTrafficPolicy.The feature relies on the generic service LB functionality to forward traffic received for a given IP. It makes sense to me that when this field is set, any node with a local endpoint will prefer to forward to the local endpoint, but I do not know what is supposed to happen when traffic for a service reaches a node without local endpoint. This seems to indicate we drop the traffic in that case.
Most of the groundwork for implementing this feature has already been laid by #25477 so it should not be difficult to also implement this for L2 Announcements.
mccasian commentedon Sep 3, 2023
I also want this, since I am struggling with the same issue.
github-actions commentedon Nov 4, 2023
This issue has been automatically marked as stale because it has not
had recent activity. It will be closed if no further activity occurs.
ansarhun commentedon Nov 6, 2023
As this issue is still present should I update something so it's not closed by stale bot?
dylandreimerink commentedon Nov 6, 2023
Marked it as pinned so we don't have to keep it manually alive
29 remaining items
mhkarimi1383 commentedon Jun 17, 2026
Okay, I will try to reproduce and raise issue if needed
yuito-it commentedon Jun 17, 2026
@mhkarimi1383
The answer is NO.
I can't test BGP because my environment can only use L2, so I fixed the issue regarding L2Announcement.
loadbalancer: Add support for external traffic policy to l2 announcement
Work around cilium/cilium#31689 L2 announcement bug with node split
loadbalancer: Add support for external traffic policy to l2 announcement
loadbalancer: Add support for external traffic policy to l2 announcement
fix(media): drop externalTrafficPolicy: Local, Cilium L2 incompatible
loadbalancer: Add support for external traffic policy to l2 announcement
yuito-it commentedon Sep 4, 2026
Hi everyone, I finished fix it!!!!!!
I'm so proud! I wish to increase the number of L2 announcements users.
mccasian commentedon Sep 4, 2026
fantastic work, thank you. Trust me, many many maaaaaaany users that will not write anything here will be thankful that this is now working
Syntax3rror404 commentedon Sep 6, 2026
Cilium L2 is now finally usable @yuito-it thank you :)
loadbalancer: Add support for external traffic policy to l2 announcement
loadbalancer: Add support for external traffic policy to l2 announcement
loadbalancer: Add support for external traffic policy to l2 announcement