OAM Configuration#

Startup Configuration (cuphycontroller)#

The application binary name for the combined cuPHY-CP + cuPHY is cuphycontroller. When cuphycontroller starts, it reads static configuration from configuration YAML files. This section describes the fields in the YAML files.

aerial_sdk_version#

Aerial CUDA Accelerated RAN version

l2adapter_filename#

This field contains the filename of the YAML-format config file for l2 adapter configuration.

aerial_metrics_backend_address#

Aerial Prometheus metrics backend address.

low_priority_core#

CPU core shared by all low-priority threads, isolated CPU core is preferred. Can be non-isolated CPU core but make sure no other heavy load task on it.

enable_ptp_svc_monitoring#

Enable/disable the ptp service status monitoring

  • 0 – Disabled

  • 1 – Enabled

If enabled:

  1. On startup, cuphycontroller will exit the initialization if ptp status is not correct.

  2. At runtime, cuphycontroller will send FAPI error indication with code SCF_ERROR_CODE_PTP_SVC_ERROR = 0x42 if ptp service status is not correct. And will send FAPI error indication with code SCF_ERROR_CODE_PTP_SYNCED = 0x43 once ptp service status is recovered.

Note: this function assumes ptp services are installed on BM and cuphycontroller running in container environment

ptp_rms_threshold#

The rms threshold by which to judge whether the ptp services(ptp4l and phc2sys) are in sync

enable_rhocp_ptp_events_monitoring#

Enable or disable PTP status monitoring on the Red Hat OpenShift (RHOCP) platform. Note that this functionality requires that the RHOCP PTP operator is already configured and running with ptp4lOpts and phc2sysOpts set as expected.

Values:

  • 0 – Disabled

  • 1 – Enabled

When enabled, cuphycontroller polls the hardware clock (PHC) and the system clock (OS clock) synchronization status of rhocp_ptp_node_name once per second. If either clock is not reported as synchronized, it sends a FAPI error indication with code SCF_ERROR_CODE_RHOCP_PTP_EVENTS_ERROR = 0x46. Once both clocks are reported as synchronized again, it sends a FAPI error indication with code SCF_ERROR_CODE_RHOCP_PTP_EVENTS_SYNCED = 0x47 to indicate that the PTP status has returned to synced.

Per the RHOCP PTP hardware documentation, the maxOffsetThreshold and minOffsetThreshold settings configure offset values in nanoseconds that are compared against the values for CLOCK_REALTIME (phc2sys) or the master offset (ptp4l). When the ptp4l or phc2sys offset value is outside this range, the PTP clock state is set to FREERUN (not synced). When the offset value is within this range, the PTP clock state is set to LOCKED (synced). You can configure maxOffsetThreshold and minOffsetThreshold in the RHOCP PTP configuration according to your requirements.

rhocp_ptp_node_name#

OpenShift node name of the DU node whose PTP status you want to monitor. This must exactly match the NAME column from:

oc get node

In most deployments, this is the node FQDN. For example:

rhocp_ptp_node_name: rhocp-node-01.example.com

rhocp_ptp_publisher#

Network address of the PTP event publisher (the cloud-event-proxy HTTP endpoint exposed by the PTP Operator on the DU node).

The publisher listens on port 9043. The format is:

<node-fqdn>:9043

The <node-fqdn> part must be the same host as rhocp_ptp_node_name. For example:

rhocp_ptp_publisher: rhocp-node-01.example.com:9043

rhocp_ptp_consumer#

The RHOCP PTP event consumer is cuphycontroller (the DU application). In most deployments, it runs on the same node as the publisher, because cuphycontroller monitors the PTP status of its own DU node. Consumer listens on port 9050. A typical configuration is therefore:

rhocp_ptp_consumer: rhocp-node-01.example.com:9050

nic_tput_alert_threshold_mbps#

This parameter is used to monitor NIC throughput. The units are in Mbps, that is, 85000 = 85 Gbps. This value is almost the max throughput that can be achieved with accurate send scheduling for a 100 Gbps link. A gRPC client(reference: $cuBB_SDK/cuPHY-CP/cuphyoam/examples/test_grpc_push_notification_client.cpp) needs to be implemented to receive the alert.

cuphydriver_config#

This container holds configuration for cuphydriver.

standalone#

0 - run cuphydriver integrated with other cuPHY-CP components

1 - run cuphydriver in standalone mode (no l2adapter, etc)

validation#

Enables additional validation checks at run-time.

0 - Disabled

1 - Enabled

num_slots#

Number of lots to run in cuphydriver standalone test.

log_level#

cuPHYDriver log level: DBG, INFO, ERROR.

profiler_sec#

Number of seconds to run the CUDA profiling tool.

dpdk_thread#

Sets the CPU core used by the primary DPDK thread. It does not have to be an isolated core. And the DPDK thread itself is defaulted to ‘SCHED_FIFO+priority 95’.

dpdk_verbose_logs#

Enable maximum log level in DPDK.

0 - Disable

1 - Enable

accu_tx_sched_res_ns#

Sets the accuracy of the accurate transmit scheduling, in units of nanoseconds.

accu_tx_sched_disable#

Disable accurate TX scheduling.

0 - packets are sent according to the TX timestamp

1 - packets are sent whenever it is convenient

fh_stats_dump_cpu_core#

Sets the CPU core used by the FH stats logging thread. It does not have to be an isolated core. And currently the default FH stats polling interval is 500ms.

use_green_contexts#

This is an experimental feature for development and testing. Please keep it as disabled.

0 - Disabled

1 - Enabled

pusch_enable_perprgchest#

Supported per-PRG level channel estimation. It should be enabled for mMIMO (i.e., set to 1).

0 - Disabled

1 - Enabled

pusch_workCancelMode#

This parameter was created for a future use. Other values than the default value are still experimental. Please keep using the default value (i.e., 2).

pusch_nMaxLdpcHetConfigs#

Set the maximum number of different (heterogeneous) LDPC decoder configurations that can be used simultaneously in PUSCH uplink processing

pusch_weighted_average_cfo#

Enables weighted temporal averaging of Carrier Frequency Offset (CFO) estimates for improved accuracy in PUSCH uplink processing

0 - Disabled

1 - Enabled

use_batched_memcpy#

This parameter controls the use of the new, as of CUDA 12.8, cuMemcpyBatchAsync API. This feature allows a group of memory copies to be performed asynchronously as a single batch, rather than one at a time. When set to 1, the code leverages the new cuMemcpyBatchAsync API in different parts of the Aerial code. Instead of doing multiple calls to cudaMemcpyAsync for different copies in the same direction (e.g., host to device or device to host), these copies are batched and launched via a single cuMemcpyBatchAsync call. Doing so can have benefits both on the GPU side and on the CPU side.

0 - Disabled

1 - Enabled

pdsch_fallback#

Testing/debugging mode for PDSCH downlink processing. Please keep at default of 0. It allows running the same test configuration repeatedly without full re-initialization while ensuring correct results by resetting accumulator buffers.

0 - Disabled

1 - Enabled

pmu_metrics#

Enable and select PMU metrics

0 - Disabled

1 - General Counters (platform agnostic)

2 - Topdown Metrics (Grace only)

3 - Cache Metrics (Grace only)

max_harq_pools#

This param was introduced to set the “harq pool size” (number of harq elements in the pool). Again, default value of “384” is fine for non-UL heavy TDD slot patterns but needs to be increased to a higher value (Eg:512) for UL heavy TDD slot patterns in order to mitigate harq pool depletion errors.

max_harq_tx_count_bundled#

This param was introduced to set the maximum number of HARQ TX count that can be bundled together in multi slot ULSCH procedure. Default value is “9”.

max_harq_tx_count_non_bundled#

This param was introduced to set the maximum number of HARQ TX count in non-multi slot ULSCH procedure. Default value is “4”.

cus_port_failover#

Flag to enable/disable Port failover feature. Enabling the flag results in spawning a new thread on the low priority core to listen for port down event and switching to the secondary port at the onset of such an event and vice-versa.

0 - Disabled

1 - Enabled

ul_order_kernel_mode#

The UL order kernel has two functionalities: receiving packets and processing the packets. The Dual CTA mode (previous implementation) is that these processes will be processed sepalately by even and odd CTAs. This mode is replaced with the ping-pong mode since 25-2. The Ping-pong mode uses a single CTA for both processings.

0 - The Ping-pong mode

1 - The Dual CTA mode

ul_order_timeout_gpu_log_enable#

Enable/Disable order kernel timeout log

0 - Disabled

1 - Enabled

ul_order_timeout_cpu_ns#

Timeout, in units of nanoseconds, for the uplink order kernel to receive any U-plane packets for this slot.

ul_order_timeout_gpu_ns#

Timeout, in units of nanoseconds, for the order kernel to complete execution on the GPU.

ul_order_timeout_gpu_srs_ns#

Timeout, in units of nanoseconds, for the SRS order kernel to complete execution on the GPU.

ul_order_timeout_log_interval_ns#

The minimum distance(in units of nanoseconds) between the UL order kernel timeout logs

ul_order_max_rx_pkts#

Applied to order kernel function for receiving UL UPlane packets. Maximum number of packets allowed for each call.

ul_order_rx_pkts_timeout_ns#

Applied to order kernel function for receiving UL UPlane packets. Nanoseconds to wait for packets before returning.

ul_srs_aggr3_task_launch_offset_ns#

This parameter is the time offset to start the aggr3 task for SRS in the cuphydriver after the corresponding UL_TTI.request is processed.

ok_testbench_config#

Reorder kernel testbench related configuration

enable_ok_tb#

Flag to enable Uplink FH packet dump for Reorder kernel test bench. Needed only for test bench runs and not required for mission mode operations. Should be set to 0

0 - Disable

1 - Enable

num_ok_tb_slot#

Number of slots to run the Reorder kernel test bench and is N/A if enable_ok_tb is set to 0.

sendCPlane_ulbfw_backoff_th_ns#

This is used to determine the deadline of the UL BFW calculation from the start of the calculation.

sendCPlane_dlbfw_backoff_th_ns#

This is used to determine the deadline of the DL BFW calculation from the start of the calculation.

ul_pcap_capture_enable#

This feature allows us to capture UL FH PCAP files when CRC error is detected. When this feature is enabled, one specific thread will be created and check if there are any packets should be exported every 5 us. If you don’t use this feature, please disable this parameter.

ul_pcap_capture_thread_cpu_affinity#

We have verified this feature using a specific CPU core

ul_pcap_capture_thread_sched_priority#

This parameter controls the priority of ul pcap thread.

pcap_logger_ul_cplane_enable#

Enable/disable the support for logging UL C-Plane.

0 - Disable: Will not invoke the PCAP logging feature for UL C-Plane

1 - Enable: Will Enable UL PCAP logging feature to log UL C-Plane packets as .pcap files

pcap_logger_dl_cplane_enable#

Enable/disable the support for logging DL C-Plane.

0 - Disable: Will not invoke the PCAP logging feature for DL C-Plane

1 - Enable: Will Enable UL PCAP logging feature to log DL C-Plane packets as .pcap files

pcap_logger_thread_cpu_affinity#

When either pcap_logger_ul_cplane_enable or pcap_logger_dl_cplane_enable is 1, spins up a thread to collect and log the C-Plane packet memories produced. This parameter controls the CPU affinity of the thread

pcap_logger_thread_sched_prio#

When either pcap_logger_ul_cplane_enable or pcap_logger_dl_cplane_enable is 1, spins up a thread to collect and log the C-Plane packet memories produced. This parameter controls the priority of that thread.

pcap_logger_file_save_dir#

When either pcap_logger_ul_cplane_enable or pcap_logger_dl_cplane_enable is 1, this parameter controls the file path of where the .pcap files are saved

dlc_bfw_enable_divide_per_cell#

If enabled, DL C BFW will be evenly spread across the TX window based on Cell index in the slot

ulc_bfw_enable_divide_per_cell#

If enabled, UL C BFW will be evenly spread across the TX window based on Cell index in the slot

dlc_alloc_cplane_bfw_txq#

Enable/disable the allocation of a separate queue for DL BFW transmission.

0 - Disable: Uses a single queue to transmit both BFW and non-BFW DL C-Plane packets.

1 - Enable: Uses a separate queue to transmit both BFW DL C-Plane packets.

ulc_alloc_cplane_bfw_txq#

Enable/disable the allocation of a separate queue for UL BFW transmission.

0 - Disable: Uses a single queue to transmit both BFW and non-BFW UL C-Plane packets.

1 - Enable: Uses a separate queue to transmit both BFW UL C-Plane packets.

bfw_beta_prescaler#

Allow for prescaling BFW values to use the full range of exponents

cqe_tracer_config#

Configuration of tracing for DL CQEs (debug feature to check for DL U-plane packets’ timing at the NIC).

enable_dl_cqe_tracing#

0 - Disabled

1 - Enabled

cqe_trace_cell_mask#

64 bit mask: Bit0->Cell0, Bit1->Cell1…

cqe_trace_slot_mask#

20 bit mask: Bit0->Slot0, Bit1->Slot1… 196800=>All *6,*7 DL Slots

gpu_init_comms_dl#

0 - CPU initiated DL UPlane (deprecated)

1 - GPU initiated DL UPlane

pdump_client_thread#

CPU core to use for pdump client. Set to -1 to disable fronthaul RX traffic PCAP capture.

See:

  1. https://doc.dpdk.org/guides/howto/packet_capture_framework.html

  2. aerial-fh README.md

mps_sm_pusch#

Number of SMs for PUSCH channel.

mps_sm_pucch#

Number of SMs for PUCCH channel.

mps_sm_pusch#

Number of SMs for PUSCH channel.

mps_sm_prach#

Number of SMs for PRACH channel.

mps_sm_ul_order#

Number of SMs for UL order kernel.

mps_sm_pdsch#

Number of SMs for PDSCH channel.

mps_sm_pdcch#

Number of SMs for PDCCH channel.

mps_sm_pbch#

Number of SMs for PBCH channel.

mps_sm_srs#

Number of SMs for SRS channel.

mps_sm_gpu_comms#

Number of SMs for GPU comms.

nics#

Container for NIC configuration parameters.

nic#

PCIe bus address of the NIC port.

mtu#

Maximum transmission size, in bytes, supported by the Fronthaul U-plane and C-plane.

cpu_mbufs#

Number of preallocated DPDK memory buffers (mbufs) used for Ethernet packets.

uplane_tx_handles#

The number of pre-allocated transmit handles that link the U-plane prepare() and transmit() functions.

txq_size#

Number of packets that can fit in each transmit queue.

rxq_size#

Number of packets that can be buffered in each receive queue.

gpu#

CUDA device to receive uplink packets from this NIC port.

gpus#

List of GPU device IDs. To use gpudirect, the GPU must be on the same PCIe root complex as the NIC. To maximize performance, the GPU should be on the same PCIe switch as the NIC. Only the first entry in the list is used.

workers_ul#

List of pinned CPU cores used for uplink worker threads.

workers_dl#

List of pinned CPU cores used for downlink worker threads.

debug_worker#

For performance debug purpose, this is set to a free core to work with the enable_*_tracing logs.

workers_sched_priority#

cuPHYDriver worker threads scheduling priority.

dpdk_file_prefix#

Shared data file prefix to use for the underlying DPDK process.

wfreq#

Filename containing the coefficients for channel estimation filters, in HDF5 (.h5) format.

cell_group#

Enable cuPHY cell groups.

0 - disable

1 - enable

cell_group_num#

Number of cells to be configured in L1 for the test.

enable_h2d_copy_thread#

Enable/disable offloading of h2d copy in L2A to a separate copy thread.

h2d_copy_thread_cpu_affinity#

CPU core on which the h2d copy thread in L2A should run. Applicable only if enable_h2d_copy_thread is 1.

h2d_copy_thread_sched_priority#

h2d copy thread priority in L2A. Applicable only if enable_h2d_copy_thread is 1.

fix_beta_dl#

Fix the beta_dl for local test with RU Emulator so that the output values are a bytematch to the TV.

prometheus_thread#

Pinned CPU core for updating NIC metrics once per second.

start_section_id_srs#

O-RAN CUS start section ID for the SRS channel.

start_section_id_prach#

O-RAN CUS start section ID for the PRACH channel.

enable_ul_cuphy_graphs#

Enable UL processing with CUDA graphs.

enable_dl_cuphy_graphs#

Enable DL processing with CUDA graphs.

section_3_time_offset#

Time offset, in units of nanoseconds, for the PRACH channel.

pusch_sinr#

Enable pusch sinr calculation (0 by default).

pusch_rssi#

Enable PUSCH RSSI calculation (0 by default).

pusch_tdi#

Enable PUSCH TDI processing (0 by default).

pusch_cfo#

Enable PUSCH CFO calculations (0 by default).

pusch_dftsofdm#

DFT-s-OFDM enable/disable flag: 0 - disable, 1 - enable.

pusch_to#

It is only used for timing offset reporting to L2. If the timing offset estimate is not used by L2, it can be disabled.

pusch_select_eqcoeffalgo#

Algorithm selector for PUSCH noise interference estimation and channel equalization. The following values are supported:

0: Regularized zero-forcing (RZF)

1: Diagonal MMSE regularization

2: Minimum Mean Square Error - Interference Rejection Combining (MMSE-IRC)

3: MMSE-IRC with RBLW covariance shrinkage

4: MMSE-IRC with OAS covariance shrinkage.

pusch_select_chestalgo#

Channel estimation algorithm selection:

0 - Legacy MMSE

1 - Multi-stage MMSE with delay estimation

pusch_tbsizecheck#

Tb size verification enable/disable flag:

0 - Disable

1 - Enable

pusch_subSlotProcEn#

Sub-slot processing enable/disable flag: 0 - disable, 1 - enable. The early HARQ feature will be enabled accordingly when this flag is enabled. To get HARQ values in UCI.indication for UCI on PUSCH, before complete PUSCH slot processing, L2 should include PHY configuration TLV 0x102B (indicationInstancesPerSlot) with UCI.indication set to 2, according to Table 3–36 in SCF FAPI 222.10.04. If UCI.indication set to 2 in CONFIG.request for any cell the early HARQ feature will get activated for all cells.

pusch_deviceGraphLaunchEn#

Static flag to allow device graph launch in PUSCH.

pusch_waitTimeOutPreEarlyHarqUs#

Timeout threshold in microseconds for receiving OFDM symbols for PUSCH early-HARQ processing.

pusch_waitTimeOutPostEarlyHarqUs#

Timeout threshold in microseconds for receiving OFDM symbols for PUSCH non-early-HARQ processing (essentially all the PUSCH symbols).

puxch_polarDcdrListSz#

List size used in List Decoding of Polar codes.

disable_empw#

0 - Enable Multi packet WQE feature

1 - Disable Multi packet WQE feature

enable_cpu_task_tracing#

The flag is used to trace and instrument DL/UL CPU tasks running on existing cuphydriver cores.

enable_prepare_tracing#

It’s for tracing the U-plane packet preparation kernel durations and end times and need the debug worker to be enabled.

ul_warmup_frame_count#

Ignore first ‘ul_warmup_frame_count’ worth of frames when computing ontime statistics, allowing the system to stabilize before measurements begin.

ul_rx_pkt_tracing_level#

This YAML param can be set to 3 different values:

0 (default, recommended) : Only keeps count of the early/ontime/late packet counters per slot as seen by the DU (Reorder kernel) for the Uplink U-plane packets.

1 : Also Captures and logs earliest/latest packet timestamp per symbol per slot as seen by the DU.

2 : Also Captures and logs timestamp of each packet received per symbol per slot as seen by the DU.

ul_rx_pkt_tracing_level_srs#

This YAML param can be set to 3 different values:

0 (default, recommended) : Only keeps count of the early/ontime/late packet counters per slot as seen by the DU (Reorder kernel) for the Uplink SRS U-plane packets.

1 : Also Captures and logs earliest/latest packet timestamp per symbol per slot as seen by the DU.

2 : Also Captures and logs timestamp of each packet received per symbol per slot as seen by the DU.

serialize_pucch_pusch#

0 - Do not force serialization of PUSCH/PUCCH

1 - Force serialization of PUSCH/PUCCH

Note:

  • For Early Harq (EH) order is PUSCH EH -> PUCCH -> PUSCH non EH

  • For non-Early Harq order is PUCCH -> all PUSCH processing

notify_ul_harq_buffer_release#

Controls whether to send notifications when uplink HARQ buffers are released. Allows the MAC/L2 layer to track which HARQ resources have been freed by the PHY, enabling better resource management and debugging of HARQ buffer pool exhaustion issues

0 - Disabled

1 - Enabled

split_ul_cuda_streams#

Keep default of 0. This allows back to back UL slots to overlap their processing. Keep disabled to maintain performance of first UL slot in every group of 2.

aggr_obj_non_avail_th#

Keep the default value at 5. This param sets the threshold for successive non-availability of L1 objects (can be interpreted as L1 handler necessary to schedule PHY compute tasks to the GPU). Unavailability could imply the execution timeline falling behind the expected L1 timeline budget.

dl_wait_th_ns#

This parameter is used for error handling in the event of GPU failure. You must keep the defaults.

sendCPlane_timing_error_th_ns#

