A userspace switch for virtual machines.
Prerequisites
sv3 currently only supports Linux on x86-64 with Qemu/KVM as virtualization layer. It also needs a relatively recent kernel, at least 3.6, but it hasn’t been tested with anything older than 3.9.
Building
Qemu
The switch needs a patched qemu. Build it using:
git submodule init
git submodule update
cd contrib/qemu
./configure --target-list=x86_64-softmmu --enable-kvm --disable-fdt
makeSwitch
Execute scons. If you installed prerequisite libraries after you
first scons run, you might have to do scons --config=force
afterwards.
Usage
Starting a Guest
Start the switch and attach a guest using:
./sv3
# Switch to another terminal
export PATH=$PWD/contrib/qemu/x86_64-softmmu:$PATH
qemu-system-x86_64 -mem-path /tmp -net none -device externalpci,socket=/tmp/sv3 additional-args...Adding -mem-path /tmp to qemu is important, because it will create files there that
serve as backing store for RAM. /tmp should be a tmpfs! If this is not the case,
guest RAM will be periodically written to disk.
Creating an Upstream Port
By default, the switch is not connected to the outside world. You need an upstream port to do this. sv3 is able to drive network cards itself, but needs some preparation. Currently, sv3 can drive a single upstream port at a time.
If the PCI ID of the desired network card is 0000:02:00.1 and the
user that runs the switch is john, use scripts/vfio-rebind.sh like
this:
sudo ./scripts/vfio-rebind.sh 0000:02:00.1 johnThis will unload the device’s driver and attach it to VFIO with access rights for john. The script might tell you to rebind unrelated devices as well to make the IOMMU happy.
Currently, sv3 supports Intel 82599 10G “Niantic” NICs (sold as x520).
Known Bugs
- The switch will segfault, if passed file descriptors point to files that are too short.
- The switch sometimes segfaults when clients disappear unexpectedly.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
