注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

路由器技术分析  

2013-11-28 17:33:40|  分类: 路由负载均衡 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

      Handley等人认为,现有商业路由器具有封闭性,导致新路由协议研究缺乏一个可靠测试平台,从而提出了XORP。XORP是旨在提供一个开放的、可扩 展的路由器软件平台,方便研究者部署和实现新路由协议。XORP采用多进程机制,通过转发引擎抽象层将数据包交换、路由计算和转发引擎等隔离出来,不仅增强了鲁棒性,而且保证了其开放性。

与XORP类似,Quagga也是一个功能灵活的路由器软件平台。Quagga具有路由收敛更快、兼容性更好、更加轻量化等优点,已经被工业界和教育研究机构广泛采纳,并获得大量实际应用验证。例如,Vyatta公司的商用路由器采用了Quagga作为其路由管理软件系统。

    与XORP和Qugga等不同,Click是一个针对路由器数据平面的模块化可编程平台。Click的目的是为了在数据平面上实现灵活的功能配置和模块的可重用性。不过,通过调节和配置Linux内核也可实现Click的相同功能和效果。

    值得一说的是,BIRD(6)路由平台似是效果更好.bird在linux有用户程序区间建立起一个用户态的路由工作用户守护监听进程,实时地监听或执行各种路程由协议(ospf/bgp/rip等)工作并将结果发布到内核的路由表或者其它ospf等协议的守护为设备(如相邻的路由器等).


传输控制协议/网间协议(TCP/IP)体系结构面临挑战,未来互联网研究成为热点。未来互联网体系结构、协议、算法与实现技术在部署之前需要大量的理论分析与仿真实验,更需要在试验网络系统中进行评估与验证。由于路由器的封闭性与正常业务对试验的影响,在现有的互联网上实现、验证和部署新体系结构、新协议与新算法非常困难,这严重制约了互联网体系结构的发展和创新。例如,TRIL系统从设计实现到部署花费了6年时间。


    为了解决该问题,研究者提出了网络虚拟化的思想:在一个实际的物理网络上构建多个独立且互不干扰的虚拟网络平面(Slice),不同的虚拟网络平面可以采 用不同的体系结构与协议栈,每个Slice为网络创新研究提供真实有效的并行实验平台。多个虚拟网络可以分别处理不同类型的业务流量,并根据业务的特性提 供功能扩展服务,从而满足物联网、云计算等新兴应用和技术对未来互联网的需求。


    与每个单独搭建的物理网络不同,虚拟网络构建更快捷与方便,在不影响现有互联网正常运行条件下满足网络新应用和新技术研究的评估与部署等需求,并将这些网络创新思想更快速地部署到实际网络中。


    为了满足实验评估与部署需要,作为互联网核心设备的路由器必须具备以下特性:


    (1)虚拟化与隔离性
    虚拟路由器是在一台物理路由器设备上可同时运行多个独立虚拟的逻辑路由器。设备管理者为每个独立的虚拟路由器单独分配带宽、处理器和缓存等资源,并实现相互隔离的配置管理。


    (2)灵活的可扩展可编程机制
    虚拟路由器要求开放性和灵活性,即提供各种层次的编程接口,以支持IP或非IP等多种网络体系结构和协议的改进和创新。


    (3)高效数据包处理能力
    虚拟路由器需要承载多个逻辑路由器的业务,其多个路由表(或流表)存储与数据包查询等面临着巨大的性能挑战。同时,可编程性要求大量的数据包处理流程由软件模块来实现,这也对虚拟路由器的高效数据包处理带来更多困难。


    本文讨论了当前可编程虚拟化路由器结构,分析了虚拟化、可编程以及高效数据包处理等关键技术,并介绍一种支持未来网络创新的可编程虚拟化路由器平台——PEARL。


1 可编程虚拟化路由器结构
    传统路由器是由硬件设备层、操作系统层和路由管理层等3个逻辑层次所构成,如图1所示。可编程虚拟化路由器是在操作系统层中引入虚拟化技术,从而在同一硬 件设备层上构建多个虚拟的路由管理层,从而实现多个并行的虚拟路由器。可编程虚拟化路由器不仅面临传统路由器的性能挑战,而且存在如何折衷考虑高效数据包 处理与灵活可扩展可编程等需求。此外,虚拟化技术的引入还带来了如何实现路由器虚拟化和虚拟路由器之间的相互隔离等新问题。

 


    路由器结构研究的核心问题是如何折衷考虑高效数据包处理与灵活可扩展可编程。由于互联网飞速发展带来网络链路速率不断提升,对于传统路由器,设备制造商和 研究人员主要关注其高效数据包处理能力。当前互联网的骨干链路带宽已达40 Gb/s,而且还在不断提升,这要求路由器必须具备处理高速链路数据的能力。因此,设备制造商一直致力于研制高性能核心路由器。例如Cisco公司的 CRS1高端路由器的最大吞吐量可达92 Tb/s。但是,在传统路由器结构研究的发展过程中,研究者对高性能和高速度的极致追求(例如传统路由器采用专用硬件实现数据包处理),将降低其灵活性和 可扩展性。为了克服上述问题,虚拟路由器采用数据平面与控制平面相分离的结构,在兼顾高效数据包处理的同时,增强其灵活可扩展可编程能力。


    近年来,除了研究高效数据包处理,许多研究者开始关注路由器的可扩展与可编程性等问题。例如,Morris等人[4]提出了的基于模块的软件路由器—— Click。Click是一个基于软件实现的路由器结构,其核心思想是将组成路由器的各个部分模块化,用户可通过组合配置这些功能模块,对路由器进行自定 义扩展。Click采用了数据平面与控制平面相分离的结构,在控制平面上采用XORP等通用路由管理组件,因此具有良好的灵活性和通用性。


    随着CPU处理能力的不断提高,路由器的高效数据包处理与灵活可扩展可编程性之间的冲突获得了一定缓解,但是可编程虚拟化路由器仍然面临如何实现支持虚拟 化等新问题。当前虚拟化技术主要应用于通用计算机系统中,可支持跨操作系统及异构平台的多种应用。但是,通用计算机系统的虚拟化技术主要执行计算和调度任 务,而路由器的虚拟化技术要求执行数据包查找与转发任务。特别是,在数据平面与控制平面相分离的路由器结构中,控制平面的虚拟化实现可采用当前通用计算机 系统的虚拟化技术,而数据平面的虚拟化实现则需要新的虚拟化技术。国内外在可编程路由器的虚拟化技术方面尚处于起步状态,主要研究如何有效实现数据平面的 虚拟化支持,以及多个虚拟数据平面之间如何相互隔离等。


2 相关技术研究进展

 

2.1 虚拟化技术
    可编程虚拟化路由器的控制平面虚拟化可采用通用计算机系统的虚拟化技术。当前通用计算机系统的虚拟化技术按照虚拟层次不同可分为3类:全虚拟化、半虚拟化和操作系统级虚拟化。


    (1)全虚拟化
    全虚拟化又称本地虚拟化技术,其典型代表是VMware和KVM[6]。该技术在操作系统和底层硬件之间采用一个中间层Hypervisor,使得底层硬 件可被上层操作系统共享访问。当客户操作系统执行某项特权指令时,中间层将接管该段代码,并执行对应的操作。由于在全虚拟化技术中,客户操作系统不能对底 层硬件进行任何直接控制,而必须通过中间层进行代理,导致输入输出(I/O)性能会受到一定影响。


    (2)半虚拟化
    半虚拟化技术又称准虚拟化技术,其典型代表是Xen[7]和UML[8]。该技术也采用中间层来隔离底层硬件和操作系统。不同的是,该技术通过修改操作系 统代码,让客户操作系统本身知道其运行在一个虚拟化平台上。该技术能够显著提升虚拟化技术的I/O性能。但是,由于半虚拟化技术需要对操作系统代码进行修 改,其实现非常复杂,且较难应用在非开源的商业操作系统上。


    (3)操作系统级虚拟化
    操作系统级虚拟化相对与前两种虚拟化技术最大的不同是其轻量化特点,其典型代表是OpenVZ[9]、Linux-VServer[10]、 LXC[11]。该技术利用操作系统所提供的一些机制(如Linux中命名空间),将一组进程放入到“容器”中,与主操作系统的进程隔离开来,并采用这些 机制限制该组进程的CPU和内存占用率,从而实现虚拟化技术中资源隔离与分配。该虚拟化技术只能运行在特定的操作系统上(例如Linux),且所有虚拟机 共享一个内核。因此,该技术的优点是虚拟化开销非常小(但是不能运行多个异构的操作系统),非常适合虚拟化路由器这样功能单一且性能需求较高专用设备。

 

2.2 可编程设计
    Click采用XORP可实现一个功能灵活的软件路由器。图2给出了利用Click和XORP构建的软件路由器功能模块图。在图2中,XORP主要完成路由计算、路由表维护和路由管理等功能,而Click主要完成数据平面的协议栈处理、数据包查找与转发等功能。

 


    Handley等人认为,现有商业路由器具有封闭性,导致新路由协议研究缺乏一个可靠测试平台,从而提出了XORP。XORP是旨在提供一个开放的、可扩 展的路由器软件平台,方便研究者部署和实现新路由协议。XORP采用多进程机制,通过转发引擎抽象层将数据包交换、路由计算和转发引擎等隔离出来,不仅增 强了鲁棒性,而且保证了其开放性。


    与XORP类似,Quagga也是一个功能灵活的路由器软件平台。Quagga具有路由收敛更快、兼容性更好、更加轻量化等优点,已经被工业界和教育研究 机构广泛采纳,并获得大量实际应用验证。例如,Vyatta公司的商用路由器采用了Quagga作为其路由管理软件系统。


    与XORP和Qugga等不同,Click是一个针对路由器数据平面的模块化可编程平台。Click的目的是为了在数据平面上实现灵活的功能配置和模块的可重用性。不过,通过调节和配置Linux内核也可实现Click的相同功能和效果。

 

2.3 数据包转发加速方法
    随着通用计算机和普通网卡性能的不断提升,可编程性软件路由器在数据包转发效率上也获得了提升。近年来,研究者对通用平台下的数据包转发性能进行了不断优 化工作。例如,内核版本的Click路由器采用轮询方式读取数据包[12-13],在普通网卡上获得很高的小包转发性能。该方法的优点是采用通用网卡实现 数据包转发,可扩展性强、灵活方便。Dobrescu等通过充分挖掘单个物理网络设备的吞吐量潜力,利用集群技术提出了高性能软件路由器 RouteBricks,从而有效提升软件路由器的整体性能。Huang等人[14]提出了路由表压缩算法,从而以更低的存储空间开销实现基于软件的高性 能路由查找,适合可编程软件路由器的性能需求。Han等人[15]利用通用GPU提出了高速软件路由器——PacketShader,可实现高速路由查 找,实现了高效数据包查找与转发。


3 可编程虚拟化路由器实例
    (1)vRouter
    Egi等人[16]提出了典型的虚拟路由器架构——vRouter。vRouter是一种基于通用计算机平台的纯软件虚拟路由器。vRouter利用普通 网卡的硬件多队列特性,提供不同数据平面的数据隔离;采用Xen虚拟技术,提供不同的控制平面隔离性;利用内核态Click的轮询技术提高数据包转发吞吐 量。Keller等人[17]采用Linux-VServer虚拟技术和Click搭建了一个改进的虚拟路由器平台,克服了vRouter的内核态 Click只能使用一个配置文件等问题。该虚拟路由器平台可使用多个Click配置,确保不同的虚拟路由器的自定义数据平面。vRouter及其改进研究 在虚拟化和可编程性上表现优良,但是由于采用纯软件的实现方式,其性能及可扩展性较差。


    (2)CAFE和SwitchBlade
    与纯软件虚拟路由器不同,Anwer等人采用NetFPGA硬件[18]实现了多个虚拟路由器的数据平面,每个数据平面采用相同结构,实现数据包查找与转 发等功能。Lu等人[19]提出了一种可配置的数据转发引擎CAFE。CAFE采用不同API配置底层硬件,实现不同的数据平面,从而避免了底层硬件的重 新设计。Anwer等人[20]提出了一种虚拟路由器的模块化的流水架构SwitchBlade,支持硬件可编程行,从而在确保底层硬件的高速转发性能前 提下,支持新路由协议的快速原型实现与部署。基于专用硬件的虚拟路由器要求在保证其高性能的同时,支持底层数据平面的可扩展性。上述这些研究只关注硬件数 据平面的可编程性,未解决好虚拟路由器结构在性能和可编程行之间折衷问题。


    (3)OpenFlow
    斯坦福大学提出了一种新型数据包交换设备——OpenFlow[21],其采用数据平面与控制平面完全分离的结构,采用十元组规则(即MAC地址对、IP 对、端口对等)作为数据平面的数据包转发规则,从而实现不同于传统IP协议的数据包转发策略。OpenFlow较好地体现了可编程性,但是 OpenFlow实质上是一个跨层次交换设备,无法作为支持路由交换的虚拟化可编程路由器。


