NGAP Procedures for Xn Handover: Path Switch Request Path Switch Request Acknowledge (#194) This PR adds the following NGAP Path Switch procedures to support Xn handover in accordance with 3GPP TS 38.413v16.2.0. NGAP Path Switch Request: add encode and ITTI support - Add a case in TASK_NGAP to support ITTI message from RRC to NGAP - Add Path Switch Request message type definitions - Implement encoder for Path Switch Request (3GPP TS 38.413v16.2.0 §9.2.3.8) * RAN UE NGAP ID (M) * Source AMF UE NGAP ID (M) * User Location Information (M) * UE Security Capabilities (M) * PDU Session Resource to be Switched in Downlink List (M) - Add required ASN.1 header includes for Path Switch Request IEs NGAP Path Switch Request Acknowledge: add decode and handler - Add handler at NGAP for Path Switch Request Acknowledge from AMF - Add Path Switch Request Acknowledge message type definitions - Implement decoder for Path Switch Request Acknowledge (3GPP TS 38.413v16.2.0 §9.2.3.9) * AMF UE NGAP ID (M) * RAN UE NGAP ID (M) * Security Context (M) * PDU Session Resource Switched List (M) * Allowed NSSAI (M) - Add required ASN.1 header includes for Path Switch Request Acknowledge IEs Notes: - Added a case NGAP_PATH_SWITCH_REQ in task_ngap to support ITTI message from RRC, and this will be allocated at - RRC when the target gNB receives the RRC complete message from the UE during Xn handover. - OAI CN5G does not support any of the NGAP path switch procedures (request, ack, and failure) as of today to test Xn Handover. - We tested the procedures in an E2E setup at IISc with two gNBs in E1+F1+7.2x split containing the Xn handover code and connected to the same 5G core (used Open5GS & Aether-OnRamp separately), and also did not observe any Path Switch Failure. - The implementation of Path Switch Failure at OAI RAN will be done along with the implementation of Path Switch procedures in OAI CN5G once the XNAP integration in OAI RAN is complete. Acknowledgement: > This work has been partially carried out as part of Xn Handover development at the Indian Institute of Science (IISc), Bengaluru. Reviewed-by: Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-By: Guido Casati <guido.casati@openairinterface.org>
Duranta - OpenAirInterface
Duranta OpenAirInterface RAN delivers and maintains an open-source cellular wireless software stack for 4G, 5G and future networking technologies. It supports simulation, prototyping, and end-to-end deployments on Commercial-Off-The-Shelf (COTS) hardware. Built for research and experimentation, it provides standard-compliant interfaces and is released under the Collaborative Standards Software License (CSSL).
License
The source code is distributed under CSSL v1.0. Some files, such as for orchestration, are distributed under MIT license. Documentation is distributed under Creative Commons Attribution 4.0 International license.
All the files without an explicit copyright header have an implicit "Copyright of OpenAirInterface Authors".
Please see NOTICE for other licenses which are used in the software.
In the past OAI source code has been re-licensed sometimes, here is the history:
- CSSL v1.0 starting tag 2026.w14
- OAI Public License v1.1 starting tag v1.0 till
af4b0d53 - OAI Public License v1.0: starting tag v.04 till v1.0
- GPL 3: starting tag v.0 till v.04 (only initial implementation of 4G)
Where to Start
- General overview of documentation
- The implemented features
- System Requirements for Using OAI Stack
- How to build
- How to run the modems
Not all information is available in a central place, and information for specific sub-systems might be available in the corresponding sub-directories. To find all READMEs, this command might be handy:
find . -iname "readme*"
RAN repository structure
The OpenAirInterface (OAI) software is composed of the following parts:
openairinterface5g
├── charts
├── ci-scripts : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI.
├── CMakeLists.txt : Top-level CMakeLists.txt for building
├── cmake_targets : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files.
├── common : Some common OAI utilities, some other tools can be found at openair2/UTILS.
├── doc : Documentation
├── docker : Dockerfiles to build for Ubuntu and RHEL
├── executables : Top-level executable source files (gNB, eNB, ...)
├── maketags : Script to generate emacs tags.
├── nfapi : (n)FAPI code for MAC-PHY interface
├── openair1 : Layer 1 (3GPP LTE Rel-10/12 PHY, NR Rel-15 PHY)
├── openair2 : Layer 2 (3GPP LTE Rel-10 MAC/RLC/PDCP/RRC/X2AP, LTE Rel-14 M2AP, NR Rel-15+ MAC/RLC/PDCP/SDAP/RRC/X2AP/F1AP/E1AP), E2AP
├── openair3 : Layer 3 (3GPP LTE Rel-10 S1AP/GTP, NR Rel-15 NGAP/GTP)
├── openshift : OpenShift helm charts for some deployment options of OAI
├── radio : Drivers for various radios such as USRP, AW2S, RFsim, 7.2 FHI, ...
├── targets : Some configuration files; only historical relevance, and might be deleted in the future
└── tools : Tools for use by the developers/ci machines: code analysis and formatting
How to get support from the Community
You can ask your question on the mailing lists.
Your email should contain below information:
- A clear subject in your email.
- For all the queries there should be [Query] in the subject of the email and for problems there should be [Problem].
- In case of a problem, add a small description.
- Do not share any photos unless you want to share a diagram.
- OAI gNB/DU/CU/CU-CP/CU-UP configuration file in
.confformat only. - Logs of OAI gNB/DU/CU/CU-CP/CU-UP in
.logor.txtformat only. - In case your question is related to performance, include a small description of the machine (Operating System, Kernel version, CPU, RAM and networking card) and diagram of your testing environment.
- Known/open issues are present on Github, so keep checking.
Always remember a structured email will help us understand your issues quickly.
