RB450G是一款非常出色的基于RouterOS的软路由器,强大的性能和高可配置性使其非常之受欢迎,本人对它也一直非常有兴趣。按本人的习惯,够买前会尽可能搜集相关的资料,了解特性后再下手。在查看RB450G的交换芯片AR8316时注意到了如下图提示的奇怪说明:
和其它芯片不同,RB450G的多了一句“ether1 optional”的说明。为啥ether1和switch chip的关系是optional的,引起了我的兴趣。按提示点击“more”后,来到了进一步的说明:
原来系统中是通过switch-all-ports这个变量来配置ether1的。从说明来看,设置为yes时ether1是switch group的一部分,而no时则为独立。这很令人感觉兴趣,经常一番资料搜索和思考后,我得出了自己的结论。
首先要知道做为CPU的AR7161是具备2个RGMII接口的,MII这东西是用来连接MAC和PHY的,RGMII是MII的一个变种,具体细节这里不淡,总之两个RGMII可以认为AR7161具备两个网络通道。而RB450G更好利用了这点来提高其性能,具体做法看图就明白了:
根据我的推测,在switch-all-ports=no的情况下(应该是默认配置),网络结构应该是上图这样的。首先明确的是所有的5个port都是直接通过AR8316来提供的,但在这种情况下,通过控制AR8316内部硬件逻辑,ether1其实是通过RGMII1直联到Port1的,而其它四个port共用RGMII0。很显然这种情况下,另外四个port要挤占一个通道,就算四个端后加到一个bridge里,数据也要先进到cpu里,再从cpu出去,效率较低。但如果是分别和ether1交换数据,因为可以同时运用两个通道,此时效率到是不错。当然如果另外四个端口全做LAN口使用的话,可以使用master port机制,比如设ether2为master port,其它3个以ether2为mater port。这时会起用AR8316的硬件交换机制,网络结构如图:
很显然在这时,其它四个port交换数据时完全由AR8316的硬件交换机构来进行,只有同ether1有数据交换时才需要经过cpu,LAN间通讯效率大大提升,当然因为完全不经过cpu,所以此时ether3-5实际上是无效的interface了,只有ether2是有效的,而且也没对LAN间通讯做过滤了。当然我们并不一定要把四个port全都加到硬件交换机制里,这里只是举一个比较典型应用的例子。
回到前面的话题,当switch-all-ports=yes的时候,网络结构就变成了下图的样子:
显然,此时通过改变AR8316内部硬件逻辑,ether1也和其它port一样走RGMII0通道,闲置了RGMII1通道。显然和switch-all-ports=no的做法比,让ether1去和其它port抢一个通道用是没有效率的。但这么做也不是完全没有用处,比较某些情况下就是想把RB450G当成5port的交换机用,这时就要把switch-all-ports设为yes,然后从5个port中任选一个为master port,其它四个设它为master port,这样就实现了5个port间的完全硬件交换逻辑,类似图2,只不过port1也加了进去。
对于RB450G来说,switch-all-ports=yes是没效率的做法,但对于很多其它路由来说,却是唯一做法,比如cpu根本就是只有一个MII通道,或者说有第二个但被别的什么东西占用了,那就只能5个口挤一个通道了。比如我手头这个基于bcm4718方案的WNR3500L就是这样。我将在下一篇说明下对于3500L网络结构的理解。
阅读(6161) | 评论(0) | 转发(0) |