Revision fdcf8cc40152eadb74494de0afd80bb8bd4475cd authored by Joe Stringer on 15 May 2018, 21:44:11 UTC, committed by Thomas Graf on 16 May 2018, 07:27:57 UTC
Previously, Cilium would only respond to ARP requests for the gateway IP address. However, in rare cases Cilium could change the gateway IP address upon restart, and this could cause connectivity disruption for existing containers. For instance, if a container has a link scope route for the old gateway G1, and the ARP entry times out, then Cilium is restarted, the new Cilium will install a BPF program that responds to requests for a new gateway G2. However, the endpoint does not have a link scope route for G2. It will ARP for G1, but the new BPF program will only respond to ARP requests for G2. Cilium will forward the ARP request to the Linux stack, but there's no G1 IP configured so Linux does not respond. As a result, the endpoint is stuck without the ability to send any traffic. We really only want to force the endpoint to send traffic through the veth device, and after that point we will route via L3 to the appropriate destination. So, if we respond to ARP requests for all IPs with the mac of the other side of the veth pair, then the endpoint will always see an ARP response for an IP, and it will send the traffic out the veth pair, after which point Cilium can route the traffic. This fixes an issue during Cilium restart where endpoints could lose connectivity and would not get back into a good state without being restarted. Signed-off-by: Joe Stringer <joe@covalent.io>
1 parent 552abd5
File | Mode | Size |
---|---|---|
.github | ||
Documentation | ||
api | ||
bpf | ||
bugtool | ||
cilium | ||
cilium-health | ||
common | ||
contrib | ||
daemon | ||
envoy | ||
examples | ||
hack | ||
monitor | ||
pkg | ||
plugins | ||
test | ||
tests | ||
vendor | ||
.authors.aux | -rw-r--r-- | 347 bytes |
.gitignore | -rw-r--r-- | 1.0 KB |
.gitmodules | -rw-r--r-- | 0 bytes |
.mailmap | -rw-r--r-- | 506 bytes |
AUTHORS | -rw-r--r-- | 4.1 KB |
CODEOWNERS | -rw-r--r-- | 3.2 KB |
CONTRIBUTING.md | -rw-r--r-- | 6.9 KB |
Dockerfile | -rw-r--r-- | 1.7 KB |
Gopkg.lock | -rw-r--r-- | 24.1 KB |
Gopkg.toml | -rw-r--r-- | 6.8 KB |
Jenkinsfile.nightly | -rw-r--r-- | 4.9 KB |
LICENSE | -rw-r--r-- | 11.1 KB |
Makefile | -rw-r--r-- | 9.5 KB |
Makefile.defs | -rw-r--r-- | 934 bytes |
Makefile.quiet | -rw-r--r-- | 542 bytes |
NEWS.rst | -rw-r--r-- | 66.6 KB |
README.rst | -rw-r--r-- | 14.0 KB |
VERSION | -rw-r--r-- | 7 bytes |
Vagrantfile | -rw-r--r-- | 12.4 KB |
docs.Jenkinsfile | -rw-r--r-- | 2.5 KB |
ginkgo-kubernetes-all.Jenkinsfile | -rw-r--r-- | 3.5 KB |
ginkgo.Jenkinsfile | -rw-r--r-- | 3.4 KB |
kubernetes-upstream.Jenkinsfile | -rw-r--r-- | 3.2 KB |
Computing file changes ...