{"id":13799627,"url":"https://github.com/nextmn/upf","last_synced_at":"2026-01-12T13:19:35.023Z","repository":{"id":63365330,"uuid":"438195201","full_name":"nextmn/upf","owner":"nextmn","description":"Experimental 5G UPF","archived":false,"fork":false,"pushed_at":"2024-10-31T21:01:32.000Z","size":184,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-12T11:25:20.454Z","etag":null,"topics":["5g","nextmn","upf"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nextmn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-12-14T09:38:13.000Z","updated_at":"2024-10-31T21:01:34.000Z","dependencies_parsed_at":"2024-01-07T08:10:27.809Z","dependency_job_id":"d5c92eb4-aafb-4022-9fb5-e94e652a030a","html_url":"https://github.com/nextmn/upf","commit_stats":null,"previous_names":["nextmn/upf","louisroyer/nextmn-upf"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextmn%2Fupf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextmn%2Fupf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextmn%2Fupf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextmn%2Fupf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nextmn","download_url":"https://codeload.github.com/nextmn/upf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225190632,"owners_count":17435456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["5g","nextmn","upf"],"created_at":"2024-08-04T00:01:04.613Z","updated_at":"2026-01-12T13:19:34.985Z","avatar_url":"https://github.com/nextmn.png","language":"Go","funding_links":[],"categories":["NFs"],"sub_categories":[],"readme":"# NextMN-UPF\nNextMN-UPF is an experimental 5G UPF implementation. This UPF is implemented in User Space, meaning it does not depend on Linux GTP module.\n\u003e [!WARNING]\n\u003e This UPF is still at the early stages of development and contains bugs and will crash in unexpected manners.\n\u003e Please do not use it for anything other than experimentation. Expect breaking changes until v1.0.0\n\nThe following features are implemented:\n- IPv4/IPv6 both in inner and outer PDUs (note: IPv6 is not implemented in Linux GTP module)\n- PFCP Association Setup Procedure\n- PFCP Session Establishment Procedure\n- PFCP Session Modification Procedure\n- PDRs/FARs, SDF Filters\n- Interoperability with Free5GC (you can replace Free5GC's UPF container with NextMN-UPF container) (tested only with IPv4)\n- Interoperability with UERANSIM (since 2022-06-24's version in UERANSIM master branch)\n- Periodic display of the currently applied PFCP rules\n\nMissing features:\n- PFCP Session Deletion Procedure\n- PDRs/FARs deletion\n- BARs, MARs, URRs, QERs are not handled yet\n- Gracefull shutdown procedure\n- Any other advanced PFCP use\n\nOther missing things because we are at early stages of development:\n- Unit/Integration Tests (Not implemented) + CI/CD\n- Testing full IPv6 deployment with UERANSIM+Free5GC integration\n- Documentation (WIP)\n- Performances (Not the current goal as long as it is decent)\n- Storing Sessions/Rules in a database to be more efficient (currently everything is stored in RAM), and the Session/Rules research is not optimal\n\n\n## Getting started\n### Build dependencies\n- golang\n- make (optional)\n\n### Runtime dependencies\n- iproute2\n- iptables\n\n### Build and install\nSimply run `make build` and `make install`.\n\n### Docker\nIf you plan using NextMN-UPF with Docker:\n- The container required the `NET_ADMIN` capability;\n- The container required the forwarding to be enabled (not enabled by the UPF itself);\n- The tun interface (`/dev/net/tun`) must be available in the container.\n\nThis can be done in `docker-compose.yaml` by defining the following for the service:\n\n```yaml\ncap_add:\n    - NET_ADMIN\ndevices:\n    - \"/dev/net/tun\"\nsysctls:\n    - net.ipv4.ip_forward=1\n```\n\n## Author\nLouis Royer\n\n## License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextmn%2Fupf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextmn%2Fupf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextmn%2Fupf/lists"}