Skip to main content
Version: v6.0.0 [Falcon]

Blueprints with OCUDU on a USRP

These blueprints run an OCUDU gNB over the air on a NI/Ettus USRP B200/B210 or N300, with the OAI minimal 5GC.

Check the USRP​

Before deploying a network on a USRP, check that the cluster's device manager detects it. Run brc extract infra and look for the device under RADIO --> DEVICES:

╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Trirematics cluster information │
├────────────────────────────────────────────┬───────────────────────────────────────────────────┬─────────────────────────────────┬─────────────────────────────────┤
│ CLUSTER │ SYSTEM │ COMPUTE │ RADIO │
├─────────┬────────────┬──────┬──────────────┼────────────────────┬────────┬─────────────────────┼─────────┬────────┬─────┬────────┼──────────────┬───────────┬──────┤
│ REGION │ ROLE │ NAME │ IP │ OS │ KERNEL │ RUNTIME │ ARCH │ VENDOR │ CPU │ MEM │ DEVICES │ TERMINALS │ SYNC │
├─────────┼────────────┼──────┼──────────────┼────────────────────┼────────┼─────────────────────┼─────────┼────────┼─────┼────────┼──────────────┼───────────┼──────┤
│ │ control-pl │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ ane │ node1│ 192.168.1.10 │ Ubuntu 22.04.5 LTS │ 6.8.0 │ containerd://1.7.27 │ amd64 │ AMD │ 31 │ 60 GiB │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────────┼────────────┼──────┼──────────────┼────────────────────┼────────┼─────────────────────┼─────────┼────────┼─────┼────────┼──────────────┼───────────┼──────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ worker │ node2│ 192.168.1.11 │ Ubuntu 22.04.5 LTS │ 5.15.0 │ containerd://1.7.27 │ amd64 │ AMD │ 31 │ 40 GiB │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────────┼────────────┼──────┼──────────────┼────────────────────┼────────┼─────────────────────┼─────────┼────────┼─────┼────────┼──────────────┼───────────┼──────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ worker │ node3│ 192.168.1.12 │ Ubuntu 22.04.5 LTS │ 5.15.0 │ containerd://1.7.27 │ amd64 │ AMD │ 31 │ 40 GiB │ UHD-B200: 1 │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
╰─────────┴────────────┴──────┴──────────────┴────────────────────┴────────┴─────────────────────┴─────────┴────────┴─────┴────────┴──────────────┴───────────┴──────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Trirematics cluster energy information │
├──────────────────────────────┬────────────────────────────────────────────────────────────────────────────────┤
│ NODE │ CPU │
├──────┬────────┬──────────────┼─────────────┬──────────┬──────────────┬────────────┬────────────┬──────┬───────┤
│ NAME │ STATUS │ ACTIVITY │ ALLOCATABLE │ CAPACITY │ USAGE (CORE) │ USAGE (%) │ PSTATE │ MODE │ TURBO │
├──────┼────────┼──────────────┼─────────────┼──────────┼──────────────┼────────────┼────────────┼──────┼───────┤
│ node1│ True │ Low Activity │ 31 │ 32 │ 1.2040704 │ 3.8840983 │ No support │ N/A │ N/A │
├──────┼────────┼──────────────┼─────────────┼──────────┼──────────────┼────────────┼────────────┼──────┼───────┤
│ node2│ True │ Low Activity │ 31 │ 32 │ 0.10409176 │ 0.33577988 │ No support │ N/A │ N/A │
├──────┼────────┼──────────────┼─────────────┼──────────┼──────────────┼────────────┼────────────┼──────┼───────┤
│ node3│ True │ Low Activity │ 31 │ 32 │ 0.10751778 │ 0.34683153 │ No support │ N/A │ N/A │
╰──────┴────────┴──────────────┴─────────────┴──────────┴──────────────┴────────────┴────────────┴──────┴───────╯

In this example node3 reports a UHD-B200. An N300 is reported as UHD-N300.

Deploy a blueprint from the control-plane node with brc install network <file>.yaml. It should finish without errors and print the Kubernetes resources it created. Follow the deployment with brc observe and wait until every Element other than the UE is in the 1/1 Y state.

warning

These blueprints contain only the Network. Add a UE with the UE blueprints, using the preferred-access and target-cores given in the last line of each file.

B200/B210, monolithic gNB​

A monolithic OCUDU gNB on a B200/B210, band n78, 40 MHz.

Source: networks/ocudu/usrp/01-b200.yaml

