This repo contains example VNFs for the bellow publications:
- N. V. Tu, J. Yoo and J. W. Hong, "Building Hybrid Virtual Network Functions with eXpress Data Path," 15th International Conference on Network and Service Management (CNSM), 2019
- N. V. Tu, J. Yoo and J. W. Hong, "Accelerating Virtual Network Functions with Fast-Slow Path Architecture using eXpress Data Path," IEEE Transactions on Network and Service Management (TNSM), 2020
- We tested eVNF in Ubuntu 16.04 and 19.10, with kernel v4.14 and v5.4, respectively. Any kernel version with XDP support (and AF_XDP support, if AF_XDP is used) should work
- We use python2 during the development, but python3 should also work
- An XDP-supported NICs should be used, see XDP supported drivers. Generic NICs also can work, but expect degraded performance.
- If you want to test service function chain with Openstack, use QEMU for the hypevisor and virtio for VM's NIC driver. Set VM's NIC to multiqueue and turn off guest
csum
. The number of queues should be x2 the number of vCPUs.<driver queues='2'> <guest csum='off'/> </driver>
- Install BCC.
- Install required modules as superuser
sudo pip install -r requirements.txt
elb
use direct routing, thus the web server need to support direct routing. Follow this to config web servers to route traffic back to theelb
gateway.edpi
requires compilation andpf_ring
kernel module. More details at PF_RING AF_XDPcd edpi ./make_pf_ring.sh cd PF_RING/kernel sudo insmod pf_ring.ko min_num_slots=65536 enable_tx_capture=0 cd ../.. ./make_edpi.sh
Use -h
option to see detailed usage for each VNF. For edpi
, you need to manually run nDPI engine in another terminal after edpi
is started.
sudo python -m edpi.edpi -h