Keep the default value at 50000 (50 us). The threshold is used as a check for the proximity of the current time during C-plane task’s execution to the actual scheduled C-plane packet’s transmission time. Meeting the threshold check would result in C-plane packet transmission being dropped for the slot.

pusch_forcedNumCsi2Bits#

Debug feaure if > 0, overrides the number of PUSCH CSI-P2 bits for all CSI-P2 UCIs with the non-zero value provided. Recommend setting it to 0.

mMIMO_enable#

Keep at default of 0. This flag is reserved for future capability.

bfw_c_plane_chaining_mode#

Determine how to generate/construct cplane BFW weights

0 - Default memcpy of BFW weights

1 - CPU mbuf chaining of BFW weights

2 - GPU mbuf chaining of BFW weights

notify_ul_harq_buffer_release#

Controls whether to send notifications when uplink HARQ buffers are released on HARQ buffer pool depletion. Allows the MAC/L2 layer to track which HARQ resources have been freed by the PHY, enabling better resource management and debugging of HARQ buffer pool exhaustion issues

0 - Disabled

1 - Enabled

enable_srs#

Enable/disable SRS

srs_chest_algo_type#

Select the channel estimation algorithm for SRS (Sounding Reference Signal) processing used in massive MIMO beamforming

0 = MMSE (Minimum Mean Square Error) - Default

1 = RKHS (Reproducing Kernel Hilbert Space)

srs_chest_tol2_normalization_algo_type#

The algorithm selection for the normalization of SRS channel estimation results reported to L2.

0 - constant scaling

1 - peak-value normalization (by default).

srs_chest_tol2_constant_scaler#

Only valid and used as a constant scaler when srs_chest_tol2_normalization_algo_type is set to 0.

bfw_power_normalization_alg_selector#

Selects the power normalization algorithm used for beamforming weights (BFW) computation in both uplink and downlink

0 - Frobenius norm normalization

1 - Layer-then-antenna normalization

total_num_srs_chest_buffers#

The total number of buffers to store SRS Channel esitamates in L1 across all cells. Maximum value of total_num_srs_chest_buffers is 6144. Details can be found in “SCF FAPI Support” section.

Ta4_min_ns_srs#

SRS packet reception window start in units of nanoseconds.Present value is 621000.

Ta4_max_ns_srs#

SRS packet reception window end in units of nanoseconds. Present value is 1831000.

static_beam_id_start#

Start of static beam ID range. Present value is 1.

static_beam_id_end#

End of static beam ID range. Present value is 16527.

dynamic_beam_id_start#

Start of dynamic beam ID range. Present value is 16528.

dynamic_beam_id_end#

End of dynamic beam ID range. Present value is 32767.

Note: static and dynamic beam ID range control

  1. Please make sure that the static and dynamic beam ID ranges do not overlap and dynamic beam ids starts after static beam id ends.

  2. Maximum value of beamId is 32767.

send_static_bfw_wt_all_cplane#

Enable/disable the support of static beamforming weight transmission for all slots in C-plane.

0 - Disable: Will send static beamforming weight first time and only once in C-plane.

1 - Enable: Will send static beamforming weight for all slots in C-plane.

enable_csip2_v3#

Enable/disable the the support of CSI part2 defined by FAPI 10.03 Table 3-77

mCh_segment_proc_enable#

Channel Segment Processing Timeline Validation. Enables tracking and validation of PHY channel processing timelines to ensure each channel completes within its allocated time budget

0 - Disabled

1 - Enabled

pusch_aggr_per_ctx#

Number of PUSCH objects per context.

prach_aggr_per_ctx#

Number of PRACH objects per context.

pucch_aggr_per_ctx#

Number of PUCCH objects per context.

srs_aggr_per_ctx#

Number of SRS objects per context.

ul_input_buffer_per_cell#

Number of UL buffers allocated per cell.

ul_input_buffer_per_cell_srs#

Number of UL buffers allocated per cell for SRS.

ue_mode#

Flag for spectral efficiency feature. Must be enabled on the RU side YAML to emulate UE operation.

cplane_disable#

Disable C-plane for all cells.

0 - Enable C-plane

1 - Disable C-plane

max_ru_unhealthy_ul_slots#

If L1 detects missing or late UL data for aggr_obj_non_avail_th/2 consecutive UL slots, L1 will not read any UL data from that ORU for the next max_ru_unhealthy_ul_slots consecutive UL slots. This is done in order to protect the timing of UL pipelines for the rest of the cells. Set to 0 to disable this functionality. The default value is 100.

cells#

List of containers of cell parameters.

name#

Name of the cell

cell_id#

ID of the cell.

src_mac_addr#

Source MAC address for U-plane and C-plane packets. Set to 00:00:00:00:00:00 to use the MAC address of the NIC port in use.

dst_mac_addr#

Destination MAC address for U-plane and C-plane packets.

nic#

gNB NIC port to which the cell is attached.

Must match the ‘nic’ key value in one of the elements of in the ‘nics’ list.

vlan#

VLAN ID used for C-plane and U-plane packets.

pcp#

QoS priority codepoint used for C-plane and U-plane Ethernet packets.

txq_count_uplane#

Number of transmit queues used for U-plane.

eAxC_id_ssb_pbch#

List of eAxC IDs to use for SSB/PBCH.

eAxC_id_pdcch#

List of eAxC IDs to use for PDCCH.

eAxC_id_pdsch#

List of eAxC IDs to use for PDSCH.

eAxC_id_csirs#

List of eAxC IDs to use for CSI RS.

eAxC_id_pusch#

List of eAxC IDs to use for PUSCH.

eAxC_id_pucch#

List of eAxC IDs to use for PUCCH.

eAxC_id_srs#

List of eAxC IDs to use for SRS.

eAxC_id_prach#

List of eAxC IDs to use for PRACH.

dl_iq_data_fmt:comp_meth#

DL U-plane compression method:

0: Fixed point

1: BFP

4: Modulation compression

dl_iq_data_fmt:bit_width#

Number of bits used for each RE on DL U-plane channels.

Fixed point supported value: 16

BFP supported value: 9, 14, 16

ul_iq_data_fmt:comp_meth#

UL U-plane compression method:

0: Fixed point

1: BFP

ul_iq_data_fmt:bit_width#

Number of bits used per RE on uplink U-plane channels.

Fixed point supported value: 16

BFP supported value: 9, 14, 16

fs_offset_dl#

Downlink U-plane scaling per O-RAN CUS 6.1.3.

exponent_dl#

Downlink U-plane scaling per O-RAN CUS 6.1.3.

ref_dl#

Downlink U-plane scaling per O-RAN CUS 6.1.3.

fs_offset_ul#

Uplink U-plane scaling per O-RAN CUS 6.1.3.

exponent_ul#

Uplink U-plane scaling per O-RAN CUS 6.1.3.

max_amp_ul#

Maximum full scale amplitude used in uplink U-plane scaling per O-RAN CUS 6.1.3.

mu#

3GPP subcarrier bandwidth index ‘mu’.

0 - 15 kHz

1 - 30 kHz

2 - 60 kHz

3 - 120 kHz

4 - 240 kHz

T1a_max_up_ns#

Scheduled timing advance before time-zero for downlink U-plane egress from DU, per O-RAN CUS.

T1a_max_cp_ul_ns#

