snabb-libmoon-compat is a prototype fork/rewrite of the Snabb network function virtualization toolkit. It is designed to run Snabb programs on top of libmoon. It exposes DPDK NICs as Snabb apps. All NICs supported by libmoon work out of the box.

The repository can be found on GitHub.

snabb-libmoon-compat was written as part of my Bachelor's thesis. The thesis PDF can be downloaded here (presentation slides).

snabb-libmoon-compat is merely a prototype. It has not been tested. It is not production-ready.

How To

The following instructions install snabb-libmoon-compat and launch an echo server on DPDK device 0.
Run --status to see which NICs are available and which drivers are loaded.

  1. build libmoon (see README)
  2. git clone
  3. cd snabb-libmoon-compat
  4. sudo path/to/libmoon main.lua echo 0


snabb-libmoon-compat was benchmarked using program/echo with different chain-lengths on a variety of systems. It performed as good as, or better than Snabb. A single-core peak forward rate of 18.65 Mpps was achieved on a dual Intel Xeon E5-2630 v4 system in combination with an Intel XL710 40GbE NIC. See chapter 5 of the thesis.


snabb-libmoon-compat is partially compatible with Snabb Core. As opposed to Snabb there's no need to compile snabb-libmoon-compat; it's written entirely in Lua with no C dependencies. The code was kept very similar to Snabb. Check out Snabb's Reference Manual.


snabb-libmoon-compat is released under the terms of the Apache 2.0 License. Files that reuse Snabb's code have been marked as such.

Future Development

I plan on working on snabb-libmoon-compat from time to time.

Some future development directions are: