您的位置:首页 > 其它

BCM56330系列交换芯片学习心得

2017-07-17 17:34 656 查看
因为所里面的任务的要求,所以要学习学习BCM交换芯片,导师也说过,学习BCM芯片的Datasheet或者Programmer
guider是对以后是很有好处的,所以我就奔着学习英语的心态开始学习BCM56330交换芯片。我学习的是BCM56330
PG100,其实博通的芯片在5633x系列都差不多,会一种其他都会了。
长话短说,开始记录学习内容。
2015.2.12
首先要弄清楚BCM5633X是用来干什么的。
简介
手册上原文写:The BCM56330 is a high-density 1
GbE/10 GbE switching solution with IPv4 and IPv6 L3 routing
capability. 
我的理解是BCM56330一种全功能边缘交换产品,按照手册上的理解应该是用于2层,3层交换使用的芯片。其体系结构是BroadScale™
architecture的最新一代产品。




面向移动回程传输应用的千兆以太网(Gbe)边缘交换机芯片。

将处理引擎,地址管理,无阻塞交叉开关网络用65nm CMOS工艺集成。

集合了第二层交换,第三层路由等功能。

兼容802.3 .3u .3ad .3x。支持jumbo超大帧

支持灵活的QoS,包括802.1p,DiffServ/ToS

可存32K个MAC地址,4K个Vlan。

24个 10/100/1000 Mbps端口

4个 1G/2.5G/10G/12G/13G的堆栈端口

支持好多功能,从第二层到第七层。

支持VLAN有基于端口的,MAC地址的,协议的,流的,IP子网的,分组等等VLAN,

路由查表LPM 最长前缀匹配,IPV4/IPV6隧道。

在QoS上有Strict Priority(SP),Weighted Round Robin(WRR),Deficit Round Robin(DRR)。

Random Early Detection机制等高上大的机

体系结构
如图所示




有两种端口,一种是普通的GE端口来处理普通以太网报文,一种是HG端口用来处理控制报文(BPDU,RIP,OSPF,ARP,RARP,诊断报文,学习报文,cpu-cpu报文)
CMI通过DMA方式送给cpu处理,当时CML(cpu manager learning)时,Learn as pending。
解析,隧道,lookup,ACL,计数器,交换,内存管理,出列,更改报文。 详细对着本子讲 Intelligent Parser
智能解析器,提取进入交换芯片内部数据包的前128字节信息,为后面预处理数据包做准备。 Security Engine
安全引擎是内嵌的硬件逻辑,作为防止网络攻击的首层防护,提供Dos攻击防护等。安全引擎提供:早期忽略处理,防DOS攻击,基于流的镜像,流率测量等机制。,
L2 Switching 专注于二层交换和转发,维护L2表,如MAC地址表、VLAN表等,并根据L2 table进行报文的转发和交换。
L3 Routing
维护L3表,L3表包括路由表等。该模块根据报文携带的三层信息,进行路由表的更新等操作,同时按照路由表的路由信息,对报文进行3层转发
ContentAware Processing
内容相关处理,该模块主要在于识别报文携带的信息,并根据这些信息实现不同的ACL,策略,比如过滤,修改域等,动作的实际执行是在出口的最后一层。
Memmory Management 提供内存管理统计(cells and packet pointer
机制),共享缓冲池动态内存门限机制,入向允许控制,PAUSE测量,出向允许控制,加权随机早检测,服务相关流量控制,端到端流量控制,端到端拥塞控制,区分服务,队列调度,流量整型等。
Traffic Management 出口方向的流量管理,如限速,出向端口仲裁,流量测量整型,VLAN整型等。
Modification 该模块将执行ContentAware处理模块标示的具体动作,修改报文的某些域,然后通过出口发送出去
以上这些模块实现的功能其实很复杂,具体之间的联系需要看使用手册来理解。我这里只是大致描述一下功能,后面会有补充的。
流程
 



1.如果交换机配置了Ingress过滤,硬件逻辑会检查该端口在不在VID对应的VLAN中,如果不在,则丢弃该包;如果在,则会进行STP端口状态检查,对于上述非BPDU包,只有端口处于Forwarding状态,才允许包进入;如果交换机没有配置Ingress过滤,硬件逻辑不会检查端口、VID和VLAN的关系,而只进行STP端口的状态检查,对于上述非BPDU包,只有端口处于Forwarding状态,才允许包进入。
2.首先进行MAC_SA查询,5633x根据数据包的源MAC
+ VID查询L2Table。如果L2Table中存在源MAC和对应的VID,表示该地址信息之前已经学习到了,则转入MAC_DA查询;如果L2Table中不存在该记录,则根据CML的配置进行处理,Learn/Copy/Drop。如果配置要求进行地址学习,那么会将MAC和VID写入L2Table,实现地址学习功能。除Drop动作,执行完后进入MAC_DA查询;MAC_DA查询,MAC_DA查询主要用以实现转发路径的确定。查找的表包括L2_User_Entry和L2_Entry。如果在L2_User_Entry中找到对应的MAC_DA,那么根据BPDU设置来确定转发的目的类型:BPDU=0,转发目的是DST_MODID和DST_PORT;BPDU=1,表示是BPDU包,处理Drop/Copy/Flood;如果在L2_User_Entry中没找到,在L2_Entry中找到,则转发到对应的DST_MODID和DST_PORT/TGID;如果以上两个表都没有MAC_DA的记录,那么就在VLAN中Flood。

对于多播报文,遵循单播包的处理流程。不过多播包在L2_Entry表中匹配完成后生成的索引值(还在L2_Entry中),用来索引L2MC表。广播包也遵循单播包的处理流程。经历过地址学习后,该报文会在所有VLAN中广播。
最终,符合条件的报文会通过一个(部分/全部)端口转发出去。
3.写不下了
再看看老化机制



1.L2表项内有一个hit
bit。基于硬件学习方法是,当一个新的表项被学习,删除hit bit被清除的表项,然后清除表项内剩余的hit
bit。packet在查找L2表命中时也会更新hit bit。软件也可以进行老化,在cpu控制时,learn as
pending被设置,L2查表命中不会更新。

2.在经历地址学习之后,同样需要进行老化过程。地址老化是为了保证当前网络拓扑结构尽可能处于最新状态,同时也考虑到交换机内部存储不足以维护很大转发表的因素。5633x的地址老化机制:芯片内部有个定时器,称为aging
timer,该定时器通过寄存器L2_Age_Timer可对MAC地址的老化使能和老化时间进行配置。当新学习到MAC地址或者之前已经存在的记录重新被命中,就会设置对应的hit标志(源Hit

目的Hit)。当老化时间到后,硬件清除hit标志,当下一个老化时间到后,CPU删除hit为0的记录,这样一来,真正的老化时间将会是配置的老化时间的1~2倍。BCM5633x支持硬件老化和软件老化。当一个老化时间到达时,5633x从L2_ENTRY中删除hit
bit为0的entry,并将到达老化时间的entries的hit bit清零,等待下一个老化时间到达时删除。

老化时间配置:

L2_AGE_TIMER.AGE_ENA = 1;
使能老化机制

L2_AGE_TIMER.AGE_VAL = xxx;
配置老化时间20bits,单位是秒。

初次配置老化使能后,因为要好内部时钟同步,所以须等待3倍老化时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