The official source code of the paper Scaling Open vSwitch with a Computational Cache (USENIX NSDI, 2022).
This repo contains:
- An OVS module that works with libnuevomatchup. The module's source code is available in dpif-netdev-nmu.c and dpif-netdev-nmu.h.
- Patches to OVS for supporting the module (ovs.patch).
- Various scripts for reproducing the paper's results.
Connect two machines back-to-back using DPDK supported NICs. The machines should also be connected to a shared LAN (e.g., via another NIC). This is essential for running the scripts. The System Under Test (SUT) machine must have an Intel CPU that supports both the AVX and POPCNT extensions. You must have a Linux OS with root permissions in both machines for building the environment. Contact me for a link to the ruleset artifacts, or create one of your own using these tools.
Run sudo ./build-sut.sh
. This script downloads the relevant DPDK and OVS versions, installs libnuevomatchup, patches and compiles OVS, and installs it.
Run sudo ./build-lgen.sh
. This scripts downloads our custom made packet generator.
Run sudo ./scripts/run-experiments.sh sut
on the SUT machine. The script will wait for instructions from the LGEN machine.
Run sudo ./scripts/run-experiments.sh lgen NAME
on the LGEN machine, where NAME is the experiment name to run, such as thr-caida-3m
.
The OVS module is licensed under the MIT license.
If used in academic paper, please cite this.