-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
Egress UDP VXLAN packet dropped by kernel/netfilter ? #17528
Comments
while testing kernel 5.10 now, I noticed the iptables trace is also missing
busybox ping, ignore the huge time numbers, it is likely the scapy VXLAN responder script not setting time correct, pinging a real Linux vxlan tunnel device having same ping testing failure
|
from https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg the failed test hit
|
I have run the test on kernel 5.4.150 stable release for couple of hours, no failing. maybe there is some kernel bug before kernel 5.4 stable release |
close this since 5.1/5.2/5.3 kernel is end of life and seems unlikely distributed widely |
In the |
yes both firewall and BPF NodePort are disabled, and both 5.2 and 5.12 kernel shows the same ingress BPF attached to ens192
cilium agent pod
5.2 bpftool net show
5.12 bpftool net show
for 5.2 kernel, the ping from
5.4 kernel stable release and above does not have this problem |
Ah, got it. That program is configured at cilium/pkg/datapath/loader/loader.go Lines 238 to 240 in 34557ce
devices probably (?). Could you try without devices set?
|
removed
|
this issue seems like a good test candidate for https://github.com/cilium/pwru, I am going to try pwru |
what is weird now is kernel 5.4.155 stable release completely stops working for same ping test, 5.4 kernel from upstream works a few minutes, then stops working, kernel 5.5 has no problem, it looks we need to get to the bottom of this issue since kernel 5.4 stable release is also affected |
I still see the |
here is pwru output for working and non-working tuple output ping working:
[root@centos-dev pwru]# ./pwru --filter-dst-ip=10.169.72.236 --filter-dst-port=8472 --filter-proto=udp --output-tuple
ping not working:
[root@centos-dev pwru]# ./pwru --filter-dst-ip=10.169.72.236 --filter-dst-port=8472 --filter-proto=udp --output-tuple
|
it seems stopped before
|
I may missed something, any reason why |
I noticed the VXLAN packet from ping always use same source port |
another pwru trace for non-working [root@centos-dev pwru]# ./pwru --filter-dst-ip=10.169.72.236 --filter-dst-port=8472 --filter-proto=udp --output-tuple
I also added
one good thing is when I run stable kernel release on |
I found out |
since kernel
|
actually
it seems I need to manually compile pahole and install pahole on |
@vincentmli Any TLDR why it was broken? |
@brb I did not dig further since |
@brb I suspect kernel |
Bug report
While testing PR #17370 (comment), after ping test working for couple of minutes, then the ping stops working, I noticed the egress UDP VXLAN packet with dst port 8472 got dropped because tcpdump on the k8s node interface shows no packet with destination port 8472 to remote external VXLAN device, used iptables trace to trace the VXLAN packet
trace for failed ping test:
trace for working ping test
Note for working trace, it has
TRACE: nat:POSTROUTING:policy:1 IN= OUT=ens192
andTRACE: nat:OUTPUT:policy:1 IN= OUT=ens192
triggered , failing trace missing thosenat
also no testing failure on bpf-next kernel, testing failed on 5.2, 5.4 kernel so far, I am going to test more kernel versions.
the test will start working if deleting the cilium agent pod and restart the cilium agent pod, then after couple of minutes, fail again
General Information
cilium version
)tested on cilium 1.10.4 stable release and master branch, stable lease failed less often, master branch failed more often
uname -a
)tested 5.2, 5.4, bpf-next so far, 5.2,5.4 failed.
kubectl version
, ...)v1.21.1
cilium-sysdump-20211004-122357.zip
How to reproduce the issue
deploy container image
vli39/cilium:ipcache
that has #17370 built and feature enabled, with the attached cilium-ipcache.yaml.txt manifestchange the API server IP, external Linux machine IP accordingly, deploy busybox pod and ping any ip address within the external VXLAN CIDR
fake.py.txt
cilium-ipcache.yaml.txt
The text was updated successfully, but these errors were encountered: