A tool for generating P4 programs which test various aspect of P4 compilers and targets.
Project description
Tool to benchmark P4 Compilers and Targets
Installation
Run the following commands:
pip install -r requirements.txt python setup.py install
Generate P4 Program and PCAP file for testing
Benchmark parse field
The generated P4 program parses Ethernet, PTP and a customized header containing 4 fields and each field is 16-bit wide:
p4benchmark --feature parse-field --fields 4
Benchmark parse header
The generated P4 program parses Ethernet, PTP and a customized number of headers each containing a customized number of fields. Each field is 16-bit wide:
p4benchmark --feature parse-header --fields 4 --headers 4
Benchmark parse complex
The generated P4 program parses Ethernet, PTP and a parse graph that has the depth of 2 and each node has 2 branches:
p4benchmark --feature parse-complex --depth 2 --fanout 2
Benchmark action complexity
The generated P4 program has N=2 number of set-field operations:
p4benchmark --feature set-field --operations 2
Benchmark header addition
The generated P4 program adds N=2 number of headers to packets:
p4benchmark --feature add-header --headers 2
Benchmark header removal
The generated P4 program removes N=2 number of headers to packets:
p4benchmark --feature rm-header --headers 2
Benchmark processing pipeline
The generated P4 program applies N=2 number of tables:
p4benchmark --feature pipeline --tables 2 --table-size 32
Benchmark Read State
The generated P4 program declares 1 register and performs 10 number of read operations:
p4benchmark --feature read-state --registers 1 --operation 10
Benchmark Write State
The generated P4 program declares 1 register and performs 10 number of write operations:
p4benchmark --feature write-state --registers 1 --operation 10
Generated Files
The output directory contains:
$ ls output commands.txt main.p4 run_switch.sh run_test.py test.pcap 1. main.p4 The desired program to benchmark a particular feature of the P4 target 2. test.pcap Sample packet crafted to match the parser or tables 3. run_switch.sh Script to run and configure bmv2 4. commands.txt Match-action rules for tables 5. run_test.py Python packet generator and receiver
Run Behavioral Target
Require Behavioral Model 2 and P4C:
$ cd output $ ./run_switch
Run Python packet generator
In another terminal, run:
$ cd output $ sudo ./run_test.py --nb-headers 1 --nb-fields 4
PKTGEN (Send PCAP file)
Or, you could use a high performance packet generator that sends the prepared PCAP file and sniffs for returning packets
Build
Requrire cmake and libpcap:
cd pktgen mkdir build cd build cmake .. make
Run pktgen
This packet generator reads the prepared PCAP file and send c copies of that packet at t Byte per second out of the interface veth4. The result is stored in the result directory:
$ p4benchmark/pktgen/build $ sudo ./p4benchmark -p ../../output/test.pcap -i veth4 -c 10000 -t 10000 -o result
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file P4Benchmark-0.1.3.tar.gz.
File metadata
- Download URL: P4Benchmark-0.1.3.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d2d54b94a7774c38f3be90926a7df908d6397775f43c417f940243bfd28a994
|
|
| MD5 |
2cd908ddad0663a975baef058a85594e
|
|
| BLAKE2b-256 |
1570329250ecad3585affe6bad4ced6fbded9dae64d91e0e302f44b978488480
|