前记:
有一天,当我得知自己要做交换机芯片的驱动的时候,我很兴奋,因为这是我长久以来最希望完成的工作。当被告知需要用Broadcom推出的BCM56334型交换产品,来实现公司EPON OLT产品上联GE口的2层交换功能的时候,我顿时有点懵。无论按照电信还是国网公司的标准,OLT只需要实现基本的二层交换功能,不会涉及报文的三层解析,但是BCM5633x是一个2/3层的千兆交换机,也就是说如果一旦采用BCM5633x,那么势必有些浪费。还好,Broadcom的产品模块化比较强,二层到三层的转化处理只需要一个控制位来控制,这样,也就能安心完成2层功能了。但是,遗憾的是,开发被终止了......
为了比较详尽的介绍BCM5633x产品,我打算做一个系列的博客,希望能和专业之士共同探讨这一产品的功能。同时,因为这是我首次接触交换芯片,有些概念希望大家积极指正。
BCM5633x的硬件架构如下图所示:
图中,BCM5633x 的CMIC是交换芯片和CPU的接口,两者通过PCI总线连接。其他类型交换芯片与CPU连接接口可以是:SPI + MII,I2C + MII,系统总线 + MII,SMI + MII。MII(介质无关接口)是以太网控制器(主要是L2)和PHY通信的物理接口。
我列出了报文在BCM5633x内部被处理时经过的硬件模块。
网络数据包由前置面板的24个Gbe端口或者10Gbe端口进入交换芯片后,首先经过智能解析器,包的前128字节信息被提取保留,Lookup Engine和ContentAware Processor会引用这些信息,用以后续流分类等操作;接着,数据包会进入Security Engine,一个内嵌的硬件检测逻辑,检测和防止攻击类报文;符合条件的数据包会进行L2交换和L3层路由(如果使能L3处理)处理—主要通过包头信息进行表查询,地址学习等;经过前面的基本处理,符合条件的数据包会进行ContentAware Processing。ContentAware Processor是一个过滤分类处理器,设计用来支持ACL,区分服务,QoS等功能,对数据包进行相关动作配置(丢弃,修改VLAN以及限速等);对于可转发的数据包,根据820.1P或者DSCP标记,放入不同优先级的队列中,调度器根据调度算法执行调度过程,在出口方向执行流分类的配置动作后,通过出端口发出去。
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处理模块标示的具体动作,修改报文的某些域,然后通过出口发送出去
以上这些模块实现的功能其实很复杂,具体之间的联系需要看使用手册来理解。我这里只是大致描述一下功能,后面会有补充的。
后面即将介绍:BCM5633x交换芯片基于电信标准的二层功能的实现:http://www.cnblogs.com/iTsihang/archive/2012/11/27/2785020.html