Quick Reference

This guide provides a quick reference for all the blueprints OnRamp defines for Aether. It assumes a general familiarity with OnRamp, and a specific understanding of how OnRamp uses blueprints to configure target deployments of Aether.

Blueprint Specification

The specification for every Aether blueprint is anchored in an Ansible variable file (e.g., vars/main-<blueprint>.yml).

The blueprint names in the first column of the following table link the relevant OnRamp documentation. The vars files can be found in the aether-onramp repo.

Name

Vars File

Description

Quick Start

main-quickstart.yml

Minimal configuration running in a single server or VM.

Emulated RAN

main-gnbsim.yml

Scalable 5G Control Plane workload from gNBsim directed at 5G Core.

Physical gNB

main-gNB.yml

Physical 5G small cell radio connected to 5G Core; demonstrated with MOSO CANOPY 5G indoor small cell.

Multiple UPFs

main-upf.yml

Instantiate multiple UPFs and bind them to distinct Slices.

SD-RAN (RIC)

main-sdran.yml

SD-RAN (with RANSIM traffic) connected to 5G Core.

UERANSIM

main-ueransim.yml

UERANSIM (with iperf traffic) connected to 5G Core.

Physical eNB

main-eNB.yml

Physical 4G small cell radio connected to 4G Core; demonstrated with Sercomm indoor small cell.

SR-IOV/DPDK

main-sriov.yml

5G Core with core.upf.mode set to dpdk, enabling SR-IOV and DPDK optimizations for the user plane.

OAI 5G RAN

main-oai.yml

OAI software radio connected to 5G Core.

srsRAN 5G

main-srsran.yml

srsRAN software radio connected to 5G Core.

OCUDU

main-ocudu.yml

OCUDU software radio connected to 5G Core, with support for simulated UE, UHD-backed radios, and split 7.2 RU deployments.

N3IWF

main-n3iwf.yml

N3IWF connected to 5G Core to provide internet access to non-3GPP devices.

Ansible Variables

The Ansible vars/main-<blueprint>.yml file associated with each blueprint defines the high-level parameters used to configure Aether. The following identifies the key variables users are likely to modify; the list is not comprehensive.

Variable

Default

Description

core.networks.access.ran_subnet

172.20.0.0/16

Overlay subnet connecting Core to RAN when gNBs run in a container; set to empty string (“”) to derive it from the access interface when gNBs are directly connected to the server’s physical network.

core.networks.<name>

access, core (optional)

Networks the UPF attaches to; fields are iface, vlan, subnet, gateway, attach, resource_name and ran_subnet. All have defaults, so omitting this key gives the single-interface deployment on the default-route interface. See Network Details.

core.networks.<name>.resource_name

intel.com/intel_sriov_vfio_access (access), intel.com/intel_sriov_vfio_core (core)

SR-IOV resource pool name in dpdk mode.

core.upf.instances.<name>

default (optional)

UPFs, each with access and core ({network, ip}), ue_ip_pool and mode. default is the built-in UPF; every other instance is deployed by 5gc-upf-install.

core.standalone

true

Core to run standalone with simapp-managed subscribers; set to false to manage device groups/slices via SD-Core webui.

core.amf.ip

“10.76.28.113”

IP address of AMF; edit to match IP address assigned to the server’s network interface.

core.amf.external_traffic_policy

unset

Optional externalTrafficPolicy of the AMF N2 Service; Cluster or Local.

core.upf.mode

af_packet

UPF datapath mode for instances that do not set their own; set to dpdk to enable the integrated SR-IOV/DPDK rendering in the core and additional-UPF templates.

gnbsim.router.data_iface

ens18

Network interface used by gNBsim; set to the server’s interface (the Core derives its own interface from the default route).

oai.simulation

true

Run UE in simulation mode; set to false to connect real UEs.

srsran.simulation

true

Run UE in simulation mode; set to false to connect real UEs.

ocudu.simulation

true

