Skip to content

theleos88/vpp-bench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vpp-bench

Vector Packet Processor is an Linux Foundation (fd.io) project for high-speed packet processing. In line with the push toward research reproducibility, vpp-bench is a repository used to keep track of our research data about VPP and, more generally, high-speed software frameworks.

This repo contains:

This repository is meant to be used in conjunction with other github repos:

TAGS Checkout to tags v16.04 for the scripts valid for VPP 16.04 Master: VPP 19.04

Outline


1. Before starting

By default, we locate scripts in /usr/local/etc/scripts. This is exported to an environment variable, named $CONFIG_DIR. If git is not available, or if you just want the scripts directory, export with this command:

svn export https://github.com/theleos88/vpp-bench/trunk/scripts --force $CONFIG_DIR

This will update the config scripts with the latest version. I also put an alias in the bashrc, command update-conf and force-update-conf.

  • After any change in your local CONFIG_DIR, run the update-conf.
  • To come back to the remote version, run the force-update-conf. (It will remove local changes to files. It keeps the local files not staged in git).

NOTE: vpp-bench was a fork of the repository github.com/TeamRossi/vpp-bench, which is now deprecated.

Environment

Source the config.sh inside the scripts folder to load in your shell the env variables.

Requirements

Some of the scripts require additional tools or write permission to specific locations:

  • write access to /tmp/
  • write access to $VPP_ROOT (see config.sh)
  • python in $PATH
  • $CONFIG_DIR in $PATH
  • Sudo without password (or, in alternative, run as root)

Conventions

Scripts are organized following a specific convention:

[tool name]_[script name]

For example:

vpp_change-frame-size.sh

Where:

  • Tool name: vpp
  • Script name: change-frame-size.sh

There are currently 5 sets of tools:

  • vpp
  • dpdk
  • lua
  • test
  • datasets

The majority of the scripts are bash/shell scripts (e.g. *.sh). Python scripts are used mainly for dataset creation. Lua files are used for traffic generation. Files with *.pkt extension are a sequence of DPDK pktgen commands, to be used for very simple experiments on packet generation.

TODO

  1. Clone the repository to your main vpp source directory
git clone [URL]/vpp_dev.git

2.a) Source the env variable

2.b) Compile your project

cd [name] && make 
  1. Run one of the scripts.

  2. Enjoy vpp.


2. Tips&Tricks for performance evaluation

It is important to check a set of requirements. This is described in details in the wiki page.

  • Check NUMA nodes: each core should be assigned to the same NUMA node of the Line Card e.g. If core0 is located in NUMA #0 and LC1 is located in NUMA #0, then core0 can be assigned to LC1.

  • No Turbo boost active: the turbo boost randomly increments the CPU frequency, but it decreases over time. So performance predictability gets lost.


3. Experiments

test_vpp-forwarding-framesize.sh

Performs the test to compute the VPP's forwarding rate as a function of the vector size. By default, runs for XC or IP forwarding, and with static, roundrobin and uniform mode.