Skip to content

Nikolasel/p4-codel

 
 

Repository files navigation

P4 Codel Implementation

Detailed description: Paper

Install

For simple tests we recommend the use of our preinstalled VM.

Preinstalled VM

A completely set up VM can be downloaded here:

ftp://ftp.kom.tu-darmstadt.de/VMs/P4-Codel.ova

Username: codel Password: p4

The VM is testet with Virtualbox. For Linux Users we recommend the use of a Host-only network and a ssh connection to the VM with X-forwarding.

Please go to the codel folder and follow the Run-instructions of this Readme.

cd p4-codel

If you want to reproduce the results shown in the paper this virtual machine is not powerful enough. We recommend a bare-metal server with at least 6 cores for no thread interference.

Setup

  1. Install the following required tools:

  2. and in advance the following packages:

    sudo apt-get install openvswitch-testcontroller python-tk iperf3 xterm
    python -mpip install matplotlib
    pip install scapy
    
  3. Clone the repository in the same parental folder than the 'behavioral-model'.

Run

  • Run Mininet with the P4(bmv2) CoDel implementation
./run.sh [--nocli, --nopcap, --iperft N]

Normally this script generates PCAP files for evaluation and enters the Mininet CLI mode for debugging. With the optional command line parameters, this behavior can be changed.

  • Run Mininet with a simple P4(bmv2) router (fixed-sized FIFO)
./simple_run.sh [--nocli, --nopcap, --iperft N]
  • Run Mininet with the Linux kernel CoDel implementation
./linux_run.sh [--nocli, --nopcap, --iperft N]
  • Run Mininet with the P4(bmv2) CoDel implementation with different RTTs
./rtt_run.sh [--nocli, --nopcap, --iperft N]

Evaluate

To evaluate the measured results run:

./evaluate.sh [--gui]

With the parameter '--gui' the generated plots will be displayed in a GUI. In the folder 'exampleOutputs' you can find results for 1000 pps and 2000 pps bottleneck speed produced on a 8 core bare-metal server.

Debug

If the Mininet CLI mode is active, you can look into the running p4-appliction with:

./start_bmv2_CLI.sh

P4_14 support in p4c

The new p4c compiler supports P4_14 and P4_16. However, there are some issues with with p4_14 code. Therefore the scripts for P4_14 code are still using the p4c-bm compiler. If you want to use the p4c compiler with p4_14 code, please use the following command in the run scripts:

p4c srcP4_14/simple_router.p4 --target bmv2 --arch v1model --p4runtime-format json --std p4-14

and modify the json file name in the run script.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • P4 47.5%
  • Python 35.1%
  • Shell 17.4%