Skip to content

☕ Try to build simple Virtualized Network Functions (VNFs) in virtual machines or containers.

Notifications You must be signed in to change notification settings

zrbzrb1106/build-vnf

 
 

Repository files navigation

Build VNF

Motivation

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.

Catalog

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.

Documentation

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

Packet IO Frameworks

  1. Data Plane Development Kit (DPDK)

  2. IO Visor Project --- BCC: eBPF + XDP

  3. Click Modular Router (Only use the user-space driver)

  4. Linux Packet Socket (AF_PACKET)

  5. Linux XDP Socket (AF_XDP) (TBD, New since Linux v4.18)

Packet Processing Frameworks

  1. Kodo: Kodo makes it easy to deploy Erasure Correcting Codes in your application.

  2. Network Coding Kernel Library (NCKernel): This library contains encoders and decoders that can be used for network coded communications.

  3. kokke/tiny-AES-c: Portable AES implementation in C

Evaluation Measurements

  • 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/

Version of used Tools

  • 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)

Main References

About

☕ Try to build simple Virtualized Network Functions (VNFs) in virtual machines or containers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 61.6%
  • Python 24.1%
  • Shell 10.6%
  • Makefile 1.9%
  • Click 1.1%
  • C++ 0.3%
  • Other 0.4%