4 可编程虚拟化路由器平台
    为了折衷兼顾性能和灵活可编程性,本文提出了一个支持未来网络创新的可编程虚拟化路由器平台——PEARL。PEARL采用通用计算机和专用数据包处理卡 相结合的方式来构建可编程虚拟化路由器。专用数据包处理卡内嵌TCAM和SRAM存储器,可实现线速路由查找和转发等功能,而通用计算机采用高性能多核处 理器作为路由管理,利用操作系统级虚拟机LXC实现对控制平面虚拟化的支持。因此,PEARL不仅实现虚拟化、灵活可编程,而且兼具良好的数据包转发性 能。


    (1)虚拟化及隔离性
    在软件层面,PERAL采用的操作系统级虚拟机LXC通过Linux内核所提供的一些特性,给每个虚拟路由器提供了独立的“容器”,在实现共享CPU和内 存资源的基础上,确保资源分配的可配置性和虚拟机间的相互隔离。在硬件层面,专用硬件数据包处理卡执行上层软件对于各个虚拟路由器数据平面的配置,实现数 据通路的资源分配与隔离。软硬件之间则通过多个独立的I/O通道来实现不同虚拟路由器间的数据互不干扰。该软硬件相结合的实现方式可实现路由器虚拟化所要 求的高度隔离性。


    (2)配置和可编程的灵活性
    PEARL的灵活性体现在两个方面:配置灵活性和可编程灵活性。在配置方面,PEARL提供了两种虚拟路由器实例,即高优先级和低优先级虚拟路由器实例。 每个高优先级实例独自享有一个高性能I/O通道,并且在底层数据包处理卡上拥有独立三态内容寻址存储器(TCAM)空间,从而加快查表速度。高优先级实例 适合需要处理大流量和复杂操作等网络应用。低优先级路由器共享一个I/O通道,并且没有专门TCAM硬件用于查找加速,适用于小流量的网路应用,例如新路 由协议实验平台。PEARL通过提供上述配置的灵活性,从而满足实际应用的不同需求。在可编程方面,PEARL支持用户采用插件方式,直接嵌入其代码在数 据包处理的守护进程中,或采用著名的Socket API来处理数据包。由于未采用系统调用,前种方式的性能比后种方式较高;后种方式支持某些Demo程序(例如OpenFlow)不做任何修改就可以运行 在PEARL上,具备更好的通用性。


    (3)高效数据包查找与转发
    在PEARL中,专用数据包处理卡采用高速PCIE总线接口,因而具有极高的数据吞吐能力,而其内嵌的TCAM和SRAM芯片实现了高速复杂查找等功能。 在PERAL中,路由查找和虚拟机区分查找是计算型操作,可能成为系统“瓶颈”,因而在专用数据包处理卡上实现,从而极大提升了PERAL的处理能力。此 外,由于操作系统级虚拟机LXC具有轻量化特点,极大降低了虚拟化所带来的PERAL系统开销。实验结果证明,对于64 B的数据包,PEARL可实现4 Gb/s的线速转发速率。


5 结束语
    可编程虚拟化路由器是未来互联网研究的热点。虚拟路由器面临性能、虚拟化和可编程等技术挑战。在虚拟路由器中,多个虚拟路由器实例需要运行在一个物理路由 器上,对数据包转发性能提出了更高的性能需求。例如,多个虚拟路由器实例维护多个独立的路由表,导致虚拟路由器的存储空间开销高。同时,多个虚拟路由器实 例如何相互隔离、互不干扰地独立运行也是热点问题。此外,虚拟路由器要求提供用户更多自定义空间,面临如何确保灵活性的问题。本文介绍的PEARL采用软硬件结合方式,可实现高性能、虚拟化和可编程的软件路由器。

  评论这张
 
阅读(142)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017