Skip to content

Commit

Permalink
Replace README to fit ePPing PAM build
Browse files Browse the repository at this point in the history
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
simosund committed Jan 26, 2023
1 parent 970edb9 commit 431551b
Showing 1 changed file with 38 additions and 11 deletions.
49 changes: 38 additions & 11 deletions README.md
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

0 comments on commit 431551b

Please sign in to comment.