基金项目:教育部高等学校博士学科点专项科研基金(200800030034)
互联网经过30多年的发展,已经成为与人们工作、生活息息相关、不可缺少的基础设施之一,互联网自身也获得空前的发展与繁荣。然而,互联网传输控制协议/网间协议(TCP/IP)式的体系结构从诞生之日起就存在天生的缺陷,如:尽力而为的转发策略不能提供用户需求的服务质量、网络管理难以部署、网络安全漏洞日益暴露、IP地址资源枯竭、接入设备的泛在移动性与异质性、大规模网络情况下路由的可扩展性等等。
对互联网TCP/IP体系结构的变革一直在进行,新的协议与算法不断提出。互联网端到端属性使得运行于主机端的应用层协议易于修改和部署,从而促进互联网通过新应用的竞争不断发展。但是,互联网端到端属性同时限制了互联网核心部分的革新能力。涉及网络核心部分和网络设备内核改变的新协议(如IPv6、集成业务、IP多播、差异化服务、安全路由协议等)需要部署者全局部署和网络设备统一修改,而这种修改对网络运营者和网络设备制造者缺乏激励机制,难以在现实网络中大规模部署;同时由于缺乏真实网络环境的充分测试,这些涉及网络核心层的新协议难以得到充分信任与支持,进一步阻碍了设备实现的成熟度和运营者的部署决策。这些都造成新协议没有得到大规模应用,互联网核心技术的演进陷于停滞。
针对现有TCP/IP体系结构的诸多缺陷,网络研究者们提出了一些全新的体系结构,如RBA[1]、RNA[2]、SILO[3]等。这些新体系结构解决了一些现有体系结构的问题。但是仅有一种固定的体系结构难以满足未来互联网的需求,这是因为:
(1)需要多种体系结构共存以解决网络多方面的问题。
(2)网络体系结构需要不断演进,包括:更新、补充及老化。
(3)实验流量需要在真实网络上运行,需要与用户流量共存。
基于以上分析,本文提出了一种支持多种体系结构并存的可演进的体系结构(EIA)。EIA是一个能够包容多个网络体系结构的结构,且支持网络体系结构数目的不断扩充。EIA如同一个“插座”,上面插着不同的体系结构,现有的TCP/IP协议栈也作为一个体系结构插在上面,EIA是这些体系结构的“基”。EIA上层的多种体系结构可以形成竞争关系去解决同一问题,类似于实时网络通信中Skype、QQ、MSN、Gtalk的关系,也可以形成互补的关系去解决不同的问题。不同的用户可以任意选择不同的体系结构,同时用户可以是一种或多种网络体系结构的使用者。
1 EIA网络体系结构
1.1 EIA的演进策略
当前互联网的演进方式主要分为两种:革命型和革新型。革命型的代表有网络革新的全球环境(GENI)、未来互联网设计项目(FIND)、未来互联网研究和实验(FIRE)等;革新式则是在现有的互联网上进行修补式的改进。
互联网采取革命式的演进需要重新构建试验网络,演进代价高,并且研究者对未来的预测有误差,只有不断改革才是可能的。因此EIA采用的是改革式的演进策略,在现有网络的基础上支持研究者实现和部署新协议的目的,进而推进互联网的长期演进。
EIA改革式的演进和目前改革式的演进方法又是不同的。目前的演进方法是在TCP/IP体系结构的基础上修补、发现问题、再修改,但是某次修补可能不容易“兼容”未来的继续修改。并且现有的演进可能引入短期收益而长期有破坏性如网络地址转换(NAT),或者局部收益对整体有破坏性。而EIA不是在现有的TCP/IP结构上做改进,其上层支持多种体系结构的并存,TCP/IP只是作为其中的一种体系结构。多种不同的体系结构之间通过竞争的方式使更适合需求的方案得以生存和发展。
1.2 EIA的目标
EIA的主要目标:(1)研究者可以在现实的网络设备上编程并试验其新的协议,实验流与正常流同时运行在实际网络上且之间互不影响;(2)EIA上层承载多种体系结构,作为容纳多种体系结构的特殊结构,EIA可以使能上层体系结构之间的竞争。EIA承载的不同体系结构之间可以形成竞争关系去解决同一问题,也可以形成互补关系去解决不同的问题,各种不同的体系结构在硬件资源方面共享。
现在已经提出很多不同的体系结构,每种结构均有不同的设计,哪种体系结构应该被选择,EIA可以通过竞争的方式使更适合需求的方案得以生存和改进。同时EIA作为一个可以包容网络结构的结构,做到能够承载上层的结构需要考虑很多问题:每种体系结构可能只覆盖整个Internet的一部分;终端用户也许只用到一种或几种上层的体系结构而不是所有,类似于部分互联网网民使用QQ、Gtalk,而不使用MSN进行实时通信。
1.3 EIA的组成
EIA包括两部分:主机对多体系结构的支持;网络设备(交换机或路由器)对多体系结构的支持。
1.4 EIA主机
1.4.1 基础模式
EIA主机多协议栈如图1所示,EIA模块位于链路层,是为支持上层多种体系结构而在现有网络上增加的一些函数接口。现有的主机要支持多体系结构并存,需要增加EIA模块。部分体系结构也可以不增加EIA函数,直接利用现有的函数接口来满足需求。
EIA 模块根据不同的体系结构代码,把数据包传递给上层不同的体系结构。已有的TCP/IP通信协议模型作为一个特殊的体系结构和其他新体系结构并存。
增加EIA模块后,链路层的工作方式为:当接收到一个数据包后,解帧并根据协议号上传到上层相应的协议栈;当接收到上层传递来的数据包后,根据上层协议的任务,把数据包转发到一个端口或调用相应的硬件资源做出处理动作。
和现有开放系统互连(OSI)模型的套接字相比,EIA模型把现有套接字接口往下移动从而建立在物理层上,不同的体系结构在链路层之上呈现为纵向、并行的方式。
1.4.2 高级模式
基础模型中,链路层主要提供解帧、封帧的操作。为了开发者易于开发新的体系结构,EIA高级模式把各新体系结构中的通用功能模块抽象出来,以可选项的形式提供给各个新体系结构的开发人员,如网络监管、QoS等功能就可以在此处开放给新体系结构的开发者。添加公用模块后的EIA示意图如图2所示。
1.4.3 体系结构代码号
有两种方式来解决体系结构代码号存储位置的问题:
(1)各种新体系结构定义的包格式不同,所以可以把协议代码号放在数据链路层的帧头中。(2)放在帧头后面的某个字段中,各种体系结构可以约定一个共同的数据字段和位置来存放体系结构的代码号。类似于IPv4和IPv6的版本号,IPv4/IPv6双栈节点链路层接收到数据包,拆开并检查包头,如果IPv4/IPv6头中的第一个字段,即IP包的版本号是4,该包就由IPv4栈来处理,如果版本号是6,则由IPv6栈处理。EIA支持多栈节点的工作方式与IPv4/IPv6双栈节点工作方式相同。
1.5 EIA网络设备
1.5.1 网络设备支持EIA多体系结构原理
EIA支持多个体系结构并存,为此需要各种不同的体系结构在硬件资源方面进行资源共享。
如图3所示,对比计算机虚拟化EIA网络设备的指令集作为原语直接操作硬件资源,类似于x86指令。包动作接口层也就是网络虚拟层,把下层的指令封装成数据包级的接口提供给上层的体系结构,如数据包的转发、丢弃、改写等功能。
包动作接口层有两个任务:
(1)从一个端口接收数据包,根据协议号上传给相应的协议栈。
(2)接受上层协议的任务,调用指令集对数据包进行相应操作,例如把数据包转发到相应的网络设备端口。对数据包的具体操作处理是各个协议来定义并处理的;虚拟层只做数据包转发功能和调用执行下层原语的功能。
在包动作接口层之上,通常情况下各个协议之间独立运行,互不影响,所以每个协议看到的网络视图或者网络拓扑也是不同的。此外,可以进一步定义体系结构之间的通信。
1.5.2 商用网络设备如何支持EIA
如图4所示。在保证开发者的操作不影响正常的数据流的前提下,例如不允许开发者进行网络设备的重启、关机等操作,网络设备制造商不暴露其设备内部的细节,开放出一部分接口给开发者,也就是图4中需要厂家增加的模块:包动作接口。网络运营商和开发者的关系就类似于Linux操作系统的超级管理员和普通用户。一旦提供了此类接口,用户就可以直接在网络设备上编写代码并进行实验。当网络设备的原始原语不够该新协议使用,例如需要运行一些特定的加密算法的硬件实现时,开发者也可以通过添加固化了软件的硬件模块来与包动作接口互通来实现新的功能。可见EIA可编程平台一旦建立并开放后,开发者就不再需要网络设备制造商和网络基础设施运营商的支持而进行独立创新性的实验了,甚至直接实际运行某新体系结构或新协议来提供服务。
2 EIA与现有体系结构的兼容问题
EIA采取了革新式的策略,通过把当前体系结构TCP/IP协议栈作为多个竞争体系结构中的特例来达到和现有网络的兼容。即目前的IP和分层仍然运行,只作为竞争者之一。EIA并没有在现有的体系结构上添加新的协议层,如Shim6[4]等,只是在原来的基础上添加了一些接口,所以不涉及对原有TCP/IP体系结构的改动。这种不改变现有网络(和加层的方式比较)的演进方式可以更快速地在设备上实现,更易过渡。
IP/IPX时代主机已经做到了支持多个协议栈,当前IPv4、IPv6双栈的处理也做到了通过版本号上传给数据包指定的上层协议栈,且原始套接字可以接收到整个数据帧,以上例子均说明主机支持EIA是可行的。而对于网络设备,设备制造商只要在现有网络的基础上新增加一些接口给新体系结构的研究者即可,而无需改变当前的网络。
网络设备制造商一旦支持EIA后,实验者可以在这些互联网设备上进行编程试验。现存的体系结构和协议与新添加的模块走不同的处理流程,因此试验并不会影响其他协议的运行。新体系结构和协议一旦实验成功,就可以直接转化为真正的应用,新体系结构的倡导者部署新的体系结构和协议将变得十分平滑。
3 与相关工作的比较
在网络革新式的模式中,当前最具代表性的是OpenFlow。OpenFlow[5]是为互联网创新研究者提供能处理真实流量的试验方法,采用OpenFlow控制器+OpenFlow交换机结构,由控制器的软件控制设备执行相关的操作,以其技术为基础可以用于“软件定义的网络”。但是OpenFlow目前只能在局部网络里运行,只支持IPv4,即数据流表只针对IPv4报文格式来动作,不能支持任意新协议。流表的动作有限,基于流转发、丢弃、转发到控制器和普通转发。统计功能也比较粗略,新协议可能需要更细致的统计功能。对于分组处理,目前为转发到特定的外置硬件处理,此方式对于试验网尚可,对于真实网络(例如实现软件定义的网络)有转发“瓶颈”,不具有可扩展性。控制器的可扩展问题、冗余问题以及安全通道的“瓶颈”问题(类似路由器内部通道的“瓶颈”问题)都是真实网络中必须解决的问题。而EIA支持不同协议栈作为可插拔的软件模块(如果基础原语不够用,则插拔固化了软件的硬件模块)安装在设备里,比OpenFlow的远方控制器+设备外的硬件更容易在实际网络中应用。
OpenFlow还涉及到在现有交换机上添加数据流表,对任何一个数据包均要进行查表的操作,EIA中没有这种查表的负担,仅仅是根据协议号转发到相应的协议栈。OpenFlow中涉及到控制器和NetFPGA等设备,而EIA不涉及添加附属设备。此外EIA给开发者提供的就是一个真实的可编程的网络。所以EIA更易于互联网平滑地过渡。
4 结束语
现阶段涉及到网络核心层和网络设备(交换机、路由器等)的新协议在实现和应用上十分困难,阻碍了互联网核心技术的演进。虽然研究者提出了各种互联网体系结构,但是到目前为止几乎没有一种体系结构能够大规模地部署到现有互联网上并得到广泛的应用。本文提出的EIA作为网络体系结构的承载体,一种特殊的体系结构,为新体系结构的研究者搭建了一个理想的实验平台,支持未来互联网里多种体系结构可以平滑地得到应用、共存竞争,以实现互联网在核心层面的技术繁荣和不断演进。EIA突破了一种网络体系结构一统天下的局面,为互联网的平滑演进做了很好的铺垫。
互联网研究者在EIA这个可编程的平台上试验其研究成果,可以更好地解决现在互联网存在的问题,并且加速互联网的演进,使互联网将会越来越强大,满足日益增长的需求。EIA下一阶段工作主要集中在具体化网络设备虚拟层的动作,从而确定网络设备制造商具体提供的接口。
5 参考文献
[1] BRADEN R, FABER T, HANDLEY M. From protocol stack to protocol heap: Role - based architecture[J]. Computer Communication Review, 2003, 33(1):17-22.
[2] TOUCH J D, WANG Y S, PINGALI V. A recursive network architecture[R]. ISI-TR-2006-626. Marina del Rey, CA,USA: ISI. 2006.
[3] DUTTA R, ROUSKAS G N, BALDINE I, et al. The SILO architecture for services integration, control, and optimization for the future Internet[C]//Proceedings of IEEE International Conference on Communications (ICC’07), Jun 24-28, 2007, Glasgow,UK. Piscataway, NJ,USA: IEEE, 2007: 1899-1904.
[4] NORDMARK E, BAGNULO M. Shim6: Level 3 multihoming shim protocol for IPv6[R]. IETF RFC 5533. 2009.
[5] The OpenFlow switch consortium[EB/OL]. [2009-01-31]. http://openflowswitch.org.
收稿日期:2010-01-05
[摘要] 互联网端到端属性使得运行于主机端的应用层协议易于修改和部署,从而促进互联网通过新应用的竞争不断发展;但是涉及到网络核心层和网络设备(交换机、路由器等)的新协议则在实现和应用上十分困难,阻碍了互联网核心技术的演进。文章提出一种可演进的网络体系结构(EIA)。网络可以通过EIA提供的接口在主机和网络设备上添加新的模块来得到试验和实际部署。不同的用户可以任意选择不同的体系结构,同时用户可以是一种或多种网络体系结构的使用者。人们可以多样化竞争的方式推动互联网的演进。
[关键词] 网络虚拟化;网络体系结构;互联网演进
[Abstract] The end-to-end characteristics of networks enables easy modification and development of applications running on the host. Competition among these applications promotes the development of the Internet. However, new protocols related to core networking or network equipment (routers, switches etc.) are often hard to successfully implement. This paper proposes an Evolvable Internet Architecture (EIA). It proposes that new network architectures can plug themselves as new modules into EIA network equipment using the interfaces provided by EIA for experiment and actual development. Different users can independently select network architectures, and at the same time there may be one or more users of network architectures. This diversity and competitiveness promotes the evolution of the network.
[Keywords] network virtualization; network architecture; Internet evolution