Scheduled timing advance before time-zero for uplink C-plane egress from DU, per O-RAN CUS.

T1a_min_cp_ul_ns#

The same meaning as the O-RAN definition and the same value as NR TDD IOT M-MIMO Profile 1 - NR-TDD-FR1-CAT-B-mMIMO-RTWeights-BFP Entry-1.

T1a_max_cp_dl_ns#

The same meaning as the O-RAN definition and the same value as NR TDD IOT M-MIMO Profile 1 - NR-TDD-FR1-CAT-B-mMIMO-RTWeights-BFP Entry-1.

T1a_min_cp_dl_ns#

The same meaning as the O-RAN definition and the same value as NR TDD IOT M-MIMO Profile 1 - NR-TDD-FR1-CAT-B-mMIMO-RTWeights-BFP Entry-1.

Ta4_min_ns#

Start of DU reception window after time-zero, per O-RAN CUS.

Ta4_max_ns#

End of DU reception window after time-zero, per O-RAN CUS.

Tcp_adv_dl_ns#

Downlink C-plane timing advance ahead of U-plane, in units of nanoseconds, per O-RAN CUS.

ul_u_plane_tx_offset_ns#

Flag for spectral efficiency feature. Must be set on the RU side YAML to offset UL transmission start from T0.

pusch_prb_stride#

Memory stride, in units of PRBs, for the PUSCH channel. Affects GPU memory layout.

prach_prb_stride#

Memory stride, in units of PRBs, for the PRACH channel. Affects GPU memory layout.

srs_prb_stride#

Memory stride, in units of PRBs, for the SRS. Affects GPU memory layout.

pusch_ldpc_max_num_itr_algo_type#

0 - Fixed LDPC iteration count

1 - MCS based LDPC iteration count

Recommend setting pusch_ldpc_max_num_itr_algo_type:1

pusch_fixed_max_num_ldpc_itrs#

Unused currently, reserved to replace pusch_ldpc_n_iterations.

pusch_ldpc_n_iterations#

Iteration count is set to pusch_ldpc_n_iterations, when the fixed LDPC iteration count option is selected (pusch_ldpc_max_num_itr_algo_type:0). Because the default value of pusch_ldpc_max_num_itr_algo_type is 1 (iteration count optimized based on MCS), pusch_ldpc_n_iterations is unused.

pusch_ldpc_algo_index#

Algorithm index for LDPC decoder: 0 - automatic choice.

pusch_ldpc_flags#

pusch_ldpc_flags are flags that configure the LDPC decoder. pusch_ldpc_flags:2 selects an LDPC decoder that optimizes for throughput i..e processes more than one codeword (for example, 2) instead of latency.

pusch_ldpc_use_half#

Indication of input data type of LDPC decoder:

0 - Single precision

1 - Half precision

pusch_nMaxPrb#

This is for memory allocation of max PRB range of peak cells compared to average cells.

ul_gain_calibration#

UL Configured Gain used to convert dBFS to dBm. Default value, if unspecified: 48.68

lower_guard_bw#

Lower Guard Bandwidth expressed in kHZ. Used for deriving freqOffset for each Rach Occasion. Default is 845.

tv_pusch#

HDF5 file containing static configuration (for example, filter coefficients) for the PUSCH channel.

pusch_ldpc_early_termination#

PUSCH LDPC channel coding early termination.

0 - Disable

1 - Enable

Startup Configuration (l2_adapter_config)#

msg_type#

Defines the L2/L1 interface API. Supported options are:

  • scf_fapi_gnb - Use the small cell forum API.

phy_class#

Same as msg_type.

tick_generator_mode#

The SLOT.incication interval generator mode:

0 - poll + sleep. During each tick the threads sleep some time to release the CPU core to avoid hanging the system, then they poll the system time.

1 - sleep. Sleep to absolute timestamp, no polling.

2 - timer_fd. Start a timer and call epoll_wait() on the timer_fd.

allowed_fapi_latency#

Allowed maximum latency of SLOT FAPI messages, which send from L2 to L1, otherwise the message is ignored and dropped.

Unit: slot.

Default is 0, it means L2 message should be received in current slot.

allowed_tick_error#

Allowed tick interval error.

Unit: us

Tick interval error is printed in statistic style. If observed tick error > allowed, the log is printed as Error level.

timer_thread_config#

Configuration for the timer thread.

name#

Name of thread.

cpu_affinity#

Id of pinned CPU core used for timer thread.

sched_priority#

Scheduling priority of timer thread.

message_thread_config#

Configuration container for the L2/L1 message processing thread.

name#

Name of thread.

cpu_affinity#

Id of pinned CPU core used for timer thread.

sched_priority#

Scheduling priority of message thread.

ptp#

ptp configs for GPS_ALPHA, GPS_BETA.

gps_alpha#

GPS Alpha value for O-RAN WG4 CUS section 11.7.2. Default value = 0, if undefined.

gps_beta#

GPS Beta value for O-RAN WG4 CUS section 11.7.2. Default value = 0, if undefined.

mu_highest#

Highest supported mu, used for scheduling TTI tick rate.

slot_advance#

Timing advance ahead of time-zero, in units of slots, for L1 to notify L2 of a slot request.

enableTickDynamicSfnSlot#

Enable dynamic slot/sfn.

staticPucchSlotNum#

Debugging param for testing against RU Emulator to send set static PUCCH slot number.

staticPuschSlotNum#

Debugging param for testing against RU Emulator to send set static PUSCH slot number.

staticPdschSlotNum#

Debugging param for testing against RU Emulator to send set static PDSCH slot number.

staticPdcchSlotNum#

Debugging param for testing against RU Emulator to send set static PDCCH slot number.

staticCsiRsSlotNum#

Debugging param for testing against RU Emulator to send set static CSI-RS slot number.

staticSsbSlotNum#

Override the incoming slot number with the YAML configured SlotNumber for SS/PBCH.

Example

staticSsbSlotNum:10

staticSsbPcid#

Debugging param for testing against RU Emulator to send set static SSB phycellId.

staticSsbSFN#

Debugging param for testing against RU Emulator to send set static SSB SFN.

pucch_dtx_thresholds#

Array of scale factors for DTX Thresholds of each PUCCH format.

Default value, if not present, is 1.0, which means the thresholds are not scaled.

For PUCCH format 0 and 1, -100.0 is replaced with 1.0.

Example:

pucch_dtx_thresholds: [-100.0, -100.0, 1.0, 1.0, -100.0]

pusch_dtx_thresholds#

Scale factor for DTX Thresholds of UCI on PUSCH.

Default value, if not present, is 1.0, which means the threshold is not scaled.

Example:

pusch_dtx_thresholds: 1.0

enable_precoding#

Enable/Disable Precoding PDUs to be parsed in L2Adapter.

Default value is 0

enable_precoding: 0/1

prepone_h2d_copy#

Enable/Disable preponing of H2D copy in L2Adapter.

Default value is 1

prepone_h2d_copy: 0/1

enable_beam_forming#

Enables/Disables BeamIds to parsed in L2Adapter.

Default value: 0

enable_beam_forming: 1

dl_tb_loc#

Transport block location in inside nvipc buffer.

Default value is 1

dl_tb_loc: 0 # TB is located in inline with nvipc’s msg buffer.

