2. Broadcom交换芯片架构速览
Broadcom的StrataXGS与StrataDNX系列交换芯片虽然面向不同场景,但在缓存组织上遵循一条共同主线:入端口缓存 → 共享缓存(Shared Buffer)→ 出端口队列,由MMU(Memory Management Unit)统一仲裁与调度。理解这条主线,是后续学习拥塞管理、PFC、WRED、动态阈值等特性的前提。
一、三大系列的定位与缓存层次差异
Trident系列(如Trident 3、Trident 4)面向企业园区与数据中心接入/汇聚,采用单片集成、共享缓存池架构,缓存容量通常在几十MB量级,端口速率以10G/25G/100G为主。Tomahawk系列(Tomahawk 3/4/5)面向数据中心Spine/Leaf,追求高密度100G/400G/800G端口,缓存相对较小(数MB到十几MB),强调低时延与线速转发。Jericho系列(Jericho2/Jericho3)属于StrataDNX深度缓存路由芯片,缓存可达数GB,通过外挂HBM/DDR实现,面向运营商边缘与核心路由器,支持大规模路由表和深度队列。
三者的缓存层次可以概括为:Trident与Tomahawk使用片上共享缓存,所有端口竞争同一物理缓存池;Jericho使用片外深度缓存,通过TM(Traffic Manager)芯片与FAP(Fabric Adapter)配合,缓存被划分为多个逻辑分区。无论哪种形态,MMU都是缓存分配、队列管理和调度决策的核心。
二、共享缓存与端口缓存的划分
共享缓存并非“所有端口随意抢占”。芯片内部通常把总缓存划分为若干区域:
- 共享池(Shared Pool):所有端口按需动态申请,是吞吐优化的主要来源。
- 保留/专用区(Reserved / Dedicated):为特定端口或队列预留,防止被其他端口挤占,常用于控制平面或高优先级业务。
- 服务池(Service Pool):按端口组或优先级划分,用于实现公平性与隔离。
- Headroom:专门用于吸收PFC暂停响应期间的在途报文,是RoCE无损网络的关键。
端口缓存划分则体现在每端口队列(Unicast Queue、Multicast Queue)的阈值配置上。以Trident 3为例,每个端口可配置多个UC队列(通常8个),每个队列有独立的动态阈值(Dynamic Threshold)和静态阈值(Static Threshold)。动态阈值根据当前空闲缓存自动伸缩,静态阈值则给出硬上限。工程上常见的做法是:为高优先级队列设置较大的动态阈值系数,为低优先级队列设置较小的静态上限,从而在拥塞时优先丢弃低优先级流量。
三、MMU的角色与数据通路
MMU位于入端口与出端口之间,承担四项核心职责:缓存分配、队列管理、调度仲裁、丢弃决策。数据通路大致如下:报文从MAC/PCS进入,经解析器提取优先级、DSCP、流标签等信息,送入MMU的入队逻辑;MMU根据队列映射表把报文放入对应出端口队列,同时向缓存管理器申请cell(固定大小的缓存单元,常见为208字节或256字节);若申请失败或超过阈值,则触发丢弃或标记(ECN)。出队时,调度器按SP/WRR/DWRR等算法选择队列,从缓存中读出cell并送往出端口。
需要特别注意的是,MMU的缓存分配以cell为粒度,而非字节。一个1500字节的报文会占用多个cell,最后一个cell可能部分浪费。因此实际缓存利用率与报文长度分布密切相关。在估算缓存需求时,常用公式:所需cell数 ≈ 报文长度 / cell大小(向上取整)。例如cell为208字节时,64字节小包占1个cell,1518字节报文占8个cell。
bcm_cosq_gport_dynamic_threshold_set或bcm_cosq_gport_sched_set等API完成;Jericho则通过TM的队列配置接口。实际工程中建议先用bcm_cosq_stat_get观察各队列的缓存占用与丢弃计数,再调整阈值。四、一张图看清缓存层次与MMU数据通路
下图把入端口、MMU、共享缓存、出端口队列以及Headroom的关系集中呈现,便于对照理解。
五、工程视角下的关键参数与观察点
在实际调优中,需要关注几个可观测指标:每队列的缓存占用(buffer occupancy)、丢弃计数(drop counter)、ECN标记计数以及PFC暂停帧计数。以Trident 3为例,可以通过bcm_cosq_stat_get读取队列统计,结合bcm_cosq_gport_dynamic_threshold_get查看当前动态阈值。若发现某低优先级队列持续丢弃而高优先级队列缓存占用很低,说明动态阈值系数设置过于保守,可适当提高低优先级队列的共享池权重,或降低其静态上限以保护共享池。
对于Jericho系列,由于缓存外挂,MMU的分配逻辑还涉及TM与FAP之间的信元交换,配置时需同时关注TM队列深度与FAP链路信用。Headroom的配置尤其关键:在RoCE场景下,若Headroom不足,PFC暂停帧到达前报文已被丢弃,导致重传和时延抖动。一般建议Headroom按“端口速率 × 往返时延 × 1.5”估算,并留出余量。
总结来看,Trident/Tomahawk/Jericho的缓存层次虽有片上与片外之分,但MMU始终是缓存分配与调度的中枢。掌握共享池、保留区、服务池、Headroom的划分逻辑,以及MMU从入队到出队的数据通路,就能为后续的拥塞管理、PFC、WRED等专题打下坚实基础。