Repository navigation
Releases
Releases · edgecomllc/eupf
v1.0.0-rc1
What's changed
Major release: a new experimental profile-based PFCP architecture, 4G/EPC (Sxa/Sxb) support, observability & management tooling.
Highlights
- PFCP profile architecture — pluggable per-vendor behaviour via a new pfcp_profile config key (default / vendor profile): NodeID format, URR sequence numbering, OuterHeaderCreation, enterprise-specific IE parsing and vendor IEs are isolated behind a PfcpProfile interface, fully covered by unit tests for both profiles.
- Vendor core compatibility profile — vendor-specific extensions for enterprise EPC/5GC cores: Metric IE in Heartbeat Request, second F-SEID in Session Establishment Response, IMS SDF filters, SPGW-C FAR composition, vendor NodeID format, per-core map size defaults.
- 4G/EPC support — optional Sxa/Sxb connections and SPGW-C service support; 4G core sample deployments (Open5GS, docker-compose) added.
- Session & subscriber tracing — pcap packet dumps with file rotation and size/packet limits, per-direction tracing (in/out/blocked), subscriber signalling trace, configurable via config/API.
- New CLI (eupf-cli) — inspect associations/sessions with pretty-printed tables, manage runtime config, create and restore backups.
- PCC (predefined) rules — activation/deactivation of predefined rules from config, variable SDF lists per PDR.
- SDF match notifications — a perf-event listener notifies on SDF filter matches.
- Runtime management API — hot config updates, association status monitoring, session deletion endpoint, updated Swagger docs.
PFCP handling
- (Experimental) Sxa/Sxb connections
- Association status monitoring and graceful association release via HTTP API and signals
- Session Release Request support (UPF-initiated release); session deletion via API
- Usage Reporting: URR entities management, URR reporting on PDR deletion and on PCC URRs;
- Heartbeat Request carries a vendor Metric IE (vendor profile); heartbeat and association handling fixes
- FAR/QER/URR rules are deleted by their correct global ids
- Sessions filterable by network instance
- PFCP message tracing with per-message dump support
Data plane (eBPF)
- Combined S/PGW-U: Local processing of inter-UPF packets via tail calls
- Runtime-controlled GTP-U extension header
- IPv6 Router Advertisement support
- Recovery field in the GTP-U header & GTP-U sequence number parsing
- Route statistics metrics;
- Advertised N3 address
Stability & fixes
- TCP header parsing for SDF filters; IPv4/IPv6 SDF matching fixes
- Nil-pointer crash in resource manager fixed; load-behaviour optimizations;
v0.7.2
What's Changed
- feat: add route stats metrics by @VITEK-THE-BEST in #614
- feat: add calculate default maps size by session by @VITEK-THE-BEST in #622
- feat: support GTP-U/UDP/IP(6) value for Outer Header Removal by @s5uishida in #636
- feat(docker): file capabilities on the eupf binary, so it can run as a non-root user by @martin-mat in #672
- fix(core): always send PFCP responses; treat datapath delete ENOENT as success by @zhangerfei-dp in #650
- fix: ebpf program build warnings by @pirog-spb in #619
- fix: set ebpf map size on startup correctly by @VITEK-THE-BEST in #624
- fix(docker): move builder to bookworm, bump alpine runtime by @pirog-spb in #652
- fix(helm): make default values produce a startable pod (#645) by @pirog-spb in #649
- fix(helm): default to the documented capability set instead of privileged by @martin-mat in #666
- fix(helm): size the eBPF maps for the chart's default memory limit by @martin-mat in #673
- fix(helm): run eUPF as a non-root user by default by @martin-mat in #674
- fix(deps): update golang.org/x/* to close 18 HIGH CVEs, bump Go to 1.26 by @pirog-spb in #654
- fix(deps): update golang.org/x/net to close CVE-2026-78669 by @pirog-spb in #667
- fix(deps): build with Go 1.26.10 to close CVE-2026-111943 by @martin-mat in #675
- fix(trivy): ignore KSV-0118 for the eUPF deployment template by @pirog-spb in #655
- fix(ci): use the correct needs.<job_id>.result context in scan-result by @pirog-spb in #660
- chore: use global config for local ip by @pirog-spb in #620
- ci: fix golangci-lint failing due to Go toolchain mismatch by @pirog-spb in #651
- ci: update pipeline actions version by @pirog-spb in #653
- ci(security): consolidate Trivy into manual pre-merge Security scan workflow by @pirog-spb in #656
- ci(security): scan PRs automatically instead of manual dispatch by @pirog-spb in #659
New Contributors
- @s5uishida made their first contribution in #636
- @martin-mat made their first contribution in #646
- @zhangerfei-dp made their first contribution in #650
Full Changelog: v0.7.1...v0.7.2
v0.7.1
What's Changed
- feat: recognize UEIPAddress in UpdatePDR by @yoursunny in #591
- fix: start window modification during qer rate limiting by @tariromukute in #596
- fix: remove NodeID from PFCP SessionModification and SessionDeletion response by @pirog-spb in #601
- fix: incorrect handling of dl ue udp traffic with dst port 2152 by @pirog-spb in #607
- fix: sync far/qer/urr ids management by @VITEK-THE-BEST in #603
- fix: wrong id while deleting far/qer/urr by @VITEK-THE-BEST in #604
- fix: Parse TCP header by @VITEK-THE-BEST in #606
- docs: remove Russian documentation by @VITEK-THE-BEST in #605
- docs: add contributing guide by @pirog-spb in #611
- build: fix github buildx action crash by @pirog-spb in #599
- refactor(xdp): rename GTPU[IPv4+TEID]->PDR map by @pespin in #593
- refactor(pfcp): Improve logging and error handling during session create/modify/delete by @pespin in #592
New Contributors
- @yoursunny made their first contribution in #591
- @tariromukute made their first contribution in #596
- @VITEK-THE-BEST made their first contribution in #603
Full Changelog: v0.7.0...v0.7.1
v0.7.0
What's Changed
- feat: UP initiated association setup by @kade-ddnkv in #497
- feat: add PFCP URR entities management by @razor-87 in #568
- feat: report URR on deleting of PDR by @pirog-spb in #571
- feat: support configuring local IP address for N9 interface with N3 address by default by @pirog-spb in #585
- fix: typo in PDR management log message by @pespin in #579
- fix: wrong UDP checksum in proxied GTPv1U packets by @pespin in #580
- fix: set message length for GTP Echo with sequence by @pirog-spb in #572
- fix deploy open5gs-compose #547 by @PapaySail in #548
- fix: use 1.22.4 golang version by @pirog-spb in #554
- fix: simple fix for running tests by @razor-87 in #566
- fix: packet metrics gathering by @pirog-spb in #584
- deploy: remove fake routes from GnB's NetworkAttachmentDefinition in free5gc deployments by @PapaySail in #551
- build: bump go version in Dockerfile by @pirog-spb in #569
- refactor: improve xdp trace output by @pirog-spb in #573
- docs: ports correction in install.md docker-compose templete by @sofianinho in #550
- docs: fix wrong xdp mode config value by @pespin in #575
- docs: fix typo in README.md text by @pespin in #578
- docs: fix space problem in deployment commands in Readme.md by @piktaka in #559
- style(docs): fix trailing whitespace in several files by @pespin in #582
- style: fix trailing whitespace in several files by @pespin in #576
New Contributors
- @sofianinho made their first contribution in #550
- @piktaka made their first contribution in #559
- @razor-87 made their first contribution in #566
- @pespin made their first contribution in #575
Full Changelog: v0.6.4...v0.7.0
v0.6.4
What's Changed
- fix: ignore SDF Filter with empty Flow Description by @pirog-spb in #538
- fix: add NodeID to every Session Establishment/Modification/Deletion Response by @pirog-spb in #541
- doc: revert GTP path management config description by @pirog-spb in #544
- doc: deployments localization by @pirog-spb in #545
- deploy: use new gradiant repo links by @pirog-spb in #546
Full Changelog: v0.6.3...v0.6.4
v0.6.3
What's Changed
- docs: simplify quickstart command for running eupf and add note about bpffs by @pirog-spb in #533
Full Changelog: v0.6.2...v0.6.3
v0.6.2
v0.6.1
What's Changed
- fix: delete an association when the limit of unanswered heartbeats is reached by @arxxm in #506
- feat: add recovery ts in association response by @pirog-spb in #504
- feat: oai core support by @pirog-spb in #490
- feat: setting the UEIP flag and allocation of IP by @arxxm in #501
- docs: add commands for configuring eupf via api by @pirog-spb in #520
- docs: add driver support chapter by @pirog-spb in #503
- docs: remove extra indentations in load-testing.md by @pirog-spb in #523
- docs: add remark about "swag not found error" to README by @pirog-spb in #529
- docs: update roadmap in README.md by @pirog-spb in #530
- deploy: deployments with OAI by @mbaran0v in #485
- deploy: verify doc by @PapaySail in #515
- refactor: remove obsolete code by @kade-ddnkv in #516
- refactor: 3gpp options configuration refactoring by @pirog-spb in #525
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
- feat: FTUP feature support by @arxxm in #476
- feat: basic gtp path management by @pirog-spb in #484
- fix: correct deletion of pdr from ebpf map by @pirog-spb in #486
- fix: delete FAR and QER by correct id by @pirog-spb in #498
- docs: update deploy description by @pirog-spb in #488
- docs: add performance testbed description by @pirog-spb in #495
- build: fix trivy warnings by @arxxm in #492
Full Changelog: v0.5.2...v0.6.0
v0.5.2
What's Changed
- feat: add gtp-u extension header with qfi by @pirog-spb in #461
- refactor: api implementation by @arxxm in #460
- docs: api documentation by @arxxm in #463
- tests: Add robot to CI by @marknefedov in #352
- ci: fix ci build job by @mbaran0v in #462
- deploy: change chart repository to ghcr.io by @mbaran0v in #459
New Contributors
Full Changelog: v0.5.1...v0.5.2