OAM 配置#

启动配置 (cuphycontroller)#

用于组合 cuPHY-CP + cuPHY 的应用程序二进制名称是 cuphycontroller。当 cuphycontroller 启动时,它从配置 YAML 文件中读取静态配置。本节介绍 YAML 文件中的字段。

l2adapter_filename#

此字段包含 l2 适配器配置的 YAML 格式配置文件的文件名。

aerial_metrics_backend_address#

Aerial Prometheus 指标后端地址。

low_priority_core#

所有低优先级线程共享的 CPU 核心,首选隔离的 CPU 核心。可以是未隔离的 CPU 核心,但请确保其上没有其他重负载任务。

nic_tput_alert_threshold_mbps#

此参数用于监视 NIC 吞吐量。单位为 Mbps,即 85000 = 85 Gbps。此值几乎是 100 Gbps 链路通过精确发送调度可以实现的最大吞吐量。需要实现 gRPC 客户端(参考:$cuBB_SDK/cuPHY-CP/cuphyoam/examples/test_grpc_push_notification_client.cpp)来接收警报。

cuphydriver_config#

此容器包含 cuphydriver 的配置。

standalone#

0 - 将 cuphydriver 与其他 cuPHY-CP 组件集成运行

1 - 以独立模式运行 cuphydriver(无 l2adapter 等)

validation#

在运行时启用额外的验证检查。

0 - 禁用

1 - 启用

num_slots#

在 cuphydriver 独立测试中运行的时隙数。

log_level#

cuPHYDriver 日志级别:DBG、INFO、ERROR。

profiler_sec#

运行 CUDA 分析工具的秒数。

dpdk_thread#

设置主 DPDK 线程使用的 CPU 核心。它不必是隔离的核心。DPDK 线程本身默认为 ‘SCHED_FIFO+priority 95’。

dpdk_verbose_logs#

在 DPDK 中启用最大日志级别。

0 - 禁用

1 - 启用

accu_tx_sched_res_ns#

设置精确发送调度的精度,单位为纳秒。

accu_tx_sched_disable#

禁用精确 TX 调度。

0 - 数据包根据 TX 时间戳发送

1 - 数据包在方便时发送

fh_stats_dump_cpu_core#

设置 FH 统计信息日志记录线程使用的 CPU 核心。它不必是隔离的核心。当前,默认的 FH 统计信息轮询间隔为 500 毫秒。

pdump_client_thread#

用于 pdump 客户端的 CPU 核心。设置为 -1 以禁用前传 RX 流量 PCAP 捕获。

参见

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

  2. aerial-fh README.md

mps_sm_pusch#

PUSCH 信道的 SM 数量。

mps_sm_pucch#

PUCCH 信道的 SM 数量。

mps_sm_pusch#

PUSCH 信道的 SM 数量。

mps_sm_prach#

PRACH 信道的 SM 数量。

mps_sm_ul_order#

UL 顺序内核的 SM 数量。

mps_sm_pdsch#

PDSCH 信道的 SM 数量。

mps_sm_pdcch#

PDCCH 信道的 SM 数量。

mps_sm_pbch#

PBCH 信道的 SM 数量。

mps_sm_srs#

SRS 信道的 SM 数量。

mps_sm_gpu_comms#

GPU 通信的 SM 数量。

nics#

NIC 配置参数的容器。

nic#

NIC 端口的 PCIe 总线地址。

mtu#

前传 U 平面和 C 平面支持的最大传输大小(以字节为单位)。

cpu_mbufs#

用于以太网数据包的预分配 DPDK 内存缓冲区 (mbufs) 的数量。

uplane_tx_handles#

预分配的发送句柄的数量,这些句柄链接 U 平面 prepare() 和 transmit() 函数。

txq_count#

NIC 发送队列计数。

必须足够大以处理连接到此 NIC 端口的所有小区。

每个小区使用一个 TXQ 用于 C 平面,并使用 txq_count_uplane TXQ 用于 U 平面。

rxq_count#

接收队列计数。

此值必须足够大以处理连接到此 NIC 端口的所有小区。

每个小区使用一个 RXQ 来接收所有上行链路流量。

txq_size#

每个发送队列中可以容纳的数据包数。

rxq_size#

每个接收队列中可以缓冲的数据包数。

gpu#

CUDA 设备,用于从此 NIC 端口接收上行链路数据包。

gpus#

GPU 设备 ID 列表。要使用 gpudirect,GPU 必须与 NIC 位于同一 PCIe 根联合体上。为了最大化性能,GPU 应与 NIC 位于同一 PCIe 交换机上。仅使用列表中的第一个条目。

workers_ul#

用于上行链路工作线程的绑定的 CPU 核心列表。

workers_dl#

用于下行链路工作线程的绑定的 CPU 核心列表。

debug_worker#

出于性能调试目的,此项设置为可用核心,以便与 enable_*_tracing 日志一起工作。

workers_sched_priority#

cuPHYDriver 工作线程调度优先级。

dpdk_file_prefix#

用于底层 DPDK 进程的共享数据文件前缀。

wfreq#

包含信道估计滤波器系数的文件名,采用 HDF5 (.h5) 格式。

cell_group#

启用 cuPHY 小区组。

0 - 禁用 1 - 启用

cell_group_num#

要在 L1 中配置以进行测试的小区数。

enable_h2d_copy_thread#

启用/禁用将 L2A 中的 h2d 复制卸载到单独的复制线程。

h2d_copy_thread_cpu_affinity#

L2A 中的 h2d 复制线程应在其上运行的 CPU 核心。仅当 enable_h2d_copy_thread 为 1 时适用。

h2d_copy_thread_sched_priority#

L2A 中的 h2d 复制线程优先级。仅当 enable_h2d_copy_thread 为 1 时适用。

fix_beta_dl#

修复 beta_dl 以用于 RU 仿真器的本地测试,以便输出值与 TV 字节匹配。

prometheus_thread#

绑定的 CPU 核心,用于每秒更新一次 NIC 指标。

start_section_id_srs#

SRS 信道的 ORAN CUS 启动段 ID。

start_section_id_prach#

PRACH 信道的 ORAN CUS 启动段 ID。

enable_ul_cuphy_graphs#

使用 CUDA 图启用 UL 处理。

enable_dl_cuphy_graphs#

使用 CUDA 图启用 DL 处理。

section_3_time_offset#

PRACH 信道的时间偏移,单位为纳秒。

ul_order_timeout_cpu_ns#

上行链路顺序内核接收此时隙的任何 U 平面数据包的超时时间,单位为纳秒。

ul_order_timeout_gpu_ns#

顺序内核在 GPU 上完成执行的超时时间,单位为纳秒。

pusch_sinr#

启用 pusch sinr 计算(默认为 0)。

pusch_rssi#

启用 PUSCH RSSI 计算(默认为 0)。

pusch_tdi#

启用 PUSCH TDI 处理(默认为 0)。

pusch_cfo#

启用 PUSCH CFO 计算(默认为 0)。

pusch_dftsofdm#

DFT-s-OFDM 启用/禁用标志:0 - 禁用,1 - 启用。

pusch_to#

它仅用于向 L2 报告定时偏移。如果 L2 未使用定时偏移估计,则可以禁用它。

pusch_select_eqcoeffalgo#

PUSCH 噪声干扰估计和信道均衡的算法选择器。支持以下值:0:正则化迫零 (RZF) 1:对角 MMSE 正则化 2:最小均方误差 - 干扰抑制合并 (MMSE-IRC) 3:具有 RBLW 协方差收缩的 MMSE-IRC 4:具有 OAS 协方差收缩的 MMSE-IRC。

pusch_select_chestalgo#

信道估计算法选择:0 - 传统 MMSE,1 - 具有延迟估计的多阶段 MMSE。

pusch_tbsizecheck#

Tb 大小验证启用/禁用标志:0 - 禁用,1 - 启用。

pusch_subSlotProcEn#

子时隙处理启用/禁用标志:0 - 禁用,1 - 启用。启用此标志后,将相应地启用早期 HARQ 功能。要在完整的 PUSCH 时隙处理之前,在 PUSCH 上 UCI 的 UCI.indication 中获取 HARQ 值,L2 应根据 SCF FAPI 222.10.04 中的表 3–36,包含 PHY 配置 TLV 0x102B (indicationInstancesPerSlot),并将 UCI.indication 设置为 2。如果在任何小区的 CONFIG.request 中将 UCI.indication 设置为 2,则早期 HARQ 功能将为所有小区激活。

pusch_deviceGraphLaunchEn#

允许在 PUSCH 中启动设备图的静态标志。

pusch_waitTimeOutPreEarlyHarqUs#

接收用于 PUSCH 早期 HARQ 处理的 OFDM 符号的超时阈值,单位为微秒。

pusch_waitTimeOutPostEarlyHarqUs#

接收用于 PUSCH 非早期 HARQ 处理(基本上是所有 PUSCH 符号)的 OFDM 符号的超时阈值,单位为微秒。

puxch_polarDcdrListSz#

Polar 码列表解码中使用的列表大小。

enable_cpu_task_tracing#

此标志用于跟踪和检测在现有 cuphydriver 核心上运行的 DL/UL CPU 任务。

enable_prepare_tracing#

它用于跟踪 U 平面数据包准备内核的持续时间和结束时间,并且需要启用调试工作线程。

enable_dl_cqe_tracing#

启用 DL CQE 的跟踪(用于检查 NIC 处 DL U 平面数据包定时的调试功能)。

ul_rx_pkt_tracing_level#

此 YAML 参数可以设置为 3 个不同的值:0(默认,推荐):仅保留每个时隙的早期/准时/延迟数据包计数器计数,如 DU(重排序内核)所见,用于上行链路 U 平面数据包。1:还捕获并记录每个时隙每个符号的最早/最晚数据包时间戳,如 DU 所见。2:还捕获并记录每个时隙每个符号接收到的每个数据包的时间戳,如 DU 所见。

split_ul_cuda_streams#

保持默认值 0。这允许背靠背 UL 时隙重叠其处理。保持禁用以维持每 2 个组中第一个 UL 时隙的性能。

aggr_obj_non_avail_th#

保持默认值 5。此参数设置连续不可用 L1 对象(可以解释为调度 PHY 计算任务到 GPU 所必需的 L1 处理程序)的阈值。不可用可能意味着执行时间线落后于预期的 L1 时间线预算。

dl_wait_th_ns#

此参数用于在 GPU 故障时进行错误处理。您必须保持默认值。

sendCPlane_timing_error_th_ns#

保持默认值 50000(50 微秒)。该阈值用作检查 C 平面任务执行期间的当前时间与实际调度的 C 平面数据包传输时间的接近程度。满足阈值检查将导致丢弃该时隙的 C 平面数据包传输。

pusch_forcedNumCsi2Bits#

调试功能,如果 > 0,则使用提供的非零值覆盖所有 CSI-P2 UCI 的 PUSCH CSI-P2 位数。建议将其设置为 0。

mMIMO_enable#

保持默认值 0。此标志为未来功能保留。

enable_srs#

启用/禁用 SRS

enable_csip2_v3#

启用/禁用 FAPI 10.03 表 3-77 定义的 CSI part2 的支持

pusch_aggr_per_ctx#

每个上下文的 PUSCH 对象数(默认为 3)。

prach_aggr_per_ctx#

每个上下文的 PRACH 对象数(默认为 2)。

pucch_aggr_per_ctx#

每个上下文的 PUCCH 对象数(默认为 4)。

srs_aggr_per_ctx#

每个上下文的 SRS 对象数(默认为 2)。

ul_input_buffer_per_cell#

每个小区分配的 UL 缓冲区数(默认为 10)。

ul_input_buffer_per_cell_srs#

每个小区为 SRS 分配的 UL 缓冲区数(默认为 4)。

ue_mode#

频谱效率功能的标志。必须在 RU 侧 YAML 上启用以模拟 UE 操作。

cplane_disable#

禁用所有小区的 C 平面。

0 - 启用 C 平面 1 - 禁用 C 平面

cells#

小区参数容器列表。

name#

小区名称

cell_id#

小区 ID。

src_mac_addr#

U 平面和 C 平面数据包的源 MAC 地址。设置为 00:00:00:00:00:00 以使用正在使用的 NIC 端口的 MAC 地址。

dst_mac_addr#

U 平面和 C 平面数据包的目标 MAC 地址。

nic#

gNB NIC 端口,小区连接到该端口。

必须与 ‘nics’ 列表中元素之一的 ‘nic’ 键值匹配。

vlan#

用于 C 平面和 U 平面数据包的 VLAN ID。

pcp#

用于 C 平面和 U 平面以太网数据包的 QoS 优先级代码点。

txq_count_uplane#

用于 U 平面的发送队列数。

eAxC_id_ssb_pbch#

用于 SSB/PBCH 的 eAxC ID 列表。

eAxC_id_pdcch#

用于 PDCCH 的 eAxC ID 列表。

eAxC_id_pdsch#

用于 PDSCH 的 eAxC ID 列表。

eAxC_id_csirs#

用于 CSI RS 的 eAxC ID 列表。

eAxC_id_pusch#

用于 PUSCH 的 eAxC ID 列表。

eAxC_id_pucch#

用于 PUCCH 的 eAxC ID 列表。

eAxC_id_srs#

用于 SRS 的 eAxC ID 列表。

eAxC_id_prach#

用于 PRACH 的 eAxC ID 列表。

dl_iq_data_fmt:comp_meth#

DL U 平面压缩方法:0:定点 1:BFP

dl_iq_data_fmt:bit_width#

DL U 平面信道上每个 RE 使用的位数。定点支持值:16 BFP 支持值:9、14、16

ul_iq_data_fmt:comp_meth#

UL U 平面压缩方法:0:定点 1:BFP

ul_iq_data_fmt:bit_width#

上行链路 U 平面信道上每个 RE 使用的位数。定点支持值:16 BFP 支持值:9、14、16

fs_offset_dl#

每个 ORAN CUS 6.1.3 的下行链路 U 平面缩放。

exponent_dl#

每个 ORAN CUS 6.1.3 的下行链路 U 平面缩放。

ref_dl#

每个 ORAN CUS 6.1.3 的下行链路 U 平面缩放。

fs_offset_ul#

每个 ORAN CUS 6.1.3 的上行链路 U 平面缩放。

exponent_ul#

每个 ORAN CUS 6.1.3 的上行链路 U 平面缩放。

max_amp_ul#

每个 ORAN CUS 6.1.3 的上行链路 U 平面缩放中使用的最大满量程幅度。

mu#

3GPP 子载波带宽索引 ‘mu’。

0 - 15 kHz 1 - 30 kHz 2 - 60 kHz 3 - 120 kHz 4 - 240 kHz

T1a_max_up_ns#

每个 ORAN CUS 的 DU 下行链路 U 平面出口时间零之前的计划提前定时。

T1a_max_cp_ul_ns#

每个 ORAN CUS 的 DU 上行链路 C 平面出口时间零之前的计划提前定时。

Ta4_min_ns#

每个 ORAN CUS 的时间零之后 DU 接收窗口的开始。

Ta4_max_ns#

每个 ORAN CUS 的时间零之后 DU 接收窗口的结束。

Tcp_adv_dl_ns#

每个 ORAN CUS 的下行链路 C 平面定时提前于 U 平面,单位为纳秒。

ul_u_plane_tx_offset_ns#

频谱效率功能的标志。必须在 RU 侧 YAML 上设置,以将 UL 传输开始时间从 T0 偏移。

pusch_prb_stride#

PUSCH 信道的内存步幅,单位为 PRB。影响 GPU 内存布局。

prach_prb_stride#

PRACH 信道的内存步幅,单位为 PRB。影响 GPU 内存布局。

srs_prb_stride#

SRS 的内存步幅,单位为 PRB。影响 GPU 内存布局。

pusch_ldpc_max_num_itr_algo_type#

0 - 固定 LDPC 迭代计数

1 - 基于 MCS 的 LDPC 迭代计数

建议设置 pusch_ldpc_max_num_itr_algo_type:1

pusch_fixed_max_num_ldpc_itrs#

当前未使用,保留用于替换 pusch_ldpc_n_iterations。

pusch_ldpc_n_iterations#

当选择固定 LDPC 迭代计数选项 (pusch_ldpc_max_num_itr_algo_type:0) 时,迭代计数设置为 pusch_ldpc_n_iterations。由于 pusch_ldpc_max_num_itr_algo_type 的默认值为 1(迭代计数基于 MCS 优化),因此未使用 pusch_ldpc_n_iterations。

pusch_ldpc_algo_index#

LDPC 解码器的算法索引:0 - 自动选择。

pusch_ldpc_flags#

pusch_ldpc_flags 是配置 LDPC 解码器的标志。pusch_ldpc_flags:2 选择一个 LDPC 解码器,该解码器优化吞吐量,即处理多个码字(例如,2 个)而不是延迟。

pusch_ldpc_use_half#
LDPC 解码器输入数据类型的指示

0 - 单精度,1 - 半精度

pusch_nMaxPrb#

这用于与平均小区相比,峰值小区的最大 PRB 范围的内存分配。

ul_gain_calibration#

用于将 dBFS 转换为 dBm 的 UL 配置增益。默认值(如果未指定):48.68

lower_guard_bw#

以 kHZ 表示的下保护带宽。用于为每个 Rach Occasion 导出 freqOffset。默认为 845。

tv_pusch#

包含 PUSCH 信道的静态配置(例如,滤波器系数)的 HDF5 文件。

tv_prach#

包含 PRACH 信道的静态配置(例如,滤波器系数)的 HDF5 文件。

pusch_ldpc_n_iterations#

PUSCH LDPC 信道编码迭代计数。

pusch_ldpc_early_termination#

PUSCH LDPC 信道编码提前终止。

0 - 禁用 1 - 启用

启动配置 (l2_adapter_config)#

msg_type#

定义 L2/L1 接口 API。支持的选项有

  • scf_fapi_gnb - 使用小型小区论坛 API。

phy_class#

与 msg_type 相同。

tick_generator_mode#

SLOT.incication 间隔生成器模式

0 - 轮询 + 休眠。在每个时钟周期中,线程会休眠一段时间以释放 CPU 核心,避免系统挂起,然后它们会轮询系统时间。1 - 休眠。休眠到绝对时间戳,不进行轮询。2 - timer_fd。启动一个定时器,并在 timer_fd 上调用 epoll_wait()。

allowed_fapi_latency#

允许的 SLOT FAPI 消息最大延迟,这些消息从 L2 发送到 L1,否则消息将被忽略和丢弃。

单位:slot。默认值为 0,表示 L2 消息应在当前 slot 中收到。

allowed_tick_error#

允许的时钟周期间隔误差。

单位:us

时钟周期间隔误差以统计方式打印。如果观察到的时钟周期误差 > 允许值,则日志将以错误级别打印。

timer_thread_config#

定时器线程的配置。

name#

线程名称。

cpu_affinity#

用于定时器线程的绑定的 CPU 核心 ID。

sched_priority#

定时器线程的调度优先级。

message_thread_config#

L2/L1 消息处理线程的配置容器。

name#

线程名称。

cpu_affinity#

用于定时器线程的绑定的 CPU 核心 ID。

sched_priority#

消息线程的调度优先级。

ptp#

GPS_ALPHA、GPS_BETA 的 ptp 配置。

gps_alpha#

ORAN WG4 CUS 9.7.2 节的 GPS Alpha 值。如果未定义,则默认值为 0。

gps_beta#

ORAN WG4 CUS 9.7.2 节的 GPS Beta 值。如果未定义,则默认值为 0。

mu_highest#

用于调度 TTI 时钟频率的最高支持 mu 值。

slot_advance#

L1 通知 L2 slot 请求的时间提前量,单位为 slot。

enableTickDynamicSfnSlot#

启用动态 slot/sfn。

staticPucchSlotNum#

用于针对 RU 模拟器进行测试以发送设置静态 PUCCH slot 号的调试参数。

staticPuschSlotNum#

用于针对 RU 模拟器进行测试以发送设置静态 PUSCH slot 号的调试参数。

staticPdschSlotNum#

用于针对 RU 模拟器进行测试以发送设置静态 PDSCH slot 号的调试参数。

staticPdcchSlotNum#

用于针对 RU 模拟器进行测试以发送设置静态 PDCCH slot 号的调试参数。

staticCsiRsSlotNum#

用于针对 RU 模拟器进行测试以发送设置静态 CSI-RS slot 号的调试参数。

staticSsbSlotNum#

使用 YAML 配置的 SlotNumber 覆盖传入的 SS/PBCH 的 slot 号。

Example

staticSsbSlotNum:10

staticSsbPcid#

用于针对 RU 模拟器进行测试以发送设置静态 SSB phycellId 的调试参数。

staticSsbSFN#

用于针对 RU 模拟器进行测试以发送设置静态 SSB SFN 的调试参数。

pucch_dtx_thresholds#

每个 PUCCH 格式的 DTX 阈值的比例因子数组。

如果不存在,则默认值为 1.0,这意味着阈值未缩放。

对于 PUCCH 格式 0 和 1,-100.0 将替换为 1.0。

Example

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

pusch_dtx_thresholds#

PUSCH 上 UCI 的 DTX 阈值的比例因子。

如果不存在,则默认值为 1.0,这意味着阈值未缩放。

Example

pusch_dtx_thresholds: 1.0

enable_precoding#

启用/禁用在 L2Adapter 中解析预编码 PDU。

默认值为 0 enable_precoding: 0/1

prepone_h2d_copy#

启用/禁用提前在 L2Adapter 中进行 H2D 复制。

默认值为 1 prepone_h2d_copy: 0/1

enable_beam_forming#

启用/禁用在 L2Adapter 中解析 BeamIds。

默认值:0 enable_beam_forming: 1

dl_tb_loc#

传输块在 nvipc 缓冲区内的位置。

默认值为 1 dl_tb_loc: 0 # TB 与 nvipc 的消息缓冲区内联。 dl_tb_loc: 1 # TB 位于 nvipc 的 CPU 数据缓冲区中。 dl_tb_loc: 2 # TB 位于 nvipc 的 GPU 缓冲区中。

instances#

小区实例的容器。

name#

实例的名称。

nvipc_config_file#

nvipc 的专用 YAML 配置文件。示例:nvipc_multi_instances.yaml

transport#

L2/L1 消息传输参数的配置容器。

type#

传输类型。选项包括 shm、dpdk 或 udp。

udp_config#

udp 传输类型的配置容器。

local_port#

L1 使用的 UDP 端口。

remote_port#

L2 使用的 UDP 端口。

shm_config#

共享内存传输类型的配置容器。

primary#

指示进程是共享内存访问的主进程。

prefix#

用于创建共享内存文件名的前缀。

cuda_device_id#

将此参数设置为有效的 GPU 设备 ID,以在主机固定内存中启用 CPU 数据内存池分配。设置为 -1 以禁用此功能。

ring_len#

用于共享内存传输的环的长度,以字节为单位。

mempool_size#

共享内存传输中使用的内存池的配置容器。

cpu_msg#

用于 CPU 消息(即 L2/L1 FAPI 消息)的共享内存传输的配置容器。

buf_size#

缓冲区大小,以字节为单位。

pool_len#

池长度,以缓冲区数量为单位。

cpu_data#

用于 CPU 数据元素(即下行链路和上行链路传输块)的共享内存传输的配置容器。

buf_size#

缓冲区大小,以字节为单位。

pool_len#

池长度,以缓冲区数量为单位。

cuda_data#

用于 GPU 数据元素的共享内存传输的配置容器。

buf_size#

缓冲区大小,以字节为单位。

pool_len#

池长度,以缓冲区数量为单位。

dpdk_config#

基于 NIC 的 DPDK 传输类型的配置。

primary#

指示进程是共享内存访问的主进程。

prefix#

用于创建共享内存文件和搜索 DPDK 内存池的名称。

local_nic_pci#

IPC 中使用的 NIC 地址或名称。

peer_nic_mac#

对等 NIC MAC 地址,仅需要在辅助进程 (L2/MAC) 中设置。

cuda_device_id#

将此参数设置为有效的 GPU 设备 ID,以在主机固定内存中启用 CPU 数据内存池分配。设置为 -1 以禁用此功能。

need_eal_init#

nvipc 是否需要调用 rte_eal_init() 来初始化 DPDK 上下文。 1 - 由 nvipc 初始化; 0 - 由同一进程中的其他模块初始化。

lcore_id#

用于 nvipc_nic_poll 线程的逻辑核心编号。

mempool_size#

共享内存中使用的内存池的配置容器。传输。

cpu_msg#

用于 CPU 消息(即 L2/L1 FAPI 消息)的共享内存传输的配置容器。

buf_size#

缓冲区大小,以字节为单位。

pool_len#

池长度,以缓冲区数量为单位。

cpu_data#

用于 CPU 数据元素(即下行链路和上行链路传输块)的共享内存传输的配置容器。

buf_size#

缓冲区大小,以字节为单位。

pool_len#

池长度,以缓冲区数量为单位。

cuda_data#

用于 GPU 数据元素的共享内存传输的配置容器。

buf_size#

缓冲区大小,以字节为单位。

pool_len#

池长度,以缓冲区数量为单位。

app_config#

所有传输类型的配置,主要用于调试。

grpc_forward#

是否启用转发 nvipc 消息以及从初始化开始自动转发的消息数量。此处 count = 0 表示永远转发每条消息。

0:禁用; 1:启用,但不开始初始转发; -1:启用并在初始时开始转发,计数 = 0; 其他正数:启用并在初始时开始转发,计数 = grpc_forward。

debug_timing#

仅用于调试。

是否记录所有 nvipc 消息的分配、发送、接收、释放的时间戳。

pcap_enable#

仅用于调试。

是否将 nvipc 消息捕获到 pcap 文件。

pcap_cpu_core#

后台 pcap 日志保存线程的 CPU 核心。

pcap_cache_size_bits#

/dev/shm/${prefix}_pcap 的大小。如果设置为 29,则大小为 2^29 = 512MB。

pcap_file_size_bits#

/dev/shm/${prefix}_pcap 的最大大小。如果设置为 31,则大小为 2^31 = 2GB。

pcap_max_data_size#

要捕获的最大 DL/UL FAPI 数据大小,以减小 pcap 文件大小。

Startup Configuration (ru-emulator)#

组合式 O-RU + UE 模拟器的应用程序二进制文件名为 ru-emulator。当 ru-emulator 启动时,它会从配置 YAML 文件中读取静态配置。本节介绍 YAML 文件中的字段。

core_list#

RU 模拟器可以使用的 CPU 核心列表。

nic_interface#

要使用的 NIC 的 PCIe 地址,例如 b5:00.1。

peerethaddr#

cuPHYController 端口的 MAC 地址。

nvlog_name#

ru-emulator 的 nvlog 实例名称。详细的 nvlog 配置在 nvlog_config.yaml 中。

cell_configs#

与 DU 协商的小区配置。

name#

小区字符串名称(很大程度上未使用)。

eth#

小区 MAC 地址。

dl_iq_data_fmt:comp_meth#

DL U 平面压缩方法:0:定点 1:BFP

dl_iq_data_fmt:bit_width#

DL U 平面信道上每个 RE 使用的位数。定点支持值:16 BFP 支持值:9、14、16

ul_iq_data_fmt:comp_meth#

UL U 平面压缩方法:0:定点 1:BFP

ul_iq_data_fmt:bit_width#

用于 UL U-plane 信道上每个 RE 的位数。支持的定点值:16 BFP 支持的值:9、14、16

flow_list#

eAxC 列表

eAxC_prach_list#

eAxC prach 列表

vlan#

用于 RX 和 TX 的 vlan

nic#

nics 列表中要使用的 nic 的索引。

tti#

Slot 指示间隔。

validate_dl_timing#

验证 DL 定时(需要 PTP 同步)。

timing_histogram#

生成直方图

timing_histogram_bin_size#

直方图 bin 大小

oran_timing_info#

dl_c_plane_timing_delay#

来自 ORAN 的 t1a_max_up

dl_c_plane_window_size#

DL C Plane RX 接收窗口大小。

ul_c_plane_timing_delay#

来自 ORAN 的 T1a_max_cp_ul。

ul_c_plane_window_size#

UL C Plane RX 接收窗口大小。

dl_u_plane_timing_delay#

来自 ORAN 的 T2a_max_up。

dl_u_plane_window_size#

DL U Plane RX 接收窗口大小。

ul_u_plane_tx_offset#

来自 ORAN 的 Ta4_min_up。

Run-time Configuration/Status#

在运行时,可以通过 gRPC 远程过程调用 (RPC) 重新配置 Aerial 组件或查询其状态。RPC 在“协议缓冲区”语法中定义,允许支持以 gRPC 和协议缓冲区支持的任何语言编写的客户端。

有关 gRPC 的更多信息,请访问:https://grpc.org.cn/docs/what-is-grpc/core-concepts/

有关协议缓冲区的更多信息,请访问:https://developers.google.com/protocol-buffers

Simple Request/Reply Flow#

Aerial 应用程序支持使用带有 protobuf 消息的 gRPC 框架的请求/回复流程。在运行时,可以更新某些配置项,并且可以查询某些状态信息。外部 OAM 客户端与充当 gRPC 服务器的 Aerial 应用程序交互。

../../../_images/image14.png

Streaming Request/Replies#

Aerial 应用程序支持 gRPC 流媒体功能,用于在客户端和服务器之间发送周期性状态。

../../../_images/image15.png

Asynchronous Interthread Communication#

某些请求/回复场景需要与协调 GPU 工作的高优先级 CPU 绑定线程进行交互。这些交互通过 Aerial 内部异步队列进行,并且请求以尽力而为的方式处理,优先考虑 GPU 内核启动和其他 L1 任务的协调。

../../../_images/image16.png

Aerial Common Service Definition#

/\*

\* Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.

\*

\* NVIDIA CORPORATION and its licensors retain all intellectual property

\* and proprietary rights in and to this software, related documentation

\* and any modifications thereto. Any use, reproduction, disclosure or

\* distribution of this software and related documentation without an
express

\* license agreement from NVIDIA CORPORATION is strictly prohibited.

\*/

syntax = "proto3";

package aerial;

service Common {

rpc GetSFN (GenericRequest) returns (SFNReply) {}

rpc GetCpuUtilization (GenericRequest) returns (CpuUtilizationReply) {}

rpc SetPuschH5DumpNextCrc (GenericRequest) returns (DummyReply) {}

rpc GetFAPIStream (FAPIStreamRequest) returns (stream FAPIStreamReply)
{}

}

