Requirements
A Racora network is one control node and as many radio nodes as you have radios. The control node is the centralized-unit node: it runs the CU-CP, the CU-UP and CU-IP, the core provider and the two controllers. A radio node runs one DU per radio. One host with a GPU and a radio can be both.
The Control Node
- An NVIDIA GPU. CU-IP, the Intelligence Plane, runs only on a node with a GPU. It is built on RAPIDS 25.12 with CUDA 12, so the driver must support CUDA 12 and the GPU must be one RAPIDS supports (RAPIDS system requirements). Without it no Intelligence Plane comes up, and cells keep the temporary PCI they were given instead of an assigned one.
- amd64 and Ubuntu 24.04. Racora's provisioner prepares the host: the real-time kernel, isolated cores, the TuneD profile, the NVIDIA driver and container toolkit. The real-time kernel comes through Ubuntu Pro, so the host is attached or you have a Pro token. Secure Boot is off, because the NVIDIA module the provisioner builds is unsigned.
Radio Nodes
- One USRP B210 per cell, on USB 3. At 23.04 MS/s a B210 on USB 2 has not got the bandwidth for a 10 MHz cell. The device plugin supports the USB B200 family only.
- amd64 and Ubuntu 24.04, prepared by the same provisioner as the control node, plus UHD for the radio (Add a Radio Node).
- A GPSDO and a GPS antenna per radio when UEs are to hand over between cells. A single cell runs on the radio's internal clock (Connect a Radio).
The Cluster
Racora installs onto one of two platforms, and what you bring depends on which.
- k3s, the default. A clean host: no other Kubernetes runtime running (kubelet, RKE2, CRI-O, MicroK8s). The installer brings the cluster and everything the RAN needs from it, and joins radio nodes with one command (Install the Control Node).
- Your own Kubernetes cluster. The cluster is yours, so its prerequisites are too: the
sctpkernel module on every node, a schedulable control node with the GPU, Pod Security exemptions for Racora's privileged namespaces, and whatever the core provider you choose asks of it (Open5GS needs a default StorageClass and its host units). The complete list, in order, is Install onto an Existing Kubernetes Cluster.
Nodes reach each other on the cluster's own ports; what Racora itself listens on, and which of its workloads need privileges, is Ports and Privileges.
What the Installer Checks for You
The k3s installer refuses an unsupported architecture and another Kubernetes runtime on
the host; the kubernetes installer refuses an OpenShift cluster and a cluster whose RAN is
managed by the k3s platform. Refusals exit 2, and INSTALL_RACORA_SKIP_VALIDATE=true
turns them into warnings when you know better. A node install without K3S_URL and
K3S_TOKEN, an unknown core provider, external without an AMF address, or an AMF address
given with an in-cluster provider is a hard
error (exit 1) that no switch overrides.