BCM56330系列交换芯片学习心得

因为所里面的任务的要求,所以要学习学习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的最新一代产品。
BCM56330系列交换芯片学习心得

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

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

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

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

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

可存32KMAC地址,4KVlan

24个 10/100/1000 Mbps端口

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

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

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

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

QoS上有Strict PrioritySP),Weighted Round RobinWRR),Deficit Round RobinDRR)。

Random Early Detection机制等高上大的机

体系结构
如图所示
BCM56330系列交换芯片学习心得
有两种端口,一种是普通的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处理模块标示的具体动作,修改报文的某些域,然后通过出口发送出去 以上这些模块实现的功能其实很复杂,具体之间的联系需要看使用手册来理解。我这里只是大致描述一下功能,后面会有补充的。
流程
  BCM56330系列交换芯片学习心得

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.写不下了
再看看老化机制
BCM56330系列交换芯片学习心得
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倍老化时间。


  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值