背景
PRBS(Pseudo-Random Binary Sequence,伪随机二进制序列)是物理端口研发和生产中用于评估其传输质量的核心测试信号。它模拟真实数据流的随机性,通过对比发送和接收的码流来计算误码率,从而衡量物理端口的性能。
当前 BMC 已支持光模块 PRBS 测试能力,在此基础上还需要1825大板和1825扩展卡的端口和光模块进行PRBS测试。
关联ISSUE
无
整体方案
在现有光模块 PRBS 测试能力基础上,扩展 PRBS 测试对象到1825大板和1825扩展卡的端口和光模块。
Redfish触发PRBS测试时,整体流程在network_adapter应用层中控制(复用已有NPU 光模块的能力), 应用层发送设备树RPC到南向网卡,再由南向发送smbus报文到网卡触发PRBS测试。
sequenceDiagram
participant Redfish as Redfish
participant prbs as network应用层prbs管理
participant obj as 南向网卡部件
participant NIC as 1825网卡
%% 场景1:配置光模块PRBS测试
Redfish->>prbs: 配置端口/光模块prbs
prbs->>obj: rpc配置prbs测试
obj->>NIC: SMBus命令(配置项/测试时长/码型)
NIC-->>obj: 返回exe_result
obj-->>prbs: 返回exe_result
prbs->>prbs: 启动prbs测试监测任务
loop 轮询
prbs->>obj: rpc查询prbs结果
obj->>NIC: SMBus命令
NIC-->>obj: 返回误码率/失锁等结果
obj-->>prbs: 返回结果
prbs-->>prbs: 缓存测试结果
alt 测试超时则终止任务
prbs->>obj: rpc下发终止测试
obj->>NIC: 下发SMBus命令终止测试
NIC-->>obj: 返回exe_result
obj-->>prbs: 返回exe_result
prbs->>prbs: 测试对象从running_test_list移除
end
end
prbs-->>Redfish: 返回配置结果
%% 场景3:查询光模块PRBS测试结果
Redfish->>prbs: 查询PRBS测试结果
prbs-->>Redfish: 从本地缓存中返回查询结果
%% 场景4:清除光模块PRBS测试统计结果
Redfish->>prbs: 清除prbs测试统计
prbs->>obj: rpc清除PRBS统计
obj->>NIC: SMBus命令
NIC-->>obj: 返回exe_result
obj-->>prbs: 返回exe_result
prbs-->>Redfish: 返回exe_result
%% 场景5:关闭光模块PRBS测试
Redfish->>prbs: 触发关闭PRBS测试
prbs->>obj: rpc关闭prbs测试
obj->>NIC: SMBus命令
NIC-->>obj: 返回exe_result
obj-->>prbs: 返回exe_result
prbs-->>Redfish: 返回关闭结果
复用NPU光模块prbs控制流程,1825端口和光模块整体控制流程在应用层
评审点
| 评审点 | 标题 | 接口类型 |
|---|---|---|
| 评审点一 | 新增设备树资源协作接口bmc.dev.PRBSTest | 南向接口规范 |
| 评审点二 | 设备树资源协作接口bmc.dev.PRBSTest新增方法GetState | 南向接口规范 |
| 评审点三 | 设备树资源协作接口bmc.dev.PRBSTest新增方法Config | 南向接口规范 |
| 评审点四 | 设备树资源协作接口bmc.dev.PRBSTest新增方法ClearStatistics | 南向接口规范 |
| 评审点五 | 设备树资源协作接口bmc.dev.PRBSTest新增方法GetResult | 南向接口规范 |
| 评审点六 | 设备树资源协作接口bmc.dev.PRBSTest新增方法Close | 南向接口规范 |
详细描述
评审点一:新增设备树资源协作接口bmc.dev.PRBSTest
资源协作接口: bmc.dev.PRBSTest
资源路径: /bmc/dev/Systems/${SystemId}/PCIeNicCard/{PCIeNicCardId}
接口描述: 描述南向网卡PRBS测试能力,提供PRBS测试状态查询、配置、清除统计、查询结果和关闭测试等PRBS测试管理方法
评审点二:设备树资源协作接口bmc.dev.PRBSTest新增方法GetState
资源协作接口: bmc.dev.PRBSTest
新增方法
| 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 |
|---|---|---|---|---|---|
GetState |
sy |
TestType: PRBS测试类型,包括OpticalModule和Port, String类型 TestId: 光模块/端口的Id, U8类型 |
yyy |
Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 SupportedType: 被请求的光模块或者端口的支持的PRBS类型,0-不支持,1-CMIS定义,2-海思自定义, U8类型 TestState: 被请求的光模块或者端口的测试状态,0-非测试状态,1-Tx使能,2-Rx使能,3-TxRx均可以, U8类型 |
查询光模块或端口的PRBS测试状态 |
评审点三:设备树资源协作接口bmc.dev.PRBSTest新增方法Config
资源协作接口: bmc.dev.PRBSTest
新增方法
| 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 |
|---|---|---|---|---|---|
Config |
syyyu |
TestType: PRBS测试类型,包括OpticalModule和Port, String类型 TestId: 光模块/端口的Id, U8类型 ConfigItem: 配置项,0-启动prbs发送,1-启动prbs接口,2-同时启动prbs发送接收, U8类型 PrbsType: prbs码型, U8类型 TestTime: 测试时长,单位秒, U32类型 |
y |
Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 | 配置光模块或端口的PRBS测试 |
评审点四:设备树资源协作接口bmc.dev.PRBSTest新增方法ClearStatistics
资源协作接口: bmc.dev.PRBSTest
新增方法
| 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 |
|---|---|---|---|---|---|
ClearStatistics |
sy |
TestType: PRBS测试类型,包括OpticalModule和Port, String类型 TestId: 光模块/端口的Id, U8类型 |
y |
Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 | 清除光模块或端口的PRBS测试统计结果 |
评审点五:设备树资源协作接口bmc.dev.PRBSTest新增方法GetResult
资源协作接口: bmc.dev.PRBSTest
新增方法
| 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 |
|---|---|---|---|---|---|
GetResult |
sy |
TestType: PRBS测试类型,包括OpticalModule和Port, String类型 TestId: 光模块/端口的Id, U8类型 |
yauuu |
Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 ErrorBitRate: 预留8个通道的误码率,每个通道4字节, Array类型 RxLostOfLock: 8个通道测试过程中RX失锁状态位图, U32类型 TxLostOfLock: 8个通道测试过程中Tx失锁状态位图, U32类型 |
查询光模块或端口的PRBS测试结果 |
评审点六:设备树资源协作接口bmc.dev.PRBSTest新增方法Close
资源协作接口: bmc.dev.PRBSTest
新增方法
| 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 |
|---|---|---|---|---|---|
Close |
sy |
TestType: PRBS测试类型,包括OpticalModule和Port, String类型 TestId: 光模块/端口的Id, U8类型 |
y |
Result: 返回结果,0:执行成功;1:执行失败;2:不支持prbs, U8类型 | 关闭光模块或端口的PRBS测试 |
是否准备好AI预审
是
评审结论
- 同意新增资源协作接口
- 资源协作接口:bmc.dev.PRBSTest
- 资源路径:/bmc/dev/Systems/${SystemId}/PCIeNicCard/{PCIeNicCardId}
- 同意资源协作接口新增方法GetState,查询PRBS测试状态
- 对应接口:bmc.dev.PRBSTest
- 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”,分别表示光模块和端口。2、TestId表示光模块/端口的Id,类型为U8
- 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs。2、SupportedType表示被请求的光模块或者端口的支持的PRBS类型,类型为U8,取值:0-不支持、1-CMIS定义、2-海思自定义。3、TestState表示被请求的光模块或者端口的测试状态,类型为U8,取值:0-非测试状态、1-Tx使能、2-Rx使能、3-TxRx均可以
- 同意资源协作接口新增方法Config,配置PRBS测试
- 对应接口:bmc.dev.PRBSTest
- 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8。3、ConfigItem表示配置项,类型为U8,取值:0-启动prbs发送、1-启动prbs接口、2-同时启动prbs发送接收。4、PrbsType表示prbs码型,类型为U8。5、TestTime表示测试时长,类型为U32,单位秒
- 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs
- 同意资源协作接口新增方法ClearStatistics,清除PRBS测试统计
- 对应接口:bmc.dev.PRBSTest
- 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8
- 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs
- 同意资源协作接口新增方法GetResult,查询PRBS测试结果
- 对应接口:bmc.dev.PRBSTest
- 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8
- 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs。2、ErrorBitRate表示预留8个通道的误码率,每个通道4字节。3、RxLostOfLock表示8个通道测试过程中RX失锁状态位图,类型为U32。4、TxLostOfLock表示8个通道测试过程中Tx失锁状态位图,类型为U32
- 同意资源协作接口新增方法Close,关闭PRBS测试
- 对应接口:bmc.dev.PRBSTest
- 入参:1、TestType表示PRBS测试类型,类型为string,取值支持"OpticalModule"、“Port”。2、TestId表示光模块/端口的Id,类型为U8
- 响应参数:1、Result表示返回结果,类型为U8,取值:0-执行成功、1-执行失败、2-不支持prbs
遗留问题
1、RxLostOfLock和TxLostOfLock的 U8类型需要改成U32, 获取不到时使用全F。
闭环:已修改
2、PrbsType: prbs码型, U8类型 补充一下说明有哪些值