BCM ESW芯片和Marvell CAT芯片的比较

转载地址:http://blog.csdn.net/night_elf_1020/article/details/19935123

BCM ESW芯片和Marvell CAT芯片的比较

作者: 北京—小武

邮箱:[email protected]

新浪微博:北京-小武


我曾经分别对BCM的ESW系列芯片和Marvell的XCAT芯片有一段时间的开发经历,这两块芯片在共同支持的功能上没有什么大的不同,但是在硬件实现上有着很大的区别,现在我跟进个人感受总结他们的不同,希望对大家这两家的认识有所启发。

Marvell芯片系列分类有意思,如cat、tiger、puma、Lion等,都是用动物来命名的,可能将来会出现elephant、dragon之类的名称,每个系列又有若干种特定的芯片种类,比如cat系列有tomcat、bobcat和poncat等。BCM的芯片大体分robo(Remote office/Branch office/远程办公室/分支机构)和xgs两类(据说还有一类,是M开头的,我从来没见过)。BroadCom公司xgs系列芯片的重要特性是具有堆叠功能,该功能能将多个交换芯片组合在一起,以 形成一个更大规模的系统,或将多个带交换芯片的系统组合在一起形成一个完整的系统设备。这种功能最多能实现30个设备的堆叠。(详见我的资源:bcm5690交换芯片工作原理)当然每个系列又分为好几个类,拿xgs来说BCM至今出了有五代,一代和二代我没有用过,我接触的从三代xgs芯片开始的,包括bcm5630X、bcm5631X、bcm5650X和bcm5651X等,四代芯片包括bcm5652X、bcm5662X、bcm5663X、bcm5672X、bcm5682X等,现在BCM发布的属于第五代芯片,开始我们自研交换机用的芯片BCM5684X就属于第五代芯片。BCM的SDK代码就称为SDK,现在我们用的是5.10.2版本,XGS的代码基本上在ESW(Enterprise SWitching)文件夹内,Marvell的SDK称为CPSS。

可能是因为我接触Marvell的Xcat芯片不属于高级芯片的缘故,XCAT芯片在现在交换设备功能上没有XGS支持的全面,希望Marvell芯片到了Lion有很大增强。具体来说他们再芯片交换流程上有如下区别

1.       负责实现acl功能的tcam资源会marvel会放到L2转发和L3转发的前面,而BCM芯片是在L2转发和L3转发的后面?不要小看这点区别,因为ACL、QOS和很多协议规则都在此块TCAM中实现,尤其是和L2转发、L3转发结合起来使用的时候,与BCM的区别将会更大。

2.       Marvel的负责实现acl功能的tcam资源是分轮次的,不像BCM的IFP是分slice的,而且表现宽度有点窄,且不支持端口位图,使用起来很灵活,灵活的代价就是开发人员要写很多代码来管理此部分的资源。

3.       在vlan和L2转发上,对报文vidtag的识别不支持协议vlan、子网vlan和macvlan,并且对vlan-translation的处理无论是出口还是入口都是基于全局的,不是基于端口的,使用起来很令人无奈;在L2转发上,对应mac地址飘逸(情况是te-1/1/1已经学习到这个mac地址,port te-1/1/2上又来此SMAC的报文,BCM上称movestation)支持的程度是除了静态mac不可以飘逸,其他都会自动飘逸;而BCM则是可以配置不同端口的优先级,根据优先级决定是否movestation。两者的mac表项都有芯片达到128K,且都是hash方式查找,但是BCM可支持二次或多次hash处理冲突,marvell是变幻桶的深度来减少冲突。

4.       在L3转发上,不支持VPLS、TRILL等交换设备新功能,这点我们自研交换机可能不是很关心,但是在路由上支持是可以的,只是路由表项没有BCM的表项大。

5.       Marvell芯片在很多寄存器或表的使用上不支持基于端口的,比如刚才的实现acl功能的tcam资源、vlan-translation和QOS的调度权重配置等,这给开发者带来了很大的郁闷,因为很多的需求往往是基于端口的。真心希望他们再LION上此项解决这个问题。

6.       当然,无论是BCM还是marvell芯片在数据包流程上都有些内在的BUG,比如BCM芯片是因为有VFP会导致untag报文在交换机内部的存在,而marvell芯片会因为出口内部优先级到cos或dscp的映射的优先级较高而导致入口规则设置cos或dscp的动作失效。

7.       Marvell的芯片SDK的BUG真的很少,应该是以色列人写的;BCM的BUG真的太多了,但是Marvell的SDK调试手段很单一,没有BCM的SDK的BCM模式。不过据说Marvell F已经有命令行调试了。

总之,两种芯片厂商的解决方案有很大不同,在SDK的代码中也有充分体现,两者就好像为一群人分一个蛋糕一样,marvell会只给一个蛋糕和一把刀子,至于怎么分它不管;而BCM这是给一个蛋糕和一把刀子的同时,还会附赠几个经典的分蛋糕的方法案例。


你可能感兴趣的:(BCM ESW芯片和Marvell CAT芯片的比较)