message GenericRequest {

string name = 1;

}

message SFNReply {

int32 sfn = 1;

int32 slot = 2;

}

message DummyReply {

}

message CpuUtilizationPerCore {

int32 core_id = 1;

int32 utilization_x1000 = 2;

}

message CpuUtilizationReply {

repeated CpuUtilizationPerCore core = 1;

}

message FAPIStreamRequest {

int32 client_id = 1;

int32 total_msgs_requested = 2;

}

message FAPIStreamReply {

int32 client_id = 1;

bytes msg_buf = 2;

bytes data_buf = 3;

}

rpc GetCpuUtilization#

GetCpuUtilization RPC 返回每个高优先级核心的 CPU 利用率的可变长度数组。

CPU 利用率可通过 Prometheus 节点导出器获得,但是 Aerial 高优先级线程使用的设计方法导致每个线程的 CPU 核心利用率出现虚假的 100%。此 RPC 允许检索高优先级线程的实际 CPU 利用率。高优先级线程绑定到特定的 CPU 核心。

rpc GetFAPIStream#

此 RPC 请求监听一个或多个(最多无限数量)SCF FAPI 消息。监听到的消息从 Aerial gRPC 服务器传递到第三方客户端。有关客户端示例,请参阅 cuPHY-CP/cuphyoam/examples/aerial_get_l2msgs.py。

rpc TerminateCuphycontroller#

此 RPC 消息立即终止 cuPHYController。

rpc CellParamUpdateRequest#

此 RPC 消息在不停止小区的情况下更新小区配置。消息规范

message CellParamUpdateRequest {

int32 cell_id = 1;

string dst_mac_addr = 2;

int32 vlan_tci = 3;

}

dst_mac_addr 必须为 ‘XX:XX:XX:XX:XX:XX’ 格式。

vlan_tci 必须包含 802.1Q 标签的 16 位 TCI 值。

List of Parameters Supported by Dynamic OAM via gRPC and CONFIG.request (M-plane)#

配置单元是跨所有小区/每个小区配置。小区中断服务要么是服务中,要么是服务外。

Note

使用 OAM 命令时,当在 DU 服务器上运行时,您可以对 $SERVER_IP 使用 localhost。否则,请使用 DU 服务器数字 IP 地址。$CELL_ID 是 mplane id,从 1 开始。参数的默认值可以在相应的 cuphycontroller YAML 配置文件中找到:$cuBB_SDK/cuPHY-CP/cuphycontroller/config/cuphycontroller_xxx.yaml

ru_type#

  • 参数名称: ru_type

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    
  • 注释: $RU_TYPE : 1 代表 FXN_RU,2 代表 FJT_RU,3 代表 OTHER_RU(包括 ru_emulator)

nic#

  • 参数名称: nic

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    
  • 注释: nic PCIe 地址。它必须是 cuphycontroller YAML 文件中配置的 nic 端口之一。

dst_mac_addr#

  • 参数名称: dst_mac_addr

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    
  • 注释: dst_mac_addrvlan_idpcp 参数必须一起更新。

vlan_id#

  • 参数名称: vlan_id

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    
  • 注释: dst_mac_addrvlan_idpcp 参数必须一起更新。

pcp#

  • 参数名称: pcp

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    
  • 注释: dst_mac_addrvlan_idpcp 参数必须一起更新。

dl_iq_data_fmt#

  • 参数名称: dl_iq_data_fmt

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: ul_iq_data_fmt

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: exponent_dl

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: exponent_ul

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: prusch_prb_stride

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: prach_prb_stride

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: max_amp_ul

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: section_3_time_offset

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    

fh_distance_range#

  • 参数名称: fh_distance_range

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    
  • 注释: $FH_DISTANCE_RANGE: 0 代表 0~30km,1 代表 20~50km。假设以下是在 cuhycontroller YAML 配置文件中对应于 FH_DISTANCE_RANGE 选项 0 (0~30km) 的默认配置。

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

    FH_DISTANCE_RANGE 选项更新为 1 (20~50km) 会调整以下值

    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#

  • 参数名称: ul_gain_calibration

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: lower_guard_bw

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: ref_dl

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: attenuation_db

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: gps_alpha

  • 配置单元: 跨所有小区

  • 小区中断服务: 服务外

  • OAM 命令:

    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#

  • 参数名称: gps_beta

  • 配置单元: 跨所有小区

  • 小区中断服务: 服务外

  • OAM 命令:

    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
    
  • 注释: 配置此参数之前,所有小区都必须处于空闲状态

prachRootSequenceIndex#

  • 参数名称: prachRootSequenceIndex

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令: 通过 FAPI CONFIG.request。有关更多详细信息,请参阅 动态 PRACH 配置和初始化序列测试 部分。

prachZeroCorrConf#

  • 参数名称: prachZeroCorrConf

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令: 通过 FAPI CONFIG.request。有关更多详细信息,请参阅 动态 PRACH 配置和初始化序列测试 部分。

numPrachFdOccasions#

  • 参数名称: numPrachFdOccasions

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令: 通过 FAPI CONFIG.request。有关更多详细信息,请参阅 动态 PRACH 配置和初始化序列测试 部分。

restrictedSetConfig#

  • 参数名称: restrictedSetConfig

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令: 通过 FAPI CONFIG.request。有关更多详细信息,请参阅 动态 PRACH 配置和初始化序列测试 部分。

prachConfigIndex#

  • 参数名称: prachConfigIndex

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • OAM 命令: 通过 FAPI CONFIG.request。有关更多详细信息,请参阅 动态 PRACH 配置和初始化序列测试 部分。

K1#

M-Plane Hybrid Mode ORAN YANG Model Provisioning#

Aerial 支持 M-plane 混合模式,该模式允许 NMS/SMO 使用 ORAN YANG 数据模型将 RU 功能、C/U-plane 传输配置和 U-plane 配置传递给 L1。

这是高级别序列图

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

数据模型过程 - Yang 数据树写入过程

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

数据模型过程 - Yang 数据树读取过程

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

数据模型传输 API(gRPC ProtoBuf 协议)#

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#

配置单元是跨所有小区/每个小区配置。小区中断服务要么是服务中,要么是服务外。

o-du-mac-address#

  • 参数名称: o-du-mac-address

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: DU 侧 mac 地址。它在内部转换为相应的 ‘nic’。

  • 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#

  • 参数名称: ru_mac_address

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: 对应 RU 的 MAC 地址

  • 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#

  • 参数名称: vlan-id

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: 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#

  • 参数名称: pcp

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: VLAN 优先级

  • 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#

  • 参数名称: ul_iq_data_fmt: bit_width

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: 指示压缩后的位长。

    • BFP 值: 9 和 14; 16 代表无压缩

    • 定点值: 目前仅支持 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#

  • 参数名称: ul_iq_data_fmt: comp_meth

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: 指示 UL 压缩方法。

    • BFP 值:BLOCK_FLOATING_POINT

    • 定点值: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#

  • 参数名称: dl_iq_data_fmt: bit_width

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: 指示压缩后的位长。

    • BFP 值:9 和 14; 16 代表无压缩

    • 定点值:目前仅支持 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#

  • 参数名称: dl_iq_data_fmt: comp_meth

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 描述: 指示 DL 压缩方法。

    • BFP 值:BLOCK_FLOATING_POINT

    • 定点值:NO_COMPRESSION

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

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

exponent_dl#

  • 参数名称: exponent_dl

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 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#

  • 参数名称: exponent_ul

  • 配置单元: 每个小区配置

  • 小区中断服务: 服务外

  • 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#

以下是客户端参考实现

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

以下是更新和检索相关参数的几个示例。

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

Logging#

Log Levels#

Nvlog 支持以下日志级别:Fatal、Error、Console、Warning、Info、Debug 和 Verbose。

Fatal 日志消息会导致进程终止。对于其他日志级别,进程继续执行。典型的部署将 Fatal、Error 和 Console 级别发送到 stdout。Console 级别用于打印既不是警告也不是错误,但您想要打印到 stdout 的内容。

nvlog#

此 YAML 容器包含与 nvlog 配置相关的参数,请参阅 nvlog_config.yaml。

name#

用于创建共享内存日志文件。共享内存句柄为 /dev/shm/${name}.log,临时日志文件名为 /tmp/${name}.log。

primary#

在所有记录到同一文件的进程中,将第一个启动的进程设置为 primary,将其他进程设置为 secondary。

shm_log_level#

设置高性能共享内存记录器的日志级别阈值。级别等于或低于此阈值的日志消息将发送到共享内存记录器。

日志级别:0 - NONE,1 - FATAL,2 - ERROR,3 - CONSOLE,4 - WARNING,5 - INFO,6 - DEBUG,7 - VERBOSE

将日志级别设置为 LOG_NONE 意味着不向共享内存记录器发送任何日志。

console_log_level#

设置打印到控制台的日志级别阈值。级别等于或低于此阈值的日志消息将打印到 stdout。

max_file_size_bits#

定义轮转日志文件 /var/log/aerial/${name}.log 的大小。大小 = 2 ^ bits。

shm_cache_size_bits#

定义 SHM 缓存文件 /dev/shm/${name}.log 的大小。大小 = 2 ^ bits。

log_buf_size#

nvlog API 的一次调用允许的最大日志字符串长度。

max_threads#

总共使用 nvlog 的最大线程数。

save_to_file#

是否将 SHM 缓存日志复制并保存到 /var/log/aerial/ 文件夹下的轮转日志文件中。

cpu_core_id#

后台日志保存线程的 CPU 核心 ID。-1 表示核心未绑定。

prefix_opts#

bit5 - thread_id bit4 - 序列号 bit3 - 日志级别 bit2 - 模块类型 bit1 - 日期 bit0 - 时间戳

有关更多详细信息,请参阅 nvlog.h。

Metrics#

OAM Metrics API 由 cuPHY-CP 组件在内部使用,以报告指标(计数器、仪表和直方图)。这些指标通过 Prometheus Aerial 导出器公开。

Host Metrics#

主机指标通过 Prometheus node exporter 提供。node exporter 提供了关于主机硬件和操作系统的数千个指标,包括但不限于:

  • CPU 统计信息

  • 磁盘统计信息

  • 文件系统统计信息

  • 内存统计信息

  • 网络统计信息

有关 node exporter 的详细文档,请参阅 prometheus/node_exporterhttps://prometheus.ac.cn/docs/guides/node-exporter/

GPU 指标#

GPU 硬件指标通过 GPU Operator,经由 Prometheus DCGM-Exporter 提供。DCGM-Exporter 提供了关于 GPU 和 PCIe 总线连接的数千个指标,包括但不限于:

  • GPU 硬件时钟频率

  • GPU 硬件温度

  • GPU 硬件功耗

  • GPU 内存利用率

  • GPU 硬件错误,包括 ECC

  • PCIe 吞吐量

有关 GPU operator 的详细信息,请参阅 NVIDIA/gpu-operator

有关 DCGM-Exporter 的详细文档,请参阅 NVIDIA/gpu-monitoring-tools

Grafana 仪表板示例可在 https://grafana.org.cn/grafana/dashboards/12239 获取。

Aerial 指标命名约定#

除了通过 node exporter 和 DCGM-Exporter 提供的指标外,Aerial 还公开了多个应用程序指标。

指标名称遵循 https://prometheus.ac.cn/docs/practices/naming/ 中的规范,并采用 aerial_<组件>_<子组件>_<指标描述>_<单位> 的格式。

指标类型遵循 https://prometheus.ac.cn/docs/concepts/metric_types/ 中的规范。

组件和子组件的定义在下表中。对于每个指标,都提供了描述、指标类型和指标标签。标签是一种在不创建新指标的情况下为指标提供粒度的方法。

组件

子组件

Description

cuphycp

cuPHY 控制平面应用程序

fapi

L2/L1 接口指标

cplane

前传 C-平面指标

uplane

前传 U-平面指标

net

通用网络接口指标

cuphy

cuPHY L1 库

pbch

物理广播信道指标

pdsch

物理下行链路共享信道指标

pdcch

物理下行链路公共信道指标

pusch

物理上行链路共享信道指标

pucch

物理上行链路公共信道指标

