-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
pod cross-node access failed with ipv6 #7251
Comments
I make a ipv6 one node to one node type vxlan in the centos7 4.18.0-1.el7.elrepo.x86_64 kernel without calico, and it works just fine. which means the basic usage of ipv6 vxlan in my 4.18.0-1.el7.elrepo.x86_64 kernel is functional. But calico do not work in cross-node pod network. Then i upgrade kernel to CentOS Linux (5.0.0-1.el7.elrepo.x86_64) 7 (Core) , calico works fine. I create two new virtual machine which runs centos8.2 with kernel 4.18.0-193.el8.x86_64 and try to reproduce for this bugs. but calico works fine in centos 8.2 4.18.0-193.el8.x86_64. Maybe there is some patchs between kernel 4.18.0-193.el8.x86_64 with 4.18.0-1.el7.elrepo.x86_64 that affect the calico |
Do you have time to see this issue @cyclinder @coutinhop ? this issue may related to #6877 #6273 #7195 |
@meizhuhanxiang do you meet the same issue? |
@blue-troy can you show the output of |
ippools: $ ./calicoctl get ippools -o wide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED DISABLEBGPEXPORT SELECTOR
default-ipv4-ippool 10.244.0.0/16 true Never Always false false all()
default-ipv6-ippool 2001:db8:42::/56 false Never Always false false all() VXLANTunnel: $ ./calicoctl get nodes -o yaml | grep ipv6VXLANTunnelAddr
ipv6VXLANTunnelAddr: 2001:db8:42:99:c534:b446:c218:74c0
ipv6VXLANTunnelAddr: 2001:db8:42:ca:fe3b:9f62:b140:2180 and the route is miss,then we try to add the router and fail $ ip n | grep vxlan-v6
2001:db8:42:ca:fe3b:9f62:b140:2180 dev vxlan-v6.calico lladdr 66:be:ee:ea:d0:7e PERMANENT
$ ip -6 r add 2001:db8:42:ca:fe3b:9f62:b140:2180/122 via 2001:db8:42:ca:fe3b:9f62:b140:2180 dev vxlan-v6.calico
RTNETLINK answers: No route to host and upgrade kernel to 5.0.0-1.el7.elrepo.x86_64, it fixed. |
As far as I know, The kernel version of centos 7.9 is 3.10, Did you upgrade it to 4.18? I have made some tests with centos8(kernel version is 4.18 ) and it works. So I'm not sure if 4.18 running on centos 7.9 is an issue. |
To support calico ipv6 vxlan , maybe just kernel >=3.12 is not enough. Maybe if we compile a 4.18 kernel from https://github.com/torvalds/linux not from https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-8 the ipv6 vxlan in calico in centos8 will still have this issue. Centos kernel have some different patchs which different with torvalds kernel. I think the impact item is the kernel patchs, maybe not the os verison.And 4.18.0-193.el8.x86_64 kernel is different with 4.18.0-1.el7.elrepo.x86_64 kernel. |
Are you compiling the kernel from torvalds kernel ? If so , Are you trying to compiling the kernel from centos-stream-8 ? This is to verify that your point is correct. |
I found the centos 7 version 4.18.0 kernel https://vault.centos.org/7.9.2009/updates/Source/SPackages/kernel-4.18.0-348.20.1.el7.src.rpm, but it's hard for me to build it since i have tried. |
@cyclinder @coutinhop I have make a new test. As you know centos8 with it's default redhat kernel 4.18.0-193.el8.x86_64 works with calico vxlan ipv6, then I bulid and run torvalds 4.18.0 kernel on this machine and errors occurs. So we can say kernel >= v3.12 even the torvalds 4.18.0 kernel is not enough for calico vxlan ipv6? #6877 (comment) Since kernel 5.0 works with calico vxlan ipv6, the problem is solved between 4.18.0~5.0 on torvalds linux kernel. |
torvalds linux kernel 4.19.0 do not works with calico vxlan ipv6, 4.19.1 works fine, this is the commits between 4.19.0 to 4.19.1. It looks like this commit net/ipv6: Allow onlink routes to have a device mismatch if it is the default route is the commit that affects |
Expected Behavior
pod cross-node access works with ipv6 in vxlan mode when kernel >= 3.12
Current Behavior
pod cross-node access do not works with ipv6 in centos7.9 with kernel 4.18.0-1.el7.elrepo.x86_64
Possible Solution
Steps to Reproduce (for bugs)
this is my calico config yaml
calico.txt
Context
calico node logs shows:
this is fdb:
neighbor:
$ ip neigh | grep vxlan-v6.calico 2001:db8:42:ca:fe3b:9f62:b140:2180 dev vxlan-v6.calico lladdr 66:be:ee:ea:d0:7e PERMANENT
vxlan device:
ipv6 route tables which lack for vxlan-v6.calico route :
Your Environment
The text was updated successfully, but these errors were encountered: