跳到主要内容

交换机行为建模分析

本文档分析 PAXI/RC Link 报文经过 L2 交换机时的行为, 从仿真建模角度梳理交换机需要处理的报文特征、内部处理流水线、调度仲裁、流控交互、QoS 映射和延迟模型。

基于: PAXI SUE2.0 Core UserGuide V2R0P5, RCLINK AFH SPEC v2.4

标注约定:

  • [DOC] - 直接引用自官方文档原文
  • [推导] - 基于文档信息的合理推导
  • [建模] - 仿真建模需要关注的要点

交换机兼容性声明

官方声明

[DOC] 来自 PAXI SUE2.0 UserGuide 1.2.1 General Features:

"Compatible with Layer 2 switches."

PAXI 明确声称兼容二层交换机。这意味着交换机不需要理解 PAXI/RC Link 的传输层语义, 只需作为标准以太网帧的转发设备。

兼容性的本质

[推导] PAXI 报文对交换机而言是标准以太网帧:

  • 所有 4 种报文格式 (Standard, AFH_GEN1, AFH_GEN2_16b, AFH_Lite) 均封装在标准以太网帧内
  • 交换机基于 MAC DA 进行转发, 无需解析 IP/UDP 或 RH 层
  • 交换机看到的只是不同长度的以太网帧, 携带不同的 EtherType/VLAN 标签

[建模] 交换机模型不需要解析 PAXI Flit/RH 的内容, 只需要处理以太网帧级别的行为:

  • 帧长度 (决定串行化延迟和缓冲消耗)
  • MAC DA (决定转发端口)
  • VLAN PCP / Traffic Class (决定优先级队列)
  • ECN 标记 (仅 Standard 格式)

报文格式与交换机可见性

四种格式对交换机的呈现

[DOC] RC Link 支持四种报文格式, 交换机对不同格式的可见字段不同:

格式MAC 头有 IP/UDP有 VLAN有 Eth_type交换机可解析层
Standard标准 48b DA/SA可选MAC + VLAN + IP (含 ECN/DSCP)
AFH_GEN1自定义 12B AFH1可选MAC DA/SA + VLAN + TC 域
AFH_GEN2_16b自定义 12B AFH2可选MAC DA/SA + VLAN + TC 域
AFH_LiteAFH_GEN2 复用仅 MAC DA/SA

各格式报文头开销

[DOC] 来自 RCLINK AFH SPEC 5.2, 各格式的报文头长度 (TYPE1 REQ):

格式无 VLAN有 VLAN说明
Standard12B MAC + 2B Eth_type + 20B IP + 8B UDP + 8B RH = 50B+4B VLAN = 54B最大, 含完整协议栈
AFH_GEN112B AFH1 + 2B Eth_type + 8B RH = 22B+4B VLAN = 26B可选 TC 域
AFH_GEN2_16b12B AFH2 + 2B Eth_type + 8B RH = 22B+4B VLAN = 26B16-bit 地址压缩
AFH_Lite12B AFH2 头 (无 Eth_type/RH)不支持 VLAN最小, LITE 模式专用

[建模] 报文总长 = 报文头 + Payload (max 1344B) + 可选 ICRC (4B) + FCS (4B):

  • Standard 无 VLAN: 50 + 1344 + 4 + 4 = 1402B (最大)
  • AFH_Lite: 12 + 1344 + 4 = 1360B (最小, 无 ICRC)
  • 均远小于 Jumbo Frame (9000B), 交换机不需要 Jumbo Frame 支持

Standard 格式的交换机行为

[DOC] Standard 格式使用标准 MAC/IP/UDP 报头:

+----------+----------+----------+----------+--------+---------+------+-----+
| MAC DA/SA| VLAN(opt)| Eth_type | IP Header| UDP Hdr| RH | Data |ICRC |FCS|
| 12 bytes | 4 bytes | 2 bytes | 20 bytes | 8 bytes| 8 bytes | <=1344B|4B|4B|
+----------+----------+----------+----------+--------+---------+------+-----+

交换机可见字段:

  • MAC DA: 标准 48-bit 目标地址, 用于 L2 转发决策
  • VLAN PCP: 3-bit 优先级 (若 vlan_en=1), 用于 QoS 分类
  • IP ToS: {DSCP[5:0], ECN[1:0]}, 交换机可进行 ECN 标记

[DOC] 来自 RCLINK AFH SPEC 5.2.2:

"IP head ToS: ToS = {DSCP[5:0], ECN[1:0]}"

[DOC] 来自 RCLINK AFH SPEC 5.2.3:

"UDP destination port: 16'd4791"

[推导] UDP 端口 4791 是 RoCE v2 标准端口。交换机可据此识别 RoCE 流量并应用特定 QoS 策略。但 PAXI 的 IP/UDP 头是"伪造"的 (UDP 校验和固定 0xFFFF), 仅用于交换机兼容, 不代表真实的 IP 层通信。

AFH 格式的交换机行为

[DOC] AFH_GEN1/AFH_GEN2_16b 使用自定义 MAC 头:

AFH_GEN1 (No VLAN):
+--------------------+----------+--------+---------+------+-----+
| 12B AFH1 Header | Eth_type | RH | Data |ICRC | FCS |
| (DA/SA + TC 域) | 2 bytes | 8 bytes| <=1344B | 4B | 4B |
+--------------------+----------+--------+---------+------+-----+

AFH1 Header 12 字节内部结构:
Destination Address (48-bit)
Traffic Class[7:0] | Source Address (高位)
Source Address (低位)

[DOC] 来自 RCLINK AFH SPEC 5.2.1:

MAC_SA 高位字节中嵌入 Traffic Class[7:0], 其中 Traffic_class[7:2] 携带流量类型和优先级信息。

[推导] 交换机对 AFH 格式报文的处理:

  1. MAC DA 转发: AFH 头中仍有标准位置的 48-bit DA, 交换机可正常进行 MAC 表查找和转发
  2. VLAN QoS: 若 vlan_en=1, VLAN PCP 字段可被交换机用于优先级分类
  3. 无 ECN 支持: AFH 格式没有 IP 头, 交换机无法进行 ECN 标记
  4. TC 域: 嵌入在 SA 字段中, 标准交换机不会解析此字段

[建模] AFH 格式下, 交换机的 ECN 机制失效, 只能依赖以下手段进行拥塞管理:

  • PFC (基于 VLAN 优先级)
  • CBFC (端到端, 对交换机透明)
  • Tail Drop / WRED (交换机本地策略)

AFH_Lite 格式与 LITE 模式

[DOC] 来自 RCLINK AFH SPEC 5.11:

"在 LITE 模式下, 只支持数据调度发送与接收, 不进行端对端的重传保护。"

[DOC] LITE 模式的核心特征:

  • 无 E2E 重传 (Go-Back-N 关闭)
  • 上游将 XPU_ID 和虚拟通道信息传输至 RCLINK
  • Source_qpid = {XPU_ID, BANK}
  • 通过 Traffic Class[7:0] 携带 VC 信息
  • 远端接收 LITE 报文后, 解析出 XPU_ID 和 VC 信息

[推导] LITE 模式是专为交换机网络设计的组网方案:

  1. 去除 E2E 重传: 依赖交换机网络的可靠性 (交换机内部 CRC 校验 + Store-and-Forward 过滤错误帧)
  2. 简化报文头: 仅 12B 头部, 最小化头部开销
  3. VC 通过 TC 携带: Traffic Class[7:0] 中编码 VC 信息, 交换机可据此进行优先级映射
  4. 无 VLAN/Eth_type: 报文格式最简, 依赖交换机的默认端口 VLAN 和默认优先级

[建模] LITE 模式下交换机需要注意:

  • 丢包不可恢复 (无重传), 交换机必须确保无损转发
  • Traffic Class 字段可被配置为交换机的优先级来源 (如果交换机支持基于 SA 字段的分类)
  • 否则所有 LITE 报文会落入默认优先级队列

流控机制与交换机交互

流控模式选择

[DOC] PAXI Ctrl Register (0x00C) bit7:

"CBFC_EN: Set 1 to enable CFBC mode. Set 0 to enable PFC mode."

CBFC 和 PFC 互斥, 同一时间只能启用一种:

流控模式交换机参与度适用拓扑
CBFC完全透明, 交换机不参与点对点、简单交换网络
PFC交换机主动参与, 收发 PFC 帧多跳交换网络

CBFC 模式 -- 对交换机透明

[DOC] CBFC 是端到端的 Credit-Based Flow Control:

发送端 (PAXI A)                         接收端 (PAXI B)
+-----------+ +-----------+
| RC Link | --- 数据帧 (含 Payload) ---> | MAC Input |
| CBFC_CTRL | | Buffer |
| | <--- Credit 返还 (CBFC) --- | Credit |
+-----------+ | Send |
| +-----------+
v
per-VC Credit
计数器 (8 VC)

[推导] 交换机在 CBFC 模式下的行为:

  1. 完全透明: CBFC 的 Credit 信息通过 MAC 层信号传递 (MAC2TX_CBFC_VLD_I), 不在以太网帧中显式编码。交换机只是转发普通以太网帧, 不参与流控
  2. 无背压传播: CBFC 不会产生 PFC 帧, 交换机端口不会被 PFC 暂停
  3. 拥塞风险: 如果交换机出口拥塞, 没有逐跳背压机制, 可能导致交换机丢包
  4. 适用场景: 点对点直连或低拥塞网络

[建模] CBFC 模式下交换机建模简化:

  • 交换机不需要实现 PFC 状态机
  • 需要关注交换机内部缓冲管理 (Tail Drop 或 WRED)
  • CBFC 的 Credit 延迟 = 数据帧穿越交换机延迟 + Credit 返回延迟

PFC 模式 -- 交换机主动参与

[DOC] PFC 基于 PAXI RX Buffer 水位线触发:

PAXI RX Buffer 使用率:
0% --------- LOW_WM --------- HIGH_WM --------- 100%
| | | |
正常 解除PFC 触发PFC 缓冲溢出

[DOC] 来自 SUE2.0 3.2.23~3.2.25, 水位线配置:

Buffer 类型高水位线 (触发 PFC)低水位线 (解除 PFC)预留空间
REQ MEM32帧 + 1RTT1RTT1RTT (吸收在途数据)
RSP MEM32帧 + 1RTT1RTT1RTT
MUL MEM8帧 + 1RTT1RTT1RTT

[推导] PFC 帧从 PAXI 端点发出, 经交换机到达发送端:

3.3 PFC 端到端背压流程

编辑源文件: drawio/3_flow_control.drawio · 页面: "3.3 PFC Sequence"

[建模] PFC 模式下交换机行为:

  1. 交换机接收 PFC 帧: 从下游端口收到 PFC PAUSE 帧后, 暂停对应优先级的上游端口发送
  2. 交换机生成 PFC 帧: 交换机自身出口拥塞时, 也可以向上游发送 PFC 帧 (如果交换机支持)
  3. 逐跳传播: PFC 可以在多跳网络中逐跳传播背压
  4. PFC 优先级映射: VLAN PCP -> 交换机 QoS 优先级 -> PFC 通道

PFC 优先级映射

[DOC] 来自 RCLINK AFH SPEC 5.2.4:

VLAN_TAG 中的 pri 字段 (3-bit) 映射到 CBFC/PFC 优先级。

[DOC] CBFC 模式下 VLAN pri 映射:

VLAN priCBFC VC
pri[2:0]直接映射 VC[2:0]

[推导] PFC 模式下, VLAN PCP 与 PAXI VC 的映射关系:

PAXI 流量类型建议 VLAN PCP对应交换机优先级队列
TYPE1 REQ Bank0~3PCP 3~4高优先级 (数据流)
TYPE1 ACK + CNPPCP 5~6较高优先级 (控制流)
TYPE2 (多播)PCP 2中等优先级
TYPE3 (原始以太网)PCP 0Best-Effort

[建模] 交换机需要为每个 PFC 优先级维护独立的入口/出口队列:

  • 收到 PFC PAUSE 帧时, 仅暂停对应优先级的流量
  • 其他优先级的流量不受影响
  • 最多需要 8 个独立的优先级队列 (对应 8 个 VC)

ECN 与拥塞通知

[DOC] 来自 RCLINK AFH SPEC 4.1 Features:

"ECN: Support ECN."

[DOC] 来自 RCLINK AFH SPEC 5.2.2:

IP ToS = {DSCP[5:0], ECN[1:0]}

ECN 工作流程:

3.3 PFC 端到端背压流程

编辑源文件: drawio/3_flow_control.drawio · 页面: "3.3 PFC Sequence"

[DOC] RC Link 检测到收到的数据包中 ECN 字段为 CE (Congestion Experienced, 11) 时:

  • 自动生成 CNP (Congestion Notification Packet, RH Opcode=10)
  • 发回给发送端

[推导] ECN 的格式限制:

报文格式ECN 支持原因
Standard支持有 IP 头, 交换机可标记 ECN
AFH_GEN1不支持无 IP 头, 交换机无法标记
AFH_GEN2_16b不支持无 IP 头
AFH_Lite不支持无 IP 头, 无 VLAN

[建模] 交换机 ECN 标记行为 (仅 Standard 格式):

  1. 检查入队报文的 IP ECN 字段, 若 ECN = 01 或 10 (ECT), 表示端点支持 ECN
  2. 当出口队列深度超过 ECN 阈值时, 将 ECN 字段改写为 11 (CE)
  3. 继续转发报文 (不丢弃)
  4. 报文到达接收端 RC Link 后, RC Link 检测 CE 标记并生成 CNP

PAXI 速率控制与交换机的关系

Per-QP 速率控制

[DOC] 来自 RCLINK AFH SPEC 5.3:

RC Link 支持 MB 精度的队列速率控制:

CC_WINDOW (时间窗口):
可配范围: 4.096 us ~ 65.536 us (4096 ~ 65536 个 1ns 时钟周期)

length_thr (字节阈值):
每个时间窗口内允许通过的最大数据量

速率 = length_thr / CC_WINDOW

[DOC] 当 QP 的速率被控制模块阻塞时:

  • 对应 slot 的状态变为 WAIT_CRD
  • 直到控制模块撤销阻塞 (clear cc_mask), slot 重新变为 WAIT_GRANT

[推导] 这不是标准的 DCQCN 算法:

  • DCQCN: 基于 alpha/beta 参数的 AIMD 算法, 收到 CNP 后按公式降速
  • PAXI 速率控制: 基于固定时间窗口 + 字节阈值的简单限速机制

[建模] 交换机模型中, PAXI 的速率控制是端点行为:

  • 交换机不需要实现速率控制
  • 交换机只需要实现 ECN 标记 (将拥塞信号传递给端点)
  • 端点收到 CNP 后, 通过 CC 接口 (ABN_INFO_VLD_I) 上报给上层, 由软件或硬件逻辑调整 CC_WINDOW / length_thr

CNP MERGE 机制

[DOC] 来自 RCLINK AFH SPEC 5.9:

"该模块的功能是过滤掉在一段时间内连续到来的同一个 QPID 的 CNP 报文。"

CNP MERGE 使用 QPID_Buffer (深度 8) 和 TIMER_Buffer:

  • 收到 CNP 时, 检查 QPID 是否在 QPID_Buffer 中
  • 若不在: 直接透传, 记录到 QPID_Buffer
  • 若在: 检查时间差是否 < TIMER_THR_I, 是则屏蔽 (合并), 否则透传

[建模] CNP MERGE 是端点行为, 对交换机透明:

  • 交换机只需转发 CNP 报文
  • CNP 报文为 TYPE1_ACK 格式 (RH Opcode=10), 无 Payload, 体积小
  • 交换机应为 CNP 报文分配较高优先级 (与 ACK 共享 VC)

交换机内部架构

处理流水线概览

[建模] 一个 PAXI 帧进入交换机后经历的完整处理阶段:

5.1 L2 交换机 6 级处理流水线

编辑源文件: drawio/5_switch_architecture.drawio · 页面: "5.1 Switch Pipeline"

[建模] 各阶段对 PAXI 不同格式的处理差异:

阶段StandardAFH_GEN1/GEN2AFH_Lite
帧解析提取 MAC + IP + UDP提取 AFH MAC + Eth_type仅提取 AFH MAC
QoS 分类VLAN PCP 或 DSCPVLAN PCP (或 TC 域)默认优先级
MAC 查表标准 48-bit DAAFH 头中的 DA 字段AFH 头中的 DA 字段
ECN 标记可修改 IP.ECN不可用 (无 IP)不可用

入口处理

帧解析

[建模] 交换机解析 PAXI 帧的逻辑:

收到以太网帧:
|
+-- 提取 MAC DA (byte 0~5): 转发决策
+-- 提取 MAC SA (byte 6~11): MAC 学习
+-- 检查 EtherType / VLAN:
|
+-- EtherType = 0x8100 -> 有 VLAN, 提取 PCP[2:0]
| 再检查内层 EtherType
+-- EtherType = 0x0800 -> IPv4, 解析 IP 头 (仅 Standard 格式)
| 提取 ToS = {DSCP[5:0], ECN[1:0]}
+-- 其他 EtherType -> 按默认策略处理 (AFH 自定义格式)

[推导] AFH 格式的 EtherType 问题:

  • AFH_GEN1/GEN2 携带 Eth_type 域, 但值可能是自定义的 (非 0x0800)
  • 交换机可能无法识别此 EtherType, 会按默认策略处理
  • AFH_Lite 无 Eth_type, 交换机仅基于 MAC DA 转发

QoS 分类

[建模] PAXI 流量的优先级来源, 按优先级排列:

1. VLAN PCP (3-bit, 0~7):
仅当 vlan_en=1 时可用
交换机直接使用 PCP 值分类到对应优先级队列

2. IP DSCP (6-bit, Standard 格式):
交换机可选择用 DSCP 替代 PCP 分类
PAXI 的 DSCP 携带 VC 信息 (CBFC 模式下)

3. 端口默认优先级:
无 VLAN 时 (如 AFH_Lite), 所有帧使用端口默认优先级
所有 PAXI 帧落入同一队列, 无法区分 VC

VOQ 架构

VOQ 基本结构

[建模] VOQ (Virtual Output Queuing) 消除 Head-of-Line 阻塞:

5.3 VOQ 架构与 QoS 优先级映射

编辑源文件: drawio/5_switch_architecture.drawio · 页面: "5.3 VOQ + QoS"

[推导] PAXI 场景下的 VOQ 规模:

交换机规格端口数优先级数VOQ 总数说明
小型 ToR842568 芯片直连
中型 ToR164102416 芯片, 常见配置
大型 Spine3288192Spine 层, 全优先级
超大型64832768大规模组网

PAXI 流量的 VOQ 映射

[推导] PAXI VC 到 VOQ 优先级的映射:

5.3 PAXI VC 到 VOQ 优先级映射

编辑源文件: drawio/5_switch_architecture.drawio · 页面: "5.3 VOQ + QoS"

[建模] PAXI 流量特征对 VOQ 的影响:

  1. REQ 和 RSP 应映射到不同优先级: 避免 REQ 拥塞阻塞 RSP 返回 (死锁风险)
  2. ACK/CNP 应使用较高优先级: 确保控制帧不被数据帧阻塞
  3. TYPE2 多播可使用独立优先级: 隔离多播和单播流量

建议的最小优先级分配:

优先级PAXI 流量理由
3 (高)TYPE1 ACK + CNP控制帧优先, 保证 E2E 重传和拥塞反馈的时效性
2 (中)TYPE1 REQ (数据)主要数据流量
1 (低)TYPE1 RSP (响应)响应数据, 单独隔离防止 REQ-RSP 死锁
0 (BE)TYPE2 / TYPE3多播和管理流量

iSLIP 调度算法

算法原理

[建模] iSLIP (Iterative Round-Robin Matching) 是交换机 Crossbar 的核心调度算法:

每个时间槽 (time slot) 执行 1~4 次迭代:

Iteration k:

Step 1: Request (请求)
每个输入端口 i 检查所有非空 VOQ:
if VOQ[i][j][p] 非空:
向输出端口 j 发送请求 (携带优先级 p)

Step 2: Grant (授权)
每个输出端口 j 使用 Round-Robin 仲裁器:
从 grant_ptr[j] 开始扫描所有请求
选择第一个请求, 发出授权
*仅当授权被接受时* 才更新 grant_ptr

Step 3: Accept (接受)
每个输入端口 i 使用 Round-Robin 仲裁器:
如果收到多个授权, 选择一个接受
更新 accept_ptr[i] = (j+1) mod N

iSLIP 与 PAXI 流量的交互

[推导] iSLIP 对 PAXI 流量的调度特征:

吞吐量 vs 迭代次数:
1 次迭代: ~63% 吞吐 (延迟最低)
2 次迭代: ~99% 吞吐 (推荐)
4 次迭代: ~99.9% 吞吐 (高吞吐优先)

[建模] PAXI 场景下的 iSLIP 考量:

  1. 小帧高频: PAXI 最大帧 ~1406B, 远小于 9000B Jumbo Frame。相同数据量下调度决策次数更多, iSLIP 迭代开销占比更大
  2. 多优先级: 若使用优先级感知的 iSLIP 变体, 高优先级 VOQ (ACK/CNP) 的 Grant 应优先
  3. Incast 模式: 集合通信 (AllReduce) 场景下多个输入端口同时向一个输出端口发送, iSLIP 的 Round-Robin 特性可保证公平性
  4. 指针去同步化: iSLIP 的核心优势 -- Grant 指针仅在被接受时更新, 逐渐去同步, 减少碰撞

优先级感知调度

[建模] 在 iSLIP 基础上增加优先级处理:

方案 A: 严格优先级 + iSLIP
- 高优先级 VOQ 有数据时, 始终优先调度
- 同优先级内使用 iSLIP 仲裁
- 风险: 低优先级可能饥饿

方案 B: 加权 iSLIP
- 按优先级权重分配调度机会
- 例如: ACK/CNP 权重 4, REQ 权重 2, RSP 权重 2, BE 权重 1
- 避免饥饿, 但高优先级延迟略增

推荐: 方案 A (PAXI ACK/CNP 流量占比小, 饥饿风险低)

共享缓冲池与 DT 算法

共享缓冲架构

[建模] 交换机使用共享内存池, 所有 VOQ 动态共享:

5.5 共享缓冲池架构

编辑源文件: drawio/5_switch_architecture.drawio · 页面: "5.5 Buffer + DT"

DT (Dynamic Threshold) 算法

[建模] DT 算法控制每个 VOQ 的最大可用缓冲:

5.5 DT 动态阈值算法

编辑源文件: drawio/5_switch_architecture.drawio · 页面: "5.5 Buffer + DT"

[推导] alpha 参数对 PAXI 流量的影响:

alpha 值行为适用场景
alpha < 1保守: 限制单个 VOQ 占用, 保护其他 VOQ多流量均衡场景
alpha = 1均衡: 平均分配剩余缓冲默认推荐
alpha = 2激进: 允许单个 VOQ 占用更多缓冲Incast 突发吸收
alpha = 4~8深吸收: 最大化突发吸收能力AllReduce 同步突发

[建模] PAXI 场景的 DT 参数建议:

集合通信 (AllReduce/AllToAll) 场景:
- Incast 严重, 多输入同时涌向一个输出
- 建议 alpha >= 2, 允许热点 VOQ 临时占用更多缓冲
- Static_Reserved 保持较小 (128-256 KB), 最大化共享池

点对点 (P2P) 通信场景:
- 流量较均匀, 无严重 Incast
- alpha = 1 即可
- Static_Reserved 可适当增大

缓冲需求估算

[建模] 基于 PAXI 流量特征的缓冲需求:

Incast 突发吸收:
N 个输入端口 x BW 同时发往 1 个输出端口
突发持续时间 T_burst

需要缓冲 = (N - 1) x BW x T_burst

示例 (8 端口 x 200GbE, 突发 10 us):
Buffer = (8-1) x 200 Gbps x 10 us = 1.75 MB (单个出口端口)

全交换机缓冲:
典型: 16 ~ 64 MB (取决于端口数和突发容忍度)

[推导] PAXI 报文较短 (max 1406B vs 9000B Jumbo):

  • 单帧占用缓冲少, 但报文数量多
  • 相同数据量下, 调度器压力更大 (更多调度决策)
  • 缓冲管理粒度更细 (更多小条目)

出口 QoS 调度

调度算法选择

[建模] 出口端口从多个优先级队列中选择下一个发送的帧:

算法行为PAXI 适用性
Strict Priority (SP)高优先级绝对优先, 低优先级可能饥饿推荐: ACK/CNP 流量少, 不会造成饥饿
WRR (Weighted Round Robin)按权重轮转, 避免饥饿可选: 需要带宽保证时
DWRR (Deficit WRR)WRR + 帧大小补偿, 更公平可选: PAXI 帧大小较一致, WRR 即可

推荐的 PAXI 出口调度

[建模] 两层混合调度:

5.6 出口调度: SP + WRR 混合

编辑源文件: drawio/5_switch_architecture.drawio · 页面: "5.6 Egress Scheduling"

[推导] 这种设计的原因:

  • ACK/CNP 用 SP: 帧体积小 (26~54B), 流量占比 <5%, 不会饥饿其他队列, 但保证控制帧最低延迟
  • REQ/RSP 用 WRR: 防止 REQ 独占带宽导致 RSP 返回受阻 (可能引起上游 PAXI RX Buffer 溢出)
  • RSP 权重略低于 REQ: 写响应 (B Flit) 和读数据 (R Flit) 通常滞后于请求

PFC 内部状态机

交换机 PFC 接收行为

[建模] 交换机从下游收到 PFC PAUSE 帧后的处理:

5.7 PFC 接收状态机

编辑源文件: drawio/3_flow_control.drawio · 页面: "5.7 PFC Hop-by-Hop"

交换机 PFC 发送行为

[建模] 交换机自身检测到出口拥塞时, 向上游发送 PFC:

5.7 PFC 发送状态机

编辑源文件: drawio/3_flow_control.drawio · 页面: "5.7 PFC Hop-by-Hop"

PFC 逐跳传播

[推导] 多跳网络中 PFC 的传播行为:

5.7 PFC 逐跳背压传播

编辑源文件: drawio/3_flow_control.drawio · 页面: "5.7 PFC Hop-by-Hop"

[建模] PFC 风险 -- 死锁与风暴:

