Test and evaluate different packet IO and processing tools for implementing Virtualized Network Function (VNFs) on virtual machines, Unikernels or containers. The main focus of performance here is the low latency (End-to-End service delay). Pros and cons of each tool should be studied and latter utilized for building VNF with different requirements.
For example, firewalls or load balancers can be built using tools that provide high IO speeds but limited computing power. For compute-intensive network functions, such as data encryption, network coding or compressed sensing. The processing ability and delay performance of the tool should also be considered.
Such VNFs can be latter e.g. integrated into NFV platforms or frameworks.
Check out the draft of our paper to get more detailed information.
Since this repo is research oriented, many PoCs or prototypes are also included. These sub-items are classified according to the technology used. For instance, the io_visor directory contains prototypes and helper scripts to develop VNFs with tools provided by IO Visor project. These codes are not guaranteed to be stable and also upgraded with latest features. Relative mature and stable VNFs are put into the vnf_release directory with source code and also usage guide. These sub-items will be maintained and improved with latest features.
Sphinx is used to build the documentation. Install Sphinx before building the documentation source files in ./doc/.
For Linux user, run following commands to build the HTML documentation:
cd ./doc/
make html
xdg-open ./doc/build/html/index.html
-
Data Plane Development Kit (DPDK)
-
IO Visor Project --- BCC: eBPF + XDP
-
Click Modular Router (Only use the user-space driver)
-
Linux Packet Socket (AF_PACKET)
-
Linux XDP Socket (AF_XDP) (TBD, New since Linux v4.18)
-
Kodo: Kodo makes it easy to deploy Erasure Correcting Codes in your application.
-
Network Coding Kernel Library (NCKernel): This library contains encoders and decoders that can be used for network coded communications.
-
kokke/tiny-AES-c: Portable AES implementation in C
-
Measurements results (in CSV format) are not stored in the Repo, figures can be found ./evaluation/figurs
-
Measurements tools can be found in ./delay_timer/ , ./perf/
-
Linux Distribution: Vagrant box: bento/ubuntu-16.04
-
Linux Kernel:
- For BCC: 4.17.0-041700-generic
- For DPDK, Click: Default version in bento/ubuntu-16.04
-
DPDK: v18.02-rc4
-
BCC: v0.6.0
-
Click: v2.0.1
-
OpenStack: Pike with OVS-DPDK
-
kokke/tiny-AES-c: commit 3410accdc35e437ea03e39f47d53909cbc382a8e
-
NCKernel: commit: bf973e0 (2018-06-30)