Broadcom以太网交换芯片培训Word文档下载推荐.docx
《Broadcom以太网交换芯片培训Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Broadcom以太网交换芯片培训Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
交换芯片的包处
理流程如图2所示:
图2交换芯片的包处理流程简图
包由端口进入交换芯片之后,首先进行包头字段匹配,为流分类做准备;
然后经过一个安全引
擎进行包过滤;
符合安全的包进行L2交换或者L3路由,并经过流分类处理器对匹配的包做相关动
作(比如丢弃、限速、修改VLAN等);
对于可以转发的包根据802.1P或DSCP放到不同队列的buffer
中,调度器根据优先级或者WRR等算法进行队列调度,在端口发出该包之前执行流分类修改动作,
最终从相应端口发送出去。
2、
L2转发流程
2.1L2转发原理
对于交换芯片来说,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的哈希为索引查找L2TABLE,如果没有找到,就把这个表项(原MAC+VID)以及对应的端口写到L2TABLE中,这个过程称为MAC地址学习。
当然地址学习的方法有
很多种,可以是硬件学习,也可以是软件学习,可以根据PORT表中的CMI字段的配置来进行。
图3L2转发流程
下一步进行目的MAC地址检查:
目的MAC地址为广播地址(0xffffffff)的包,在vlan内广
播出去;
目的MAC地址为组播地址的包,进行组播流程的处理;
对于单播包,查找L2TABLE,如
果没有找到,就在vlan内进行洪泛;
如果找到,检查表项中的L3bit是否设置,如果设置了L3bit,
就进行L3流程的转发;
否则就转发到L2TABLE表项中的端口去,在egress方向,也有egress过滤
设置(默认是使能的),如果egress端口不在vlan中也是不能转发的。
至此,L2转发流程完成了。
与地址学习相反的过程是地址老化。
地址老化的机制是:
ASIC内部有个定时器,称为agetimer,
命令行可以对这个寄存器进行设置,每次查找L2TABLE时(包括原地址查找和目的地址查找,可
以配置),如果命中,就会设置hit标志。
当老化时间到后,ASIC把hit标志清除,当下一个老化时
间到后,ASIC把hit为0的地址设置为无效,这就是为什么实际地址老化的时间为1~2倍agingTime
的原因。
2.2L2转发相关的表项
2.2.1port表
图4port表
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)Outtpid设置:
OUTER_TPID
21)基于MAC和基于子网的VLAN优先级设置:
VLAN_PRECEDENCE
22)是否允许单臂桥功能:
PORT_BRIDGE
23)IP组播位图设置:
IGNORE_IPMC_L2_BITMAP和IGNORE_IPMC_L3_BITMAP
2.2.2egressport表
图5egressport表
EGR_PORT是一组寄存器,每个端口一个,用于EGRESS方向的控制,有几个重要设置介绍
如下:
1)设置egress端口类型:
PORT_TYPE=0,UNI端口;
PORT_TYPE=1,NNI端口
2)设置egress过滤:
EN_EFILTER=1
2.2.3L2地址表
图6L2地址表
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.3VLAN表
Vlan表分为ingress和egress两个部分,分别对应入口控制和出口控制。
图7ingressvlan表
IngressVlan表中主要包含了端口列表,用于ingressfilter功能。
PFM是用于控制组播洪泛的开
关。
PFM=0,组播在vlan内洪泛;
PFM=1,注册的组播按组播表转发,未注册的组播在vlan内洪
泛;
PFM=2,注册的组播按组播表转发,未注册的组播丢弃。
STG用于标识本vlan所属的生成树
组。
图8egressvlan表
Egressvlan表中除了PFM和STG外,还包含了出口方向的端口位图,以及哪些端口以untag的
方式发送本vlan的包。
3、
L3转发流程
图9L3转发流程
如果查目的MAC地址表的时候发现L3bit置位了,就进入到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有关的几个重要的表:
图10L3单播主机路由表
图11L3子网路由表
图12ECMP表
图13EGRESS下一跳表
图14接口表
图15INGRESS下一跳表
4、
L2组播转发流程
在L2转发流程中,查找目的MAC+VID的时候,如果表项的目的MAC是一个组播地址,该
表项有一个组播指针指向组播表,组播表中有一个端口位图,表示哪些端口属于该组播组。
组播组
中的端口位图与VLAN中的端口位图相与的结果是实际转发的端口位图。
静态配置的或协议动态添
加的组播地址通过SSP写到MAC地址表中,组播成员通过SSP写到组播表中。
L2组播表的结构如
图16L2组播表
5、
L3组播转发流程
L3组播支持有源树和共享树。
所谓有源树是指根据源IP地址和组地址来确定一个组播组,而
共享树是指仅根据组地址来确定一个组播组。
芯片也支持反向路径检查(ReversePath
Forwardingcheck),所谓反向路径检查是指通过检查源IP地址确定源端口,从而不要向源端口
转发的技术。
L3组播的转发流程是,先查L2表,对于组播地址而且是L3bit置位的,查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的位图中的每个成员进行组播复制。
图17L3组播表
图18L3组播复制
L3单播和组播的转发流程综合起来,如下图所示:
图19L3单播和组播的转发流程
IPMC转发相关的表的结构如下:
图20L3TABLE
L3TABLE表项大小8K(5650X)/2K(5630X)。
图21IPMCTABLE
IPMCTABLE表项大小1K。
图22IPMC_GROUPTABLE
IPMC_GROUPTABLE表项大小1K。
图23IPMC_VLANTABLE
IPMC_VLANTABLE表项大小2K。
6、
流分类处理流程
在5650X/5630X中,流分类是通过CFP实现的,CFP是ContentAwareFilterProcessor的缩写。
所谓ContentAware就是对packet的内容进行智能匹配的技术。
5650X/5630X中的流分类分为5个阶
段,流程如图:
图24CFP流程
这5个部分分别是智能协议识别选择器、CAM查找引擎、策略引擎、meter和统计引擎、动作
裁决引擎。
在ingress端口,智能协议识别选择器对进来的包的前128bit按照协议字段进行选择和标
记,CAM查找引擎按照用户给的key匹配协议选择器的内容,如果找到了,就执行策略引擎的动作,
并可以实验meter和统计引擎进行限速、标记颜色和统计。
5650X有16个CAM查找引擎,5630X
有8个CAM查找引擎,它们可以并行执行,执行的动作如果有冲突的话,由动作裁决引擎进行裁
决。
与协议内容识别选择器有关的表是:
图25协议内容识别选择器
图26FP_TCAM表
下面这个是策略引擎表项:
图27FP_TCAM_PLUS_POLICY表
下面这个是meter表和counter表:
图28FP_METER表
图29FP_COUNTER表
动作裁决的优先级如下:
1.DROP
2.ElseREPLACE
3.ElseREDIRECT
4.ThenEGRESSMASK
5.ThenCOPY_TO_CPU