2. Broadcom交换芯片架构与遥测数据源

Broadcom StrataXGS 系列交换芯片是数据中心交换机中最常见的转发 ASIC 之一。要理解遥测数据从哪里来、为什么能反映真实转发状态,必须先看清芯片内部的功能分区,以及这些分区中哪些位置会留下可被采集的计数、寄存器和内存表项。本节以 Tomahawk、Trident 两个典型子系列为参照,梳理架构层次与遥测数据源的对应关系。

一、从端口到交换核心的功能分区

StrataXGS 芯片内部大致可分为四个层次:物理接口层(PHY/MAC)、入向处理流水线(Ingress Pipeline)、交换与缓冲层(MMU/Fabric)、出向处理流水线(Egress Pipeline)。数据包从面板端口进入后,先经过 MAC 层完成帧同步与 CRC 校验,再进入解析器(Parser)提取二层到四层字段,随后在入向流水线中完成 VLAN 判定、ACL 匹配、路由查找等操作。查找结果决定包被送往哪个出端口,并进入 MMU 的入队缓冲。MMU 负责缓存管理、调度和拥塞控制,最终由出向流水线完成重写、封装并送往目的端口。

Tomahawk 系列面向高密度 100G/400G 端口,强调大带宽与低延迟,其 MMU 缓冲相对较小,更依赖 PFC 和动态阈值来维持无损;Trident 系列则面向企业园区与多业务场景,表项更丰富,支持更复杂的 ACL、VLAN 和隧道处理,缓冲配置也更灵活。两者在遥测采集点上的位置基本一致,但可采集的深度和计数器粒度存在差异。

二、遥测数据源的三个主要类别

芯片内部可供采集的数据源可分为三类:计数器、寄存器和内存表项。计数器是累加型数据,典型如端口收发包数、字节数、丢弃数、PFC 帧数、ECN 标记数,通常以 32 位或 64 位宽存储,读取后可通过差值计算速率。寄存器反映当前配置或状态,例如端口使能、链路状态、MMU 阈值、调度权重,读取即得到瞬时值。内存表项则包括 MAC 表、路由表、ACL 表、ECMP 组表等,它们决定转发行为,也是排查“为什么这个包走了这条路径”的关键依据。

这三类数据源的采集方式不同:计数器通常通过 DMA 或寄存器读取批量获取;寄存器可按地址单点读取;内存表项则往往需要通过芯片提供的表访问接口(如 SDK 的 table read 操作)逐条或按索引读取。理解这一点,才能在设计遥测采集频率和采集范围时做出合理取舍。

StrataXGS 交换芯片功能分区与遥测采集点 物理接口层 PHY / MAC 端口链路状态 · 收发包计数 · CRC 错误 · 符号错误 · 链路训练状态 采集点 A 入向处理流水线 Ingress Pipeline Parser 解析 · VLAN 判定 · ACL 匹配 · 路由查找 · 隧道解封装 计数器:ACL 命中数 · 路由表命中数 · 入向丢弃 · MTU 超限 采集点 B 交换与缓冲层 MMU / Fabric 入队缓冲 · 动态阈值 · 调度仲裁 · PFC 生成 · ECN 标记 · 组播复制 计数器:队列深度 · 丢弃计数 · PFC 帧数 · ECN 标记数 · 缓冲占用 采集点 C 出向处理流水线 Egress Pipeline 重写 · 封装 · 出向 ACL · 镜像 · 出向调度 计数器:出向发包数 · 出向丢弃 · 镜像包数 · 出向队列状态 采集点 D 遥测汇聚与上报 计数器批量 DMA · 寄存器按地址读取 · 内存表项按索引访问 → 遥测代理 → gNMI / gRPC / INT 上报 数据入口 数据出口

三、计数器、寄存器与内存映射的采集差异

在实际工程中,端口计数器是最常被采集的一类数据。以 Tomahawk 为例,每个端口通常维护一组 64 位计数器,包括 RX_UNICAST、TX_UNICAST、RX_DISCARD、TX_DISCARD、RX_PFC、TX_PFC 等。读取时需要注意计数器可能被清零或回绕,因此采集端应保存上一次读数并计算差值,同时处理 32 位计数器回绕的情况。对于 100G 端口,满速转发时字节计数器增长极快,若采集间隔过长,32 位计数器可能在两次采集之间回绕多次,导致速率计算错误,因此高带宽端口应优先使用 64 位计数器或缩短采集间隔。

寄存器读取则更偏向状态确认。例如读取端口 MAC 状态寄存器可以判断链路是否 up、当前协商速率和双工模式;读取 MMU 阈值寄存器可以确认当前使用的动态阈值配置是否与设计一致。寄存器读取通常是单次、低频率的,适合在故障排查时按需触发,而不适合作为高频遥测流。

内存表项是排查转发异常的关键。假设某条流量本应走 ECMP 组中的成员端口 3,但实际走了端口 5,此时需要读取 ECMP 组表,确认成员端口列表和哈希配置;若发现成员列表正确,则进一步检查哈希种子和哈希字段配置。这类读取往往通过 SDK 提供的表访问接口完成,读取频率低但信息量大,适合在诊断流程中按需调用。

四、采集点选择与工程取舍

不同采集点对应不同的观测目标。端口层计数器适合做流量趋势和错误监控;入向流水线计数器适合定位 ACL 或路由策略导致的丢弃;MMU 计数器适合分析拥塞和 PFC 风暴;出向流水线计数器适合确认最终转发结果。工程上不可能对所有计数器做全量高频采集,通常的做法是:对关键端口和关键队列做高频采集,对全局表项和配置寄存器做低频或按需采集。

采集频率与计数器位宽需要匹配:对于 100G 端口,若使用 32 位字节计数器,建议采集间隔不超过 1 秒;若使用 64 位计数器,可放宽到 5~10 秒。实际间隔应根据端口速率和计数器回绕风险计算后确定。