4. 数据面硬件组成
Broadcom 交换芯片的数据面并不是一条“从端口到端口”的直线,而是一条由多个硬件子系统串联而成的流水线。理解这条流水线的关键,是把它拆成五个相互配合的部件:入向流水线(Ingress Pipeline)、流量管理器(TM,Traffic Manager)、缓冲(Buffer)、调度器(Scheduler)与MMU(Memory Management Unit)。它们共同决定了报文能否被正确解析、缓存、排队、调度并最终从出向端口发出。
入向流水线:解析、查表与转发决策
报文从物理端口进入芯片后,首先进入入向流水线。以典型的 Broadcom Trident/Tomahawk 系列为例,入向流水线大致包含以下阶段:
- PHY/MAC 层:完成串并转换、对齐、CRC 校验,剥离前导码与 FCS,得到干净的以太帧。
- 解析器(Parser):逐层解析 L2/L3/L4 头部,提取目的 MAC、源 MAC、VLAN、目的 IP、源 IP、协议号、目的端口等字段,形成内部包头(Internal Header)。
- 查表与转发决策:通过 TCAM/SRAM 查表完成 MAC 学习、路由查找、ACL 匹配、VLAN 转换等,得到出端口、下一跳、优先级、丢弃策略等结果。
- 入向处理:执行计量(Metering)、标记(Marking)、镜像(Mirroring)、隧道封装/解封装等操作。
入向流水线的输出是一个带有完整转发元数据的内部报文,它决定了报文接下来进入哪个队列、以什么优先级排队、是否允许被丢弃。
TM、缓冲、调度器与 MMU 的协同关系
入向流水线完成决策后,报文并不会立即从出端口发出,而是先进入 TM 子系统。TM 是数据面的“交通枢纽”,它负责把报文放入正确的队列,并在出向端口拥塞时决定谁先走、谁等待、谁被丢弃。TM 内部由三个关键部件构成:
- 缓冲(Buffer):由片上 SRAM 与外部 HBM/DDR 组成,按队列或队列组分配空间。缓冲是“蓄水池”,用来吸收突发流量,避免瞬时拥塞导致丢包。
- 调度器(Scheduler):按端口、队列组、队列三级层次进行调度,支持 SP(严格优先级)、WRR(加权轮询)、DWRR(赤字加权轮询)等算法,决定哪个队列下一个获得出向带宽。
- MMU(Memory Management Unit):负责缓冲区的分配、回收与阈值管理。它维护每个队列的占用计数,当队列占用超过动态阈值(如 Alpha 阈值)时,触发 WRED 或尾丢弃,防止单一队列耗尽全局缓冲。
三者的关系可以这样理解:MMU 管“能不能存”,缓冲管“存在哪”,调度器管“谁先出”。入向流水线决定报文进入哪个队列,出向流水线则从队列中取出报文并完成最终封装与发送。
缓冲与 MMU 的阈值机制
缓冲不是无限大的,MMU 必须通过阈值来约束每个队列的占用。常见的阈值策略有两种:静态阈值和动态阈值。静态阈值给每个队列固定分配一个上限,实现简单但利用率低;动态阈值则根据当前空闲缓冲总量动态调整每个队列的上限,典型公式为:
队列阈值 = Alpha × (空闲缓冲总量 - 队列当前占用)
其中 Alpha 是一个可配置系数(通常为 1/2、1/4、1/8 等)。当队列占用超过该阈值时,MMU 会触发 WRED(加权随机早期检测)或尾丢弃。WRED 的好处是提前随机丢弃部分报文,让 TCP 发送端感知拥塞并降速,而不是等到缓冲完全耗尽后一次性丢弃大量报文。
调度器的层次与算法选择
调度器通常采用三级层次结构:端口级 → 队列组级 → 队列级。端口级决定哪个端口优先发送,队列组级决定同一端口下哪个队列组优先,队列级决定同一队列组内哪个队列优先。每一级都可以独立配置调度算法。
| 调度算法 | 特点 | 适用场景 |
|---|---|---|
| SP(严格优先级) | 高优先级队列绝对优先,低优先级可能饿死 | 语音、控制协议等低时延业务 |
| WRR(加权轮询) | 按权重分配带宽,实现简单 | 普通数据业务,权重粒度较粗 |
| DWRR(赤字加权轮询) | 按字节数精确分配带宽,支持可变长帧 | 需要精确带宽保障的业务 |
一个常见的配置思路是:端口级使用 DWRR 保证各端口带宽公平,队列组级使用 SP 保证控制流量优先,队列级使用 WRR 在数据队列之间分配剩余带宽。这样既保证了关键业务的低时延,又避免了低优先级队列被完全饿死。
出向流水线与端到端闭环
调度器选中某个队列后,报文进入出向流水线。出向流水线完成 VLAN 编辑、隧道封装、TTL 递减、FCS 重算等操作,然后交给 MAC/PHY 发送到物理端口。至此,一个报文从入向到出向的完整路径才真正闭合。
需要特别注意的是,MMU 的拥塞反馈会反向影响入向流水线。当某个队列的缓冲占用超过阈值时,MMU 可以通知入向流水线对该队列的报文执行丢弃或标记,从而在源头上抑制拥塞。这种“入向决策—TM 排队—MMU 阈值—调度出向—反馈入向”的闭环,正是 Broadcom 交换芯片数据面能够在线速下保持稳定吞吐的核心机制。