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
History
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

README.rst

back to top