The requirements are a bit different compared to classic PacketRusher:
You need Ubuntu 22.04 instead of Ubuntu 20.04 (Kernel 5.15 or later, I've validated latest 22.04 HWE kernel)
And you must go through these steps in addition to the usual PacketRusher requirements:
sudo apt install git clang llvm gcc-multilib libbpf-dev ethtool
git clone -b ebpf https://github.com/HewlettPackard/PacketRusher
# Provided $PACKETRUSHER is the dir where you cloned PacketRusher:
cd $PACKETRUSHER /lib/eupf && ./generate.sh
cd $PACKETRUSHER && go mod download && go build cmd/packetrusher.go
Then you can execute sudo ./packetrusher ue from $PACKETRUSHER
Refactor the code so that it's the gNodeB that's responsible for creating the interfaces / configuring the eBPF and not the UE (instead of sending a UEMessage with all the info, it's directly the gNodeB that manages everything).
adding support for multiple tunnels of multiple UEs with a single gNodeB (multiple PDU sessions per UE also possible) -> test performance of this setup
Remove or modify map data and interfaces according to NGAP signaling (PDU Session Modify / Remove, Handover...)
Handle the case where two gNodeB share the same N3 interface -> don't reattach a second eBPF/XDP program and just modify the same PDR map -> test performance of this setup
Test XDP attach natively and try to make it work to improve performance
This PR replaces gtp5g as the GTP-U / User Plane stack with https://github.com/edgecomllc/eupf eBPF code.
I pushed the code to the eBPF branch: https://github.com/HewlettPackard/PacketRusher/tree/ebpf
The requirements are a bit different compared to classic PacketRusher:
Then you can execute sudo ./packetrusher ue from $PACKETRUSHER