# openairinterface/oai-cn5g-fed architecture

> Architecture diagram of the GitHub repository openairinterface/oai-cn5g-fed, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/openairinterface/oai-cn5g-fed
- Repository: https://github.com/openairinterface/oai-cn5g-fed

## Overview

This repository federates OpenAirInterface 5G Core components and provides shared deployment scenarios and documentation; it is not the implementation source for each network function. The principal workflow is selecting a deployment scenario, using the shared launcher and scenario configuration to bring up a core network, then connecting a RAN/UE and establishing service. The graph preserves documented variants such as slicing, QoS, ULCL, eBPF and VPP. Deployment wiring is inferred from the launcher and configuration layout; function-internal call flows are not represented.

Main entry points: [`docker-compose`](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose) (Compose Scenarios), [`docker-compose/core-network.py`](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/core-network.py) (Scenario Launcher), [`docker-compose/ran-conf`](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/ran-conf) (RAN Simulators), [`docker-compose/docker-compose-slicing-basic-nrf.yaml`](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-slicing-basic-nrf.yaml) (Network Slicing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_deploy["Deployment"]
  node_launcher["Scenario Launcher<br/>[core-network.py]"]
  node_compose["Compose Scenarios"]
  node_configs["NF Configurations"]
end

subgraph group_core["Core Network"]
  node_mysql[("Subscriber Database<br/>[oai_db-basic.sql]")]
  node_nrf["NRF"]
  node_amf["AMF"]
  node_ausf["AUSF"]
  node_udm["UDM"]
  node_udr["UDR"]
  node_smf["SMF"]
  node_upf["UPF"]
  node_pcf["PCF"]
end

subgraph group_access["Access Network"]
  node_ran["RAN Simulators"]
  node_ue["UE"]
end

subgraph group_capabilities["Service Variants"]
  node_slicing["Network Slicing"]
  node_qos["QoS Policies"]
  node_ulcl["ULCL Routing"]
  node_redirection["Traffic Redirection"]
  node_steering["Traffic Steering"]
  node_ebpf["eBPF UPF"]
  node_vpp["VPP UPF"]
end

node_operator(("Operator"))

node_operator -->|"selects scenario"| node_launcher
node_launcher -->|"deploys scenario"| node_compose
node_compose -->|"loads settings"| node_configs
node_compose -->|"starts"| node_mysql
node_compose -->|"starts"| node_nrf
node_compose -->|"starts"| node_amf
node_compose -->|"starts"| node_ausf
node_compose -->|"starts"| node_udm
node_compose -->|"starts"| node_udr
node_compose -->|"starts"| node_smf
node_compose -->|"starts"| node_upf
node_compose -->|"starts"| node_pcf
node_compose -->|"starts simulator"| node_ran
node_ran -->|"simulates access"| node_ue
node_slicing -->|"configures scenario"| node_compose
node_qos -->|"provides policies"| node_compose
node_ulcl -->|"configures scenario"| node_compose
node_redirection -->|"configures scenario"| node_compose
node_steering -->|"configures scenario"| node_compose
node_ebpf -->|"selects variant"| node_compose
node_vpp -->|"selects variant"| node_compose

click node_launcher "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/core-network.py"
click node_compose "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_configs "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/conf"
click node_mysql "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/database/oai_db-basic.sql"
click node_nrf "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_amf "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_ausf "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_udm "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_udr "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_smf "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_upf "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_pcf "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose"
click node_ran "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/ran-conf"
click node_ue "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/ran-conf"
click node_slicing "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-slicing-basic-nrf.yaml"
click node_qos "https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/policies/qos"
click node_ulcl "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-pcf-ulcl.yaml"
click node_redirection "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-pcf-redirection.yaml"
click node_steering "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-pcf-steering.yaml"
click node_ebpf "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-nrf-ebpf.yaml"
click node_vpp "https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-nrf.yaml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_launcher,node_compose,node_configs toneBlue
class node_mysql,node_nrf,node_amf,node_ausf,node_udm,node_udr,node_smf,node_upf,node_pcf toneAmber
class node_ran,node_ue toneMint
class node_slicing,node_qos,node_ulcl,node_redirection,node_steering,node_ebpf,node_vpp toneRose
class node_operator toneIndigo
```

## Components

### Deployment

- [Scenario Launcher](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/core-network.py): `docker-compose/core-network.py`
- [Compose Scenarios](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [NF Configurations](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/conf): `docker-compose/conf`

### Core Network

- [Subscriber Database](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/database/oai_db-basic.sql): `docker-compose/database/oai_db-basic.sql`
- [NRF](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [AMF](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [AUSF](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [UDM](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [UDR](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [SMF](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [UPF](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`
- [PCF](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose): `docker-compose`

### Access Network

- [RAN Simulators](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/ran-conf): `docker-compose/ran-conf`
- [UE](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/ran-conf): `docker-compose/ran-conf`

### Service Variants

- [Network Slicing](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-slicing-basic-nrf.yaml): `docker-compose/docker-compose-slicing-basic-nrf.yaml`
- [QoS Policies](https://github.com/openairinterface/oai-cn5g-fed/tree/develop/docker-compose/policies/qos): `docker-compose/policies/qos`
- [ULCL Routing](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-pcf-ulcl.yaml): `docker-compose/docker-compose-basic-vpp-pcf-ulcl.yaml`
- [Traffic Redirection](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-pcf-redirection.yaml): `docker-compose/docker-compose-basic-vpp-pcf-redirection.yaml`
- [Traffic Steering](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-pcf-steering.yaml): `docker-compose/docker-compose-basic-vpp-pcf-steering.yaml`
- [eBPF UPF](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-nrf-ebpf.yaml): `docker-compose/docker-compose-basic-nrf-ebpf.yaml`
- [VPP UPF](https://github.com/openairinterface/oai-cn5g-fed/blob/develop/docker-compose/docker-compose-basic-vpp-nrf.yaml): `docker-compose/docker-compose-basic-vpp-nrf.yaml`

### Other components

- **Operator**

## Connections

- Operator → Scenario Launcher: selects scenario
- Scenario Launcher → Compose Scenarios: deploys scenario
- Compose Scenarios → NF Configurations: loads settings
- Compose Scenarios → Subscriber Database: starts
- Compose Scenarios → NRF: starts
- Compose Scenarios → AMF: starts
- Compose Scenarios → AUSF: starts
- Compose Scenarios → UDM: starts
- Compose Scenarios → UDR: starts
- Compose Scenarios → SMF: starts
- Compose Scenarios → UPF: starts
- Compose Scenarios → PCF: starts
- Compose Scenarios → RAN Simulators: starts simulator
- RAN Simulators → UE: simulates access
- Network Slicing → Compose Scenarios: configures scenario
- QoS Policies → Compose Scenarios: provides policies
- ULCL Routing → Compose Scenarios: configures scenario
- Traffic Redirection → Compose Scenarios: configures scenario
- Traffic Steering → Compose Scenarios: configures scenario
- eBPF UPF → Compose Scenarios: selects variant
- VPP UPF → Compose Scenarios: selects variant
