This repository contains the Bolt toolchain which automatically generates performance contracts for Software NFs.
The install script assumes you are using Ubuntu 18.04/16.04, though Debian may also work. You could also install the dependencies manually.
To run Bolt with hardware models (include DPDK in performance contract), you need a lot of RAM (100+ GB).
To run the NAT (but not to verify it), you need to set up hugepages for DPDK; see the DPDK documentation.
Our dependencies, are modified versions of KLEE, KLEE-uClibc and Intel Pin.
Run install.sh
, which will install the Bolt toolchain and create a file named paths.sh
containing all necessary environment variables
(which is automatically added to your ~/.profile
).
# Compile VigNAT
$ cd nf/vignat
$ make
# Run it (this will print a help message)
$ ./build/nat
# Running Bolt on VigNAT
$ bash ../test-bolt.sh vignat
Subdirectories have their own README files.
- nf - contains the libVig library of the data structures and all the NFs involved in the project
- install - patches and config files for the Bolt toolchain dependencies
- perf-contracts - contains the performance contracts for the data structure library. These are used as builing blocks to generate performance contracts for entire NFs.