风险原因缓解措施
PFC 死锁环形拓扑中 PFC 形成循环依赖避免环路拓扑; PFC Watchdog 超时恢复
PFC 风暴单点触发的 PAUSE 雪崩传播限制传播深度; 用 ECN 主动避拥塞
Victim Flow无关流量被同优先级 PFC 误暂停REQ/RSP 分优先级; 避免共享优先级

ECN 标记逻辑

[建模] 交换机 ECN 标记的内部实现 (仅 Standard 格式有效):

5.8 ECN 标记逻辑

编辑源文件: drawio/3_flow_control.drawio · 页面: "5.8 ECN Thresholds"

[推导] ECN 阈值与 PFC 阈值的关系:

5.8 ECN 阈值与 PFC 阈值层次关系

编辑源文件: drawio/3_flow_control.drawio · 页面: "5.8 ECN Thresholds"


交换机延迟模型

端到端延迟分解

[建模] 加入交换机后的完整路径延迟:

T_total = T_paxi_tx + T_rclink_tx + T_cesoc_tx
+ T_link_1 + T_switch + T_link_2
+ T_cesoc_rx + T_rclink_rx + T_paxi_rx

交换机延迟组成

6. 交换机延迟模型

编辑源文件: drawio/6-7_latency_scenarios.drawio · 页面: "6. Latency Model"

延迟组件含义典型值
T_ingress解析 + 分类 + 查表 (固定流水线)50-200 ns
T_queueingVOQ 排队 (iSLIP 调度 + 出口竞争)0 ~ 数 us (负载相关)
T_crossbarCrossbar 穿越10-50 ns
T_egress出口调度 + 串行化帧大小相关

串行化延迟

[建模] PAXI 报文的串行化延迟:

报文场景帧大小100GbE200GbE400GbE
TYPE1 REQ 最大帧 (Standard+VLAN)~1406B112.5 ns56.2 ns28.1 ns
TYPE1 REQ 最大帧 (AFH_Lite)~1360B108.8 ns54.4 ns27.2 ns
TYPE1 ACK (Standard+VLAN)~54B4.3 ns2.2 ns1.1 ns
TYPE1 ACK (AFH_GEN1)~26B2.1 ns1.0 ns0.5 ns

[推导] 与标准 RoCE v2 的对比:

  • RoCE v2 + MTU 4096B: 串行化延迟 ~328 ns (100GbE)
  • PAXI Standard 最大帧 1406B: 串行化延迟 ~112 ns (100GbE)
  • PAXI 报文更短, 串行化延迟更低, 但同等数据量需要更多报文、更多调度决策

转发模式

转发模式延迟适用性
Cut-Through固定 ~300-500 ns (与帧大小无关)推荐: 入口/出口速率相同时
Store-and-ForwardT_serialization + T_processing (帧大小相关)速率不匹配或需 CRC 校验时

[推导] Cut-Through 在出口拥塞时退化为 Store-and-Forward: 当出口端口正在发送其他帧时, 新帧无法立即直通, 必须完整缓存后排队等待。

排队延迟估算

[建模] 使用 M/D/1 排队论模型近似 (PAXI 帧长较固定):

M/D/1 模型 (泊松到达, 固定服务时间):

rho = lambda / mu (利用率, 必须 < 1)
lambda = 到达速率 (帧/秒)
mu = 服务速率 = BW / frame_size (帧/秒)

平均等待时间: W = (1/mu) * rho / (2 * (1 - rho))
平均队列长度: L = rho^2 / (2 * (1 - rho))

示例 (200GbE, 帧大小 1406B, 利用率 80%):
mu = 200e9 / (1406*8) = 17.78 M帧/秒
rho = 0.8
W = (56.2 ns) * 0.8 / (2 * 0.2) = 112.4 ns
L = 0.64 / 0.4 = 1.6 帧

[推导] 实际排队延迟受 Incast 等突发模式影响, 远高于 M/D/1 近似。建模时应使用事件驱动仿真而非排队论公式。

多跳延迟模型

[建模] N 跳交换网络:

6. 多跳网络延迟模型

编辑源文件: drawio/6-7_latency_scenarios.drawio · 页面: "6. Latency Model"


两种典型组网场景

场景 A: 点对点直连 (无交换机)

7.1 场景 A: 点对点直连

编辑源文件: drawio/6-7_latency_scenarios.drawio · 页面: "7. Network Scenarios"

[建模] 无交换机时:

  • T_switch = 0
  • 延迟 = T_paxi_tx + T_rclink_tx + T_cesoc_tx + T_link + T_cesoc_rx + T_rclink_rx + T_paxi_rx
  • CBFC 的 RTT = 上述延迟 * 2

场景 B: 交换机组网 (LITE 模式)

