https://github.com/cilium/cilium
Revision 5fd9b0b5d4131f86a233d19966f50d8e79ff455c authored by Paul Chaignon on 28 May 2023, 21:44:58 UTC, committed by Sebastian Wicki on 13 June 2023, 19:22:04 UTC
[ upstream commit ca9c056deb31f6e0747c951be24b25d67ea99d6d ]

As explained in the previous commit, we need to switch our IPsec
logic from one implementation to another. This implementation requires
some synchronized work between bpf_lxc and bpf_host. To enable this
switch without causing drops, the previous commit made bpf_host support
both implementations.

This is quite enough though. For this to work, we need to ensure that
bpf_host is always reloaded before any bpf_lxc is loaded. That is, we
need to load the bpf_host program that supports both implementations
before we actually start the switch from one implementation to the
second.

This commit makes that change in the order of BPF program reloads.
Instead of regenerating the bpf_host program (i.e., the host endpoint's
datapath) in a goroutine like other BPF programs, we will regenerate it
first, as a blocking operation.

Regenerating the host endpoint's datapath separately like this will
delay the agent startup. This regeneration was measured to take around 1
second on an EKS cluster (though it can probably grow to a few seconds
depending on the node type and current load). That should stay fairly
small compared to the overall duration of the agent startup (around 30
seconds). Nevertheless, this separate regeneration is only performed
when we actually need: for IPsec with EKS or AKS IPAM mode.

Fixes: 4c7cce1bf ("bpf: Remove IP_POOLS IPsec code")
Signed-off-by: Paul Chaignon <paul.chaignon@gmail.com>
1 parent 7afecc7
History
Tip revision: 5fd9b0b5d4131f86a233d19966f50d8e79ff455c authored by Paul Chaignon on 28 May 2023, 21:44:58 UTC
daemon: Reload bpf_host first in case of IPsec upgrade
Tip revision: 5fd9b0b
File Mode Size
.github
.travis
Documentation
api
bpf
bugtool
cilium
cilium-health
clustermesh-apiserver
contrib
daemon
envoy
examples
hack
hubble-relay
images
install
jenkinsfiles
operator
pkg
plugins
proxylib
test
tools
vendor
.authors.aux -rw-r--r-- 416 bytes
.gitattributes -rw-r--r-- 301 bytes
.gitignore -rw-r--r-- 1.5 KB
.gitmodules -rw-r--r-- 0 bytes
.golangci.yaml -rw-r--r-- 3.3 KB
.mailmap -rw-r--r-- 5.0 KB
.travis.yml -rw-r--r-- 1.2 KB
AUTHORS -rw-r--r-- 26.3 KB
CHANGELOG.md -rw-r--r-- 151.8 KB
CODEOWNERS -rw-r--r-- 1.2 KB
CODE_OF_CONDUCT.md -rw-r--r-- 2.2 KB
CONTRIBUTING.md -rw-r--r-- 227 bytes
FURTHER_READINGS.rst -rw-r--r-- 4.9 KB
GO_VERSION -rw-r--r-- 8 bytes
LICENSE -rw-r--r-- 11.1 KB
MAINTAINERS.md -rw-r--r-- 3.8 KB
Makefile -rw-r--r-- 29.1 KB
Makefile.defs -rw-r--r-- 6.0 KB
Makefile.docker -rw-r--r-- 6.3 KB
Makefile.quiet -rw-r--r-- 788 bytes
README.rst -rw-r--r-- 15.0 KB
SECURITY.md -rw-r--r-- 615 bytes
USERS.md -rw-r--r-- 8.1 KB
VERSION -rw-r--r-- 8 bytes
Vagrantfile -rw-r--r-- 12.9 KB
go.mod -rw-r--r-- 10.9 KB
go.sum -rw-r--r-- 206.7 KB
netlify.toml -rw-r--r-- 92 bytes
stable.txt -rw-r--r-- 8 bytes
vagrant_box_defaults.rb -rw-r--r-- 394 bytes

README.rst

back to top