An XDP/TC eBPF volumetric DDoS protection solution.
See Tempesta Escudo Wiki for Tempesta xFW documentation.
Ubuntu 24 LTS and at least clang-19 are required.
sudo apt install -y cmake make xdp-tools \
clang clang-19 clang-tools-19 clang-tidy-19 clang-format-19 \
libboost-all-dev flatbuffers-compiler libflatbuffers-dev libprotobuf-dev libgrpc++-dev \
linux-tools-common libspdlog-dev libmaxminddb-dev libbpf-dev libbpf-tools libgtest-dev \
linux-tools-generic linux-cloud-tools-genericAn example how to make a debug build of the project:
git submodule update --init --recursive
DEBUG=3 make -j$(nproc) clean all
sudo make installBy default, all project data will be installed to PREFIX=/opt/tempesta.
You can override this location by specifying a different PREFIX when running make install, for example:
make install PREFIX=/custom/pathTo see a list of available make targets and their descriptions, run:
make helpAfter installing the project, you can start the service using:
$(PREFIX)/bin/xfwctl --startAll available script options and commands can be viewed with:
$(PREFIX)/bin/xfwctl --helpFor development or local testing, you can run the script without installation
by setting the TEMPESTA_XFW_PATH environment variable manually:
TEMPESTA_XFW_PATH=./BUILD ./xfwctl --startIf you installed the project with a custom prefix, for example:
make install PREFIX=/custom/path
then you should run the script with the corresponding TEMPESTA_XFW_PATH:
TEMPESTA_XFW_PATH=/custom/path ./xfwctl --startIntegration Python tests can be found in t/func. Read corresponding
README.md file to prepare environment and run functional tests.
make test
If you build Tempesta xFW in debug mode, you'll see BPF debug messages (see bpf_trace_printk
documentation for details):
DEBUG=1 make -j`nproc`
Example of reading logs:
sudo cat /sys/kernel/tracing/trace_pipe