{"id":26852804,"url":"https://github.com/omec-project/ngic-rtc","last_synced_at":"2026-02-13T18:38:59.614Z","repository":{"id":51387819,"uuid":"170024653","full_name":"omec-project/ngic-rtc","owner":"omec-project","description":"NGIC-RTC is Control User Plane Separated (CUPS) architecture 3GPP TS23501 based implementation of EPC Service and Packet Gateway functions (SGW, PGW)","archived":false,"fork":false,"pushed_at":"2021-05-12T13:31:48.000Z","size":7952,"stargazers_count":55,"open_issues_count":0,"forks_count":44,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-03-30T23:02:04.380Z","etag":null,"topics":["3gpp","cups","epc","lte","pgw","sgw"],"latest_commit_sha":null,"homepage":"http://www.omecproject.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/omec-project.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}},"created_at":"2019-02-10T20:40:32.000Z","updated_at":"2024-12-13T07:32:10.000Z","dependencies_parsed_at":"2022-09-11T02:10:10.982Z","dependency_job_id":null,"html_url":"https://github.com/omec-project/ngic-rtc","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/omec-project/ngic-rtc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omec-project%2Fngic-rtc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omec-project%2Fngic-rtc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omec-project%2Fngic-rtc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omec-project%2Fngic-rtc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omec-project","download_url":"https://codeload.github.com/omec-project/ngic-rtc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omec-project%2Fngic-rtc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29414282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["3gpp","cups","epc","lte","pgw","sgw"],"created_at":"2025-03-30T23:01:16.827Z","updated_at":"2026-02-13T18:38:59.566Z","avatar_url":"https://github.com/omec-project.png","language":"C","funding_links":[],"categories":["Core"],"sub_categories":["4G"],"readme":"\u003c!--\nSPDX-License-Identifier: Apache-2.0\nCopyright(c) 2017 Intel Corporation\n--\u003e\n\n### :boom: New features have been released to the [e-utran-features](https://github.com/omec-project/ngic-rtc/tree/e-utran-features) branch include:\n\n  * PFCP Support (Sxa,Sxb,Sxa/Sxb reference points)\n  * Expanded E-UTRAN procedure support including handover scenarios\n  * User Level Packet Copying feature captures session data\n  * CSID implementation and UP recovery\n  * UPF selection by DNS\n  * Predefined Rules\n  * UE sessions with multiple Bearer support.\n  * Charging by volume and time notification.\n  * Session level promotion/demotion due to handover\n\n### For more information take a look at the [e-utran-features](https://github.com/omec-project/ngic-rtc/tree/e-utran-features) branch and supporting documentation.\n  * [README.md](https://github.com/omec-project/ngic-rtc/blob/e-utran-features/README.MD)\n  * [User Guide rel. 1.8](https://github.com/omec-project/ngic-rtc/raw/e-utran-features/docs/Control_User_Plane_Gateway_User_Guide_1.8.docx)\n\n\n# Next Generation Infrastructure Core\n\n\u003c!-- toc --\u003e\n\n- [Introduction](#introduction)\n- [Feature List](#feature-list)\n- [High Level Design](#high-level-design)\n- [Installation](#installation)\n- [Release Notes](#release-notes)\n\n\u003c!-- tocstop --\u003e\n\n## Introduction\n\nNGIC-RTC is a Control User Plane Separated (CUPS) architecture 3GPP `TS23401`\nbased implementation of Evolved Packet Core (EPC) Service and Packet Gateway\nfunctions (SGW, PGW) in a run to complete design to maximize packet processing\nperformance per compute core. NGIC-RTC allows runtime configurable\nSGWC-SGWU \u003cS5/S8\u003e, PGWC-PGWU or SPGWC-SPGWU options.\n\nInterface between Control and User/Data plane i.e. S-PGWC and S-PGWU is ZMQ\npush-pull mechanism over TCP transport. Options for UDP transport or SDN\nintegration are available too.\n\n```text\n                                       EPC Core\n                             +-------------------------+\n                             | +---------+ +---------+ |\n                      Control| |  MME    | |  PCRF   | |\n                       Signal| |         | |         | |\n         +----------+  +-------+         | |         | |\n+--+     |          |  |     | +-----+---+ +---+-----+ |\n|UE+-----+          |  |     |       |         |       |\n+--+     |          |  |     |   +-----------------+   |\n         |          +--+     |   |   |s11      |Gx |   |\n+--+     |  eNodeB  +--+     |   | +-------------+ |   |\n|UE+-----+  (Base   |  |     |   | |    CP       | |   |\n+--+     |  Station)|  |     |   | +-------------+ |   |   +--------------+\n         |          |  |     |s1u| +-------------+ |sgi|   | External     |\n+--+     |          |  +---------+ |    DP       | +-------+ Network      |\n|UE+-----+          |  User  |   | +-------------+ |   |   |              |\n+--+     +----------+  Data  |   |    NGIC NFV     |   |   |              |\n              ||             |   +-----------------+   |   +--------------+\n              ||             +-------------------------+\n              ||\n              ++\n```\n\n## Feature List\n\nThe NGIC currently supports the following SAE-GW features:\n\n* PCC (Policy Control and Charging) rules configuration.\n* ADC (Application Detection and control) rules configuration.\n* Packet Filters for Service Data Flow (SDF) configuration.\n* Packet Selectors/Filters for ADC configuration.\n* UE sessions with multiple Bearer support.\n* SDF and APN based Qos Metering for MBR.\n* Charging by volume and asynchronous notification.\n* Enable command line or display stats periodically.\n* IPv4 support\n* Multiport support\n* Sponsored Domain Name support\n\n## High Level Design\n\nThe NGIC is divided into Control plane (CP) and Data plane (DP). CP is used to\nset the PCC rules, QoS profiles, and UE Session to DP via UDP or ZMQ communication\nperformed by the cp_dp_api library. Currently [ADC rules](config/adc_rules.cfg)\nare static.\n\n```text\n        +----------------+\n        |                |\n+-----\u003e |    Control     |\n S11    |    Plane       |\n\u003c-----+ |                |\n        |                |\n        +-------+--------+\n                |\n                |\n                | IPC\n                |\n                v\n        +-----------------+\n        |                 |\n        |                 |\n+-----\u003e |     Data        | +---\u003e\n S1U    |     Plane       |  SGi\n\u003c-----+ |                 | \u003c---+\n        |                 |\n        +-----------------+\n```\n\nBelow is a packet walk for the DP\n\n```text\n          +-----------------------------------------------------------------------------------------------------+\n          |                        NGIC Data Plane Flow Diagram.                                                |\n          |                               +---------------------------------+           +-----------------+     |        Flow1\n          |  +------+  +------+  +------+ |    UE session                   |  +------+ | SDF \u0026 ADC Filter|     |    \u003c--------------+\n          |  | CDR  |  | APN  |  | PCC  | | +--------------------------+    |  | PCC  | |                 |     |        Flow2\n   Flow1  |  |Charg |  | Meter|  | Meter| | |Default            sdf1   |    |  |Gating| |    sdf1         |     |    \u003c--------------+\n\u003c-------+ |  |ing   |  |      |  |      | | |Bearer             sdf3   |    |  |      | | \u003c-----------+   |     |\n   Flow2  |  |      |  |      |  | sdf1 | | +--------------------------+    |  | sdf1 | |    sdf2         |     |\n\u003c-------+ |  |per UE|  |per UE|  | sdf2 | |                                 |  | sdf2 | | \u003c-----------+   |     |        Flow3\n   Flow3  |  |per ADC  |      |  | sdf3 | |                                 |  | sdf3 | |                 |     |    \u003c--------------+\n\u003c-------+ |  |per   |  |      |  | sdf4 | | +--------------------------+    |  | sdf4 | |                 |     |        Flow4\n   Flow4  |  | bearer  |      |  |      | | |Dedicated          sdf2   |    |  |      | | \u003c-----------+   |     |    \u003c--------------+\n\u003c-------+ |  |      |  |      |  |      | | |Bearer             sdf4   |    |  |      | |    sdf3         |     |\n          |  +------+  +------+  +------+ | +--------------------------+    |  |      | | \u003c-----------+   |     |\n          |                               |                                 |  +------+ |    sdf4         |     |\n          |                               +---------------------------------+           +-----------------+     |\n          |                                                                                                     |\n          +-----------------------------------------------------------------------------------------------------+\n```\n\nThe CP does session establishment and management by polling the configured S11\ninterface. Alternatively, the s11 interface may be bypassed to read/write packet\ncapture (pcap) files, as the allocation of TEID and IP addresses are deterministic.\nThe CP manages within its own data structures all required information to process the\nmanagement of its connections, therefore tests may be performed independent of\nthe data plane. The high level design of the control plane is shown below.\n\n```text\n                  +-------------------------------------------------------------+\n                  |                     NGIC Control Plane                      |\n                  |   +------------------+                 +------------+       |\n                  |   | Create Session   |_________________| IP         |       |\n                  |   | Parser/Responder |                 | allocation |       |\n                  |   +------------------+_______________  +------------+       |\n                  |    |                                 \\                      |\n                  |    |  +------------------+            \\___+-------------+   |\n                  |    |  | Modify Bearer    |________________| UE/Session/ |   |\n                  |    |  | Parser/Responder |                | Bearer data |   |\n                  |    |  +------------------+      __________+-------------+   |\n                  |    |   |  .                    /                        |   |\n          +-----\u003e |    |   |  .                   /          +------------+ |   |\n         S11/pcap |    |   |  .                  /        ___| Packet     | |   |\n          \u003c-----+ |    |   |  +------------------+       /   | Filters    | |   |\n                  |    |   |  | Create Bearer    |______/    +------------+ |   |\n                  |    |   |  | Parser/Responder |                          |   |\n                  |    |   |  +------------------+                          |   |\n                  |    |   |   |  ...                                       |   |\n                  |    |   |   |    +------------------+                    |   |\n                  |    |   |   |    | Delete Session   |____________________|   |\n                  |    |   |   |    | Parser/Responder |                        |\n                  |    |   |   |    +------------------+                        |\n                  |    |   |   |     |                                          |\n                  |    |   |   |     |                                          |\n                  |   +------------------+                                      |\n                  |   |    CP_DP_API     |                                      |\n                  |   +------------------+                                      |\n                  +-----------||------------------------------------------------+\n                              ||\n                              \\/\n                              DP\n```\n\nMessages currently supported by the control plane include:\n\n```text\n  GTP Echo Request (RX) / GTP Echo Reply (TX)\n  Create Session Request (RX) / Create Session Reply (TX)\n  Delete Session Request (RX) / Delete Session Reply (TX)\n  Modify Bearer Request (RX) / Modify Bearer Reply (TX)\n  Create Bearer Request (TX) / Create Bearer Reply (RX)\n  Delete Bearer Request (TX) / Delete Bearer Reply (RX)\n  Bearer Resource Command (RX - on the condition TAD operation type specifies addition or deletion of packet filter)\n```\n\nError handling is not implemented as specified by 3GPP `29.274`, specifically the\nMME will receive no indication of error. Messages indicating error type *may* be\ndisplayed to console output, depending on type of error.\n\nFurthermore, the control plane expects the contents of these messages to contain\ncertain Information Elements (IE). These may differ from all corner cases allowed\nby 3gpp 29.274, which will be ignored, and may drop messages if some IEs are not present.\n\nFor low level details on the Control Plane see [CP_README.MD](docs/CP_README.MD)\n\n## Installation\n\nPlease refer [INSTALL.MD](INSTALL.MD) for instructions to install and run CP and\nDP\n\n## Release Notes\n\nPlease refer [RELEASE_NOTES.MD](RELEASE_NOTES.MD)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomec-project%2Fngic-rtc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomec-project%2Fngic-rtc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomec-project%2Fngic-rtc/lists"}