7.2 场景 B: 交换机组网 LITE 模式

编辑源文件: drawio/6-7_latency_scenarios.drawio · 页面: "7. Network Scenarios"

[推导] LITE 模式下交换机网络的关键约束:

  1. 无损要求: 没有 E2E 重传, 任何丢包都不可恢复

    • 交换机必须配置 PFC 或足够深的缓冲
    • 建议使用 PFC 模式 (CBFC_EN=0) 配合 Standard 格式 (提供 ECN 支持)
  2. 延迟增加: 每个交换机增加 300ns ~ 数 us 延迟

    • CBFC 的 Credit 往返时间增加
    • 可能需要增大 credit_limit 以维持吞吐
  3. 带宽效率: AFH_Lite 头部仅 12B, 报文效率最高

    • 有效带宽利用率: 1344 / (1344 + 12 + 4) = 98.8%
    • Standard 格式: 1344 / (1344 + 54 + 4 + 4) = 95.6%

场景 C: 交换机组网 (Standard 格式, 全功能)

7.2 场景 B: 交换机组网 LITE 模式

编辑源文件: drawio/6-7_latency_scenarios.drawio · 页面: "7. Network Scenarios"

[推导] 最接近标准 RoCE v2 网络的方案:

  • 交换机可以同时使用 ECN 和 PFC
  • ECN 提供主动拥塞避免, PFC 提供最后一道防线
  • Go-Back-N 重传提供端到端可靠性
  • 代价: 报文头较大 (50-54B), 有效带宽利用率降低

建模参数汇总

交换机模型输入参数

参数说明典型值
port_count端口数量4 / 8 / 16 / 32 / 64
port_bandwidth_gbps端口带宽100 / 200 / 400
forwarding_mode转发模式Cut-Through / Store-and-Forward
buffer_size_mb总缓冲大小16 / 32 / 64
buffer_sharing缓冲共享策略Static / Dynamic Threshold (DT)
dt_alphaDT 算法 alpha 参数0.5 / 1.0 / 2.0
ecn_enabled是否启用 ECN 标记true/false (仅 Standard 格式有效)
ecn_threshold_lowECN 标记起始阈值50% 队列深度
ecn_threshold_highECN 全标记阈值80% 队列深度
pfc_enabled是否启用 PFCtrue/false
pfc_thresholdPFC 触发阈值85% 队列深度
num_prioritiesQoS 优先级数量4 / 8
fixed_latency_ns固定处理延迟300 / 500 / 800

PAXI 端点参数 (影响交换机行为)

参数说明来源
pkt_format报文格式RC Link 配置 (Standard/AFH_GEN1/GEN2/Lite)
max_frame_size最大帧长TYPE1_PKT_LEN (1344B) + 头部开销
flow_control_mode流控模式CBFC_EN 寄存器 (CBFC=1/PFC=0)
lite_modeLITE 模式afh_lite_en 寄存器
vlan_enabledVLAN 使能vlan_en 寄存器
ecn_capableECN 能力仅 Standard 格式下有效
num_vcVC 数量8
vc_pcp_mappingVC 到 PCP 映射VLAN pri 配置

建模约束

约束说明
帧长 < 1500BPAXI 最大帧 ~1406B, 不需要 Jumbo Frame
LITE 模式无重传丢包 = 数据丢失, 交换机必须无损
ECN 仅限 StandardAFH 格式下无 ECN, 只能靠 PFC/CBFC
CBFC 对交换机透明交换机无需实现 CBFC 逻辑
PFC 逐跳传播交换机需要实现 per-priority PFC
VLAN PCP 映射 VC交换机按 PCP 分优先级队列

与通用交换机建模的差异总结

维度通用交换机 (RoCE v2)PAXI 交换机
帧大小64B ~ 9000B (Jumbo)64B ~ 1406B (无 Jumbo)
协议栈标准 Eth/IP/UDP/BTH4 种格式, 仅 Standard 有 IP/UDP
ECN始终可用 (有 IP 头)仅 Standard 格式可用
流控PFC + DCQCNPFC 或 CBFC (互斥), 速率控制非 DCQCN
拥塞控制DCQCN (标准算法)Per-QP 时间窗口限速
Payload最大 4096B (MTU)最大 1344B (TYPE1_PKT_LEN)
重传Go-Back-N (RDMA)TYPE1 支持, LITE 模式关闭
QoS 映射DSCP / VLAN PCPVLAN PCP + Traffic Class
组网模式多跳标准以太网直连 / 交换机 (LITE) / 标准 (Standard)