01-b200.yaml
01-b200.yaml
# OCUDU monolithic gNB over the air on a USRP B200/B210, band n78, 40 MHz.
apiVersion: athena.trirematics.io/v1
kind: Network
metadata:
name: ocudu-usrp
namespace: trirematics
spec:
slices:
- plmn: "00101"
dnn: internet
network-mode: IPv4
service-type: 1
differentiator: 0x000000
ipv4-range: 12.1.1.0/24
ipv6-range: 2001:db8:1::/64
access:
- name: gnb
stack: 5g-sa
model: ocudu/monolithic-gnb
identity:
an-id: 30
tracking-area: 1
radio:
device: uhd-b200
cells:
- band: n78
arfcn: 641280
bandwidth: 40MHz
subcarrier-spacing: 30kHz
tdd-config:
period: 5000
dl-slots: 7
dl-symbols: 6
ul-slots: 2
ul-symbols: 4
core-networks:
- core.ocudu-usrp
core:
- name: core
stack: 5g-sa
model: oai-cn/minimal
identity:
region: 0
cn-group: 4
cn-id: 5
dns:
ipv4:
default: 8.8.8.8
secondary: 8.8.4.4

#--- Add a UE with terminals/quectel.yaml or terminals/external.yaml: preferred-access gnb.ocudu-usrp, target-cores core.ocudu-usrp ---#

B200/B210, CU-DU split​

An OCUDU CU and DU, the DU on a B200/B210, band n78, 40 MHz.

Source: networks/ocudu/usrp/02-b200-cu-du.yaml

02-b200-cu-du.yaml
02-b200-cu-du.yaml
# OCUDU CU/DU split over the air, the DU on a USRP B200/B210, band n78, 40 MHz.
apiVersion: athena.trirematics.io/v1
kind: Network
metadata:
name: ocudu-usrp
namespace: trirematics
spec:
slices:
- plmn: "00101"
dnn: internet
network-mode: IPv4
service-type: 1
differentiator: 0x000000
ipv4-range: 12.1.1.0/24
ipv6-range: 2001:db8:1::/64
access:
- name: cu-du
stack: 5g-sa
model: ocudu/cu-du
identity:
an-id: 30
tracking-area: 1
radio:
device: uhd-b200
cells:
- band: n78
arfcn: 641280
bandwidth: 40MHz
subcarrier-spacing: 30kHz
tdd-config:
period: 5000
dl-slots: 7
dl-symbols: 6
ul-slots: 2
ul-symbols: 4
core-networks:
- core.ocudu-usrp
core:
- name: core
stack: 5g-sa
model: oai-cn/minimal
identity:
region: 0
cn-group: 4
cn-id: 5
dns:
ipv4:
default: 8.8.8.8
secondary: 8.8.4.4

#--- Add a UE with terminals/quectel.yaml or terminals/external.yaml: preferred-access cu-du.ocudu-usrp, target-cores core.ocudu-usrp ---#

N300, monolithic gNB​

A monolithic OCUDU gNB on a USRP N300, band n78, 20 MHz. The OCUDU model drives the N300 at 30.72 Msps, which allows up to 20 MHz at 30 kHz subcarrier spacing.

Source: networks/ocudu/usrp/03-n300.yaml

03-n300.yaml
03-n300.yaml
# OCUDU monolithic gNB over the air on a USRP N300, band n78, 20 MHz.
# The ocudu model drives the N300 at 30.72 Msps, which allows up to 20 MHz at 30 kHz.
apiVersion: athena.trirematics.io/v1
kind: Network
metadata:
name: ocudu-usrp
namespace: trirematics
spec:
slices:
- plmn: "00101"
dnn: internet
network-mode: IPv4
service-type: 1
differentiator: 0x000000
ipv4-range: 12.1.1.0/24
ipv6-range: 2001:db8:1::/64
access:
- name: gnb
stack: 5g-sa
model: ocudu/monolithic-gnb
identity:
an-id: 30
tracking-area: 1
radio:
device: uhd-n300
cells:
- band: n78
arfcn: 641280
bandwidth: 20MHz
subcarrier-spacing: 30kHz
tdd-config:
period: 5000
dl-slots: 7
dl-symbols: 6
ul-slots: 2
ul-symbols: 4
core-networks:
- core.ocudu-usrp
core:
- name: core
stack: 5g-sa
model: oai-cn/minimal
identity:
region: 0
cn-group: 4
cn-id: 5
dns:
ipv4:
default: 8.8.8.8
secondary: 8.8.4.4

#--- Add a UE with terminals/quectel.yaml or terminals/external.yaml: preferred-access gnb.ocudu-usrp, target-cores core.ocudu-usrp ---#