以软件方式推动下一代互联网快速演进
2013-03-25叶志钢
叶志钢,刘 锋,杜 娟
(武汉绿色网络信息服务有限责任公司 武汉430074)
1 引言
学术界和互联网产业界对于“下一代互联网”这个概念一直没有很清晰的定义。但时至今日,业界主流至少已有部分共识:“IPv6是下一代互联网的基础,但下一代互联网不仅仅只是IPv6”,由软件定义的网络(software defined networking,SDN),也很可能成为互联网进化为下一代互联网的最主要驱动因素,当前多数厂商在实现IPv6过渡部署产品与SDN新业务产品开发时是基于硬件架构和私有化定制方式实现,虽然从最终功能的实现方面,与软件方式实现的功能相同,但也有很多的差异性,所以以软件方式实现IPv6和SDN这两大下一代互联网的基础技术将是本文讨论的中心内容。
2 IPv6与IPv4/IPv6融合网关
2.1 互联网全面实现IPv6需要两个基本条件
IPv6的大规模普及受两个关键因素制约。
一是要求网络上所有的网元设备,如各类路由、交换设备、BRAS、终端、业务平台、网管平台等具备开展IPv4/IPv6双栈业务的能力。
二是规模部署成熟化的IPv4与IPv6互联互通的过渡技术与开发承载这些技术的IPv4/IPv6融合网关。
对于前者,当下多数的软硬件厂商产品已经具备此能力,后者又可细化为两部分的问题,一方面是IPv4与IPv6互联互通的过渡技术的成熟化进度,取决于标准细节的完善与现网试点的效果;另一方面是实现过渡技术的网元硬件架构的区别。
2.2 以软件方式实现IPv4/IPv6融合网关
路由器、交换机、BRAS等基础网络设备支持IPv4/IPv6双栈需要设备厂商支持。本文不再就该问题进行深入探讨。
实现IPv4向IPv6网络平滑过渡,业界目前已有很多种标准,如:DS-Lite、SMART6、LAFT6、Public、MAP、IVI、NAT64、6rd、BIH、6LoWPAN等。这些标准所定义的功能既存在重叠性也存在互补性,融合网关产品需根据不同的应用场景遵循上述某种标准。
产业界主流IPv4/IPv6融合网关的实现方式有两种。
一类是以在现有的硬件设备(如BRAS、路由器)中增加板卡或新建独立的IPv6过渡网关的方式,各个设备制造商遵循自己的软、硬件标准,不同制造商的板卡不能互相兼容,部署网关时会受已部署的网络设备的制造商、型号、软件版本限制,无论何种方式,都是各个厂商采用私有的封闭系统开发IPv6相关过渡产品,运营商选择这些产品的优势是其自身已经按照此种硬件路线运营多年,较为容易接受此种架构,缺点是被硬件厂商捆绑垄断,成本相对高昂以及应用的扩展受制。
另一类采用通用平台技术,如采用基于Intel的x86平台和Linux操作系统的通用软硬件架构实现IPv4/IPv6融合网关功能。此种架构并非近期才大规模普及,其在安全领域,防火墙、IPS等产品上已运营多年,功能开发的灵活性早已证明,只是在性能及开发敏捷方面略有不足,作为网络中的主要网元参与其中缺乏经验。但随着通用平台性能的提升及开发环境的开放,将会在成本及产业结构上对现有的环境带来冲击,此种架构带来的优势是过渡技术的支持灵活以及协议开发的快速响应能力,可在不同的应用场景中任意地进行各种过渡技术切换,同时带来成本的大幅度降低。
3 SDN与FlowSwitch
SDN的本质是把网络的数据面与控制面分离,让用户、应用可以通过软件编程充分控制网络的行为。在OpenFlow中,数据面是以FlowSwitch的形式出现的。
实现FlowSwitch则有两种解决方案:一是采用量产的专用芯片,另一种则是通用x86硬件平台和Linux操作系统以软件的形式实现。预计在SDN大规模应用时,主流FlowSwitch会采用专用芯片的解决方案。
但以下3种情况采用专用芯片是不合适的:
·在标准尚未定型时,芯片流片成本很高,不方便支持标准的频繁升级;
·某些应用场景对FlowSwitch有特殊要求,除了基本功能外还需要附加其他特殊应用,如信息安全审计分析功能、DPI功能等;
·功能需要经常新增或变更的应用场景。
SDN强调的是将复杂功能交给控制面(Controller)处理,数据面FlowSwitch的功能尽量简化,以上这3种情况会是少数的。但是,一旦面对这3种情况,采用x86硬件架构,以软件的方式实现FlowSwitch,可以说是唯一的选择。
4 在x86硬件架构下以软件方式实现高性能网络设备
(1)功能
在x86硬件架构下以软件方式实现某种网络设备的原型,非常方便快捷。能够支持丰富的功能是以软件方式开发产品的最大优点。以IPv4/IPv6融合网关产品为例,GreeNet已在x86平台上实现了DS-Lite、SMART6、LAFT6、Public、MAP、IVI、NAT64、6rd、BIH、6LoWPAN多 种 标 准 的支持。实现某种标准的融合网关的核心功能,只需要一、两周时间即可完成,充分体现了通用平台的良好的可编程性。除了编程开发时间短,良好的可编程性好还体现在可以支持丰富的功能,通用CPU所能支持的功能多样性是专用芯片完全无法媲美的,类似智能手机与功能手机的差异一样显著。
(2)性能
通常多数人会认为用x86硬件实现网络设备性能会比较差,这其实是一种误解。通用软、硬件平台需要支持极其丰富的应用,其操作系统、硬件驱动等需要执行的任务非常多,IP协议栈也非常复杂,并且标准版本的操作系统不会对特定应用提供特别的优化。因此,某些特定应用比如说高性能分组转发方面的表现自然不会太强大。但是,事实上高端x86 CPU的集成度和硬件工艺通常比专用芯片更高,理论上是可以支持高性能网络处理的。导致性能不够强大的原因主要是软件优化程度不够,高性能的硬件设备白白空闲。只要对x86硬件平台上的操作系统、网卡驱动、内存管理、CPU调度等多个方面做正确的优化,就可以大幅度提高网络处理的性能。这就是所谓“通用平台专用化”的优化方法。采用Intel或AMD通用CPU的超级计算机,性能强大的重要原因之一也是如此。
(3)稳定性
与性能问题类似,多数人会有PC机不够稳定可靠的印象。实际上普通PC机不稳定由多方面因素导致,采用Windows操作系统、安装太多软件、电源系统和散热系统非电信级等是其中最主要的因素。在稳定性要求高的场合,如长时间、高负荷运行的网络设备,如采用高端主板、CPU,选择高品质内存和网卡,配合电信级的电源和散热系统,结合功能裁减、性能优化后的Linux操作系统,其稳定性、可靠性将与采用专用架构的网络设备并无本质区别。一些主流电信设备制造商在面对某些复杂应用时,其专用架构的设备上也会采用x86板卡来完成这些复杂功能。
(4)成本
采用x86架构生产网络设备,成本优势也非常明显。如果采用专有硬件架构设计一种新的网络设备,硬件的设计难度很大,生产工艺风险也非常大,而且对专用硬件架构熟悉的人才也相对匮乏。整个研制、生产周期很长。并且硬件产品需要较长时间检验,甚至在较大规模应用后才能确认是稳定可靠的。如果设备的产量不是非常大,以上这些因素会导致设备的成本非常高昂。而高端的x86硬件,无论是主板、CPU还是网卡,均采用全球最顶级的工艺大规模批量生产,硬件质量很好。而且正是由于这些通用配件用途广泛、销量很大,因此市场价格相对合理。另一方面,通用架构的软件开发工具和人才资源均非常丰富,可重复使用的软件模块很多,甚至多数是开源的。由于硬件系统的成熟稳定、软件系统应用非常广泛,研制人员可以将大部分精力聚焦在创新的功能点上。这些因素使得产品的研发生产成本比较低。
总的来说,如果产品功能简单,产量巨大,采用专用硬件架构,单台设备的平均成本会比较低。如果产品功能复杂或功能经常变化、产量不太大,采用x86通用硬件架构的成本优势将非常明显。
(5)产业链整合
采用专有架构研发生产网络设备,由于投入巨大,中小规模的企业基本无力支持,话语权被全球少数几家大型的电信设备制造商掌控。这些大型电信设备制造商的软硬件产品互不兼容,其体系架构和多年积累的软硬件研发资源也绝不可能向第三方厂商开放,这种封闭性导致近10年来,网络领域并没有太多的创新,形成了目前这种寡头垄断的局面。这是网络领域的创新远远落后于互联网领域的根本原因。
而采用x86+Linux架构研发生产网络设备,原型机就是普通的PC机,硬件门槛极低。硬件稳定可靠,开发者不用耗费大量财力和精力控制硬件品质。软件资源更加丰富,甚至有大量开源代码可以使用。研发人员人才资源丰富,能大幅减少学习、培训的过程。小型电信设备制造商可以用少而精的人员实现在专用架构上需要很多人才能完成的集成产品开发,实际上是整合利用了x86和Linux产业链与大型设备制造商竞争,未必会处于劣势。
5 开发工具、关键技术和产品的性能指标
虽然前面介绍过在x86+Linux架构上研发和生产网络设备的周期较短、成本较低,但是并不等于难度很低。只有将硬件的潜在能力都发挥出来,才能将网络性能提升到线速水平。标准版本的操作系统、网络驱动程序、IP协议栈都无法支持这种需求。为发挥出硬件的极致性能,必须对整个软件系统的多个方面做针对性的优化才能达到目标。如果每个在x86+Linux架构上研发不同应用的开发者都依靠自身的力量做软件系统全方位的优化,难度也是难以想象的,肯定会导致研发周期漫长且不可控。有需求就会产生供应,目前,全球已有多家公司在基于x86通用架构上实现了高性能的数据面处理能力。
美国的WindRiver、法国的6Wind是在Intel DPDK(Intel data plane development kit,数据平面开发套件)的基础上实现高性能数据面处理。以色列的Silicom有一套自有的数据面开发套件DNA。中国武汉的GreeNet也有一套具有完全自主知识产权的GN CUBE开发平台,这套平台从操作系统内核、高性能数据面开发工具、应用程序开发库、互联网协议识别库、数据库甚至用户界面开发平台均包含在其中。开发者只需要专注业务逻辑,即可在x86硬件架构中快速地开发出高性能、成熟稳定的特种网络设备。
GN CUBE包含全套6个组件:
·GNOS高性能网络处理系统;
·GN Net高性能网络包处理引擎系统;
·GN Lib高性能网络应用程序开发工具分组软件;
·GN PROTO网络应用协议识别引擎系统;
·GN Cloud分布式云计算数据挖掘系统;
·GN WebOS富客户端用户界面展示平台系统。
GN CUBE中应用了几种关键的优化技术:“零拷贝”技术优化网络数据处理流程,减少操作系统的介入和内存拷贝任务,提高CPU效率,大大提升了系统吞吐量;“策略映射技术”通过面向对象设计的方法和非线性算法实现网络设备的策略规则数不受限制,大大提升系统性能;“QFIFO优先队列调度技术”根据优先级对优先队列进行调度;“饥饿等待优先权反转”算法可以保证不会让低优先级队列永远无法调度。
采用GN CUBE平台开发出的网络设备,使用两颗Intel SandyBridge架构的至强2660 CPU,能够达到40 Gbit/s、10 Mbit/s的应用层分析转发性能。网络端口密度也非常高,能够在一台2U规格的设备中,提供32个10GE端口或最高64个GE端口。强劲的性能和丰富而高密度的网络端口使得x86架构的网络设备完全可以媲美采用专用架构的网络设备。
无论是实现IPv6网关还是SDN交换机,都非常适合采用x86架构实现。CPU性能和硬件系统总线的带宽将不断提升,预计2013年下半年,x86架构的至强CPU可支持80 Gbit/s的网络处理性能,可以满足单条40GE链路双向线速处理。预计到2015年,很可能可以支持200 Gbit/s,单条100GE链路双向线速处理。
6 结束语
符合SDN理念的设备应用场景会越来越广泛,是当前最有可能应用SDN的场景将是IDC,而企业网、接入网、甚至移动核心网也都有可能。在一台x86设备上虚拟出多台原本多种不同用途的设备,从而整合多个功能到一台设备,并保持功能的相对独立性,也是未来网络设备一种非常可能的发展趋势。通过虚拟化技术,运营商可以将生产网络和试验网络区分成不同的片区,既可以资源动态调配,也能做到互相隔离,试验不影响生产,这也是SDN的重要特点,这一特点将非常有利于运营商业务模式的创新。
x86通用架构克服了性能、稳定性和成本等问题,又恰逢SDN开放架构这个颠覆性的理念漫延全球网络界,预计未来几年会大量出现新兴的网络设备制造商挑战大型设备制造商的局面。当前也出现大型云计算服务供应商自行定制网络设备、自行规划最适合自己的网络设备,不受制于大型设备供应商的情况,这种趋势也许会成为未来的主流。总之,贴近可由用户定制的网络设备将逐步风靡。
以软件方式定义网络,必将推动网络产业发生天翻地覆的变化。
1 McKeown N,Anderson T,Balakrishnan H,et al.OpenFlow:enabling innovation in campus networks.SIGCOMM Comput Commun,2008,38(2):69~74
2 OpenFlow Consortium.OpenFlow Switch specification V1.0,2009
3 叶志钢,刘锋.十年磨一剑:铸造魔方平台,构建轻松网络.http://www.greenet.net.cn/plus/cubeplatform/sdnxw.html,2012