内容提要
随着互联网的发展和规模的膨胀,对路由器的功能需求也在不断发展,目前拓展路由器功能主要有可编程、虚拟化和可重构三个途径。本章将介绍可编程和可重构路由器领域的研究进展及可重构路由交换平台关键技术。
6.1 概述
由于互联网长期遵循端到端的设计原则,使得路由器在网络中仅作为分组的交换设备存在,与端系统的应用无关。路由器体系结构和相关技术的研究也一直集中在如何提供更大容量的交换能力、更高的端口密度及更好的服务质量保证方面。
然而,随着互联网规模的膨胀、业务模式的演变,对路由器的功能需求也在不断发展,目前拓展路由器功能主要有可编程、虚拟化和可重构三个途径。
可编程网络又称软件定义网络,要求路由器具有开放的控制接口,管理员可通过外部配置控制网络设备的处理行为。典型的如2008年美国斯坦福大学提出的目的在于支持校园网内网络技术创新的OpenFlow技术。其主要思想是在交换机内部定义一个标准流表,可通过对流表配置定义交换机的处理行为。目前OpenFlow交换技术已经在数据中心网络、无线接入网络的研究中得到应用。
虚拟化技术源于20世纪90年代出现的可编程交换机思想,即通过对硬件交换平台的资源划分,在一个物理交换机上虚拟出多个逻辑的交换机,以支持在一个物理网络上构建多套逻辑网络。但如何实现逻辑交换机之间的资源划分和硬隔离十分困难,目前许多厂商推出的逻辑路由器只是在转发表的生成和查找上隔离,还难以做到真正的转发、交换和缓冲资源的隔离。因此路由器的虚拟化更多集中在如何通过数据平面获得控制平面的虚拟化来提高路由器的可靠性。
可重构路由器的思想源于下面的观察,即路由器的功能随着时间和空间的变化而变化。当路由器在T1时刻部署在A点(如边缘接入网络)和B点(如汇聚网络)时需要的功能不同。同样在B点,当时间变化到T2时,路由器的功能集合也可能变化。例如,T1时刻路由器需要对网络中爆发的蠕虫病毒进行监测和过滤,而在T2时刻蠕虫病毒平息后,并不需要此项功能。同样,在T3时刻路由器又部署到A点时,其需要的功能又有可能发生变化。
上述分析表明,随着时间和空间的变化,路由器需要的功能集合F1-F4也在不断变化。目前的设计方法是在路由器中尽可能实现较多的功能,根据部署的要求选择开启相应的功能。这样做的结果是路由器设计变得越来越复杂。例如,根据Cisco公司的相关论文,在其SPP网络处理器设计中,仅在转发查表方面就支持了考虑支持IPv4全局转发表(1M项)、反向路径检查(RPF)表(1M项)、IP VPN控制表(5~10M项)、IPv4组播表(1M项)、MPLS标签表(1M项)、IPv6单播表(1M项)、IPv6组播表(1M项)等多种长度、容量不同的控制表格。这些复杂的功能导致设计开发难度、成本、功耗等问题。使SPP网络处理器一度成为世界上密度最高、处理最复杂的处理芯片,远远超过同时期Intel和AMD的多核CPU系统。而对于一些新出现的功能需求,如深度报文监测(DPI),SPP却无法支持。
可重构路由器可根据不断变化的功能需求动态加载不同的处理构件,不但能满足各种新出现的互联网处理需求,如视频感知的处理,而且可以降低设备功耗,延长使用周期和减少电子垃圾,因此更加节能环保。
具有可重构思想的路由器体系结构在国外已经有一些相关研究,如针对数据转发层的面向构建灵活和可配置路由器的软件体系结构的click[1][2][3]路由系统,针对控制和转发平面间的信息交换标准化的ForCES[4][5],还有重点关注路由器的控制平面及解决路由器源代码不开放问题的XORP[6]。
国内方面,在国家863高可信重大专项“新一代高可信网络”项目的支持下,可重构路由器方面的研究也取得了相当大的进展。
本章将重点介绍可编程路由器和可重构路由器体系结构的主要研究进展。
6.2 OpenFlow技术
OpenFlow是由斯坦福大学的Nick McKeown教授在2008年提出的一项技术,其出发点是:研究人员研制的创新网络体系结构和协议需要在实际网络上才能更好地验证,而实际网络的路由器是不允许研究人员随意进行修改的,因此,提出了OpenFlow的控制转发分离架构。其基本思想是将控制逻辑从网络设备中分离出来,研究者可以对其进行任意的编程从而实现新型的网络协议、拓扑架构而无须改动网络设备本身。该想法首先在美国的GENI研究项目中得到应用,实现了一个从主机到网络的端到端创新实验平台,HP、NEC等公司提供了GENI项目所需的支持OpenFlow的交换机设备。
OpenFlow的思路很简单,网络设备维护一个流表(FlowTable)并且只按照FlowTable进行转发,FlowTable本身的生成、维护、下发完全由外置的Controller来实现,注意这里的FlowTable并非指传统路由器维护的IP五元组,事实上OpenFlow 1.0定义了包括端口号、VLAN、L2/L3/L4信息的10个关键字,但是每个字段都是可以通配的,网络的运营商可以决定使用何种粒度的流,如运营商只需要根据目的IP进行路由,那么流表中就可以只有目的IP字段是有效的,其他全为通配。
这种控制和转发分离的架构对于二层交换设备而言,意味着MAC地址的学习由Controller来实现,VLAN和基本的L3路由配置也由Controller下发给交换机。对于三层的路由设备,各类IGP/EGP路由运行在Controller之上,Controller根据需要下发给相应的路由器。流表的下发可以是主动的,也可以是被动的。在主动模式下,Controller将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;被动模式是指网络设备收到一个报文没有匹配的FlowTable记录时,将该报文转发给Controller,由后者进行决策该如何转发,并下发相应的流表。被动模式的好处是网络设备无须维护全部流表,只有当实际的流量产生时才向Controller获取流表记录并存储,当老化定时器超时后可以删除相应的流表,故可以大大节省TCAM空间。当一个Controller同时控制多个交换机/路由器设备时,它们看起来就像一个大的逻辑交换机,各交换机/路由器硬件就如同这个逻辑网络设备的远程线卡,类似的概念在Cisco的Nexus 1000/1000v、ASR9000/9000v和Juniper的Q-Fabric架构中可以看到影子,Cisco称之为nV(Network Virtualization)技术。
6.3 可重构路由器体系结构研究进展
基于传统的网络技术框架,路由交换设备依靠拓展链路传输带宽,提高节点处理速度,增大节点处理容量,满足不断增长的性能需求;通过增加复杂控制算法和协议等系列技术,满足特性差异日益扩大的用户业务承载需求。然而,在付出网络复杂度快速提高和传送效率明显降低的代价下,路由交换节点仍然无法满足大量差异化用户业务的规模化应用需求。因此,高可信项目提出可重构的路由交换节点技术和机制,按照平台化支撑下的构件化处理思想,基于数据/控制平面分离的原则,研制开放式、构件化、T比特级可重构路由交换通用平台。
可重构路由器的核心可以归纳为开放性、可重构性及可进化性。“开放”指路由器底层资源充分地向用户开放,采用开放标准和积木式构件模型,不同厂商的积木构件可互操作,软件代码可重用,移植方便。“可进化”指利用“可重构”技术实现对底层资源的编程控制,实现对路由设备服务功能的灵活重组,产生支持不同业务功能需要的网络节点设备,并支持多业务融合服务,使得可重构路由器能够随业务的发展而不断演进,从而具有很强的自进化能力。
根据路由器的开放可重构性的需求,高可信项目在研究过程中提出了开放可重构路由器基本体系架构。该基本架构包括四大类模块:
(1)可重构中央控制模块(Control Element, CE)实现总控和路径发现等功能,控制各被控模块间拓扑连接及各被控模块内部各底层转发资源的属性及拓扑连接,从而完成底层资源的充分可重构,它对底层资源的控制没有IP限制;
(2)可重构链路层处理模块(Linking Element, LE)主要完成对数据包的链路层处理;
(3)可重构网络层转发模块(Forwarding Element, FE)完成数据包的网络层转发处理;
(4)可重构交换网络模块(Switching Element, SE)完成快速数据交换功能。
基本体系架构对ForCES架构下的转发模块进行了可重构方面的扩充,这种扩充的背后包含复杂的资源管理的全面扩展,包括控制面的本质提升和相关新协议标准的提出,进而满足高度可重构性的技术要求。
基于国家863高可信重大专项“新一代高可信网络”项目不仅系统地提出了可重构路由器体系结构及相关标准,还提出了可重构路由交换开发体系结构模型,国防科学技术大学等单位研发了可重构路由器原型样机系统。此外,项目组还利用研制的设备在上海未来宽带中心机房、复旦大学、上海交大等5个节点搭建了可重构柔性实验床,实验床的主要逻辑功能。试验床由柔性网络的网管设备对整个网络进行管理,被管部分包括服务器端和设备端两部分,服务器端就是管理代理,屏蔽具体设备细节,与设备内部的可重构支撑平台进行通信和控制。
可重构路由器系统的总吞吐率为2.56Tbps,总的包交换能力大于3.2Gpps,单机柜端口吞吐率大于640Gbps,单机柜包转发能力大于800Mpps,支持1Gb/10Gb以太网和2.5Gb/10Gb POS接口。主要创新点有:①支持“三网融合”的可重构先进网络架构;②基于硬件构件的功能动态重构方法;③面向逻辑承载网的资源动态划分和隔离保护方法;④应用服务构件容器与服务动态部署方法。
可重构柔性实验床网络拓扑。通过该试验床,可测试可重构柔性试验网的分组业务承载能力、网络性能、可重构能力等,同时,该试验床支持电信网、广电网、互联网的规模应用,并为各种先进网络架构及其网络新技术研究提供有力平台支撑。
6.4 可重构路由交换平台关键技术
可重构路由交换平台的基础是平台化支撑下的构件化处理技术。首先定义处理的3个等级——平台、组件和构件。平台是可重构完成多种任务的系统,组件是可重构实现特定功能的单元,构件是可重构实施给定处理的模块,即平台就是任务系统、组件就是功能单元、构件就是处理模块。平台化支撑下的构件化处理技术的特征体现在3个方面:①平台为各种组件提供可重构的运行支撑环境、组件为各种构件提供可重构的运行支撑环境,构件是基本处理模块;②平台、组件和构件均服从统一的系列标准化规范,任意第三方提供的标准化组件可以在同一平台上参与完成给定任务,任意第三方提供的标准化构件可以在同一组件上参与完成特定功能;③平台级和组件级均能实现功能升级重组、性能编程分配和管理分层配置,构件级具有较强的可维护性。
构件可以在不同的环境中使用,也可在同一环境中复合使用,因此构件需要提供清楚的接口规范与对应环境进行交互。构件的封装、设计与外部表征尽量分离。构件对外发生作用或构件间的交互,都是通过规范定义的外部接口进行的,构件使用者只需要知道构件的接口,而不关心其内部实现,这是设计与实现分离的关键。下面介绍可重构路由交换平台的关键技术。
1.开放可重构路由交换平台模型
可重构的通用路由交换平台模型重点解决模型的功能层次划分、接口标准化和开放控制问题。这里提出抽象模型,垂直方向分为增值服务层、控制服务层、转发呈现层、交换服务层和转发服务层等。增值服务层向用户提供感知网络状态和行为的访问接口。控制服务层执行路由协议或信令协议。转发呈现层为控制服务层提供数据转发平面统一的逻辑视图。交换服务层执行转发单元之间的内部交换和交换平面的互联交换。转发服务层完成数据平面的转发。水平方向,控制服务协同协议(CSCP)是与控制服务协议直接相关的扩展,控制实体协同协议(CECP)将多个控制实体进行协同,形成单一视图。转发实体协同协议(FECP)将不同的转发实体进行协同,形成单一视图。
2.控制组件的构件支撑技术
控制组件的构件支撑技术重点需要解决三个方面的问题:①如何定义控制组件的可重构模型;②如何对不同构件进行分类与聚类;③如何对所控制的各类资源虚拟化与隔离,进行有效管理。第一个问题是理论基础问题,第二、三个问题是基于理论基础的技术实现问题。
研究思路是:首先从理论基础问题入手,通过构件的合理分类与聚类,建立控制组件的可重构理论模型;基于该模型,研究各类控制构件的关键支撑技术。描述了控制组件组成的基本模型,它由五类构件环境构成,自底向上依次为控制/转发交互协议构件环境、全局统一的数据平面资源虚拟构件库、基础协议栈构件容器、基础控制服务构件容器、应用服务构件容器。通过基于动态资源分配的虚拟分区支撑环境,支持资源的虚拟化及资源的有效管理。从系统级可重构的角度,控制组件运行在多平台并行支撑环境中,通过数据平面的全局统一视图、分布式路由并行计算模型、全局配置管理模型,支撑五类构件环境的有机关联与组合。
1)控制/转发交互协议构件环境
控制/转发交互协议构件环境主要研究转发与控制交互协议,需要解决如下关键问题:
(1)如何建立转发对象模型,表示转发对象的功能、资源占有、可控行为规则、接口定义;
(2)如何表示转发元素与控制元素之间的交互控制过程及其关联关系。
研究思路是利用开放控制协议来表示转发元素与控制元素间的交互过程,然后通过增加转发对象的资源占有、可控行为的抽象表示,解决第一个问题,通过转发与控制关联模型解决第二个问题。
2)全局统一的数据平面资源虚拟构件库
全局统一的数据平面资源虚拟构件库需要解决的主要问题是:
(1)如何设计虚拟数据平面构件支撑容器;
(2)如何定义该容器的外在属性与接口。
研究思路是通过分析数据平面虚拟化构件的生命周期特性,建立虚拟数据平面构件支撑容器,然后抽象容器的外在属性与接口。
3)基础协议栈构件容器
基础协议栈构件容器需要解决的关键问题是如何根据各种协议栈的特性,抽象协议栈构件的共性,建立协议栈构件容器,支撑协议栈构件的可重构环境。研究思路是抽象协议栈构件运行的公共支撑要素,建立公共支撑环境。公共支撑要素包括:支撑服务、协议包装、命名包装、扩展服务等。支撑服务负责各协议栈构件的生命周期管理、动态重构同步、构件安全等。
4)基础控制服务构件容器
基础控制服务构件容器需要解决的关键问题是:
(1)如何建立控制服务构件容器;
(2)如何建立公共服务构件支撑环境;
(3)如何为典型路由协议构件提供原型支持。
研究思路是首先建立控制服务构件容器模型,通过提取构件运行的公共支撑服务,建立公共服务构件支撑环境和接口,设计典型路由协议(信令)构件。控制服务构件容器的基本要素:控制构件生命周期管理、约束动态重构、构件分布式控制、资源动态分配。公共支撑服务包括:基本服务、协议栈连接服务、数据平面构件连接服务、控制构件定位服务、控制构件访问通信服务、安全服务等。
5)应用服务构件容器
应用服务构件容器需要解决的关键问题是:
(1)如何建立应用服务构件容器模型;
(2)如何设计应用服务构件的支撑实现技术。
应用服务构件容器包括如下基本要素:资源的虚拟化和资源隔绝、服务构件管理调度器、安全访问控制管理、生命周期管理、审计管理。应用服务构件容器通过分析构件的档案文件,支持应用服务构件的部署与可重构。
3.硬件平台可重构的支撑技术
可重构实现方法是构建开放式可重构路由交换通用平台的关键,构件可重构的实现支撑技术重点要解决构件可重构方法、构件管理和正确性验证等关键问题。
研究思路是隔离与构件重构无关的技术问题,针对可重构实现要求,设计并实现可重构通信协议,采用可重构代理方法管理并实现所有构件的可重构配置。可重构代理由一组配置寄存器、重构管理器、配置控制EPLD和存储器(Flash)等组成。重构管理器能够解析可重构通信协议的各种配置/管理命令,配置控制EPLD完成FPGA的配置,存储器存储各种不同的配置文件。硬件可重构代理逻辑框。
重构管理器与配置管理用户通过可重构通信协议进行通信,完成构件配置文件的管理并实现硬件可重构。
4.标准化构件划分及植入支持技术
处理的逻辑抽象是构件化的基础。针对网络处理的具体要求,将处理过程虚拟化并抽象出面向业务或功能的各种可重构构件,是标准化构件划分及植入支持技术的研究重点。在研究中,采用基于标准化接口的模块化设计方法,解决组件中各构件间的资源分配、互联接口和构件植入方式等关键问题。
1)Replace-in方法
Replace-in方法直接整体替换平台上的组件/构件,适合各种关键组件/构件的植入。该方法需要课题组提供组件/构件的物理结构规范和电气规范,根据该规范设计的组件/构件在本平台可重构植入。
2)Add-in方法
Add-in方法直接插入符合接口标准的构件,通过增加构件提高平台的处理能力。平台数据转发组件提供基于标准LA(Look Aside)接口的AMC(Advanced Mezzanine Card)卡槽位,以插入AMC构件,提高网络层增值业务处理能力。
3)Build-in方法
Build-in方法适合平台组件中各种构件的动态植入。构件的形态为由标准的硬件描述语言(VHDL/Verilog)描述的硬件逻辑,通过增量编译等处理以后可导入可重构构件。
5.构件运行环境
构件运行环境为构件提供标准的接口和运行所需的资源,主要包括两个主要部分,即构件代理(Agent)和构件代理客户端(Agent Client)。
构件运行时的形态可以是一个单线程的进程,如BGP构件、RIP构件等。Agent是构件交互的管理模块,实现构件之间的交互和构件的组装管理。Agent Client是构件的通信功能块,实现构件与其他模块的底层通信细节。
Ci是构件之间的标准接口。构件之间的消息传递是异步的、单向的,两个构件之间的连接是有向的。构件之间的连接可以通过以太网或操作系统内部的消息机制实现,只要构件遵循接口协议,就可以实现构件灵活组装和替换,实现构件的分布式和异构系统的部署。构件之间的连接依赖于消息,是基于消息流的单向连接,只要服务请求者构件的输出端口的消息能被服务提供者构件的输入端口接收,两者就能够连接。
Agent是系统软件构件组装框架中的核心模块,它为构件间交互搭建桥梁。Agent主要完成如下功能。
(1)管理构件连接关系:解析构件连接关系的配置文件,存储各个构件之间的相互连接关系的拓扑结构表,管理构件连接关系的动态变化。
(2)接收系统命令,管理构件运行:每个构件运行初始化时都应该向Agent注册,只有注册成功才会被认为真正在运行,才能接收和发送消息。构件主动停止运行时也需要向Agent注销。Agent可以接收外部的命令,根据外部命令对构件进行管理,包括重新装载新的构件连接关系配置文件、从构件服务器下载构件的可执行程序并启动运行、终止构件的运行等操作。
(3)监视构件运行状态:向外部管理人员或管理系统提供系统内各构件的运行情况和构件的拓扑结构。
Agent Client是构件间交互及构件与Agent通信的封装模块。它的主要功能如下:
(1)构件初始化:读取构件的定义文件,获得构件详细信息并初始化构件。向Agent注册构件的启动。
(2)发送和接收消息:构件通过Agent Client来发送和接收具体的消息,Agent Client为构件和Agent屏蔽了底层通信的细节。
6.可重构路由交换开发环境
可重构路由器体系结构中的一个重要部分就是开发过程中的代码重用方面的创新。在基于Windows的桌面应用开发中,早在十年前VC诞生开始就有了较强的可视化编程体验,代码重用程度很高,但是在传统路由器软件开发中,仍然是比较原始的低重用程度。可重构路由开发环境基于现有的操作系统及硬件环境实现,目标是开发“面向路由器软件开发人员的可视化开发环境”,在此开发环境中,用户可以通过开发环境编辑程序代码,开发、管理元构件和构件,组装组件,并把工程编译为支持不同软/硬件平台的可执行代码。以可重构开发环境为基础,对构件单元库和可重构路由组件进行设计,最终在高重用的可视化开发环境中实现可重构路由平台。
可重构开发环境软件结构。
可重构路由交换开发环境主要有如下功能模块。
(1)元构件库。构件是由能实现基本功能、接口清晰、高可重用的元构件加功能代码组成的,如链表、队列、栈、消息、定时器等。元构件库应能够有效地组织和管理元构件,提供元构件的注册、入库、索引、查找、加入、删除等功能。
(2)构件开发模块。构件开发模块根据构件描述语言定义构件的接口和输出规则,协助开发者快速生成构件的外部接口代码。根据构件内部描述,协助开发生成内部元构件调用关系代码,有效避免描述语言和程序的不一致。
(3)构件库。
面向构件的异构系统支持库:构件是功能独立、统一配置的单元,实现过程封装,使用构件时无须洞悉构件内部的实现细节。构件开发平台强调构件与操作系统或具体硬件的分离,因此构件开发要屏蔽底层系统的差异。
面向构件的系统资源管理:针对系统原始资源面向路由交换功能进行重整,并面向构件所涉资源进行管理。
构件仿真测试及组件装载仿真测试:基于构件装载的组件形成框架,集成环璄提供与可重构路由交换平台对应的仿真装载框架。从而实现在集成环境中对虚拟构件进行装载形成组件。同样,通过事件仿真驱动模块和桩模块对组件架构仿真结果进行功能一致性验证和性能评估,生成测试报告。集成开发环境也实现了人为配置测试点达到自主仿真测试的目标。
是各功能模块在可重构开发平台开发期及运行期的作用。
开发环境还支持多平台下的编译,将代码编译成不同硬件平台和操作系统下运行的程序,具体如下。
多硬件平台:PBC、X86、ARM。
多操作系统:VxWorks、Windows、Linux。
参考文献
[1]Robert Morris, Eddie Kohler, John Jannotti, M.Frans Kaashoek.The Click modularrouter.In Proc.17th ACM Symposium on Operating Systems Principles(SOSP),pages 217-231,December 1999.
[2]Robert Morris, Eddie Kohler, John Jannotti, M.Frans Kaashoek.The Click modularrouter.ACM Transactions on Computer Systems, Vol.18,No.3,August 2000,Pages 263-297.
[3]Eddie Kohler.The Click modular router.Thesis for the degree of Doctor of Philosophyat the Massachusetts Institute of Technology, February 2001.
[4]RFC 3746.Forwarding and Control Element Separation(ForCES)Framework.
[5]ForCES Forwarding Element Model.http://www.ietf.org/internet-drafts/draft-ietf-forces-model-08.txt.
[6]M.Handley, O.Hodchild, E.Kohler.Xorp:An open platform for network research.in1st Workshop on Hot Topics in Networks(HotNets-I),Princton, New Jersey, October 2002.