dl_tb_loc: 1 # TB is located in nvipc’s CPU data buffer.

dl_tb_loc: 2 # TB is located in nvipc’s GPU buffer.

instances#

Container for cell instances.

name#

Name of the instance.

nvipc_config_file#

Config dedicated YAML file for nvipc. Example: nvipc_multi_instances.yaml

transport#

Configuration container for L2/L1 message transport parameters.

type#

Transport type. One of shm, dpdk, or udp.

udp_config#

Configuration container for the udp transport type.

local_port#

UDP port used by L1.

remote_port#

UDP port used by L2.

shm_config#

Configuration container for the shared memory transport type.

primary#

Indicates process is primary for shared memory access.

prefix#

Prefix used in creating shared memory filename.

cuda_device_id#

Set this parameter to a valid GPU device ID to enable CPU data memory pool allocation in host pinned memory. Set to -1 to disable this feature.

ring_len#

Length, in bytes, of the ring used for shared memory transport.

mempool_size#

Configuration container for the memory pools used in shared memory transport.

cpu_msg#

Configuration container for the shared memory transport for CPU messages (that is, L2/L1 FAPI messages).

buf_size#

Buffer size in bytes.

pool_len#

Pool length in buffers.

cpu_data#

Configuration container for the shared memory transport for CPU data elements (that is, downlink and uplink transport blocks).

buf_size#

Buffer size in bytes.

pool_len#

Pool length in buffers.

cuda_data#

Configuration container for the shared memory transport for GPU data elements.

buf_size#

Buffer size in bytes.

pool_len#

Pool length in buffers.

dpdk_config#

Configurations for the DPDK over NIC transport type.

primary#

Indicates process is primary for shared memory access.

prefix#

The name used in creating shared memory files and searching DPDK memory pools.

local_nic_pci#

The NIC address or name used in IPC.

peer_nic_mac#

The peer NIC MAC address, only need to be set in secondary process (L2/MAC).

cuda_device_id#

Set this parameter to a valid GPU device ID to enable CPU data memory pool allocation in host pinned memory. Set to -1 to disable this feature.

need_eal_init#

Whether nvipc needs to call rte_eal_init() to initiate the DPDK context.

1 - initiate by nvipc

0 - initiate by other module in the same process

lcore_id#

The logic core number for nvipc_nic_poll thread.

mempool_size#

Configuration container for the memory pools used in shared memory. transport.

cpu_msg#

Configuration container for the shared memory transport for CPU messages (that is, L2/L1 FAPI messages).

buf_size#

Buffer size in bytes.

pool_len#

Pool length in buffers.

cpu_data#

Configuration container for the shared memory transport for CPU data elements (that is, downlink and uplink transport blocks).

buf_size#

Buffer size in bytes.

pool_len#

Pool length in buffers.

cuda_data#

Configuration container for the shared memory transport for GPU data elements.

buf_size#

Buffer size in bytes.

pool_len#

Pool length in buffers.

app_config#

Configurations for all transport types, mostly used for debug.

grpc_forward#

Whether to enable forwarding nvipc messages and how many messages to be forwarded automatically from initialization. Here count = 0 means forwarding every message forever.

0: Disabled

1: Enabled but doesn’t start forwarding at initial

-1: Enabled and start forwarding at initial with count = 0

Other positive number: enabled and start forwarding at initial with count = grpc_forward.

debug_timing#

For debug only.

Whether to record timestamp of allocating, sending, receiving, releasing of all nvipc messages.

pcap_enable#

For debug only.

Whether to capture nvipc messages to pcap file.

pcap_cpu_core#

CPU core of background pcap log save thread.

pcap_cache_size_bits#

Size of /dev/shm/${prefix}_pcap. If set to 29, size is 2^29 = 512MB.

pcap_file_size_bits#

Max size of /dev/shm/${prefix}_pcap. If set to 31, size is 2^31 = 2GB.

pcap_max_data_size#

Max DL/UL FAPI data size to capture reduce pcap size.

Startup Configuration (ru-emulator)#

The application binary name for the combined O-RU + UE emulator is ru-emulator. When ru-emulator starts, it reads static configuration from a configuration YAML file. This section describes the fields in the YAML file.

core_list#

List of CPU cores that RU Emulator could use.

nic_interface#

PCIe address of NIC to use that is, b5:00.1.

peerethaddr#

MAC address of cuPHYController port.

nvlog_name#

The nvlog instance name for ru-emulator. Detailed nvlog configurations are in nvlog_config.yaml.

cell_configs#

Cell configs agreed upon with DU.

name#

Cell string name (largely unused).

eth#

Cell MAC address.

dl_iq_data_fmt:comp_meth#

DL U-plane compression method:

0: Fixed point

1: BFP

4: Modulation compression

dl_iq_data_fmt:bit_width#

Number of bits used for each RE on DL U-plane channels.

Fixed point supported value: 16

BFP supported value: 9, 14, 16

ul_iq_data_fmt:comp_meth#

UL U-plane compression method:

0: Fixed point

1: BFP

ul_iq_data_fmt:bit_width#

Number of bits used for each RE on UL U-plane channels.

Fixed point supported value: 16

BFP supported value: 9, 14, 16

flow_list#

eAxC list

eAxC_prach_list#

eAxC prach list

vlan#

vlan to use for RX and TX

nic#

Index of the nic to use in the nics list.

tti#

Slot indication interval.

validate_dl_timing#

Validate DL timing (need to be PTP synchronized).

timing_histogram#

generate histogram

timing_histogram_bin_size#

histogram bin size

O-RAN_timing_info#

dl_c_plane_timing_delay#

t1a_max_up from O-RAN

dl_c_plane_window_size#

DL C Plane RX ontime window size.

ul_c_plane_timing_delay#

T1a_max_cp_ul from O-RAN.

ul_c_plane_window_size#

UL C Plane RX ontime window size.

dl_u_plane_timing_delay#

T2a_max_up from O-RAN.

dl_u_plane_window_size#

DL U Plane RX ontime window size.

ul_u_plane_tx_offset#

Ta4_min_up from O-RAN.

Run-time Configuration by Dynamic OAM#

During run-time, Aerial components can be re-configured by dynamic OAM via gRPC remote procedure calls. Refer to the Run-time Config and Status section for more details.

List of Parameters Supported by Dynamic OAM via gRPC and CONFIG.request#

The Configuration unit is across all cells/per cell config. The Cell outage is either in-service or out-of-service.

Note

With OAM commands, you can use localhost for the $SERVER_IP when running on DU server. Otherwise, use the DU server numeric IP address. $CELL_ID is the mplane id, which starts from 1. The default values of the parameters can be found in the corresponding cuphycontroller YAML config file: $cuBB_SDK/cuPHY-CP/cuphycontroller/config/cuphycontroller_xxx.yaml

ru_type#

  • Parameter Name: ru_type

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --ru_type $RU_TYPE
    
  • Notes: $RU_TYPE:

    • 1 for FXN_RU

    • 2 for FJT_RU

    • 3 for OTHER_RU (including ru_emulator)

nic#

  • Parameter Name: nic

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --nic $NIC
    
  • Notes: The nic PCIe address. It has to be one of the nic ports configured in cuphycontroller YAML file.

