Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Switch to eBPF for user-plane #47

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft

[WIP] Switch to eBPF for user-plane #47

wants to merge 3 commits into from

Conversation

linouxis9
Copy link
Member

@linouxis9 linouxis9 commented Dec 21, 2023

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:

  • 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

@linouxis9 linouxis9 requested a review from Raguideau December 21, 2023 14:13
@linouxis9 linouxis9 force-pushed the ebpf branch 5 times, most recently from ffd738b to c4ddf80 Compare December 24, 2023 23:41
@linouxis9
Copy link
Member Author

linouxis9 commented Jan 3, 2024

There are still a few things to do:

  • 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
  • Add flow limitation based on NGAP information

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants