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 捕获。
参见
https://doc.dpdk.org/guides/howto/packet_capture_framework.html
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 应用程序交互。

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

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

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_addr
、vlan_id
和pcp
参数必须一起更新。
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_addr
、vlan_id
和pcp
参数必须一起更新。
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_addr
、vlan_id
和pcp
参数必须一起更新。
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#
参数名称:
K1
配置单元: 每个小区配置
小区中断服务: 服务外
OAM 命令: 通过 FAPI
CONFIG.request
。有关更多详细信息,请参阅 动态 PRACH 配置和初始化序列测试 部分。
M-Plane Hybrid Mode ORAN YANG Model Provisioning#
Aerial 支持 M-plane 混合模式,该模式允许 NMS/SMO 使用 ORAN YANG 数据模型将 RU 功能、C/U-plane 传输配置和 U-plane 配置传递给 L1。
这是高级别序列图

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

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

数据模型传输 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_exporter 和 https://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 时间的偏差程度。
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。