diff --git a/hack/test/Dockerfile b/hack/test/Dockerfile index ded9a07c..7ce58e5c 100644 --- a/hack/test/Dockerfile +++ b/hack/test/Dockerfile @@ -38,9 +38,11 @@ RUN git clone https://github.com/rd235/vdeplug_slirp.git /vdeplug_slirp && \ FROM ubuntu AS test # busybox is only for debugging purpose -RUN apt update && apt install -y iperf3 uidmap iproute2 busybox +# sudo is only for rootful veth benchmark (for comparison) +RUN apt update && apt install -y iperf3 uidmap iproute2 busybox sudo RUN useradd --create-home --home-dir /home/user --uid 1000 user \ - && mkdir -p /run/user/1000 + && mkdir -p /run/user/1000 \ + && echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/user COPY --from=rootlesskit /rootlesskit /home/user/bin/ COPY --from=slirp4netns /slirp4netns/slirp4netns /home/user/bin/ COPY --from=vpnkit /vpnkit/vpnkit.exe /home/user/bin/vpnkit diff --git a/hack/test/docker-entrypoint.sh b/hack/test/docker-entrypoint.sh index ab9e8196..82a289c9 100755 --- a/hack/test/docker-entrypoint.sh +++ b/hack/test/docker-entrypoint.sh @@ -29,6 +29,26 @@ function benchmark::iperf3::vdeplug_slirp(){ set +x } +function benchmark::iperf3::rootful_veth(){ + INFO "[benchmark:iperf3] rootful_veth ($@) for reference" + # only --mtu=MTU is supposed as $@ + mtu=$(echo $@ | sed -e s/--mtu=//g) + set -x + sudo ip netns add foo + sudo ip link add foo_veth0 type veth peer name foo_veth1 + sudo ip link set foo_veth1 netns foo + sudo ip addr add 10.0.42.1/24 dev foo_veth0 + sudo ip -netns foo addr add 10.0.42.2/24 dev foo_veth1 + sudo ip link set dev foo_veth0 mtu $mtu + sudo ip -netns foo link set dev foo_veth1 mtu $mtu + sudo ip link set foo_veth0 up + sudo ip -netns foo link set foo_veth1 up + sudo ip netns exec foo $IPERF3C 10.0.42.1 + sudo ip link del foo_veth0 + sudo ip netns del foo + set +x +} + function benchmark::iperf3::main(){ iperf3 -s > /dev/null & iperf3pid=$! @@ -47,6 +67,7 @@ function benchmark::iperf3::main(){ else benchmark::iperf3::vdeplug_slirp --mtu=$mtu fi + benchmark::iperf3::rootful_veth --mtu=$mtu done kill $iperf3pid }