2. 报文进入与解析引擎
报文进入交换芯片的第一步,并不是查表,而是“被正确接收并翻译成芯片内部可识别的字段”。在 Broadcom 这类高密度交换芯片中,入端口处理、PHY/MAC 层适配和 Parser 解析共同构成报文进入流水线的入口段。理解这一段,才能解释为什么同一份 ACL 在不同端口上表现不同、为什么某些报文会被丢弃或误分类。
一、入端口处理:从 SerDes 到内部帧
物理端口首先由 SerDes 完成串并转换与时钟恢复,随后进入 PHY 层完成编码解码(如 64b/66b)、对齐与通道绑定。以 100G 端口为例,常见形态是 4×25G 或 2×50G 通道,芯片内部按 lane 对齐后重组为统一码流。PHY 之上是 MAC 层,负责前导码/SFD 识别、FCS 校验、帧长检查以及流控(Pause/PFC)处理。
MAC 之后进入入端口处理模块,典型动作包括:
- 端口/VLAN 归属判定:为无标签帧打上端口默认 VLAN(PVID),有标签帧按 TPID 识别。
- 入向统计与镜像:更新 RMON 计数器,按入端口镜像规则复制到监控端口。
- 端口级过滤:如 ingress filtering、STP 状态(Discarding/Learning/Forwarding)检查。
- 元数据生成:为报文附加内部头(通常称 Module Header 或 HiGig Header),携带源端口、优先级、目的端口位图等。
这一步的关键是:Parser 看到的不是原始以太网帧,而是带有内部元数据的内部帧。元数据决定了后续解析的上下文,例如端口默认 VLAN、是否信任 DSCP、是否启用隧道解析。
二、PHY/MAC 适配中的常见差异
不同端口类型对报文的“预处理”不同,直接影响 Parser 的输入。例如:
| 端口类型 | 典型适配动作 | 对 Parser 的影响 |
|---|---|---|
| 100G CR4 | FEC 解码、lane 对齐 | FEC 纠错后帧才可见,错误帧被丢弃 |
| 25G 光口 | RS-FEC 或 BASE-R FEC | FEC 模式不匹配会导致链路 up 但丢包 |
| 10G 电口 | PHY 自协商、速率适配 | 自协商失败时端口可能处于半双工,影响流控 |
| 堆叠口 | HiGig 封装/解封装 | 内部头携带源模块 ID,Parser 需识别堆叠标签 |
实际排障中,若端口 up 但业务不通,应优先确认 PHY 层 FEC、自协商和 MAC 层 FCS 计数,而不是直接怀疑 Parser。因为 Parser 只处理“已经通过 MAC 校验”的帧。
三、Parser 对 L2/L3/L4 字段的提取
Parser 的核心任务是从帧头开始逐层解析,提取后续查表所需的关键字段。以典型以太网帧为例,解析顺序为:
- L2:目的 MAC、源 MAC、EtherType/TPID。若 EtherType=0x8100,则识别为 VLAN 标签,继续读取 VID 与内层 EtherType。
- L3:根据 EtherType 判断 IPv4(0x0800)、IPv6(0x86DD)或 ARP(0x0806)。IPv4 提取源/目的 IP、协议号、TOS/DSCP、TTL;IPv6 提取源/目的地址、Next Header、Traffic Class。
- L4:根据协议号判断 TCP(6)、UDP(17)、ICMP(1)。TCP/UDP 提取源/目的端口;若存在选项或分片,需按偏移量计算 L4 头位置。
- 隧道:若识别到 VXLAN(UDP 4789)、GRE 或 Geneve,则继续解析内层帧,提取内层 L2/L3/L4 字段。
解析结果通常写入解析结果描述符(Parse Result),供后续 ACL、L3 路由、ECMP、QoS 等模块使用。例如,一个 VXLAN 报文可能同时提取外层五元组和内层五元组,分别用于隧道终结和租户内转发。
四、可编程解析器与固定解析器的差异
固定解析器(Fixed Parser)按芯片预设的协议模板解析,支持标准以太网、VLAN、IPv4/IPv6、TCP/UDP、GRE、VXLAN 等常见组合,优点是延迟低、资源固定、行为可预测。可编程解析器(Programmable Parser)允许通过配置或微码定义新的解析图(Parse Graph),支持自定义 EtherType、私有隧道封装或非标准协议偏移。
两者的核心差异体现在:
- 灵活性:可编程解析器可新增协议节点;固定解析器只能使用已有模板。
- 资源占用:可编程解析器消耗 TCAM/微码资源,可能影响 ACL 表项容量。
- 调试复杂度:固定解析器行为稳定,可编程解析器需验证解析图是否覆盖所有报文路径。
- 性能:固定解析器通常流水线更深但更确定;可编程解析器在复杂封装下可能增加解析延迟。
工程中常见做法是:标准数据中心协议用固定解析器,私有隧道或实验性协议用可编程解析器扩展,并通过解析图版本管理避免配置漂移。
五、常见解析异常与调试方法
解析异常通常表现为报文被错误分类、丢弃或送 CPU。常见原因包括:
- EtherType 未识别:如私有标签 0x88A8 未在解析图中注册,导致 VLAN 被跳过,后续 L3 解析偏移错误。
- 隧道嵌套过深:超过解析器最大深度,内层字段无法提取,ACL 匹配失败。
- 分片报文:IPv4 分片后 L4 头不在首片,若解析器未处理分片偏移,TCP/UDP 端口提取为 0。
- 畸形帧:帧长小于最小以太网帧或 FCS 错误,MAC 层已丢弃,Parser 不会看到。
- 配置不一致:端口信任模式(trust L2/L3)与解析结果不匹配,导致 QoS 映射错误。
调试时建议按以下顺序进行:
1. 查看端口计数器:rx_fcs_err、rx_align_err、rx_pause 是否异常增长
2. 确认 PHY 状态:FEC 模式、自协商结果、lane 映射
3. 检查 MAC 层:是否因 FCS 或帧长丢弃
4. 查看 Parser 统计:parse_error、unknown_ethertype、tunnel_depth_exceed
5. 使用镜像或 sFlow 抓取入端口原始帧,核对解析偏移
6. 若为可编程解析器,导出解析图并逐节点验证 EtherType/协议号匹配
总结来说,入端口处理决定报文的“身份上下文”,PHY/MAC 适配决定报文能否“完整到达”,Parser 决定报文“被翻译成什么字段”。三者环环相扣,任何一环异常都会在后续查表阶段表现为“规则不生效”或“流量被误丢”。掌握这条入口链路,是后续学习 ACL、L3 路由和隧道转发的基础。