Repository navigation
Add an eBPF GTP-U backend - #223
Merged
Merged
Conversation
linouxis9
force-pushed
the
pr/final-core-ebpf-gtpu
branch
from
October 4, 2026 17:04
b11dc57 to
d838cbf
Compare
linouxis9
force-pushed
the
pr/final-core-ebpf-gtpu
branch
from
October 4, 2026 17:16
d838cbf to
d98dd82
Compare
linouxis9
force-pushed
the
pr/final-core-ebpf-gtpu
branch
from
October 4, 2026 17:25
d98dd82 to
4bbdef1
Compare
There was a problem hiding this comment.
Cppcheck (reported by Codacy) found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
linouxis9
force-pushed
the
pr/final-core-ebpf-gtpu
branch
from
October 4, 2026 18:21
4bbdef1 to
2a150b5
Compare
linouxis9
force-pushed
the
pr/final-core-ebpf-gtpu
branch
from
October 4, 2026 22:57
2a150b5 to
0e0443e
Compare
linouxis9
force-pushed
the
pr/final-core-ebpf-gtpu
branch
from
October 5, 2026 00:08
0e0443e to
711a81b
Compare
Short-cut the userspace backend in the kernel: eBPF programs on the UE's TUN device and on the N3 interface encapsulate and decapsulate its packets, so they no longer cross into userspace. Whatever the programs leave alone (Echo Requests, Router Advertisements, fragments, unknown tunnels) still reaches the userspace backend, which also keeps doing the session setup, handover and release. The UE's packets cross a veth pair before their encapsulation, so that the kernel splits large TCP segments and completes their checksums. --tunnel-backend ebpf selects it, and auto now prefers it: ebpf, then gtp5g, then userspace. It needs Linux 6.6 (TCX) and an N3 interface other than loopback. Signed-off-by: Valentin <[email protected]>
linouxis9
force-pushed
the
pr/final-core-ebpf-gtpu
branch
from
October 5, 2026 00:32
711a81b to
8cdb8ce
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New
ebpftunnel backend: eBPF programs on the UE's TUN device and on the interface towards the UPF encapsulate and decapsulate the packets in the kernel, with no kernel module. The userspace backend still does session setup, handover and release, and handles what the programs skip (Echo Requests, Router Advertisements, fragments, packets that are not the UE's).autonow tries ebpf, then gtp5g, then userspace. It needs Linux 6.6. A UPF on the same host, on loopback or not, works too.CI rebuilds the eBPF object with
make ebpfand fails if it differs from the committed one, and runs the root tunnel tests on an arm64 runner as well: the same object serves both architectures.Fix #23.