INFO ! This is just a toy library to prototype new (crazy) ideas. Proven and tested ideas will be implemented in the new repo Leo
FFPP is a Packet Processing (PP) library developed primarily to (at least, try to) explore the research topic Computing in the Network. Another research target is to exploit the judicious synergistic collaboration of kernel space eBPF/XDP and user space DPDK for NFV software dataplane network.
It was also an opportunity (a challenge) for me to re-implement the wheel and learn how pure software packet processing system works. Why re-implement the wheel ??? 🤓 Check build-your-own-x.
The structure of the source tree is similar to that of the DPDK project. FFPP is designed and implemented to build Containerized (or Cloud-native) Network Functions (CNF). So it should be mainly used inside a container. The project provides a sample Dockerfile to build a base image to prototype network functions on top of FFPP. The sample image is only used for prototyping, so layers and image size are not optimized at all.
The project is currently still under heavy development and revision. More documentation will be added later when the structure and source tree are stable.
The Docker image contains all dependencies required to build and install all FFPP targets.
Use the script to build FFPP using BuildKit of Docker:
bash ./build_image.sh
FFPP can be configured, built and installed using the tools Meson and Ninja. Check the Dockerfile or meson.build for required dependencies. All dependencies should be installed before building from source.
Use the default release profile to build and install FFPP system-wide:
meson build --buildtype=release
cd ./build
ninja
ninja install
ldconfig