以太网交换芯片
以太网交换芯片
本文以 broadcom56504/56300交换芯片为重点,介绍一下交换芯片的工作原理。
1、 交换芯片架构
交换芯片由 GE/XE接口(MAC/PHY)模块、CPU接口模块、输入输出匹配/修改模块、
MMU模块、L2转发模块、L3转发模块、安全模块、流分类模块等模块组成,其结构如图
1所示:
图 1 交换芯片的组成
56504包含 24个 GE端口,4个 10G端口,10G端口既可以用于堆叠,也可以用于上联
/级联。56504交换芯片与 CPU的接口称为 CMIC接...
以太网交换芯片
本文以 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 转发原理
对于交换芯片来说,L2转发是一个最基本的功能。L2功能主要包括 ingress过滤、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 标志。当老化时间到后,ASIC 把 hit
标志清除,当下一个老化时间到后,ASIC 把 hit 为 0 的地址设置为无效,这就是为什么实
际地址老化的时间为 1~2倍 agingTime的原因。
2.2 L2 转发相关的表项
2.2.1 port表
图 4 port表
Port表是一个非常重要的表,有很多与端口相关的控制都在这里设置。每个端口对应一
个表项,按端口号进行索引。下面介绍一下重要的设置:
1) PVID:设置 PORT_VID
2) 缺省优先级:设置 PORT_PRI
3) 流分类使能:设置 FILTER_ENABLE
4) VLAN转换使能:设置 VT_ENABLE和 VT_MISS_DROP
5) Ingress过滤使能:设置 EN_IFILTER
6) 信任 COS 还是信任 DSCP:对于 IPV4: TRUST_DSCP_V4=0:信任 COS;
TRUST_DSCP_V4=1:信任 DSCP,对于 IPV6:同样设置 TRUST_DSCP_V6。
7) Ingress方向 mirror使能:设置MIRROR
8) MAC地址学习方式:设置 CML
9) IP组播是否使用 VLAN信息:设置 IPMC_DO_VLAN
10) L3转发使能:设置 V4L3_ENABLE和 V6L3_ENABLE
11) 是否丢弃 BPDU:设置 DROP_BPDU
12) 控制是否转发带 tag和不带 tag的包:设置 PORT_DIS_TAG和 PORT_DIS_UNTAG
13) Pause帧控制:设置 PASS_CONTROL_FRAMES
14) 基于子网的 VLAN使能:设置 SUBNET_BASED_VID_ENABLE
15) 基于MAC的 VLAN使能:设置MAC_BASED_VID_ENABLE
16) 设置堆叠口:HIGIG_PACKET
17) 设置 NNI口:NNI_PORT
18) 修改优先级使能:MAP_TAG_PACKET_PRIORITY
19) 堆叠口 modid设置:MY_MODID
20) Out tpid设置:OUTER_TPID
21) 基于MAC和基于子网的 VLAN优先级设置:VLAN_PRECEDENCE
22) 是否允许单臂桥功能:PORT_BRIDGE
23) IP组播位图设置:IGNORE_IPMC_L2_BITMAP和 IGNORE_IPMC_L3_BITMAP
2.2.2 egress port表
图 5 egress port表
EGR_PORT是一组寄存器,每个端口一个,用于 EGRESS方向的控制,有几个重要设
置介绍如下:
1) 设置 egress端口类型:PORT_TYPE=0,UNI端口;PORT_TYPE=1,NNI端口
2) 设置 egress过滤:EN_EFILTER=1
2.2.3 L2地址表
图 6 L2地址表
56504的 L2地址表大小为 16K,5630X的 L2地址表大小为 8K,地址表使用MAC+VID
的 hash值作为索引查表。实际上 56504的 L2地址表 hash值为 4K,每个 hash值对应 4条
地址,这样最多可以保存 4 条 hash 冲突的地址。地址表中每个表项都保存了 MAC_ADDR
和 VLAN_ID。MAC学习的时候使用原MAC+VID的 hash查表,把表中的MAC+VID与包
中的 MAC+VID进行比较,如果完全相等,表示找到了。然后看端口(TGID_PORT)是否
相等,如果不相等表示地址发生了迁移,对于动态学习的地址需要更新 port;如果相等表示
命中,更新 hit标志。其他几个重要的功能介绍如下:
1) 设置静态地址:STATIC_BIT=1
2) 设置 L3转发标志:L3=1
3) 设置本地址的包都转发到 CPU去:CPU=1
4) 设置本地址匹配的包丢弃:SRC_DISCARD=1、DST_DISCARD=1
5) 设置本地址匹配的包对某些端口阻塞:MAC_BLOCK_INDEX
6) 设置本地址匹配的包镜像:MIRROR=1
7) 设置组播索引:L2MC_PTR
8) 地址有效标志:VALID=1
2.2.3 VLAN表
Vlan表分为 ingress和 egress两个部分,分别对应入口控制和出口控制。
图 7 ingress vlan表
Ingress Vlan表中主要包含了端口列表,用于 ingress filter功能。PFM是用于控制组播
洪泛的开关。PFM=0,组播在 vlan 内洪泛;PFM=1,注册的组播按组播表转发,未注册
的组播在 vlan内洪泛;PFM=2,注册的组播按组播表转发,未注册的组播丢弃。STG用于
标识本 vlan所属的生成树组。
图 8 egress vlan表
Egress vlan表中除了 PFM和 STG外,还包含了出口方向的端口位图,以及哪些端口以
untag的方式发送本 vlan的包。
3、 L3转发流程
图 9 L3转发流程
如果查目的MAC地址表的时候发现 L3 bit置位了,就进入到 L3转发流程。与 L2交换
相比,L3交换可以实现跨 VLAN转发,而且它的转发依据不是根据目的 MAC地址,而是
根据目的 IP。L3 转发的流程是:首先对 L3 头部进行校验,校验和错的包直接丢弃;然后
进行原 IP地址查找,如果主机路由表中没有找到,会上报给 CPU,CPU会进行相应的处理,
并更新接口表;下一步进行目的 IP 地址查找,如果主机路由表中没有找到,就会在子网路
由表中进行查找,在子网路由表中进行最长子网匹配的查找算法,如果在子网路由表中还没
有找到,也送给 CPU 进行处理,如果在主机路由表或子网路由表中找到了,就会得到下一
跳的指针。如果 ECMP 使能的话,会得到 ECMP 的指针和 ECMP 的个数,从而根据 hash
算法得到一个下一跳指针。下一条表项中包含了下一跳的MAC地址和接口表的索引。在包
转发出去的时候,用下一跳的 MAC 地址替换掉包的目的 MAC 地址。用接口表中的 MAC
地址和 VLAN替换掉包的原MAC地址和 VLAN。
与 L3有关的几个重要的表:
图 10 L3单播主机路由表
图 11 L3子网路由表
图 12 ECMP表
图 13 EGRESS 下一跳表
图 14 接口表
图 15 INGRESS 下一跳表
4、L2组播转发流程
在 L2转发流程中,查找目的MAC+VID的时候,如果表项的目的MAC是一个组播地
址,该表项有一个组播指针指向组播表,组播表中有一个端口位图,表示哪些端口属于该组
播组。组播组中的端口位图与 VLAN 中的端口位图相与的结果是实际转发的端口位图。静
态配置的或协议动态添加的组播地址通过 SSP 写到 MAC 地址表中,组播成员通过 SSP 写
到组播表中。L2组播表的结构如下:
图 16 L2组播表
5、L3组播转发流程
L3组播支持有源树和共享树。所谓有源树是指根据源 IP地址和组地址来确定一个组播
组,而共享树是指仅根据组地址来确定一个组播组。芯片也支持反向路径检查(Reverse Path
Forwarding check),所谓反向路径检查是指通过检查源 IP 地址确定源端口,从而不要向源
端口转发的技术。
L3组播的转发流程是,先查 L2表,对于组播地址而且是 L3 bit置位的,查 L3表。L3
表给出 IPMC_INDEX。根据这个索引查 L3_IPMC 表,L3_IPMC 表给出 L2_BITMAP 和
L3_BITMAP。对于 L2_BITMAP,按照 L2 组播流程转发;对于 L3_BITMAP,根据
IPMC_INDEX和 BITMAP得到 IPMC_GROUP的 VLAN_INDEX,最后根据 VLAN_INDEX
查找 IPMC_VLAN表,IPMC_VLAN表包含了 VLAN的位图,芯片在进行 L3组播的时候,
对 VLAN的位图中的每个成员进行组播复制。
图 17 L3组播表
图 18 L3组播复制
L3单播和组播的转发流程综合起来,如下图所示:
图 19 L3单播和组播的转发流程
IPMC转发相关的表的结构如下:
图 20 L3 TABLE
L3 TABLE表项大小 8K(5650X)/2K(5630X)。
图 21 IPMC TABLE
IPMC TABLE表项大小 1K。
图 22 IPMC _GROUP TABLE
IPMC _GROUP TABLE表项大小 1K。
图 23 IPMC _VLAN TABLE
IPMC _VLAN TABLE表项大小 2K。
6、 流分类处理流程
在 5650X/5630X中,流分类是通过 CFP实现的,CFP是 ContentAware Filter Processor
的缩写。所谓 ContentAware就是对 packet的
进行智能匹配的技术。5650X/5630X中的
流分类分为 5个阶段,流程如图:
图 24 CFP流程
这 5 个部分分别是智能协议识别选择器、CAM 查找引擎、策略引擎、meter 和统计引
擎、动作裁决引擎。在 ingress端口,智能协议识别选择器对进来的包的前 128bit按照协议
字段进行选择和标记,CAM查找引擎按照用户给的 key匹配协议选择器的内容,如果找到
了,就执行策略引擎的动作,并可以实验 meter和统计引擎进行限速、标记颜色和统计。5650X
有 16个 CAM查找引擎,5630X有 8个 CAM查找引擎,它们可以并行执行,执行的动作如
果有冲突的话,由动作裁决引擎进行裁决。
与协议内容识别选择器有关的表是:
图 25 协议内容识别选择器
图 26 FP_TCAM表
下面这个是策略引擎表项:
图 27 FP_TCAM_PLUS_POLICY表
下面这个是 meter表和 counter表:
图 28 FP_METER表
图 29 FP_COUNTER表
动作裁决的优先级如下:
1. DROP
2. Else REPLACE
3. Else REDIRECT
4. Then EGRESSMASK
5. Then COPY_TO_CPU
1、 交换芯片架构
2、 L2转发流程
2.1 L2转发原理
2.2 L2转发相关的表项
2.2.1 port表
2.2.2 egress port表
2.2.3 VLAN表
3、 L3转发流程
4、L2组播转发流程
5、L3组播转发流程
6、 流分类处理流程
本文档为【以太网交换芯片】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。