可编程路由器是一种能通过配置和编程,实现灵活部署新服务和减轻网络管理负担的网络层设备。
可编程路由器研究背景
近年来,在互联网上以P2P与QoS为代表的新应用和新服务不断出现,以覆盖网络(overlay network)和数据中心网络(Data Center Network)为代表的新架构新设计也层出不穷。为了满足精确的网络测量、安全的网络管理及实时的在线配置等需要,研究人员往往不得不对已有的数据包进行修改、或引入自定义的数据包。
但现有的网络只能提供有限的功能和已知的服务,现有的网络设备(如交换机、路由器等)也只能转发标准的或预定义的数据包,不具有动态性和灵活性。若在现有架构上部署新的协议或应用,需要较长的设计周期和大量的费用。
为满足以上需求,并兼顾到潜在的设计空间,可编程器由器(Programmable Router)这一新思想随即应运而生。研究人员以期用它来处理数据流及网络应用的多样性,构造出一种动态的、可编程和可配置的网络处理环境。
但是到目前为止,还没有文献给出关于可编程路由器的精确定义,笔者尝试给出的定义是:可编程路由器是一种能从功能上分解成若干组件与接口,并能通过配置和编程,实现灵活而动态地部署新服务和减轻网络管理负担的网络层设备。
可编程器由器与可扩展器由器(Scalable Router)有一定的区别,可扩展路由器是指:由多个可独立运行的路由节点,通过某种互连结构连接而成的性能、功能可扩展的单映像路由器。其可扩展性主要体现在以下三个方面:交换实体的分布性带来的规模可扩展性;路由实体的分布性带来的路由计算可扩展性;路由器操作系统的分布性带来的功能可扩展性。如Juniper公司推出的T640型可扩展核心路由器可采用三级Clos网络互联,而Cicso公司推出的CRS-1多机架系统采用三级BENES交换结构互联。因此从功能可扩展上来说,二者大致是类似的,但可扩展路由器偏重于硬件可扩展,通过物理互联使得转发及处理能力更强大;可编程路由器更注重软件可扩展,通过功能分解使得编程与配置更灵活。
主动网络节点(Active Network Node)与可编程路由器也有不同,主动网络中的中间节点(如路由器、交换机等)可以对经过它们的消息流执行定制的计算,但是主动网络节点是带内通讯(in-band communication),而可编程路由器是带外通讯(out-band communication);主动网络节点使用通用的处理器来执行注入的代码,以实现软件重配置算法,可编程路由器可使用通用处理器或网络处理器,通过编程与配置达到目的;主动网络节点关注编程的任意性和实现上层功能的复杂任务,可编程路由器更关注配置与实施的灵活性;并且主动网络节点中的转发元素(Forwarding Elements)一旦定义,就不能再修改或重定义。
可重构路由器(Reconfigurable Router)是通过实时可配置硬件和软硬件协同设计技术,允许对路由器进行动态的重配置,以增强路由器的功能和性能,以满足大多数用户的需求,从而创建高性能、高灵活度的网络。可编程路由器与其相比,在注重可重配置的同时,更强调功能的扩充性和灵活性。
可编程路由器近两年来逐渐引起学者们的重视,ACM举办的SIGCOMM计算机通讯年会已连续两年为其开设Workshop,可编程路由器的相关技术也不断引起人们的关注。我们首先将从新一代互联网的发展角度出发,分析研究可编程路由器的重要意义,然后简要叙述可编程路由器的发展现状,最后予以总结与展望。
可编程路由器与下一代互联网
自Internet发明到现在已有40多年的历史,计算机网络也发生了翻天覆地的变化,新一代互联网(NGI: Next Generation Internet或FI: Future Internet)旨在从互联网基本组成、工作原理和实现机理方面进行理论和方法探索和算法设计,解决现在网络在扩展性、安全性,高性能、实时性、移动性、管理性等方面显示出诸多不足。
在发展方向上,一般有革命型和进化型两种路线。鉴于解决以上挑战的艰巨性和复杂性,有研究人员提出推倒现有的架构、重新设计全新互联网的革命性思想,其代表有美国的GENI、FIND和欧盟的FIRE。在另一方面,鉴于现有互联网的普及性及重新设计的复杂性,有学者认为应在现有互联网上,坚持演进并积极创新。其代表有美国的Internet2、欧洲的Geant2、第二代跨欧亚信息网络TEIN2和中国的下一代互联网示范工程CNGI。截止到目前,全球新一代互联网和IPv6试验网络主干网已经形成,其规模正不断在扩大。
对于新一代互联网的功能需求,我们认为新一代互联网体系结构需要着重解决的五大问题之一是:互联网体系结构的扩展性和演进性问题;在这个问题上,我们认为必须涵盖的五大因素之一是:可扩展的网络节点能力。
新一代互联网的体系结构正发生着巨大的变化。新一代互联网对网络节点的可扩展性、灵活性提出了新的要求。作为网络核心部件的路由器的可重构性、可编程性、可管理性等方面显得更加重要。因可编程路由器允许用户对其配置或编程,达到部署新服务和减轻网络管理负担的目标,在灵活性、动态性、可扩展性、可管理性及可编程性等方面显示出极大的优势和远景。因此,研究可编程路由器对新一代互联网体系结构的发展也具有重要的意义。
可编程路由器的研究进展
较传统路由器,可编程路由器在实现其基本功能之外,可编程性至少体现在如下方面:
(1) 软硬件的可编程性。可编程路由器的硬件架构允许用户重新定义功能,同时上层软件体系结构由功能划分清晰的模块或API组成,允许用户重新组织这些模块或调用接口来达到定制的目的。
(2) 网络接口的可编程性。在高性能路由器体系结构中,网络接口已由线卡(Line Card)所取代,线卡具有剥离包头,查找自身缓存中的路由表并进行转发的功能。线卡在转发数据之前,可编程路由器允许用户定制其他功能,如分类、整形、QoS等。另外还允许用户识别自定义的数据包。
(3) 数据路径的可编程性。可编程路由器应分离控制(管理)与数据(转发)两个层面,允许数据包根据用户自定义的条件进行数据路径的选择。
(4) 上层协议的可编程性。用户可以重新定义或创建新的上层协议,以支持新服务与新应用。
(5) 网络管理方式的可编程性。可编程路由器应允许用户按自定义的格式组织脚本来对其配置,在监控和管理方式上,应支持多种或自定义的管理手段。
基于以上几点,近年来,可编程路由器的研究取得了许多重要的成果。
1.硬件架构方案
FPGA方案:FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。现在大量的路由器数据交换板中都含有FPGA芯片。但是这种方案往往要对硬件进行重设计,耗时费力,更重要的是需要设计人员具有很强的电路设计知识。
NetFPGA方案:NetFPGA是斯坦福大学基于FPGA设计的一块全编程的硬件加速卡,它具有4个G bit口外联和2个SATA口互联,通过PCI接口运行在PC上。将编译后的Verilog程序下载到SRAM中,可以实现IPv4路由器、缓冲监视路由器、OpenFlow交换机、流量发生器、硬件加速的软路由器等,转发速度可以达到4Gbit。NetFPGA的优点是显而易见的:通过提供的API,用户可以为自定义的模块或设计全新的模块化路由器,以达到转发自定义数据包或设计新网络架构原型的目的。当然NetFPGA还存在一些缺点,时延、内存和带宽都需要进一步改善。
其他方案:“动态硬件插件(DHP)”的可编程路由器架构,它采用可重配置硬件为多口的可编程路由器提供灵活的硬件处理环境。它允许众多基于硬件的应用或插件动态地载入到设备上,并可以并行运行,以提高每流处理速度;“NCHARGE”的工具集,通过终端对网络化、可配置的硬件进行远程配置和管理。因可配置的硬件是基于FPX(Field Programmable Port Extender)的,所以这些硬件模块可以通过网络、动态地部署到FPGA逻辑上。一旦硬件模块部署完成,NCAHARGE通过发布自定义的控制消息来控制每一个硬件模块,提供API供软硬件通讯,同时也提供了基于Web的管理界面来简化操作。
2.软件架构方案
Click与NP-Click:Click是一种模块化软路由器架构,它由若干称之为“元素”的模块组成。单个的元素实现了简单路由器的功能,如分类、排队、调度等。但Click 只针对数据转发层设计,并没有指出如何与控制层的应用相结合,而且不能进行动态配置。NP-Click使用网络处理器(Intel IXP1200)实现了Click方案。
XORP:Mark等人设计了一个可扩展的开放式软路由器平台。它底层以Click作数据转发引擎,上层采用多进程处理各种网络协议。进程间采用类似于URL的XRL(XORP Resource Locators)通讯机制,具有可扩展、高性能、健壮等优点。
Scout与Router Plugin:Scout是一个针对网络应用的操作系统,具有可配置性。Router Plugin则是在 NetBSD 操作系统内核基础上,设计的高性能、模块化、可扩展的软件路由器体系结构。它允许代码模块以插件(plugin)方式动态地添加或配置,多个不同的插件可以绑定到同一个流上,从而实现功能的扩展。
基于网络处理器的方案:使用Intel IXP1200网络处理器开发板结合PC构建了一个健壮的软路由器。它利用处理器的并行机制,在最小数据包的情况下,其转发速度也达到了3.47Mpps,并支持1.77Gbps链路带宽,同时充许新功能“注入”到处理器架构三层中的任意一层上,其健壮性不受数据包大小的影响。
基于PC的方案:在Linux基础上设计一套增强性的软件架构,并部署在多核的处理器上,获得了较高的数据交换能力。
3.数据路径的可编程性
为了能动态地适应与支持新服务、新应用和新协议,同时实现转发自定义数据包,分离控制(管理)与数据(转发)层面等目的,可编程路由器研究人员在数据路径的可编程性上提出了一系列的方案。
ForCES:IETF RFC3746定义的转发和控制功能分离的方案。其基本思想是把IP路由器分成转发元素(Forwarding Elements,FE)和控制元素(Control Elements,CE),而路由器可由多个(可达几百个)FE、CE和连接二者的ForCES协议构成。
OpenFlow:OpenFlow是斯坦福大学Clean Slate计划支助的一个开放式协议标准,用于在现有的产业网络(Productive Network)上部署新协议。厂商不需要改动硬件,只需要支持OpenFlow协议,用户即可使用这些网络设备来连接异构的网络或创建新网络测试床。OpenFlow现已被Cisco, HP, Juniper和NEC等许多厂商所支持。标准的OpenFlow交换机至少需要包含三部分:数据流表、安全通道和OpenFlow协议。数据流表告诉交换机如何处理流,安全通道是控制器和交换机通信的中介。
CAFE:CAFE是一种基于NetFPGA的、可配置的数据包转发硬件引擎,主要用于在数据中心网络(Data Center Network)内转发自定义的数据包。开发人员无需理解数据包的意义,只需利用所提供的13个核心和少数辅助API,用少量的控制脚本就能实现转发自定义数据包。但CAFE也存在着一些缺陷,如由于是基于NetFPGA的方案,所以其转发速度也限制在4Gbit/s内,并且配置脚本比较繁琐,特别是是对包头的插入删除等操作限于8字节。
GFE:GFE是基于OpenFlow的一种通用的转发元素(Generic Forward Element) 框架。它使用XML定义包的分类、转发、封装、解封装、整形及QoS等操作,通过网络处理器来执行XML转换后的指令。XML格式灵活,可以快速地部署新服务和新应用,而且GFE支持在线设备的即时配置,无需重启即能生效。但实验结果表明,在实现桥接功能时,比现行的技术耗时要高出一倍。虽然作者指出OpenFlow是GFE的子集,但并没有给出相关的API和XML的配置规范。
网络服务处理平台:一个基于硬件的网络处理平台,它分离了数据包的处理、处理器之间的通讯、状态管理及复杂的IO操作,实现了可扩展性,并可以对每流自定义数据路径。其性能方面也比较理想,但对服务的粒度欠考虑。
4D、Ethane与Tesseract:4D将网络架构定义为决策、分发、发现及数据四个层面;Ethane将管理、控制与转发功能分离,管理员能在一个*控制器上远程定义全网的策略;Tesseract基于4D、在一个单独的管理域上直接操作网络中的所有节点,实现网络集中化的管理。
还有一些研究在Linux内核上进行数据面板虚拟化处理自定义的数据流。
结论与进一步研究工作
本文对可编程路由器各方面进行了调研。首先,本文从概念上将它与可扩展路由器、主动网络节点、可重构路由器进行了区别,然后对它的软硬件架构方案进行了归纳,介绍了其在数据路径上的可编程性,最后予以了总结和展望。
从以上我们可以看出,较传统的路由器,可编程路由器的具有业务逻辑清晰、动态配置灵活、编程组织轻松及部署服务迅速等诸多优点。但可编程路由器的发展与创新还需要进一步的工作。
1.高性能、高转发速率的软硬件架构。转发速率达百G比特、T比特级的高性能硬件架构仍有待研究。
2.通用的配置与管理方案。
3.统一的编程标准与规范。
4.最后是安全问题。到目前为止,研究人员还没有对编程路由器的安全问题进行考虑,但是我们知道,路由器作为网络核心部件,其安全问题是不容忽视的,特别是可编程路由器具有重新定义功能、执行用户程序的能力,一旦被攻击者所利用,其后果是不堪设想的。
(作者单位为清华大学计算机科学与技术系)
文章来源:《中国教育网络》杂志7月刊