https://github.com/juniper/ebplane
eBPF based dataplane prototypes
https://github.com/juniper/ebplane
Last synced: about 1 year ago
JSON representation
eBPF based dataplane prototypes
- Host: GitHub
- URL: https://github.com/juniper/ebplane
- Owner: Juniper
- License: apache-2.0
- Created: 2019-08-02T00:07:50.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-11-22T16:50:36.000Z (over 6 years ago)
- Last Synced: 2025-04-09T04:27:09.021Z (about 1 year ago)
- Language: C++
- Size: 102 KB
- Stars: 24
- Watchers: 12
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ebplane - an eBPF based dataplane
This repository contains prototypes of an eBPF based dataplane for network applications,
its supporting libraries, tools, and documentation.
# Working on ebplane
## Install development tools locally
To work on ebplane, you must:
1) Install bazel, by following the [instructions here](https://docs.bazel.build/versions/master/install.html).
Make sure you install version [0.29.1](https://github.com/bazelbuild/bazel/releases/tag/0.29.1),
newer versions do not yet work.
2) Build all the binaries, by running:
bazel build ...:all
3) Run the tests, by running:
bazel test ...:all
Binaries can then be found in the `bazel-bin` directory.
The build environment transparently downloads and uses a default toolchain.
Your system does not need compiler, linker or header files installed.
However, if you receive a python stack trace with the error:
Failed to detect host OS version: [...]
It means there is no pre-built environment for your platform.
We recommend you send a PR to update:
https://github.com/grailbio/bazel-toolchain/blob/master/toolchain/tools/llvm_release_name.py#L34
and/or pass `TODO` flag to use a local clang install.
If you see the following error while building:
/usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
On Ubuntu this can be resolved by installing:
apt install gcc-multilib g++-multilib
## Docker build container
Instead of installing the build tools locally you could also use a docker
container that will install all the required tools. For more details see the
[README.md](docker/README.md) in the docker folder.
# Developing ebplane
1) All code checked in must have corresponding tests.
2) Make sure your code is formatted properly with `clang-format`, by running:
TODO
3) Verify no new warnings via static analysis:
TODO
4) Verify that all tests are passing:
bazel test ...:all
bazel test --config=msan ...:all # Uses memory sanitizer.
bazel test --config=tsan ...:all # Uses thread sanitizer.
bazel test --config=asan ...:all # Uses address sanitizer.
bazel test --config=ubsan ...:all # Uses the undefined behavior sanitizer.
5) Send code for review.