-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Replace README to fit ePPing PAM build
Replace the generic bpf-examples README file with a README more suitable for the purpose of this repository (archiving the ePPing PAM 2023 build). Signed-off-by: Simon Sundberg <[email protected]>
- Loading branch information
Showing
1 changed file
with
38 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,41 @@ | ||
# Practical BPF examples | ||
# ePPing PAM 2023 build | ||
|
||
This git repository contains a diverse set of **practical BPF examples** that | ||
solve (or demonstrate) a specific use-case using BPF. | ||
This repository contains the code for the ePPing application that was | ||
used for the PAM 2023 paper "Efficient continuous latency monitoring | ||
with eBPF". For the most current build of ePPing please see | ||
[xdp-project/bpf-examples](https://github.com/simosund/bpf-examples/tree/master/pping) | ||
instead. The code for ePPing is usually bundled with many other cool XDP | ||
applications, but for this repository I have removed them to keep it | ||
focused on ePPing. | ||
|
||
It is meant to ease doing **rapid prototyping and development**, writing C-code | ||
BPF programs using libbpf. The goal is to make it **easier for developers** to | ||
get started coding. | ||
Two different builds of ePPing were used for the experiments in the | ||
paper. The build in the [main | ||
branch](https://github.com/simosund/ePPing-PAM23/tree/main) was used | ||
for the performance tests, whereas the build in the [additional-output | ||
branch](https://github.com/simosund/ePPing-PAM23/tree/additional-output) | ||
(adds TSecr and ACK number to each RTT report) was used for evaluating | ||
the RTT accuracy and showcasing the difference between matching TCP | ||
timestamps vs sequence and ACK numbers. | ||
|
||
Many developers struggle to get a working BPF build environment. The repo | ||
enviroment makes it easy to build/compile BPF programs by doing the necessary | ||
libbpf setup transparently and detect missing compile dependencies (via the | ||
[configure](configure) script). It is a declared goal to **make BPF programming | ||
more consumable** by detecting and reporting issues (when possible). | ||
## Build | ||
To build ePPing, run the following commands | ||
``` | ||
git submodule update --init | ||
CLANG=clang-14 LLC=llc-14 ./configure | ||
cd pping | ||
make | ||
``` | ||
|
||
Note that for the experiments ePPing was built with LLVM-14 (clang-14 | ||
and llc-14). This build will fail to run if compiled with LLVM-15+, as | ||
the fix for working with LLVM-15+ was added later. | ||
|
||
## Run | ||
To run ePPing, run the following commands | ||
``` | ||
cd pping | ||
sudo ./pping -i <interface> [optional args] | ||
``` | ||
|
||
To list the optional arguments, simply run `sudo ./pping -h`. A short | ||
explanation of each argument can be found in pping/pping.c |