dst_mac_addr#

  • Parameter Name: dst_mac_addr

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --dst_mac_addr $DST_MAC_ADDR --vlan_id $VLAN_ID --pcp $PCP
    
  • Notes: The dst_mac_addr, vlan_id, and pcp parameters must be updated together.

vlan_id#

  • Parameter Name: vlan_id

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --dst_mac_addr $DST_MAC_ADDR --vlan_id $VLAN_ID --pcp $PCP
    
  • Notes: The dst_mac_addr, vlan_id, and pcp parameters must be updated together.

pcp#

  • Parameter Name: pcp

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --dst_mac_addr $DST_MAC_ADDR --vlan_id $VLAN_ID --pcp $PCP
    
  • Notes: The dst_mac_addr, vlan_id, and pcp parameters must be updated together.

dl_iq_data_fmt#

  • Parameter Name: dl_iq_data_fmt

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --dl_comp_meth $COMP_METH --dl_bit_width $BIT_WIDTH
    

ul_iq_data_fmt#

  • Parameter Name: ul_iq_data_fmt

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --ul_comp_meth $COMP_METH --ul_bit_width $BIT_WIDTH
    

exponent_dl#

  • Parameter Name: exponent_dl

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --exponent_dl $EXPONENT_DL
    

exponent_ul#

  • Parameter Name: exponent_ul

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --exponent_ul $EXPONENT_UL
    

prusch_prb_stride#

  • Parameter Name: prusch_prb_stride

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --pusch_prb_stride $PUSCH_PRB_STRIDE
    

prach_prb_stride#

  • Parameter Name: prach_prb_stride

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --prach_prb_stride $PRACH_PRB_STRIDE
    

max_amp_ul#

  • Parameter Name: max_amp_ul

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --max_amp_ul $MAX_AMP_UL
    

section_3_time_offset#

  • Parameter Name: section_3_time_offset

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --section_3_time_offset $SECTION_3_TIME_OFFSET
    

eAxC_id_xxx#

  • Parameter Name: eAxC_id_xxx

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_eaxcids_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --channel_eaxcids_yaml_file $cuBB_SDK/cuPHY-CP/cuphyoam/examples/test_eaxcids.yaml
    
  • Notes: The script will take $cuBB_SDK/cuPHY-CP/cuphyoam/examples/test_eaxcids.yaml as input for the updated eaxcids

fh_distance_range#

  • Parameter Name: fh_distance_range

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --fh_distance_range $FH_DISTANCE_RANGE
    
  • Notes: $FH_DISTANCE_RANGE: 0 for 0~30km, 1 for 20~50km. Suppose the following are the default configs in the cuhycontroller YAML config file that correspond to FH_DISTANCE_RANGE option 0 (0~30km).

    t1a_max_up_ns : d1
    
    t1a_max_cp_ul_ns : d2
    
    ta4_min_ns : d3
    
    ta4_max_ns : d4
    

    Updating the FH_DISTANCE_RANGE option to 1 (20~50km) adjusts the following values:

    t1a_max_up_ns :  d1+$FH_EXTENSION_DELAY_ADJUSTMENT
    
    t1a_max_cp_ul_ns :  d2+$FH_EXTENSION_DELAY_ADJUSTMENT
    
    ta4_min_ns :  d3+$FH_EXTENSION_DELAY_ADJUSTMENT
    
    ta4_max_ns :  d4+$FH_EXTENSION_DELAY_ADJUSTMENT
    
    $FH_EXTENSION_DELAY_ADJUSTMENT is 100us for now and can be tuned in source file:
    
    ${cuBB_SDK}/cuPHY-CP/cuphydriver/include/constant.hpp#L207
    
    static constexpr uint32_t FH_EXTENSION_DELAY_ADJUSTMENT = 100000;//100us
    

ul_gain_calibration#

  • Parameter Name: ul_gain_calibration

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --ul_gain_calibration $UL_GAIN_CALIBRATION
    

lower_guard_bw#

  • Parameter Name: lower_guard_bw

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --lower_guard_bw $LOWER_GUARD_BW
    

ref_dl#

  • Parameter Name: ref_dl

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --cell_id $CELL_ID --ref_dl $REF_DL
    

attenuation_db#

  • Parameter Name: attenuation_db

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_param_attn_update.py $CELL_ID $ATTENUATION_DB
    

gps_alpha#

  • Parameter Name: gps_alpha

  • Configuration Unit: across all cells

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --gps_alpha $GPS_ALPHA
    

gps_beta#

  • Parameter Name: gps_beta

  • Configuration Unit: across all cells

  • Cell Outage: out-of-service

  • OAM Command:

    cd $cuBB_SDK/build/cuPHY-CP/cuphyoam && python3 $cuBB_SDK/cuPHY-CP/cuphyoam/examples/aerial_cell_multi_attrs_update.py --server_ip $SERVER_IP --gps_beta $GPS_BETA
    
  • Notes: All cells have to be in idle state before configuring this param

prachRootSequenceIndex#

prachZeroCorrConf#

numPrachFdOccasions#

restrictedSetConfig#

prachConfigIndex#

K1#

UL bandwidth#

  • Parameter Name: UL bandwidth

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command: Via FAPI CONFIG.request. Refer to the Cell BW update Test section for more details.

DL bandwidth#

  • Parameter Name: DL bandwidth

  • Configuration Unit: per-cell config

  • Cell Outage: out-of-service

  • OAM Command: Via FAPI CONFIG.request. Refer to the Cell BW update Test section for more details.

  • Notes: This is no-op currently.

M-Plane Hybrid Mode O-RAN YANG Model Provisioning#

Aerial supports M-plane hybrid mode, which allows NMS/SMO, using O-RAN YANG data models to pass RU capabilities, C/U-plane transport config, and U-plane config to L1.

Here is the high level sequence diagram:

../../_images/m-plane-hybrid-mode-sequence-diagram.png

Data Model Procedures-Yang data tree write procedure

../../_images/yang-data-tree-write-procedure.png

Data Model Procedures-Yang data tree read procedure

../../_images/yang-data-tree-read-procedure.png

Data Model Transfer APIs#

syntax = "proto3";

package p9_messages.v1;

service P9Messages {
   rpc HandleMsg (Msg) returns (Msg) {}
 }

message Msg
{
     Header header = 1;
     Body body = 2;
}

message Header
{
     string msg_id = 1;            // Message identifier to
                                   // 1) Identify requests and notifications
                                   // 2) Correlate requests and response
     optional string oru_name = 2; // The name (identifier) of the O-RU, if present.
     int32 vf_id = 3;              // The identifier for the FAPI VF ID
     int32 phy_id = 4;             // The identifier for the FAPI PHY ID
     optional int32 trp_id = 5;    // The identifier PHY’s TRP, if any
}

message Body
{
     oneof msg_body
     {
          Request request = 1;
          Response response = 2;
     }
}

message Request
{
     oneof req_type
     {
          Get get = 1;
          EditConfig edit_config = 2;
     }
}

message Response
{
     oneof resp_type
     {
          GetResp get_resp = 1;
          EditConfigResp edit_config_resp = 2;
     }
}

message Get { repeated bytes filter = 1; }

message GetResp
{
     Status status_resp = 1;
     bytes data = 2;
}