prach

物理随机接入信道指标

指标导出器端口#

Aerial 指标在端口 8081 上导出。可在 cuphycontroller YAML 文件中通过 ‘aerial_metrics_backend_address’ 配置。

L2/L1 接口指标#

aerial_cuphycp_slots_total#

统计已处理的总时隙数。

指标类型:计数器

指标标签

  • type: “UL” 或 “DL”

  • cell: “小区编号”

aerial_cuphycp_fapi_rx_packets#

统计 L1 从 L2 接收的消息总数。

指标类型:计数器

指标标签

  • msg_type: “PDU 类型”

  • cell: “小区编号”

aerial_cuphycp_fapi_tx_packets#

统计 L1 传输到 L2 的消息总数。

指标类型:计数器

指标标签

  • msg_type: “PDU 类型”

  • cell: “小区编号”

前传接口指标#

aerial_cuphycp_cplane_tx_packets_total#

统计 L1 通过 ORAN 前传接口传输的 C-平面数据包总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_cplane_tx_bytes_total#

统计 L1 通过 ORAN 前传接口传输的 C-平面字节总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_uplane_rx_packets_total#

统计 L1 通过 ORAN 前传接口接收的 U-平面数据包总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_uplane_rx_bytes_total#

统计 L1 通过 ORAN 前传接口接收的 U-平面字节总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_uplane_tx_packets_total#

统计 L1 通过 ORAN 前传接口传输的 U-平面数据包总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_uplane_tx_bytes_total#

统计 L1 通过 ORAN 前传接口传输的 U-平面字节总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_uplane_lost_prbs_total#

统计 L1 通过 ORAN 前传接口预期但未接收到的 PRB 总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

  • channel: “prach” 或 “pusch” 之一

网卡指标#

aerial_cuphycp_net_rx_failed_packets_total#

统计接收到的错误数据包总数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_rx_nombuf_packets_total#

统计由于缺少可用 mbuf 而丢弃的接收数据包总数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_rx_dropped_packets_total#

统计被网卡硬件丢弃的接收数据包总数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_tx_failed_packets_total#

统计数据包传输失败的总次数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_tx_accu_sched_missed_interrupt_errors_total#

统计精确发送调度错过中断的总次数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_tx_accu_sched_rearm_queue_errors_total#

统计精确发送调度重新臂队列错误的总次数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_tx_accu_sched_clock_queue_errors_total#

统计精确发送调度时钟队列错误的总次数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_tx_accu_sched_timestamp_past_errors_total#

统计精确发送调度时间戳过去错误的总次数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_tx_accu_sched_timestamp_future_errors_total#

统计精确发送调度时间戳未来错误的总次数。

指标类型:计数器

指标标签

  • nic: “网卡端口 BDF 地址”

aerial_cuphycp_net_tx_accu_sched_clock_queue_jitter_ns#

精确发送调度时钟队列抖动的当前测量值,单位为纳秒。

指标类型:仪表

指标标签

  • nic: “网卡端口 BDF 地址”

详情

此仪表显示 TX 调度时间戳抖动,即每个单独的时钟队列 (CQ) 完成与 UTC 时间的偏差程度。

如果将 CQ 完成频率设置为 2MHz (tx_pp=500),您可能会看到以下完成情况:
cqe 0 at 0 ns
cqe 1 at 505 ns
cqe 2 at 996 ns
cqe 3 at 1514 ns
...

tx_pp_jitter 是两个连续 CQ 完成之间的时间差。

aerial_cuphycp_net_tx_accu_sched_clock_queue_wander_ns#

时钟队列 (CQ) 完成在较长时间段(约 8 秒)内与 UTC 时间的发散的当前测量值。

指标类型:仪表

指标标签

  • nic: “网卡端口 BDF 地址”

应用程序性能指标#

aerial_cuphycp_slot_processing_duration_us#

统计每个 250us 宽的直方图 bin 中具有 GPU 处理时长的总时隙数。

指标类型:直方图

指标标签

  • cell: “小区编号”

  • channel: “pbch”、“pdcch”、“pdsch”、“prach” 或 “pusch” 之一

  • le: 直方图小于或等于 250us 宽的直方图 bin,适用于 250、500、…、2000、+inf bin。

aerial_cuphycp_slot_pusch_processing_duration_us#

统计每个 250us 宽的直方图 bin 中具有 GPU 处理时长的 PUSCH 时隙总数。

指标类型:直方图

指标标签

  • cell: “小区编号”

  • le: 直方图小于或等于 250us 宽的直方图 bin,范围为 0 到 2000us。

aerial_cuphycp_pusch_rx_tb_bytes_total#

统计 PUSCH 信道中接收到的传输块字节总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_pusch_rx_tb_total#

统计 PUSCH 信道中接收到的传输块总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_pusch_rx_tb_crc_error_total#

统计 PUSCH 信道中接收到的具有 CRC 错误的传输块总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_pusch_nrofuesperslot#

统计每个时隙中每个直方图 bin PUSCH 信道处理的 UE 总数。

指标类型:直方图

指标标签

  • cell: “小区编号”

  • le: 直方图 bin 小于或等于 2、4、…、24、+inf bin。

PRACH 指标#

aerial_cuphy_prach_rx_preambles_total#

统计 PRACH 信道中检测到的前导码总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

PDSCH 指标#

aerial_cuphycp_slot_pdsch_processing_duration_us#

统计每个 250us 宽的直方图 bin 中具有 GPU 处理时长的 PDSCH 时隙总数。

指标类型:直方图

指标标签

  • cell: “小区编号”

  • le: 直方图小于或等于 250us 宽的直方图 bin,范围为 0 到 2000us。

aerial_cuphy_pdsch_tx_tb_bytes_total#

统计 PDSCH 信道中传输的传输块字节总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphy_pdsch_tx_tb_total#

统计 PDSCH 信道中传输的传输块总数。

指标类型:计数器

指标标签

  • cell: “小区编号”

aerial_cuphycp_pdsch_nrofuesperslot#

统计每个时隙中每个直方图 bin PDSCH 信道处理的 UE 总数。

指标类型:直方图

指标标签

  • cell: “小区编号”

  • le: 直方图 bin 小于或等于 2、4、…、24、+inf bin。