Intel的CPU总线带宽不够用。
核心交换机的容量都是上T的,背板带宽10T起步,我2008年做交换机那会,这么一套东西如果投标的话,一套10T~20T左右交换容量的交换机,价格可以谈到10万左右(国产价格,思科的可能要100万),2008年的时候至强的总线带宽能到多少?
反正就算是今天,Intel的CPU内存带宽也在100GB/s以内的范围(多处理器也没超过这个数量级),跟交换机有数量级的差异,这个性能对于交换机来说根本不够用。
Intel的CPU吞吐量做一个二层交换机也许没问题,但一个二层交换机便宜点的3000以内就可以搞定,3000块钱可能还不够买一个好一点的至强CPU呢。
如果Intel走异构计算这条路,那么搞出点交换芯片应该没难度的,Xeon Phi就是这个思路,但交换机这个市场已经不怎么赚钱了,或者说Intel还看不上这点钱(卖超算比造交换机挣钱)。
Xeon非常强,非常强,但术业有专攻啊。给PC或者服务器多装几块网卡,就可以当软路由用了,Xeon此时傲视群雄,网卡跑满时CPU依然有余力给你扫雷,但是,你的机器能装多少网卡呢?
下面是我前几个月随手拍的一张路由器的图,应该算是大型路由器了吧。你看上面编号2和3的槽位,每个板40个万兆口,一个柜能装十几块板,不够可以集群扩展,最大几十个机柜,这时候什么处理器能支撑住呢?
答案是 什么处理器都支撑不住。一般CPU主频3G左右,假设转发一个包需要1K时钟周期,那每个核就有3M pps的转发率,但这个型号路由器最老款最低配的版本也是11G pps的转发率,至少需要堆几十个CPU,堆这么多CPU这不是在设计设备而是在设计电炉。
现在稍大型的路由器都是路由转发分离的架构,一堆ASIC来做转发,转发能力比通用处理器强多了,还省电。控制平面需要CPU计算能力,但也不需要很强,各家都用的祖传处理器,powerpc,mips,intel ixp都有,似乎没见哪家用xeon的,虽然它计算能力更猛。
前两年华为和英特尔当众签过一个合作协议,但我没关注后续,也许以后SDN控制器或者网络安全产品会用英特尔产品吧。
提到的DRAM带来的延迟无法接受、 提到的总线带宽不足,都在说CPU无法满足转发需求,实际上这些问题都存在通过增加带宽、软流水化解决的可能性。但是有一个CPU永远无法解决的问题:低延迟查表。大型路由器还有一个很根本的功能是查表,查表是必须要用ASIC做的,更准确地说要用T-CAM做,T-CAM查路由表只需要一个周期。而CPU不可能同时支持这么多比较:CPU内部能这样全相联查找的表最大也就是skylake开始的issue queue (97项),况且无法利用它来查路由表。而大型路由器需要什么量级的比较呢?512k。
感谢灵剑指出问题。如果使用Hash表等手段实现,虽然复杂度也是O(1),但是前面的常数会比T-CAM大得多,查表延迟还是无法与ASIC抗衡。
思科的nexus 7000的CPU用的就是xeon,不过这颗CPU只负责控制面,转发面是交给ASIC去处理的。
以下说一个拿CPU跑转发的黑案例:前阵子有同行咨询,说一个安防项目里边用国内某厂商的三层交换机做汇聚,前后端同一VLAN的话一点问题都没有,只要有一个前端接到另一个VLAN,就会卡死导致系统几乎不可用。
经排查发现只要把一个前端接到另一个VLAN,区区2Mbps的VLAN间路由流量就会导致那个交换机的CPU使用率暴涨到98%以上,我们怀疑这个所谓的三层交换机根本就是个二层交换机,调用CPU来跑路由,更换另一个型号之后一切正常,但原先那台交换机厂商不给退只能留着当库存,真坑。
专用集成电路是由特定使用者要求和特定电子系统的需要而设计、制造 。
对于路由器来说,本质上就是一个转发问题,转发实际上就是处理一个队列的问题,也就是经典的生产者消费者问题。这么确定的需求,这么明确的指标,是不需要CPU的通用可编程能力的。
可以类比一下显卡,为什么不用CPU做图像处理呢?
因为为了特定目标设计的芯片往往可以更好更快的完成任务。
实际上,每一块背板上除了有专门的转发ASIC,往往都还有一块CPU,甚至有自己的操作系统,大型路由器往往是由很多个CPU组成的分布式系统。
举个例子,这是Juniper的核心路由器PTX5000,这上面每一个背板上都有好几个ASCI芯片用来转发,每个上面还有个PMB,上面都有块CPU来负责控制。
你可以简单理解成,这一个大柜子,其实是好几台电脑,每台电脑都有自己的CPU和转发芯片(可以类比显卡来理解)
所以这跟Intel 至强强不强没关系,CPU就不是用来干这个事儿的,就如同你让至强跑游戏也不行一样。
交换机,路由器这种要求高转发的设备,一般还是用用线卡(ASIC处理器)来转发,主控板辅以控制就可以了。目前国产或者国外的部分安全设备如,防火墙,流控设备等有很多是基于X86架构。如果运营商级别或者数据中心级别的防火墙如山石网科的设备,应该还是用的线卡转发吧,不然单存靠CPU转发上百万兆的包,肯定不可能的。这种防火墙在做包的状态检测时用的CPU不知道用的哪种处理器。
留言与评论(共有 0 条评论) |