Run UE in simulation mode; set to false to deploy OCUDU without the simulated UE.

ocudu.docker.preflight.enabled

true

Enable the OCUDU Docker CPU availability preflight check before gNB startup.

ocudu.docker.preflight.min_cpus

4

Minimum CPU count that the Docker preflight must observe before the OCUDU gNB starts.

ocudu.docker.preflight.probe_image

ghcr.io/omec-project/pod-init:rel-1.2.2

Helper image used by the OCUDU Docker preflight to probe CPU availability inside Docker.

ocudu.servers[n].dpdk.enabled

false

Enable per-node DPDK host preparation for OCUDU RU deployments.

ocudu.servers[n].dpdk.hugepages

2

Number of 1 GB hugepages reserved on that OCUDU host before starting a DPDK gNB.

ocudu.servers[n].dpdk.pf_iface

enp81s0f3np3

Fronthaul PF interface used to create VF 0 for that OCUDU node.

ocudu.servers[n].dpdk.du_mac_addr

00:33:22:33:00:11

Optional VF 0 MAC override rendered into the DPDK gNB config.

ocudu.servers[n].dpdk.ru_mac_addr

70:b3:d5:e1:5e:7e

RU fronthaul MAC address rendered into the DPDK gNB config.

ocudu.servers[n].dpdk.vf_bdf

“”

Optional VF 0 PCI BDF override; leave empty to auto-discover it from sysfs.

ocudu.servers[n].dpdk.isolated_cpus

3-23

CPU range isolated for the DPDK gNB process on that host.

airgapped.enabled

false

Skip gated apt update cache refreshes for offline or mirror-backed deployments.

airgapped.allow_purge

false

Permit playbooks to remove conflicting packages even in airgapped mode when a role supports that behavior.

*.helm.local_charts

false

Loads Helm Charts from public repo; set to true to utilize local charts, with *.helm.charts_ref set to local path name.

core.mongodb.members

chart default

Number of MongoDB replica set members; set to 1 to shrink the footprint.

core.mongodb.arbiters

chart default

Number of MongoDB arbiters; set to 0 for a single-member deployment.

core.mongodb.resources

chart default

CPU/memory requests and limits for the mongod and agent containers.

core.mongodb.operator.helm.chart_version

“” (latest)

Version of the MongoDB Controllers for Kubernetes operator chart.

core.mongodb.operator.lpp.version

v0.0.24

local-path-provisioner version installed when the cluster has no default StorageClass.

core.kafka.operator.helm.chart_version

0.49.1

Version of the Strimzi Kafka operator chart.

proxy.enabled

false

Enable HTTP proxy support for all deployment steps; set to true when deploying behind a corporate or institutional proxy.

proxy.http_proxy

“”

