A high performance container-based NFV platform from GW and UCR.
Clone or download
dreidenbaugh and nks5295 Update ONVM-Pktgen Submodule Pointer (#55)
Update the ONVM-Pktgen submodule pointer to cfc2e85, which fixes an invalid path in the ONVM run-pktgen.sh script which led to a command not found error.

Commit log:

* Update pktgen submodule with run-pktgen script fix
Latest commit a797830 Oct 1, 2018



Please let us know if you use OpenNetVM in your research by emailing us or completing this short survey.

Want to get started quickly? Try using our NSF CloudLab profile: https://www.cloudlab.us/p/GWCloudLab/onvm-18.03


We have updated our DPDK submodule to point to a new version, v17.08. If you have already cloned this repository, please update your DPDK submodule by running:

git submodule update --init

And then rebuild DPDK using the install guide or running these commands:

cd dpdk
make config T=$RTE_TARGET
make T=$RTE_TARGET -j 8
make install T=$RTE_TARGET -j 8

See our release document for more information.


openNetVM is a high performance NFV platform based on DPDK and Docker containers. openNetVM provides a flexible framework for deploying network functions and interconnecting them to build service chains.

openNetVM is an open source version of the NetVM platform described in our NSDI 2014 and HotMiddlebox 2016 papers, released under the BSD license.

The develop branch tracks experimental builds (active development) whereas the master branch tracks verified stable releases. Please read our releases document for more information about our releases and release cycle.

You can find information about research projects building on OpenNetVM at the UCR/GW SDNFV project site. OpenNetVM is supported in part by NSF grants CNS-1422362 and CNS-1522546.


To install openNetVM, please see the openNetVM Installation guide for a thorough walkthrough.

Using openNetVM

openNetVM comes with several sample network functions. To get started with some examples, please see the Example Uses guide

Creating NFs

The NF Development guide will provide what you need to start creating your own NFs.

Dockerize NFs

NFs can be run inside docker containers, with the NF being automatically or hand started. For more informations, see our Docker guide.

TCP Stack

openNetVM can run mTCP applications as NFs. For more information, visit mTCP.

Citing OpenNetVM

If you use OpenNetVM in your work, please cite our paper:

	title = {{OpenNetVM}: {A} {Platform} for {High} {Performance} {Network} {Service} {Chains}},
	booktitle = {Proceedings of the 2016 {ACM} {SIGCOMM} {Workshop} on {Hot} {Topics} in {Middleboxes} and {Network} {Function} {Virtualization}},
	publisher = {ACM},
	author = {Zhang, Wei and Liu, Guyue and Zhang, Wenhui and Shah, Neel and Lopreiato, Phillip and Todeschi, Gregoire and Ramakrishnan, K.K. and Wood, Timothy},
	month = aug,
	year = {2016},

Please let us know if you use OpenNetVM in your research by emailing us or completing this short survey.