以太网交换芯片本文以 broadcom56504/56300 交换芯片为重点,介绍一下交换芯片的工作原理。1、 交换芯片架构交换芯片由 GE/XE 接口(MAC/PHY)模块、CPU 接口模块、输入输出匹配/修改模块、 MMU 模块、L2 转发模块、L3 转发模块、安全模块、流分类模块等模块组成,其结构如图 1 所示:图 1 交换芯片的组成 56504 包含 24 个 GE 端口,4 个 10G 端口,10G 端口既可以用于堆叠,也可以用于上联 /级联。 56504 交换芯片与 CPU 的接口称为 CMIC 接口。 交换芯片与 CPU 通过 PCI 总线连接。 其他类型交换芯片与 CPU 的接口可以是:SPI+MII、I2C+MII、系统总线+MII、SMI+MII 等。交换芯片的包处理流程,如图 2 所示:图 2 交换芯片的包处理流程简图 包由端口进入交换芯片之后,首先进行包头字段匹配,为流分类做准备;然后经过一个 安全引擎进行包过滤;符合安全的包进行 L2 交换或者 L3 路由,并经过流分类处理器对匹 配的包做相关动作(比如丢弃、限速、修改 VLAN 等) ;对于可以转发的包根据 802.1P 或 DSCP 放到不同队列的 buffer 中,调度器根据优先级或者 WRR 等算法进行队列调度,在端 口发出该包之前执行流分类修改动作,最终从相应端口发送出去。
2、 L2 转发流程2.1 L2 转发原理对于交换芯片来说, 转发是一个最基本的功能。 功能主要包括 ingress 过滤、 L2 L2 MAC 学习和老化、根据 MAC+VLAN 转发、广播与洪泛、生成树控制等基本功能。 L2 转发的具体流程如图 3 所示: 从端口进入交换芯片的包首先检查 TAG,对于 tagged 包,判断是否是 802.1p 的包, (802.1p 的包 vid 为 0) ,对于 untagged 的包和 802.1p 的包,根据系统配置加上 tag(这些配 置包括:基于 MAC 的 vlan、基于子网的 vlan、基于协议的 vlan 和基于端口的 vlan) 。经过 这一步以后,到交换芯片内部的包都变成 802.1Q 的 tagged 包了(vid 为 1-4094,4095 保 留) ,如果设置了 ingress 过滤,就会检查本端口是否在该 vid 对应的 VLAN 中,对于本端口 不在该 vid 对应的 VLAN 中的包就丢弃。对于没有设置 ingress 过滤,或者设置 ingress 过滤 但本端口在该 vid 对应的 VLAN 中的包进行 STP 端口状态检查,对于 BPDU 以外的包,只 有端口处于 forwarding 状态,才允许包进入。
然后进行原 MAC 地址检查,以原 MAC+VID 的哈希为索引查找 L2 TABLE,如果没有找到,就把这个表项(原 MAC+VID)以及对应的 端口写到 L2 TABLE 中,这个过程称为 MAC 地址学习。当然地址学习的方法有很多种,可以是硬件学习,也可以是软件学习,可以根据 PORT 表中的 CMI 字段的配置来进行。图 3 L2 转发流程 下一步进行目的 MAC 地址检查:目的 MAC 地址为广播地址(0xffffffff)的包,在 vlan 内广播出去;目的 MAC 地址为组播地址的包,进行组播流程的处理;对于单播包,查找 L2 TABLE,如果没有找到,就在 vlan 内进行洪泛;如果找到,检查表项中的 L3 bit 是否设 置,如果设置了 L3 bit,就进行 L3 流程的转发;否则就转发到 L2 TABLE 表项中的端口去, 在 egress 方向,也有 egress 过滤设置(默认是使能的) ,如果 egress 端口不在 vlan 中也是不 能转发的。至此,L2 转发流程完成了。 与地址学习相反的过程是地址老化。地址老化的机制是:ASIC 内部有个定时器,称为 age timer,命令行可以对这个寄存器进行设置,每次查找 L2 TABLE 时(包括原地址查找和 目的地址查找,可以配置) ,如果命中,就会设置 hit 标志。
上一篇:以太网交换机芯片 IT外包解决方案-新以太网交换机芯片服务器在数据中心的应用