HTTP proxy URL (e.g., http://proxy.example.com:3128).

proxy.https_proxy

“”

HTTPS proxy URL (e.g., http://proxy.example.com:3128).

proxy.no_proxy

See vars/main.yml

Comma-separated list of hosts and CIDRs that bypass the proxy; the default includes localhost, private subnets, and Kubernetes internal domains as defined in vars/main.yml.

In addition to the variables listed in the preceding table, the vars file also references other configuration files required by each component. These include values override files used by Helm, along with other ad hoc files directly processed by the component. Note that alternative config files used by other blueprints are often available in the same directory. Edit these variable settings to substitute custom config files.

Variable

Default Path Name

amp.monitor_dashboard

deps/amp/roles/monitor-load/templates/5g-monitoring/

core.values_file

deps/5gc/roles/core/templates/sdcore-5g-values.yaml

gnbsim.servers

deps/gnbsim/config/gnbsim-default.yaml and similar per-container config files

k8s.rke2.config.params_file.master

deps/k8s/roles/rke2/templates/master-config.yaml

k8s.rke2.config.params_file.worker

deps/k8s/roles/rke2/templates/worker-config.yaml

oai.servers[0].gnb_conf

deps/oai/roles/gNb/templates/gnb.sa.band78.fr1.106PRB.usrpb210.conf

oai.servers[0].ue_conf

deps/oai/roles/uEsimulator/templates/ue.conf

srsran.servers[0].gnb_conf

deps/srsran/roles/gNB/templates/gnb_zmq.yaml

srsran.servers[0].ue_conf

deps/srsran/roles/uEsimulator/templates/ue_zmq.conf

ocudu.servers[0].gnb_conf

deps/ocudu/roles/gNB/templates/gnb_zmq.yaml

ocudu.servers[0].ue_conf

deps/ocudu/roles/uEsimulator/templates/ue_zmq.conf

ocudu.servers[0].dpdk.*

deps/ocudu/roles/gNB/templates/gnb_dpdk_benetel.yaml, plus DPDK host settings and RU companion config fragments under deps/ocudu/roles/dpdk/templates/

n3iwf.servers[0].conf_file

deps/n3iwf/roles/n3iwf/templates/n3iwf-default.yaml

ueransim.servers

deps/ueransim/config/custom-gnb.yaml

deps/ueransim/config/custom-ue.yaml

Host Inventory

Each blueprint is deployed to the set of servers identified in an Ansible inventory file (hosts.ini). The following identifies the host groups that OnRamp currently supports.

In the default single-node inventory, the controller host is labeled node1 even when it resolves to 127.0.0.1 for local execution. The GitHub Actions workflows in the aether-onramp repository under .github/workflows do not use that exact aliasing scheme: the single-node workflows generate hosts.ini through shared helper scripts, using localhost and ansible_connection=local.

Host Group

Description

[master_nodes]

Servers hosting Kubernetes Controller.

[worker_nodes]

Worker servers in Kubernetes Cluster.

[gnbsim_nodes]

Servers hosting gNBsim containers.

[ueransim_nodes]

Servers hosting UERANSIM process.

[oai_nodes]

Servers hosting OAI gNB (and optionally UE) containers.

[srsran_nodes]

Servers hosting srsRAN gNB (and optionally UE) containers.

[ocudu_nodes]

Servers hosting OCUDU gNB (and optionally UE) containers.

[n3iwf_nodes]

Servers hosting N3IWF containers.

The [worker_nodes] group can be empty, but must be present. The other groups are blueprint-specific, and with the exception of [ueransim_nodes], may be the same as the [master_nodes], making it possible for the blueprint to require only a single server.

Make Targets

OnRamp executes blueprints through a set of Make Targets. The following table identifies the Aether-wide targets used by the Quick Start Blueprint.

Target

Description

aether-k8s-install

Install RKE2 and Helm.

aether-k8s-uninstall

Uninstall RKE2 Kubernetes and Helm.

aether-5gc-install

Install 5G Core workload; includes bridges for networking, the MongoDB and Kafka operators, and (if needed) a default StorageClass.

aether-5gc-uninstall

Uninstall 5G Core workload; includes bridges for networking, the MongoDB and Kafka operators, and Strimzi CRDs.

aether-5gc-reset

Delete and reinstall 5G Core workload; leaves network bridges untouched.

aether-gnbsim-install

Install gNBsim containers.

aether-gnbsim-uninstall

Uninstall gNBsim containers.

aether-gnbsim-run

Run gNBsim containers; may rerun multiple times without reinstalling.

aether-amp-install

Installs and initializes the Monitoring workload.

aether-amp-uninstall

Uninstalls the Monitoring workload.

Other blueprints define component-specific targets, as listed in the following table. (The Aether-wide targets can also be used for all other blueprints.)

All Blueprints

amp-monitor-install

Install Monitor workload.

amp-monitor-load

Load dashboard panels into Monitor; assumes Monitor already deployed.

amp-monitor-uninstall

Uninstall Monitor workload.

SD-RAN Blueprint

sdran-install

Install SD-RAN workload; assumes Core already deployed.

sdran-uninstall

Uninstall SD-RAN workload.

UERANSIM Blueprint

ueransim-install

Install UERANSIM emulated RAN; assumes Core already deployed.

ueransim-uninstall

Uninstall UERANSIM emulated RAN.

ueransim-run

Run UERANSIM UE to generate User Plane traffic for the Core.

OAI 5G RAN Blueprint

oai-gnb-install

Install container running OAI 5G RAN radio; assumes Core already deployed.

oai-gnb-uninstall

Uninstall OAI 5G RAN container.

oai-uesim-start

Start container running OAI simulated UE.

oai-uesim-stop

Stop container running OAI simulated UE.

srsRAN 5G Blueprint

srsran-gnb-install

Install container running srsRAN 5G radio; assumes Core already deployed.

srsran-gnb-uninstall

Uninstall srsRAN 5G radio container.

srsran-uesim-start

Start container running srsRAN simulated UE.

srsran-uesim-stop

Stop container running srsRAN simulated UE.

OCUDU Blueprint

ocudu-gnb-install

Install Docker prerequisites, apply OCUDU routing, and start the OCUDU gNB; assumes Core already deployed.

ocudu-gnb-uninstall

Uninstall OCUDU gNB container.

ocudu-gnb-start

Start the OCUDU gNB directly after running the Docker CPU preflight and, when enabled, the same DPDK readiness gate exposed by ocudu-dpdk-status.

ocudu-gnb-stop

Stop the OCUDU gNB container without undoing the OCUDU routing changes.

ocudu-dpdk-install

Prepare DPDK prerequisites on OCUDU RU hosts before starting a DPDK-enabled gNB. This step may reboot the host and installs the persistent vf-bootstrap.service used to restore VF state across reboots.

ocudu-dpdk-status

Report whether each DPDK-enabled OCUDU host is ready for gNB startup. ocudu-gnb-start and ocudu-gnb-install already enforce this same readiness gate.

ocudu-dpdk-verify

Verify the live DPDK host state, including services, vf-bootstrap.service, hugepages, and VF binding. This is a stronger check than the readiness gate used by ocudu-gnb-start.

ocudu-uesim-start

Start container running the simulated srsRAN UE for OCUDU.

ocudu-uesim-stop

Stop container running the simulated srsRAN UE for OCUDU.

N3IWF Blueprint

n3iwf-install

Install N3IWF; assumes Core already deployed.

n3iwf-uninstall

Uninstall N3IWF.

Multi-UPF Blueprint

5gc-upf-install

Install additional UPF pods; assumes Core already deployed.

5gc-upf-uninstall

Uninstall additional UPF pods.

Network Subnets

OnRamp configures a set of subnets in support of a given Aether deployment. The following subnets are defined in vars/main.yml. With the exception of core.networks.access.ran_subnet, these variables typically do not need to be modified for an initial deployment of a blueprint.

IP Subnet

Ansible Variable

Description

172.20.0.0/16

core.networks.access.ran_subnet

Assigned to container-based gNBs connecting to the Core via an overlay subnet. Other gNB implementations connect to the Core over the subnet assigned to the server’s physical interface (the interface carrying the default route, unless overridden by core.networks.access.iface).

192.168.250.0/24

core.networks.core.subnet

Subnet of the core network that connects UPF(s) to the Internet. By default the server is the gateway, at the first address (192.168.250.1).

192.168.252.0/24

core.networks.access.subnet

Subnet of the access network that connects UPF(s) to the RAN. By default the server is the gateway, at the first address (192.168.252.1).

192.168.100.0/24

core.upf.instances.default.ue_ip_pool

Assigned (by the Core) to UEs connecting to Aether. When multiple UPFs are deployed—in addition to the default instance—each is assigned its own ue_ip_pool subnet.

10.76.28.0/24

N/A

Used throughout OnRamp documentation as an exemplar for the local subnet on which Aether severs and radios are deployed. Corresponds to the server’s network interface (the one carrying the default route).