is a project inspired by cilium to accelerate istio network using ebpf sockops & sockhash.
- setup vagrant vm
enter into vm,
git clone --depth=1 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
and build bpftool
- build envoy image under envoy directory(or just pull image chenlingpeng/envoy-demo)
- setup test container (simulate istio pod with an envoy sidecar in one network space)
CID=$(docker run -d chenlingpeng/envoy-demo)
CID2=$(docker run -d --net container:$CID fortio/fortio:latest_release server -http-port "127.0.0.1:8080")
ip=$(docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' $CID)
- run load tests
# traffic direct from client to fortio server
docker exec -it $CID2 fortio load -c 1 -qps 10000 -t 10s -a -r 0.00005 -httpbufferkb=128 "127.0.0.1:8080/echo?size=1024"
# traffic send to envoy which then proxy to fortio server
docker exec -it $CID2 fortio load -c 1 -qps 10000 -t 10s -a -r 0.00005 -httpbufferkb=128 "$ip:10000/echo?size=1024"
- clean env
docker stop $CID $CID2
- run
./load.sh
and re-run step 2 to step 4, compare the latance and qps result. run./unload.sh
to clean ebpf settings after step 4.
when traffic send direct from client to fortio server using 127.0.0.1:8080
the qps in ebpf mode is better than normal case(in my vm it's 8000+(sockops) vs 6000+(no-sockops)).
when traffic send to envoy which then proxy to fortio server using $ip:10000
the qps in ebpf mode drop sharply compare to normal case(in my vm it's 200+(sockops) vs 4000+(no-sockops))