首页 -> 网络技术 -> 技术前哨 -> 正文
网络应用该选哪种处理器

随着多核处理器的兴起,众多网络通信和网络安全应用开发商也把目光从x86架构转向了专用或是典型的多核平台上。网络通信应用和安全产品开发商(以下简称应用开发商)看好多核,和网络处理器曾经的风靡一样,是有着很强的用户需求驱动的。原始需求来自于用户对网络业务丰富和性能增长同步发展的需求。网络业务应用最早只是进行简单的IP网络互联,而今天则已经逐步演进到了对应用层的精细分析和控制,对网络流量进行更深入的分析,对计算能力的要求也越来越高; 与此同时,网络应用需要处理的输入数据也在不断飞速增长。传统x86架构固然非常灵活,但却不能有效解决对更高流量进行处理时计算能力不足的问题。
  事实上,每当一种新的、号称可以对流量进行高性能灵活处理的专用芯片诞生,对应用开发商来说都是一种刺激和鼓舞,尤其是这种专业芯片还可以为软件开发者提供一种通用的编程能力,因此,多核处理器受到青睐也显得合情合理。
  三种架构各有优劣
  据了解,应用开发商需要通过专用芯片完成以下专业工作: 模式匹配,在报文流量中找到特定比特、字节模式的能力,如字符串匹配、报文特征匹配等; 快速查表,根据报文流量特定字段进行查表操作,如路由表、流分类表、会话表等; 报文计算,如Checksum校验、MD5校验、加解密运算等; 对报文进行比特位域操作; 队列调度和管理; 报文保序等。
  网络处理器第一个在芯片级为应用开发商提供了上述基础能力,但经过将近10年的发展,网络处理器只赢得了少量的用户,很多应用开发商投入了很多研发力量但却并没有实现预期的大规模成功。究其根本原因,是因为从x86架构迁移到网络处理器的成本太高,一个对现有软件架构冲击太大的硬件必然会给软件开发商带来沉重的开发成本和维护成本。因此,网络处理器只在少数几个大厂商的核心产品中得到了应用。昂贵的开发成本造成网络处理器缺乏大基数的用户群,用户群的萎缩直接带来的是网络处理器应用的无疾而终。
  用于网络通信设备的多核处理器,内部同样也集成了上述专业工作中的一部分甚至全部功能。此外,多核处理器为应用开发商提供了灵活度更高的报文处理计算能力,笔者研究OCTEON处理器时,也为基于Linux即可开发、用C代码来编程并使用这些功能而感到激动,但激动过后也不得不站在工程的角度去思考一个很现实的问题: 迁移到多核处理器,究竟需要花费多少成本?会不会陷入类似当年网络处理器的“泥潭”呢?
  与网络处理器相比,多核处理器为应用开发商提供了“基于Linux”这个开发利器。我们都知道,在x86上开发出来的众多网络应用都是基于Linux以及上面丰富的开源应用程序的,而x86上可以运行的Linux系统和程序几乎可以不加修改地直接移植到MIPS(一种RISC处理器)上,也就是多核CPU上。天然被Linux支持的SMP架构,则可以让多个CPU核同时被利用起来,这样的移植工作量风险很小,投入也可控。
  但同时,SMP架构并不能为网络应用处理提供线性的扩张能力,也就是说,一个核处理100M,并不意味着两个核可以处理200M、16个核可以处理1600M,SMP架构极有可能只能让16个核具备1000M的处理性能,这么多个核的能力被软件架构浪费掉了,直接后果就是应用设备整机的造价成本居高不下。此外,很多多核处理器中提供的报文处理加速能力,需要有专用的软件去“激活”,Linux没有提供现成的激活代码,应用开发商如果要用好多核,还必须自己去写代码来激活这些功能。
  也就是说,多核处理器为使用Linux的应用开发商提供了一个很容易用起来的开发平台,但如何用好这个平台,则需要应用开发商付出努力。我们知道,网络应用可以从逻辑上分为控制平面和数据平面,x86上的Linux是控制平面和数据平面合一的,多核的SMP用法,也是控制平面和数据平面合一的,但是要让网络应用把多核用好,就必须要将控制平面和数据平面分离开来,而且分离得好不好决定了多核应用交付时的性价比。
  这就让我们不得不提第三种架构x86+FPGA/ASIC,这种架构从设计开始就带有很鲜明的数据平面和控制平面分离的特征,因此这种架构可以很好地实现高性能这个目标。但很可惜,由于FPGA或ASIC技术需要很大的研发投入,这种架构成为了少数大厂商的专属架构,也正因如此,人们往往无从分析和验证这种架构是否应该以及怎样与Linux这样的开放系统结合起来。
  FPGA/ASIC与多核整合或成趋势
  回顾网络应用处理器的发展历史,观察CPU+FPGA/ASIC架构的发展,跟踪多核处理器架构的发展趋势,我们可以进行一个总结性的比较。
  第一,三种架构的目的都是希望为网络通信应用提供高性能的报文处理能力,即提供一个高性能的数据平面引擎; 尽管它们出现的时间阶段不同,但基本能力是相同的。
  第二,可以将网络处理器理解成多核架构的初级阶段,网络处理器并没有构建出一个足够强大的开发者群体; 而多核处理器则充分利用了Linux这个网络应用开发者非常喜欢的开放平台,为吸引开发者、构建开发社区提供了很大的想象空间。
  第三,与多核处理器相比,FPGA/ASIC在芯片级实现了网络应用的数据平面,但由于 FPGA/ASIC实现成本很高,必须要有专业的厂商进行专业化的商业支持,数据平面的引擎才能不断向前发展以满足不断丰富的网络应用需求。而也正是这些专业厂商的出现,使得FPGA/ASIC从少数厂家的私有架构逐步变成适合众多网络应用开发商进行二次开发的开放架构。
  第四,多核处理器虽然具备很多明显优势,但要将多核处理器的潜力充分发挥出来,还必须解决传统应用软件中数据平面和控制平面分离的问题。因此,只有在多核上也出现了标准化的、开放的数据平面引擎,并且这个引擎可以与传统成熟软件无缝平滑结合时,多核处理器才可能在网络应用中蓬勃发展。
  第五,网络应用对数据平面引擎的要求,除了高性能、标准化和开放之外,功能丰富、易扩展的需求也越来越强烈。那么,多核和FPGA/AISC可否结合起来应用呢?FPGA/ASIC实现标准化的会话层和网络层处理,多核实现灵活丰富的应用层业务扩展,是不是会成为未来的一种发展方向呢?在笔者看来,这很可能会成为未来的一大发展趋势。
  第六,网络应用厂商的专长和优势在于他们可以深刻理解用户需求,以用户需求为基础挖掘很多新应用。数据平面的实现,无论是芯片级的FPGA/ASIC,还是多核的数据平面引擎,都很接近于网络基础设施的底层,一个标准、开放、专业、易扩展的数据平面引擎,必然会为网络新应用开发带来巨大推力。当然,专业的数据平面引擎的获得,无论是用FPGA实现,还是用多核实现,或者是将二者结合起来实现,都需要有专业厂商的支持。

文章搜索

覆盖全国各省会城市及海外城市的网速测试
→选择要测试的地区
→选择目标测试点
>> 测试点注册