message EditConfig
{
     bytes delta_config = 1; // List of Node changes with the associated operation to apply to the node
}

message EditConfigResp { Status status_resp = 1; }

message Error
{                                // Type of error as defined in RFC 6241 section 4.3
     string error_type = 1;      // Error type defined in RFC 6241, Appendix B
     string error_tag = 2;       // Error tag defined in RFC 6241, Appendix B
     string error_severity = 3;  // Error severity defined in RFC 6241, Appendix B
     string error_app_tag = 4;   // Error app tag defined in RFC 6241, Appendix B
     string error_path = 5;      // Error path defined in RFC 6241, Appendix B
     string error_message = 6;   // Error message defined in RFC 6241, Appendix B
}

message Status
{
     enum StatusCode
     {
          OK = 0;
          ERROR_GENERAL = 1;
     }
     StatusCode status_code = 1;
     repeated Error error = 2; // Optional: Error information
}

List of Parameters Supported by YANG Model#

The Configuration unit is across all cells/per cell config. The Cell outage is either in-service or out-of-service.

o-du-mac-address#

  • Parameter Name: o-du-mac-address

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: DU side mac address. It is translated to the corresponding ‘nic’ internally.

  • YANG Model:

    • o-ran-uplane-conf.yang

    • o-ran-processing-element.yang

    • ietf-interfaces.yang

  • xpath: /processing-elements/ru-elements/transport-flow/eth-flow/o-du-mac-address

ru-mac-address#

  • Parameter Name: ru-mac-address

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: MAC address of the corresponding RU

  • YANG Model:

    • o-ran-uplane-conf.yang

    • o-ran-processing-element.yang

    • ietf-interfaces.yang

  • xpath: /processing-elements/ru-elements/transport-flow/eth-flow/ru-mac-address

vlan-id#

  • Parameter Name: vlan-id

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: VLAN ID

  • YANG Model:

    • ietf-interfaces.yang

    • o-ran-interfaces.yang

    • o-ran-processing-element.yang

  • xpath: /processing-elements/ru-elements/transport-flow/eth-flow/vlan-id

pcp#

  • Parameter Name: pcp

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: VLAN priority level

  • YANG Model:

    • ietf-interfaces.yang

    • o-ran-interfaces.yang

    • o-ran-processing-element.yang

  • xpath: /interfaces/interface/class-of-service/u-plane-marking

ul_iq_data_fmt: bit_width#

  • Parameter Name: ul_iq_data_fmt: bit_width

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: Indicate the bit length after compression.

    • BFP values: 9 and 14; 16 for no compression

    • Fixed point values: Currently only supports 16

  • YANG Model: o-ran-uplane-conf.yang

  • xpath: /user-plane-configuration/low-level-tx-endpoints/compression/iq-bitwidth

ul_iq_data_fmt: comp_meth#

  • Parameter Name: ul_iq_data_fmt: comp_meth

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: Indicates the UL compression method.

    • BFP values: BLOCK_FLOATING_POINT

    • Fixed point values: NO_COMPRESSION

  • YANG Model: o-ran-uplane-conf.yang

  • xpath: /user-plane-configuration/low-level-tx-endpoints/compression/compression-method

dl_iq_data_fmt: bit_width#

  • Parameter Name: dl_iq_data_fmt: bit_width

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: Indicates the bit length after compression.

    • BFP values: 9 and 14; 16 for no compression

    • Fixed point values: Currently only supports 16

  • YANG Model: o-ran-uplane-conf.yang

  • xpath: /user-plane-configuration/low-level-rx-endpoints/compression/iq-bitwidth

dl_iq_data_fmt: comp_meth#

  • Parameter Name: dl_iq_data_fmt: comp_meth

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description: Indicates the DL compression method.

    • BFP values: BLOCK_FLOATING_POINT

    • Fixed point values: NO_COMPRESSION

  • YANG Model: o-ran-uplane-conf.yang

  • xpath: /user-plane-configuration/low-level-rx-endpoints/compression/compression-method

exponent_dl#

  • Parameter Name: exponent_dl

  • Configuration Unit: Per-cell config

  • Cell Outage: Out-of-service

  • Description:

  • YANG Model:

    • o-ran-uplane-conf.yang

    • o-ran-compression-factors.yang

  • xpath: /user-plane-configuration/low-level-rx-endpoints/compression/exponent

exponent_ul#

  • Parameter Name: exponent_ul

  • Configuration Unit: Per-cell config

  • Cell Outage: out-of-service

  • Description:

  • YANG Model:

    • o-ran-uplane-conf.yang

    • o-ran-compression-factors.yang

  • xpath: /user-plane-configuration/low-level-tx-endpoints/compression/exponent

Reference Examples#

The following is a client-side reference implementation:

$cuBB_SDK/cuPHY-CP/cuphyoam/examples/p9_msg_client_grpc_test.cpp

Below are a few examples for update and retrieval of related params.

Update ru-mac-address, vlan-id, and pcp#

#step 1: Edit $cuBB_SDK/cuPHY-CP/cuphyoam/examples/mac_vlan_pcp.xml and update ru_mac, vlan_id and pcp accordingly
#step 2: Run below cmd to do the provisioning
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd edit_config --xml_file $cuBB_SDK/cuPHY-CP/cuphyoam/examples/mac_vlan_pcp.xml
#step 3: Run below cmds to retrieve the config
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd get --xpath /o-ran-processing-element:processing-elements
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd get --xpath /ietf-interfaces:interfaces

Update o-du-mac-address(du nic port)#

#step 1: Edit $cuBB_SDK/cuPHY-CP/cuphyoam/examples/nic_du_mac.xml and update du_mac, which is translated to the corresponding nic port internally
#step 2: Run below cmd to do the provisioning
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd edit_config --xml_file $cuBB_SDK/cuPHY-CP/cuphyoam/examples/nic_du_mac.xml
#step 3: Run below cmd to retrieve the config
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd get --xpath /o-ran-processing-element:processing-elements

Update DL/UL IQ data format#

#step 1: Edit $cuBB_SDK/cuPHY-CP/cuphyoam/examples/iq_data_fmt.xml and update DL/UL IQ data format accordingly
(compression-method: BLOCK_FLOATING_POINT for BFP or NO_COMPRESSION for fixed point)
(iq-bitwidth: 9, 14, 16 for BFP or 16 for fixed point)
#step 2: Run below cmd to do the provisioning
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd edit_config --xml_file $cuBB_SDK/cuPHY-CP/cuphyoam/examples/iq_data_fmt.xml
#step 3: Run below cmd to retrieve the config
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd get --xpath /o-ran-uplane-conf:user-plane-configuration

Update dl and ul Exponent#

#step 1: Edit $cuBB_SDK/cuPHY-CP/cuphyoam/examples/dl_ul_exponent.xml and dl and ul exponent accordingly
#step 2: Run below cmd to do the provisioning
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd edit_config --xml_file $cuBB_SDK/cuPHY-CP/cuphyoam/examples/dl_ul_exponent.xml
#step 3: Run below cmd to retrieve the config
$cuBB_SDK/build/cuPHY-CP/cuphyoam/p9_msg_client_grpc_test --phy_id $mplane_id --cmd get --xpath /o-ran-uplane-conf:user-plane-configuration