diff --git a/5g-core/index.md b/5g-core/index.md index 2f64ffb..5608c5a 100644 --- a/5g-core/index.md +++ b/5g-core/index.md @@ -7,7 +7,7 @@ pqc/index hexaebpf/index ebpf/index security/index -standards/index +open-source-comparison/index ``` ```{toctree} @@ -17,5 +17,4 @@ nr-reference-signals nr-frame-structure 5g-upf-architecture 5gc-operator -os-5gc-compare ``` diff --git a/5g-core/open-source-comparison/5g-core-nf-apis-across-releases.md b/5g-core/open-source-comparison/5g-core-nf-apis-across-releases.md new file mode 100644 index 0000000..064fb08 --- /dev/null +++ b/5g-core/open-source-comparison/5g-core-nf-apis-across-releases.md @@ -0,0 +1,91 @@ +# 5G Core NF APIs Across 3GPP Releases 15–18 + +**Author:** [Khushi Chhillar](https://www.linkedin.com/in/kcl17/) + +**Published:** April 8, 2025 + +> **Note:** All service definitions link to [jdegre/5GC_APIs](https://github.com/jdegre/5GC_APIs), a community-maintained mirror of the 3GPP-defined OpenAPI YAML specifications for the 5G Core Service-Based Interfaces (SBIs). + +The tables below track how the Service-Based Interfaces (SBIs) exposed by each 5G Core network function (NF) have grown across 3GPP Releases 15 through 18. Services highlighted in a release column were newly introduced in that release relative to the previous one. Each NF has its own table so the release-over-release additions stay easy to scan. + +> **Note:** These tables are wide. For a better view, zoom out your browser to about 50% (Ctrl + -) before reading them. + +## AMF + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [Communication](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Communication.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_EventExposure.yaml)
• [Location](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Location.yaml)
• [MT](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MT.yaml) | • [Communication](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Communication.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_EventExposure.yaml)
• [Location](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Location.yaml)
• [MT](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MT.yaml) | • [Communication](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Communication.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_EventExposure.yaml)
• [Location](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Location.yaml)
• [MT](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MT.yaml)
[MBS Communication](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MBSCommunication.yaml)
[MBS Broadcast](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MBSBroadcast.yaml) | • [Communication](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Communication.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_EventExposure.yaml)
• [Location](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_Location.yaml)
• [MT](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MT.yaml)
• [MBS Communication](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MBSCommunication.yaml)
• [MBS Broadcast](https://jdegre.github.io/loader.html?yaml=TS29518_Namf_MBSBroadcast.yaml) | +``` + +## SMF + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [PDU Session](https://jdegre.github.io/loader.html?yaml=TS29502_Nsmf_PDUSession.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29508_Nsmf_EventExposure.yaml) | • [PDU Session](https://jdegre.github.io/loader.html?yaml=TS29502_Nsmf_PDUSession.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29508_Nsmf_EventExposure.yaml)
[NIDD (Non-IP Data Delivery)](https://jdegre.github.io/loader.html?yaml=TS29542_Nsmf_NIDD.yaml) | • [PDU Session](https://jdegre.github.io/loader.html?yaml=TS29502_Nsmf_PDUSession.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29508_Nsmf_EventExposure.yaml)
• [NIDD (Non-IP Data Delivery)](https://jdegre.github.io/loader.html?yaml=TS29542_Nsmf_NIDD.yaml) | • [PDU Session](https://jdegre.github.io/loader.html?yaml=TS29502_Nsmf_PDUSession.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29508_Nsmf_EventExposure.yaml)
• [NIDD (Non-IP Data Delivery)](https://jdegre.github.io/loader.html?yaml=TS29542_Nsmf_NIDD.yaml) | +``` + +## PCF + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29514_Npcf_PolicyAuthorization.yaml)
• [Access and Mobility (AM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29507_Npcf_AMPolicyControl.yaml)
• [Session Management (SM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29512_Npcf_SMPolicyControl.yaml)
• [Background Data Transfer (BDT) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29554_Npcf_BDTPolicyControl.yaml)
• [Policy Control Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29523_Npcf_EventExposure.yaml)
• [UE Policy Control](https://jdegre.github.io/loader.html?yaml=TS29525_Npcf_UEPolicyControl.yaml) | • [Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29514_Npcf_PolicyAuthorization.yaml)
• [Access and Mobility (AM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29507_Npcf_AMPolicyControl.yaml)
• [Session Management (SM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29512_Npcf_SMPolicyControl.yaml)
• [Background Data Transfer (BDT) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29554_Npcf_BDTPolicyControl.yaml)
• [Policy Control Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29523_Npcf_EventExposure.yaml)
• [UE Policy Control](https://jdegre.github.io/loader.html?yaml=TS29525_Npcf_UEPolicyControl.yaml) | • [Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29514_Npcf_PolicyAuthorization.yaml)
[Access and Mobility (AM) Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29534_Npcf_AMPolicyAuthorization.yaml)
• [Access and Mobility (AM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29507_Npcf_AMPolicyControl.yaml)
• [Session Management (SM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29512_Npcf_SMPolicyControl.yaml)
• [Background Data Transfer (BDT) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29554_Npcf_BDTPolicyControl.yaml)
• [Policy Control Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29523_Npcf_EventExposure.yaml)
• [UE Policy Control](https://jdegre.github.io/loader.html?yaml=TS29525_Npcf_UEPolicyControl.yaml)
[Multicast/Broadcast Policy Control](https://jdegre.github.io/loader.html?yaml=TS29537_Npcf_MBSPolicyControl.yaml)
[Multicast/Broadcast Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29537_Npcf_MBSPolicyAuthorization.yaml) | • [Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29514_Npcf_PolicyAuthorization.yaml)
• [Access and Mobility (AM) Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29534_Npcf_AMPolicyAuthorization.yaml)
• [Access and Mobility (AM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29507_Npcf_AMPolicyControl.yaml)
• [Session Management (SM) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29512_Npcf_SMPolicyControl.yaml)
• [Background Data Transfer (BDT) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29554_Npcf_BDTPolicyControl.yaml)
• [Policy Control Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29523_Npcf_EventExposure.yaml)
• [UE Policy Control](https://jdegre.github.io/loader.html?yaml=TS29525_Npcf_UEPolicyControl.yaml)
• [Multicast/Broadcast Policy Control](https://jdegre.github.io/loader.html?yaml=TS29537_Npcf_MBSPolicyControl.yaml)
• [Multicast/Broadcast Policy Authorization](https://jdegre.github.io/loader.html?yaml=TS29537_Npcf_MBSPolicyAuthorization.yaml)
[Planned Data Transfer with QoS (PDTQ) Policy Control](https://jdegre.github.io/loader.html?yaml=TS29543_Npcf_PDTQPolicyControl.yaml) | +``` + +## UDM + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [Subscriber Data Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_SDM.yaml)
• [UE Context Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UECM.yaml)
• [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UEAU.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_EE.yaml)
• [Parameter Provisioning](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_PP.yaml) | • [Subscriber Data Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_SDM.yaml)
• [UE Context Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UECM.yaml)
• [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UEAU.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_EE.yaml)
• [Parameter Provisioning](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_PP.yaml)
[NIDD Authorization](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_NIDDAU.yaml)
[MT](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_MT.yaml) | • [Subscriber Data Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_SDM.yaml)
• [UE Context Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UECM.yaml)
• [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UEAU.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_EE.yaml)
• [Parameter Provisioning](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_PP.yaml)
• [NIDD Authorization](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_NIDDAU.yaml)
• [MT](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_MT.yaml)
[Service-Specific Authorization](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_SSAU.yaml)
[RSDS (Report SM Delivery Status)](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_RSDS.yaml)
[UEID (UE Identifier)](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UEID.yaml) | • [Subscriber Data Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_SDM.yaml)
• [UE Context Management](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UECM.yaml)
• [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UEAU.yaml)
• [Event Exposure](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_EE.yaml)
• [Parameter Provisioning](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_PP.yaml)
• [NIDD Authorization](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_NIDDAU.yaml)
• [MT](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_MT.yaml)
• [Service-Specific Authorization](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_SSAU.yaml)
• [RSDS (Report SM Delivery Status)](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_RSDS.yaml)
• [UEID (UE Identifier)](https://jdegre.github.io/loader.html?yaml=TS29503_Nudm_UEID.yaml) | +``` + +## UDR + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [Data Repository](https://jdegre.github.io/loader.html?yaml=TS29504_Nudr_DR.yaml)
• [Subscription Data](https://jdegre.github.io/loader.html?yaml=TS29505_Subscription_Data.yaml)
• [Policy Data](https://jdegre.github.io/loader.html?yaml=TS29519_Policy_Data.yaml)
• [Exposure Data](https://jdegre.github.io/loader.html?yaml=TS29519_Exposure_Data.yaml)
• [Application Data](https://jdegre.github.io/loader.html?yaml=TS29519_Application_Data.yaml) | • [Data Repository](https://jdegre.github.io/loader.html?yaml=TS29504_Nudr_DR.yaml)
• [Subscription Data](https://jdegre.github.io/loader.html?yaml=TS29505_Subscription_Data.yaml)
• [Policy Data](https://jdegre.github.io/loader.html?yaml=TS29519_Policy_Data.yaml)
• [Exposure Data](https://jdegre.github.io/loader.html?yaml=TS29519_Exposure_Data.yaml)
• [Application Data](https://jdegre.github.io/loader.html?yaml=TS29519_Application_Data.yaml)
[Group ID Map](https://jdegre.github.io/loader.html?yaml=TS29504_Nudr_GroupIDmap.yaml) | • [Data Repository](https://jdegre.github.io/loader.html?yaml=TS29504_Nudr_DR.yaml)
• [Subscription Data](https://jdegre.github.io/loader.html?yaml=TS29505_Subscription_Data.yaml)
• [Policy Data](https://jdegre.github.io/loader.html?yaml=TS29519_Policy_Data.yaml)
• [Exposure Data](https://jdegre.github.io/loader.html?yaml=TS29519_Exposure_Data.yaml)
• [Application Data](https://jdegre.github.io/loader.html?yaml=TS29519_Application_Data.yaml)
• [Group ID Map](https://jdegre.github.io/loader.html?yaml=TS29504_Nudr_GroupIDmap.yaml) | • [Data Repository](https://jdegre.github.io/loader.html?yaml=TS29504_Nudr_DR.yaml)
• [Subscription Data](https://jdegre.github.io/loader.html?yaml=TS29505_Subscription_Data.yaml)
• [Policy Data](https://jdegre.github.io/loader.html?yaml=TS29519_Policy_Data.yaml)
• [Exposure Data](https://jdegre.github.io/loader.html?yaml=TS29519_Exposure_Data.yaml)
• [Application Data](https://jdegre.github.io/loader.html?yaml=TS29519_Application_Data.yaml)
• [Group ID Map](https://jdegre.github.io/loader.html?yaml=TS29504_Nudr_GroupIDmap.yaml) | +``` + +## AUSF + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UEAuthentication.yaml)
• [SoR (Steering of Roaming) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_SoRProtection.yaml)
• [UPU (UE Parameter Update) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UPUProtection.yaml) | • [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UEAuthentication.yaml)
• [SoR (Steering of Roaming) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_SoRProtection.yaml)
• [UPU (UE Parameter Update) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UPUProtection.yaml) | • [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UEAuthentication.yaml)
• [SoR (Steering of Roaming) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_SoRProtection.yaml)
• [UPU (UE Parameter Update) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UPUProtection.yaml) | • [UE Authentication](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UEAuthentication.yaml)
• [SoR (Steering of Roaming) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_SoRProtection.yaml)
• [UPU (UE Parameter Update) Protection](https://jdegre.github.io/loader.html?yaml=TS29509_Nausf_UPUProtection.yaml) | +``` + +## NSSF + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [NSSAI Availability](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSAIAvailability.yaml)
• [NS Selection](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSelection.yaml) | • [NSSAI Availability](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSAIAvailability.yaml)
• [NS Selection](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSelection.yaml) | • [NSSAI Availability](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSAIAvailability.yaml)
• [NS Selection](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSelection.yaml) | • [NSSAI Availability](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSAIAvailability.yaml)
• [NS Selection](https://jdegre.github.io/loader.html?yaml=TS29531_Nnssf_NSSelection.yaml) | +``` + +## NRF + +```{table} +:class: dec-font-size + +| REL 15 | REL 16 | REL 17 | REL 18 | +| --- | --- | --- | --- | +| • [NF Management](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFManagement.yaml)
• [NF Discovery](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFDiscovery.yaml)
• [Access Token (OAuth2)](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_AccessToken.yaml) | • [NF Management](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFManagement.yaml)
• [NF Discovery](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFDiscovery.yaml)
• [Access Token (OAuth2)](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_AccessToken.yaml)
[Bootstrapping](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_Bootstrapping.yaml) | • [NF Management](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFManagement.yaml)
• [NF Discovery](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFDiscovery.yaml)
• [Access Token (OAuth2)](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_AccessToken.yaml)
• [Bootstrapping](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_Bootstrapping.yaml) | • [NF Management](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFManagement.yaml)
• [NF Discovery](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_NFDiscovery.yaml)
• [Access Token (OAuth2)](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_AccessToken.yaml)
• [Bootstrapping](https://jdegre.github.io/loader.html?yaml=TS29510_Nnrf_Bootstrapping.yaml) | +``` diff --git a/5g-core/standards/index.md b/5g-core/open-source-comparison/index.md similarity index 65% rename from 5g-core/standards/index.md rename to 5g-core/open-source-comparison/index.md index a28d0d6..0a13e6f 100644 --- a/5g-core/standards/index.md +++ b/5g-core/open-source-comparison/index.md @@ -1,4 +1,4 @@ -# Standards +# Open Source Comparison ```{toctree} :maxdepth: 1 @@ -6,4 +6,7 @@ oai-free5gc-open5gs-magma-5g-core-standards-for-amf oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf oai-free5gc-open-5gs-5g-core-standards-for-upf +os-5gc-compare +5g-core-nf-apis-across-releases +ngap-procedures-comparison ``` diff --git a/5g-core/open-source-comparison/ngap-procedures-comparison.md b/5g-core/open-source-comparison/ngap-procedures-comparison.md new file mode 100644 index 0000000..9977ea2 --- /dev/null +++ b/5g-core/open-source-comparison/ngap-procedures-comparison.md @@ -0,0 +1,282 @@ +# NGAP Procedures Comparison (Class 1 EPs) + +**Author:** +**Published:** + +> **Note:** This comparison reflects the projects as of April 17, 2025. New features or procedures may not be included. + +## Introduction + +The NG Application Protocol (NGAP) defines the signaling procedures exchanged over the N2 interface between the gNB (RAN) and the AMF in a 5G Standalone (SA) network. NGAP procedures are grouped into **Class 1** (request/response, with an explicit success or failure outcome) and **Class 2** (no response expected) Elementary Procedures (EPs). + +This document tracks which **Class 1 NGAP procedures** are implemented across four widely used open-source 5G Core / RAN-facing projects: + +- **Free5GC/SDCore** +- **OAI** (OpenAirInterface) +- **Open5GS** +- **Magma** + +The comparison is based on the presence of each NGAP message (request, response/acknowledge, and failure variants) in the respective codebases. A `—` indicates the message was not evaluated / no data is available for that project. + +## 1. Summary + +| Platform | Class 1 Messages Implemented (of 82 tracked) | +| --- | :---: | +| Free5GC/SDCore | 44 | +| OAI | 20 | +| Open5GS | 32 | +| Magma | 16 | + +Free5GC/SDCore has the broadest Class 1 NGAP coverage among the four projects, including full support for AMF/RAN configuration update, handover, and PWS-related procedures. OAI and Open5GS focus primarily on core mobility procedures (handover, initial context setup, PDU session management), while Magma implements only the baseline procedures required for NG setup, initial context setup, and PDU session resource management — it does not implement handover, configuration update, or broadcast/multicast (MBS) related procedures. + +None of the four projects currently implement the newer Release 17/18 procedures: UE Context Suspend/Resume, UE Radio Capability ID Mapping, Broadcast/Distribution Session Setup/Modification/Release, Multicast Session Activation/Deactivation/Update, Timing Synchronisation Status, MT Communication Handling, or Broadcast Session Transport. + +## 2. Procedure-by-Procedure Comparison + +### AMF Configuration Update + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| AMF CONFIGURATION UPDATE | YES | NO | — | NO | +| AMF CONFIGURATION UPDATE ACKNOWLEDGE | YES | NO | — | NO | +| AMF CONFIGURATION UPDATE FAILURE | YES | NO | — | NO | + +### RAN Configuration Update + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| RAN CONFIGURATION UPDATE | YES | NO | YES | NO | +| RAN CONFIGURATION UPDATE ACKNOWLEDGE | YES | NO | YES | NO | +| RAN CONFIGURATION UPDATE FAILURE | YES | NO | YES | NO | + +### Handover Cancellation + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| HANDOVER CANCEL | YES | NO | YES | NO | +| HANDOVER CANCEL ACKNOWLEDGE | YES | NO | YES | NO | + +### Handover Preparation + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| HANDOVER REQUIRED | YES | YES | YES | NO | +| HANDOVER COMMAND | YES | YES | YES | NO | +| HANDOVER PREPARATION FAILURE | YES | YES | YES | NO | + +### Handover Resource Allocation + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| HANDOVER REQUEST | YES | YES | YES | NO | +| HANDOVER REQUEST ACKNOWLEDGE | YES | YES | YES | NO | +| HANDOVER FAILURE | YES | NO | YES | NO | + +### Initial Context Setup + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| INITIAL CONTEXT SETUP REQUEST | YES | YES | YES | YES | +| INITIAL CONTEXT SETUP RESPONSE | YES | YES | YES | YES | +| INITIAL CONTEXT SETUP FAILURE | YES | NO | YES | YES | + +### NG Reset + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| NG RESET | YES | YES | YES | YES | +| NG RESET ACKNOWLEDGE | YES | YES | YES | YES | + +### NG Setup + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| NG SETUP REQUEST | YES | YES | YES | YES | +| NG SETUP RESPONSE | YES | YES | YES | YES | +| NG SETUP FAILURE | YES | YES | YES | YES | + +### Path Switch Request + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| PATH SWITCH REQUEST | YES | NO | YES | NO | +| PATH SWITCH REQUEST ACKNOWLEDGE | YES | NO | YES | NO | +| PATH SWITCH REQUEST FAILURE | YES | NO | — | NO | + +### PDU Session Resource Modify + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| PDU SESSION RESOURCE MODIFY REQUEST | YES | YES | YES | YES | +| PDU SESSION RESOURCE MODIFY RESPONSE | YES | YES | YES | YES | + +### PDU Session Resource Modify Indication + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| PDU SESSION RESOURCE MODIFY INDICATION | YES | NO | — | NO | +| PDU SESSION RESOURCE MODIFY CONFIRM | YES | NO | — | NO | + +### PDU Session Resource Release + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| PDU SESSION RESOURCE RELEASE COMMAND | YES | YES | YES | YES | +| PDU SESSION RESOURCE RELEASE RESPONSE | YES | YES | YES | YES | + +### PDU Session Resource Setup + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| PDU SESSION RESOURCE SETUP REQUEST | YES | YES | YES | YES | +| PDU SESSION RESOURCE SETUP RESPONSE | YES | YES | YES | YES | + +### UE Context Modification + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| UE CONTEXT MODIFICATION REQUEST | YES | NO | YES | NO | +| UE CONTEXT MODIFICATION RESPONSE | YES | NO | YES | NO | +| UE CONTEXT MODIFICATION FAILURE | YES | NO | YES | NO | + +### UE Context Release + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| UE CONTEXT RELEASE COMMAND | YES | YES | YES | YES | +| UE CONTEXT RELEASE COMPLETE | YES | YES | YES | YES | + +### Write-Replace Warning + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| WRITE-REPLACE WARNING REQUEST | YES | NO | — | NO | +| WRITE-REPLACE WARNING RESPONSE | YES | NO | — | NO | + +### PWS Cancel + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| PWS CANCEL REQUEST | YES | NO | — | NO | +| PWS CANCEL RESPONSE | YES | NO | — | NO | + +### UE Radio Capability Check + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| UE RADIO CAPABILITY CHECK REQUEST | YES | NO | — | NO | +| UE RADIO CAPABILITY CHECK RESPONSE | YES | NO | — | NO | + +### UE Context Suspend + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| UE CONTEXT SUSPEND REQUEST | NO | — | — | NO | +| UE CONTEXT SUSPEND RESPONSE | NO | — | — | NO | +| UE CONTEXT SUSPEND FAILURE | NO | — | — | NO | + +### UE Context Resume + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| UE CONTEXT RESUME REQUEST | NO | — | — | NO | +| UE CONTEXT RESUME RESPONSE | NO | — | — | NO | +| UE CONTEXT RESUME FAILURE | NO | — | — | NO | + +### UE Radio Capability ID Mapping + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| UE RADIO CAPABILITY ID MAPPING REQUEST | NO | — | — | NO | +| UE RADIO CAPABILITY ID MAPPING RESPONSE | NO | — | — | NO | + +### Broadcast Session Setup + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| BROADCAST SESSION SETUP REQUEST | NO | — | — | NO | +| BROADCAST SESSION SETUP RESPONSE | NO | — | — | NO | +| BROADCAST SESSION SETUP FAILURE | NO | — | — | NO | + +### Broadcast Session Modification + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| BROADCAST SESSION MODIFICATION REQUEST | NO | — | — | NO | +| BROADCAST SESSION MODIFICATION RESPONSE | NO | — | — | NO | +| BROADCAST SESSION MODIFICATION FAILURE | NO | — | — | NO | + +### Broadcast Session Release + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| BROADCAST SESSION RELEASE REQUEST | NO | — | — | NO | +| BROADCAST SESSION RELEASE RESPONSE | NO | — | — | NO | + +### Distribution Setup + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| DISTRIBUTION SETUP REQUEST | NO | — | — | NO | +| DISTRIBUTION SETUP RESPONSE | NO | — | — | NO | +| DISTRIBUTION SETUP FAILURE | NO | — | — | NO | + +### Distribution Release + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| DISTRIBUTION RELEASE REQUEST | NO | — | — | NO | +| DISTRIBUTION RELEASE RESPONSE | NO | — | — | NO | + +### Multicast Session Activation + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| MULTICAST SESSION ACTIVATION REQUEST | NO | — | — | NO | +| MULTICAST SESSION ACTIVATION RESPONSE | NO | — | — | NO | +| MULTICAST SESSION ACTIVATION FAILURE | NO | — | — | NO | + +### Multicast Session Deactivation + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| MULTICAST SESSION DEACTIVATION REQUEST | NO | — | — | NO | +| MULTICAST SESSION DEACTIVATION RESPONSE | NO | — | — | NO | + +### Multicast Session Update + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| MULTICAST SESSION UPDATE REQUEST | NO | — | — | NO | +| MULTICAST SESSION UPDATE RESPONSE | NO | — | — | NO | +| MULTICAST SESSION UPDATE FAILURE | NO | — | — | NO | + +### Timing Synchronisation Status + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| TIMING SYNCHRONISATION STATUS REQUEST | NO | — | — | NO | +| TIMING SYNCHRONISATION STATUS RESPONSE | NO | — | — | NO | +| TIMING SYNCHRONISATION STATUS FAILURE | NO | — | — | NO | + +### MT Communication Handling + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| MT COMMUNICATION HANDLING REQUEST | NO | — | — | NO | +| MT COMMUNICATION HANDLING RESPONSE | NO | — | — | NO | +| MT COMMUNICATION HANDLING FAILURE | NO | — | — | NO | + +### Broadcast Session Transport + +| Procedure (NGAP Message) | Free5GC/SDCore | OAI | Open5GS | Magma | +|---|:---:|:---:|:---:|:---:| +| BROADCAST SESSION TRANSPORT REQUEST | NO | — | — | NO | +| BROADCAST SESSION TRANSPORT RESPONSE | NO | — | — | NO | +| BROADCAST SESSION TRANSPORT FAILURE | NO | — | — | NO | + +## 3. Legend + +- **YES** — the procedure is implemented in the project's codebase. +- **NO** — the procedure is not implemented. +- **—** — not evaluated / no data available for that project and procedure. diff --git a/5g-core/standards/oai-free5gc-open-5gs-5g-core-standards-for-upf.md b/5g-core/open-source-comparison/oai-free5gc-open-5gs-5g-core-standards-for-upf.md similarity index 99% rename from 5g-core/standards/oai-free5gc-open-5gs-5g-core-standards-for-upf.md rename to 5g-core/open-source-comparison/oai-free5gc-open-5gs-5g-core-standards-for-upf.md index 7c52c1b..753190d 100644 --- a/5g-core/standards/oai-free5gc-open-5gs-5g-core-standards-for-upf.md +++ b/5g-core/open-source-comparison/oai-free5gc-open-5gs-5g-core-standards-for-upf.md @@ -8,7 +8,7 @@ The table shows different Technical Specifications used in OAI, OPEN5GS, and FRE | | | | | | --- | --- | --- | --- | -| **Basis** | **OAI** | **FREE5GC** | **OPEN5GS** | +| **Basis** | **OAI** | **free5GC** | **Open5GS** | | **PFCP Node Management** | [ETSI TS 129 244 – V16.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/16.05.00_60/ts_129244v160500p.pdf) – 7.4 [ETSI TS 129 244 – V15.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 6.2 | [ETSI TS 129 244 – V15.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 6.2 [ETSI TS 123 502 – V15.2.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123502/15.02.00_60/ts_123502v150200p.pdf) – 4.4.3 [3GPP TS 23.502 4.4.3](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-502_t.html#e-4-4-3) | [ETSI TS 129 244 – V16.4.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 6.2 – 7.4 [3GPP TS 29.244 6.2](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_d.html#e-6-2) | | **PFCP Session Management** | [ETSI TS 129 244 – V15.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 6.3 [3GPP TS 29.244 6.3](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_d.html#e-6-3) [ETSI TS 129 244 – V16.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/16.05.00_60/ts_129244v160500p.pdf) – 7.5 [3GPP TS 29.244 7.5](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_e.html#e-7-5) | [ETSI TS 129 244 – V15.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 6.3 [3GPP TS 29.244 6.3](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_d.html#e-6-3) [ETSI TS 129 244 V15.8.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.08.00_60/ts_129244v150800p.pdf) – 5.6 [3GPP TS 29.244 5.6](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_c.html#e-5-6) [ETSI TS 123 502 – V15.2.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123502/15.02.00_60/ts_123502v150200p.pdf) – 4.4.1 – 4.4.2 [3GPP TS 23.502 4.4.1](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-502_t.html#e-4-4-1) | [ETSI TS 129 244 V16.4.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/16.04.00_60/ts_129244v160400p.pdf) – 5.6 – 6.2.6 – 6.3 – 8.2.41 [3GPP TS 29.244 5.6](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_c.html#e-5-6) [ETSI TS 123 501 V16.6.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/16.06.00_60/ts_123501v160600p.pdf) – 5.8.2.11 – 5.8.2.11.3 – 8.2.3.2 [3GPP TS 23.501 5.8.2.11](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_ze.html#e-5-8-2-11) | | **TFT/SDF** | [ETSI TS 123 060 – V10.3.0](https://www.etsi.org/deliver/etsi_ts/123000_123099/123060/10.03.00_60/ts_123060v100300p.pdf) – 14.6 – 15.3 [3GPP TS 23.060 14.6](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-060_zx.html#e-14-6) [3GPP TS 23.060 15.3](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-060_zz.html#e-15-3) [ETSI TS 124 008 – V13.7.0](https://www.etsi.org/deliver/etsi_ts/124000_124099/124008/13.07.00_60/ts_124008v130700p.pdf) – 9.5.4.1 | [ETSI TS 129 244 – V15.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 5.2 – 8.2.5 | [ETSI TS 129 244 – V16.4.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 5.2 – 8.2.5 [3GPP TS 29.244 5.2](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_c.html#e-5-2-1) [ETSI TS 123 501 V16.6.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/16.06.00_60/ts_123501v160600p.pdf) – 5.8.2.11 [3GPP TS 23.501 5.8.2.11](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_ze.html#e-5-8-2-11) | diff --git a/5g-core/standards/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf.md b/5g-core/open-source-comparison/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf.md similarity index 99% rename from 5g-core/standards/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf.md rename to 5g-core/open-source-comparison/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf.md index 43b431f..9da8348 100644 --- a/5g-core/standards/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf.md +++ b/5g-core/open-source-comparison/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf.md @@ -8,7 +8,7 @@ The table shows different Technical Specifications used in OAI, OPEN5GS, FREE5GC | | | | | | | --- | --- | --- | --- | --- | -| **Basis** | **OAI 5G Core** | **FREE5GC 5G Core** | **OPEN5GS 5G Core** | **MAGMA 5G CORE** | +| **Basis** | **OAI** | **free5GC** | **Open5GS** | **Magma (sessiond)** | | **Language** | **C++** | **Golang** | **C** | **C++** | | **SM Context Management** | [ETSI TS 123 502 V16.7.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123502/16.07.00_60/ts_123502v160700p.pdf) – 5.2.8.2 [3GPP TS 23.502 5.2.8.2](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-502_zzm.html#e-5-2-8-2) | [ETSI TS 123 502 V15.2.0](http://etsi.org/deliver/etsi_ts/123500_123599/123502/15.02.00_60/ts_123502v150200p.pdf) – 5.2.8.2 [3GPP TS 23.502 5.2.8.2](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-502_zzm.html#e-5-2-8-2) [ETSI TS 129 502 V15.6.0](https://www.etsi.org/deliver/etsi_ts/129500_129599/129502/15.06.00_60/ts_129502v150600p.pdf) – 5.2.2.2 – 5.2.2.3 – 5.2.2.4 [3GPP TS 29.502 5.2.2.2](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-502_b.html#e-5-2-2-2) | [ETSI TS 129 502 V16.8.0](https://www.etsi.org/deliver/etsi_ts/129500_129599/129502/16.08.00_60/ts_129502v160800p.pdf) – 5.2.2.2 – 5.2.2.4 – 5.2.2.6 – 6.1.3.2 – 6.1.6.2.2 [3GPP TS 29.502 5.2.2.2](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-502_b.html#e-5-2-2-2) [ETSI TS 123 502 V16.7.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123502/16.07.00_60/ts_123502v160700p.pdf) – 5.2.8.2.1 | [ETSI TS 129 502 V15.8.0](https://www.etsi.org/deliver/etsi_ts/129500_129599/129502/15.08.00_60/ts_129502v150800p.pdf) – 5.2.2.2 – 5.2.2.3 – 5.2.2.4 [3GPP TS 29.502 5.2.2.2](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-502_b.html#e-5-2-2-2) | | **N4 Session Management** | [ETSI TS 123 501 V16.6.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/16.06.00_60/ts_123501v160600p.pdf) – 5.8.2.11 [3GPP TS 23.501 5.8.2.11](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_ze.html#e-5-8-2-11) [ETSI TS 129 244 – V15.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 6.2.6 – 6.2.7 – 6.2.8 – 6.2.9 – 6.3 [3GPP TS 29.244 6.3](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_d.html#e-6-3) | [ETSI TS 129 244 V15.8.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.08.00_60/ts_129244v150800p.pdf) – 5.6 – 5.8 [3GPP TS 29.244 5.6](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_c.html#e-5-6) [ETSI TS 129 244 – V15.5.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/15.05.00_60/ts_129244v150500p.pdf) – 6.2.6 – 6.2.7 – 6.2.8 – 6.2.9 – 6.3 [3GPP TS 29.244 6.2.6](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_d.html#e-6-2-6) [3GPP TS 29.244 6.2.8](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_d.html#e-6-2-8) [3GPP TS 29.244 6.3](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_d.html#e-6-3) | [ETSI TS 129 244 V16.4.0](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/16.04.00_60/ts_129244v160400p.pdf) – 5.6 – 6.2.6 – 6.3 – 8.2.41 [3GPP TS 29.244 5.6](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_c.html#e-5-6) [3GPP TS 29.244 8.2.41](https://www.tech-invite.com/3m29/toc/tinv-3gpp-29-244_f.html#e-8-2-41) [ETSI TS 123 501 V16.6.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/16.06.00_60/ts_123501v160600p.pdf) – 5.8.2.11 – 5.8.2.11.3 – 8.2.3.2 [3GPP TS 23.501 5.8.2.11](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_ze.html#e-5-8-2-11) | [ETSI TS 123 501 V15.8.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/15.08.00_60/ts_123501v150800p.pdf) – 5.8.2.11 – 5.8.2.11.3 [3GPP TS 23.501 5.8.2.11](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_ze.html#e-5-8-2-11) | diff --git a/5g-core/standards/oai-free5gc-open5gs-magma-5g-core-standards-for-amf.md b/5g-core/open-source-comparison/oai-free5gc-open5gs-magma-5g-core-standards-for-amf.md similarity index 99% rename from 5g-core/standards/oai-free5gc-open5gs-magma-5g-core-standards-for-amf.md rename to 5g-core/open-source-comparison/oai-free5gc-open5gs-magma-5g-core-standards-for-amf.md index 0572128..a1039c3 100644 --- a/5g-core/standards/oai-free5gc-open5gs-magma-5g-core-standards-for-amf.md +++ b/5g-core/open-source-comparison/oai-free5gc-open5gs-magma-5g-core-standards-for-amf.md @@ -8,7 +8,7 @@ The table shows different 3GPP Technical Specifications used in OAI, OPEN5GS, FR | | | | | | | --- | --- | --- | --- | --- | -| **Basis** | **OAI 5G Core** **AMF** | **FREE5GC 5G Core** **AMF** | **OPEN5GS 5G Core** **AMF** | **Magma 5G Core** **Accessd** | +| **Basis** | **OAI** | **free5GC** | **Open5GS** | **Magma (accessd)** | | **Language** | C++ | Golang | C | C++ | | **Registration Management** | [ETSI TS 123 501 V16.6.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/16.06.00_60/ts_123501v160600p.pdf) – 5.3.2 [3GPP TS 23.501 5.3.2](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_s.html#e-5-3-2) [3GPP TS 23.501 V15.5.0](https://www.ramonmillan.com/documentos/bibliografia/3GPPTS23.5015GSystemArchitectureR15.5.pdf) – 5.5.1 [3GPP TS 23.501 5.5.1](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_v.html#e-5-5-1) | [ETSI TS 124 501 V15.6.0](https://www.etsi.org/deliver/etsi_ts/124500_124599/124501/15.06.00_60/ts_124501v150600p.pdf) – 5.5.1 [3GPP TS 24.501 5.5.1](https://www.tech-invite.com/3m24/toc/tinv-3gpp-24-501_x.html#e-5-5-1) [ETSI TS 123 502 V15.2.0](http://etsi.org/deliver/etsi_ts/123500_123599/123502/15.02.00_60/ts_123502v150200p.pdf) – 4.2.2.2 [3GPP TS 23.502 4.2.2.2](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-502_a.html#e-4-2-2-2) | [ETSI TS 123 501](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/16.06.00_60/ts_123501v160600p.pdf) – 5.3 [3GPP TS 23.501](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_s.html#e-5-3) | [ETSI TS 124 501 – V16.5.1](https://www.etsi.org/deliver/etsi_ts/124500_124599/124501/16.05.01_60/ts_124501v160501p.pdf) – 5.5.1.2 – 8.2.6 – 8.2.7 – 8.2.8 – 8.2.9 [3GPP TS 24.501](https://www.3gpp.org/ftp/Specs/archive/24_series/24.501/) | | **Mobility Management** | [ETSI TS 123 501 – V16.6.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123501/16.06.00_60/ts_123501v160600p.pdf) – 5.3.4 [3GPP TS 23.501 5.3.4](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-501_t.html#e-5-3-4) [ETSI TS 124 501 V16.9.0](https://www.etsi.org/deliver/etsi_ts/124500_124599/124501/16.09.00_60/ts_124501v160900p.pdf) – 7.5.2 [3GPP TS 24.501 7.5.2](https://www.tech-invite.com/3m24/toc/tinv-3gpp-24-501_zq.html#e-7-5-2) | [ETSI TS 124 501 V15.6.0](https://www.etsi.org/deliver/etsi_ts/124500_124599/124501/15.06.00_60/ts_124501v150600p.pdf) – 7.5.2 [3GPP TS 24.501 7.5.2](https://www.tech-invite.com/3m24/toc/tinv-3gpp-24-501_zq.html#e-7-5-2) [ETSI TS 123 502 – V15.2.0](https://www.etsi.org/deliver/etsi_ts/123500_123599/123502/15.02.00_60/ts_123502v150200p.pdf) –4..2 -4.11.1.2.3 – 4.11.2.2 – 4.11.2.3 – 4.14.1 [3GPP TS 23.502 4.2](https://www.tech-invite.com/3m23/toc/tinv-3gpp-23-502_a.html#e-4-2) [ETSI TS 138 413 – V15.0.0](https://www.etsi.org/deliver/etsi_ts/138400_138499/138413/15.00.00_60/ts_138413v150000p.pdf) – 8.4 | [ETSI TS 124 501 V16.6.0](https://www.etsi.org/deliver/etsi_ts/124500_124599/124501/16.06.00_60/ts_124501v160600p.pdf) [3GPP TS 24.501](https://www.tech-invite.com/3m24/tinv-3gpp-24-501.html) [3GPP TS 24.501 4.6.2](https://www.tech-invite.com/3m24/toc/tinv-3gpp-24-501_h.html#e-4-6-2) [ETSI TS 138 413](https://www.etsi.org/deliver/etsi_ts/138400_138499/138413/16.02.00_60/ts_138413v160200p.pdf) – 8.4 [3GPP TS 38.413 8.4](https://www.tech-invite.com/3m38/toc/tinv-3gpp-38-413_h.html#e-8-4) | [ETSI TS 124 501 V15.6.0](https://www.etsi.org/deliver/etsi_ts/124500_124599/124501/15.06.00_60/ts_124501v150600p.pdf) – 8.2 – 10.2 [3GPP TS 24.501 8.2](https://www.tech-invite.com/3m24/toc/tinv-3gpp-24-501_zr.html#e-8-2) | diff --git a/5g-core/os-5gc-compare.md b/5g-core/open-source-comparison/os-5gc-compare.md similarity index 100% rename from 5g-core/os-5gc-compare.md rename to 5g-core/open-source-comparison/os-5gc-compare.md diff --git a/5g-core/security/5g-core-vulnerabilities.md b/5g-core/security/5g-core-vulnerabilities.md new file mode 100644 index 0000000..5ceca43 --- /dev/null +++ b/5g-core/security/5g-core-vulnerabilities.md @@ -0,0 +1,100 @@ +# 5G Core Vulnerabilities + +**Author:** [Shankar Malik](https://www.linkedin.com/in/evershalik/) + +**Published:** March 18, 2025 + +> **Note:** This is a curated catalog of publicly disclosed 5G Core vulnerabilities and related security research. Referenced repositories include [Open5GS](https://github.com/open5gs/open5gs), [5GBaseChecker](https://github.com/SyNSec-den/5GBaseChecker), [5Ghoul](https://github.com/asset-group/5ghoul-5g-nr-attacks), and [free5GC](https://github.com/free5gc/free5gc). + +A running list of known CVEs, disclosed bugs, and academic research covering vulnerabilities across open-source and standardized 5G Core network functions (AMF, UPF, UDM, SMF, SEPP) and RAN-core interfaces. + +## 1. Open5GS Stack Buffer Overflow During PFCP Session Establishment on UPF (CVE-2021-41794) + +Reference: [NCC Group Technical Advisory](https://www.nccgroup.com/us/research-blog/technical-advisory-open5gs-stack-buffer-overflow-during-pfcp-session-establishment-on-upf-cve-2021-41794/) + +- **Vendor:** [Open5GS](https://github.com/open5gs/open5gs) +- **Versions affected:** 1.0.0 to 2.3.3 +- **Systems affected:** Linux +- **Advisory / CVE identifier:** CVE-2021-41794 +- **Risk:** CVSSv3.1 8.2 (`AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H`) + +## 2. 5GBaseChecker + +Reference: [5GBaseChecker](https://github.com/SyNSec-den/5GBaseChecker) + +## 3. ORANalyst: Systematic Testing Framework for Open RAN Implementations + +Reference: [USENIX Security '24 presentation](https://www.usenix.org/conference/usenixsecurity24/presentation/yang-tianchang) — [paper (PDF)](https://www.usenix.org/system/files/usenixsecurity24-yang-tianchang.pdf) + +## 4. 5Ghoul — 5G NR Attacks & 5G OTA Fuzzing + +Reference: [5ghoul-5g-nr-attacks](https://github.com/asset-group/5ghoul-5g-nr-attacks) + +## 5. Open5GS Incorrect Error Handling in the GMM State Exception (CVE-2024-56921) + +Reference: + +- [Issue #3608 — InitialUEMessage/Registration request can crash AMF due to incorrect error handling in the gmm state exception](https://github.com/open5gs/open5gs/issues/3608) +- [Fix commit](https://github.com/open5gs/open5gs/commit/f780f9af45c27b6f49987d96ba71dedb3dd85840) +- [Strengthening Open Source 5G Security — CVE-2024-56921](https://www.vaanmegam.net/Strengthening-Open-Source-5G-Security-CVE-2024-56921.html) + +```text +[AMF] Fix crash due to incorrect handling of UE registration requests (#3608) + +This commit addresses an issue in the AMF where it crashes upon +receiving the Nausf_UEAuthentication_Authenticate response in the +gmm_state_exception function. + +The crash occurs when the same UE continuously sends registration +requests while the previous UE context is released before the AUSF +response is received, leading to incorrect states in the gmm state +machine. + +The root cause was a lack of proper handling in the gmm_state_exception +function for the scenario where multiple registration requests from +the same UE cause the AMF to process outdated authentication vectors. + +This update introduces a fix to handle this edge case and prevent the +AMF from crashing. +``` + +## 6. Exploit the Fuzz — Exploiting Vulnerabilities in 5G Core Networks + +Reference: + +- [Exploit the Fuzz – Exploiting Vulnerabilities in 5G Core Networks](https://www.nccgroup.com/us/research-blog/exploit-the-fuzz-exploiting-vulnerabilities-in-5g-core-networks/) +- [The Challenges of Fuzzing 5G Protocols](https://www.nccgroup.com/us/research-blog/the-challenges-of-fuzzing-5g-protocols/) + +## 7. SCTP Insertion Attacks in 4G & 5G Networks + +Reference: [Quantum of Malice — Enea](https://www.enea.com/insights/quantum-of-malice/) + +TLS runs on top of TCP, and TCP sits on top of the IP protocol, which usually sits on top of Ethernet or a tunnelling protocol. In telecommunications specifically, a non-TCP protocol called SCTP (Stream Control Transmission Protocol) was selected to carry telecom protocol payloads. + +This decision, made long ago, sets telecom networks apart from web communication. SCTP has a few features that make it different from the more popular TCP protocol, but in many ways they are also similar: both track communications using sequence numbers where each transaction is acknowledged by the recipient, both are cleartext protocols, and both use a handshake to initiate the connection. + +PFCP operates at the **application layer**, unlike SCTP, UDP, or TCP, which operate at the **transport layer**. + +## 8. 5GReasoner: A Property-Directed Security and Privacy Analysis Framework for 5G Cellular Network Protocols + +Reference: [5GReasoner paper (PDF)](https://syed-rafiul-hussain.github.io/wp-content/uploads/2019/10/5GReasoner.pdf) + +![Network function vulnerability categories and relevant threat mappings](images/5g-core-vulnerabilities/image-1.jpg) + +![5GReasoner architecture](images/5g-core-vulnerabilities/image-2.jpg) + +## 9. free5GC UDM Vulnerable to Invalid Curve Attack + +Reference: [GHSA-cqvv-r3g3-26rf](https://github.com/advisories/GHSA-cqvv-r3g3-26rf) + +![Network function vulnerability categories, continued (SMF, SEPP)](images/5g-core-vulnerabilities/image-3.jpg) + +![5G interworking and roaming security controls (5GSC-4)](images/5g-core-vulnerabilities/image-4.jpg) + +![SYN flood and buffer overflow protection controls](images/5g-core-vulnerabilities/image-5.jpg) + +![Summary of 5GReasoner's findings](images/5g-core-vulnerabilities/image-6.jpg) + +## 10. RANsacked: A Domain-Informed Approach for Fuzzing LTE and 5G RAN-Core Interfaces + +Reference: [RANsacked paper (PDF)](https://nathanielbennett.com/publications/ransacked.pdf) diff --git a/5g-core/security/5g-protocol-fuzzing.md b/5g-core/security/5g-protocol-fuzzing.md new file mode 100644 index 0000000..0277a23 --- /dev/null +++ b/5g-core/security/5g-protocol-fuzzing.md @@ -0,0 +1,96 @@ +# 5G Protocol Fuzzing + +**Author:** [Shankar Malik](https://www.linkedin.com/in/evershalik/) + +**Published:** March 18, 2025 + +> **Note:** This document references the following fuzzing tools: [Fuzzowski](https://github.com/nccgroup/fuzzowski), [Frizzer2](https://github.com/demantz/frizzer), and [AFLNet3](https://github.com/aflnet/aflnet). The 5GC-specific fork of Fuzzowski used for the results discussed here is not currently an open-source project. + +## Introduction + +Fuzzing is an automated process of sending invalid or random inputs to a program or system under test in an attempt to cause a crash or malfunction. It is often used to find vulnerabilities in software that might otherwise be missed by normal unit or system tests. Some popular continuous integration frameworks, such as GitLab, are now starting to include fuzzing as part of the CI build pipeline. + +Fuzzing network protocols is a little different, however, and requires sending input via network ports rather than files or command-line arguments. + +**Fuzzers** commonly used for 5G protocol testing include Fuzzowski 5GC, Frizzer2, and AFLNet3. All three take completely different approaches to fuzzing, from how test cases are generated to how feedback on progress is reported. + +These fuzzers rely on **mutation** — making small changes to existing valid inputs to create new test cases. These changes can include flipping bits, swapping characters, truncating data, or introducing unexpected values while maintaining the input's overall structure. This method is used to identify vulnerabilities by seeing how the system responds to slightly altered, yet still mostly valid, inputs. + +## Types of Fuzzing + +### Mutation-Based Fuzzing + +Mutation-based fuzzing takes well-formed inputs and introduces small changes without needing an understanding of the data structure. These changes are typically done blindly, which is why mutation fuzzers are sometimes called "dumb" fuzzers — they don't require or use knowledge of the protocol or file format. + +### Generation-Based Fuzzing + +Generation-based fuzzing differs from mutational fuzzing in that it generates inputs from scratch based on a model or specification of the protocol or file format, rather than modifying existing inputs. + +In summary, **mutational fuzzing** is quick to start and can be very effective with minimal setup, but it may struggle with complex structured inputs and can generate many invalid cases. **Generational fuzzing** requires more knowledge and preparation, but tends to produce higher-quality test cases that penetrate deeper into the target code. For 5G protocol testing, mutational fuzzing is a powerful tool to rapidly test implementations with real-world-like corrupted messages, while generational fuzzing (or hybrid methods) helps ensure those messages are valid enough to test the full range of protocol logic. Both techniques are complementary, and using them together can maximize the chances of uncovering vulnerabilities in 5G systems. + +One study showed that generation-based fuzzing executed substantially more code — and found more issues — than mutation-based fuzzing on a complex format. + +## Mutation-Based Fuzzing in 5G Protocol Testing + +When testing 5G protocols, mutation-based fuzzing involves taking well-formed 5G messages (such as NAS, RRC, NGAP, GTP-U, PFCP, or Diameter messages) and altering parts of them to probe for vulnerabilities. 5G networks rely on structured protocols, often defined in ASN.1, so a mutational fuzzer might start with valid protocol exchanges and then tweak fields — for example, changing a length field, flipping bits in an identifier, or altering message order — to see if network elements handle the unexpected input robustly. A mutational fuzzer could, for example, take a correct NGAP message and flip some bits or modify a field value to test the AMF (Access and Mobility Management Function) for its handling of malformed messages. + +One challenge in 5G protocol fuzzing is that random mutations can easily produce invalid messages that are rejected early by protocol parsing, due to bad length fields, checksums, or encoding errors. This means pure "dumb" mutation might not get past initial validation checks. For instance, AFLNet (a network fuzzing extension of AFL) is a mutational fuzzer that lacks awareness of protocol format, so mutated inputs often have incorrect length or checksum fields, preventing deeper parts of the protocol from being reached. + +To address this, some 5G fuzzers combine mutation with a basic understanding of message structure. For example, Fuzzowski 5GC uses templates of 5G messages and mutates the field values, while automatically fixing up checksums and length fields so that mutated messages remain well-formed enough to be processed further. This hybrid approach retains the efficiency of mutation fuzzing but avoids trivial parse errors, making it effective for complex 5G protocols. + +### Black Box vs. Grey Box Mutational Fuzzers + +There are different types of mutational fuzzers: + +- **Black box** — e.g. Fuzzowski 5GC, Frizzer2 +- **Grey box** — e.g. AFLNet3 + +#### Black Box Mutational Fuzzing + +Black box mutational fuzzing generates new test cases by modifying existing valid inputs without any knowledge of the internal structure or execution behavior of the system under test (SUT). The fuzzer simply mutates inputs — e.g., flipping bits, injecting random data — and observes system responses (crashes, error logs, timeouts) without instrumentation. + +**Pros:** + +- Easy to deploy with minimal setup. +- Can be used on closed-source or proprietary systems. +- Works for network protocols, file parsers, and APIs. + +**Cons:** + +- Inefficient at discovering deep logic flaws. +- Generates many invalid inputs that are rejected early. + +#### Grey Box Mutational Fuzzing (Coverage-Guided Fuzzing) + +Grey box mutational fuzzing uses some feedback from the system under test, such as code coverage, to guide input mutation, making it more effective at discovering new execution paths. + +**Pros:** + +- More efficient than black-box fuzzing. +- Reaches deeper into the codebase by prioritizing inputs that expand coverage. + +**Cons:** + +- Computationally expensive due to constraint solving. +- Requires access to the program's internals and source code. + +## Other Mutational Fuzzer Types + +There are many other mutational fuzzers beyond the ones used for 5G protocol testing: + +| Fuzzer Type | Knowledge of Target | Example Fuzzers | Pros | Cons | +| --- | --- | --- | --- | --- | +| Black Box Mutation | None | Fuzzowski 5GC, Boofuzz | Easy to use, no setup required | Many invalid test cases | +| Grey Box Mutation | Coverage feedback | AFLNet, Atheris | More efficient, reaches deeper code paths | Requires instrumentation | +| White Box Mutation | Full program analysis | Driller, Mayhem | Finds deep logic bugs, bypasses security checks | Computationally expensive | +| Coverage-Guided Mutation | Evolutionary learning | AFL, Eclipser | Improves over time, learns from execution | Needs many test cases | +| Stateful Mutation | Protocol-aware | Peach Fuzzer, Fuzzowski 5GC | Effective for network protocols | Complex to configure | +| Hybrid Mutation | Uses templates + mutation | Defensics, Boofuzz | Combines the best of mutation & generation | Needs predefined protocol models | + +## Results: Fuzzowski 5GC Against Open5GS + +Fuzzowski 5GC found several issues with GTP-U, PFCP, and Diameter, but failed to find anything for the NGAP protocol in Open5GS. + +## References + +- [The Challenges of Fuzzing 5G Protocols — NCC Group](https://www.nccgroup.com/us/research-blog/the-challenges-of-fuzzing-5g-protocols/) diff --git a/5g-core/security/images/5g-core-vulnerabilities/image-1.jpg b/5g-core/security/images/5g-core-vulnerabilities/image-1.jpg new file mode 100644 index 0000000..7629f91 Binary files /dev/null and b/5g-core/security/images/5g-core-vulnerabilities/image-1.jpg differ diff --git a/5g-core/security/images/5g-core-vulnerabilities/image-2.jpg b/5g-core/security/images/5g-core-vulnerabilities/image-2.jpg new file mode 100644 index 0000000..dfb852c Binary files /dev/null and b/5g-core/security/images/5g-core-vulnerabilities/image-2.jpg differ diff --git a/5g-core/security/images/5g-core-vulnerabilities/image-3.jpg b/5g-core/security/images/5g-core-vulnerabilities/image-3.jpg new file mode 100644 index 0000000..f9f777b Binary files /dev/null and b/5g-core/security/images/5g-core-vulnerabilities/image-3.jpg differ diff --git a/5g-core/security/images/5g-core-vulnerabilities/image-4.jpg b/5g-core/security/images/5g-core-vulnerabilities/image-4.jpg new file mode 100644 index 0000000..9f9cfe9 Binary files /dev/null and b/5g-core/security/images/5g-core-vulnerabilities/image-4.jpg differ diff --git a/5g-core/security/images/5g-core-vulnerabilities/image-5.jpg b/5g-core/security/images/5g-core-vulnerabilities/image-5.jpg new file mode 100644 index 0000000..dc15174 Binary files /dev/null and b/5g-core/security/images/5g-core-vulnerabilities/image-5.jpg differ diff --git a/5g-core/security/images/5g-core-vulnerabilities/image-6.jpg b/5g-core/security/images/5g-core-vulnerabilities/image-6.jpg new file mode 100644 index 0000000..e5c271e Binary files /dev/null and b/5g-core/security/images/5g-core-vulnerabilities/image-6.jpg differ diff --git a/5g-core/security/index.md b/5g-core/security/index.md index b98b26a..cc16c53 100644 --- a/5g-core/security/index.md +++ b/5g-core/security/index.md @@ -3,6 +3,8 @@ ```{toctree} :maxdepth: 1 +5g-core-vulnerabilities +5g-protocol-fuzzing aka-procedure can-supi-concealment-ensure-pfs ecies-in-5g-core-supi-to-suci-conversion diff --git a/custom_conf.py b/custom_conf.py index 6e6ae4c..3549031 100644 --- a/custom_conf.py +++ b/custom_conf.py @@ -54,6 +54,13 @@ 'ebpf/ebpf-based-l4-load-balancer/': '../building-ebpf-based-l4-load-balancer/', 'ebpf/ebpf-in-ssd/': '../data-processing-with-ebpf-in-ssd/', 'ebpf/ebpf-in-gpu-acceleration/': '../ebpf-for-gpu-acceleration/', + '5g-core/standards/': '../open-source-comparison/', + '5g-core/standards/oai-free5gc-open5gs-magma-5g-core-standards-for-amf/': '../../open-source-comparison/oai-free5gc-open5gs-magma-5g-core-standards-for-amf/', + '5g-core/standards/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf/': '../../open-source-comparison/oai-free5gc-open5gs-and-magma-5g-core-standards-for-smf/', + '5g-core/standards/oai-free5gc-open-5gs-5g-core-standards-for-upf/': '../../open-source-comparison/oai-free5gc-open-5gs-5g-core-standards-for-upf/', + '5g-core/standards/5g-core-nf-apis-across-releases/': '../../open-source-comparison/5g-core-nf-apis-across-releases/', + '5g-core/standards/ngap-procedures-comparison/': '../../open-source-comparison/ngap-procedures-comparison/', + '5g-core/os-5gc-compare/': 'open-source-comparison/os-5gc-compare/', } ############################################################