一种虚拟路由器实现方法与流程

文档序号:11253871阅读:1150来源:国知局
一种虚拟路由器实现方法与流程

本发明属于网络通信技术领域,尤其涉及一种虚拟路由器实现方法。



背景技术:

计算机网络通常由大量的路由器、交换机和功能各异的网络中间件组成。为了有效管理网络,管理员根据当前网络所承载的业务(如:视频、语言、web等)来制定各种策略,由于缺少可用工具,管理员需要将这些高级策略手动地转化为可被网络设备识别的低级配置命令,这项工作富有挑战性且极易出错。

对网络从业和研究人员而言,另一个几乎不能被克服的困难就是互联网的“僵化”问题。互联网的庞大部署规模,使得其成为社会中的关键基础设施,部署规模的不断扩张,随之而来的是互联网自身的演进和变革越来越困难,几十年前为解决基础互联问题而设计的互联网面对当前日新月异的各种显得越来越力不从心。

上述背景下,以ietfforces(forwardingandcontrolseperation,forces)为代表的可编程网络作为一种促进网络演化的手段被提出。而软件定义网络(softwaredefinednetwork,sdn)是可编程网络的新形式,提供了一种新型的网络架构。sdn通过分离网络中的转发平面和控制平面,旨在简化网络管理、支持网络创新和演进,有望从根本上解决互联网的“僵化”问题。

网络虚拟化是转发与控制分离技术实现网络可编程的基础,它们一直来都是研究者重点关注的对象。

作为转发与控制分离思想的倡导者,ietfforces当初是为打破单一网络设备的黑盒现象而提出的一种新型网络设备体系架构。根据ietfforces的定义,网络件(networkelement,ne)(通常意义上的网络节点)由一个控制件(controlelement,ce)和多个转发件(forwardingelement,fe)组合而成,组合关系可以通过软件定义的方式进行设定。forcesne不强调ce和fe的地理位置和物理形态,换而言之ne只是一个逻辑上的概念,如果ne所实现的功能是路由器,那么该路由器就是一个虚拟路由器(virtualrouter,vr),这和网络虚拟化研究中的节点虚拟化在思想上不谋而合。

将虚拟机技术应用到ce和fe的虚拟化,在ce和fe物理机之上生成多个ce虚拟机和fe虚拟机,ce虚拟机和fe虚拟机分别是虚拟的控制件(virtualce,vce)和虚拟的转发件(virtualfe,vfe),这些vce和vfe彼此组合构成了多个vne(virtualne,vne)。如前所述,如果这些vne所实现的功能是路由器,那么一个ne中就会出现多个vr。由于构成vne的vce和vfe彼此是隔离的,因此同一个ne内的多个vne之间也彼此隔离。

当在一个ne之上需要同时运行多个虚拟网时,ne可以为每个虚拟网分配一个专属的vr(即vne),这些彼此隔离的vr保证了虚拟网之间的隔离性。

然而,传统的forces路由器中外部端口分布在fe之上,在进行虚拟化的过程中原有的端口分布模式会导致“fe瓶颈”问题的出现。所谓“fe瓶颈”问题指的是:当vr为满足虚拟网的包处理能力需求而使用多个vfe时,为实现其中两个vfe的外部端口(即vr的两个端口)之间的包转发,数据包会以“串行”的方式穿过这两个vfe,最终的包转发速率取决于转发速率较小的vfe,从而使vr根本无法提供预期的包处理能力。



技术实现要素:

本发明的目的是克服现有技术的不足,提出一种虚拟路由器实现方法。

本发明的目的通过以下技术方案实现:一种虚拟路由器实现方法,包含如下步骤:

步骤(1)每一个虚拟路由器(vr)由一个虚拟控制器(vce)和若干个虚拟转发器(vfe)组成,vce运行路由协议并维护路由表,vfe针对数据包进行路由查表、确定输出端口;

所述vce和vfe都是物理机器上的一个虚拟机,同属于一个vr的vce和vfe可以位于不同物理机器之上。vfe对数据包的处理能力由其所在虚拟机的cpu和内存数量决定;

步骤(2)所有进出vr的数据包都通过交换组件(se)进行调度;

所述se是一个多端口的交换机,se上的端口分为外部端口(extraport)和内部端口(intraport)两种,intraport用于vce和vfe之间以及vfe和vfe之间的通信,extraport用于进出vr的数据包的输入和输出;se维护了一张“vr→vce→vfe”的虚拟映射关系表(vmap),vmap表的每一行表示一个vr的虚拟映射关系,由五部分组成,分别是vr-vce-vfe、vce到se的intraport、vfe到se的intraport;

步骤(3)当一个数据包(p1)进入se时,检查p1的输入端口,如果输入端口为extraport,进入步骤(4);如果输入端口为intraport,进入步骤(5);

步骤(4)se检查数据包p1的目的地址,如果p1的目的地址为vce,se查找vmap表确定vce到se的intraport(intraporti),通过intraporti直接将p1发送至vce;否则,se查找vmap表、选取负载轻的vfe(vfej),同时确定vfej到se的intraport(intraportj),通过intraportj直接将p1发送至vfej;

步骤(5)se检查数据包p1的源地址和目的地址,如果源地址为vce且目的地址为vfe(vfek),se查找vmap表确定vfek到se的intraport(intraportk),通过intraportk直接将p1发送至vfek;如果源地址为vce且目的地址为另一个vr,se将根据p1所携带的外部端口标记,选择一个extraport发送p1;如果源地址和目的地址均不是vce和vfe中任何一个,se将根据p1所携带的外部端口标记,选择一个extraport发送p1;如果源地址为vfe且目的地址为vce,se查找vmap表确定vce到se的intraport(intraporti),通过intraporti将p1发送至vce。

本发明有益效果如下:为了解决虚拟化中的“转发件瓶颈”问题,本发明提出了一种虚拟路由器实现方法。虚拟路由器内所有的外部端口全部集中至交换组件之上,这样设计的好处在于:虚拟路由器为满足虚拟网的包处理能力需求而使用多个转发件时,虚拟路由器中任意两个端口之间的包转发,将不会再出现数据包“串行”穿过两个转发件的情况;交换组件会将数据包分发到这两个转发件进行并行处理,这种情形下虚拟路由器的转发速率等于这两个转发件的转发速率之和。

附图说明

图1基于转发与控制分离的网络虚拟化方法;

图2基于转发与控制分离的网络虚拟化平台设计;

图3交换组件的内部结构及数据分发示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

本发明提出的一种虚拟路由器实现方法,包含如下步骤:

步骤(1)每一个虚拟路由器(vr)由一个虚拟控制器(vce)和若干个虚拟转发器(vfe)组成,vce运行路由协议并维护路由表,vfe针对数据包进行路由查表、确定输出端口;

所述vce和vfe都是物理机器上的一个虚拟机,同属于一个vr的vce和vfe可以位于不同物理机器之上。vfe对数据包的处理能力由其所在虚拟机的cpu和内存数量决定;

步骤(2)所有进出vr的数据包都通过交换组件(se)进行调度;

所述se是一个多端口的交换机,se上的端口分为外部端口(extraport)和内部端口(intraport)两种,intraport用于vce和vfe之间以及vfe和vfe之间的通信,extraport用于进出vr的数据包的输入和输出;se维护了一张“vr→vce→vfe”的虚拟映射关系表(vmap),vmap表的每一行表示一个vr的虚拟映射关系,由五部分组成,分别是vr-vce-vfe、vce到se的intraport、vfe到se的intraport;

步骤(3)当一个数据包(p1)进入se时,检查p1的输入端口,如果输入端口为extraport,进入步骤(4);如果输入端口为intraport,进入步骤(5);

步骤(4)se检查数据包p1的目的地址,如果p1的目的地址为vce,se查找vmap表确定vce到se的intraport(intraporti),通过intraporti直接将p1发送至vce;否则,se查找vmap表、选取负载较轻的vfe(vfej),同时确定vfej到se的intraport(intraportj),通过intraportj直接将p1发送至vfej;

步骤(5)se检查数据包p1的源地址和目的地址,如果源地址为vce且目的地址为vfe(vfek),se查找vmap表确定vfek到se的intraport(intraportk),通过intraportk直接将p1发送至vfek;如果源地址为vce且目的地址为另一个vr,se将根据p1所携带的外部端口标记,选择一个extraport发送p1;如果源地址和目的地址均不是vce和vfe中任何一个,se将根据p1所携带的外部端口标记,选择一个extraport发送p1;如果源地址为vfe且目的地址为vce,se查找vmap表确定vce到se的intraport(intraporti),通过intraporti将p1发送至vce。

实施例

为了便于本领域一般技术人员理解和实现本发明,现结合附图进一步说明本发明的技术方案,给出一种本发明所述的具体实施方式。

根据ietfforces的定义,ne(通常意义上的网络节点)由一个ce和多个fe组合而成,组合关系可以通过软件定义的方式进行设定。forcesne不强调ce和fe的地理位置和物理形态,换而言之ne只是一个逻辑上的概念,如果ne所实现的功能是路由器,那么该路由器就是一个虚拟路由器(virtualrouter,vr),这和网络虚拟化研究中的节点虚拟化在思想上不谋而合。

当在一个ne之上需要同时运行多个虚拟网时,ne可以为每个虚拟网分配一个专属的vr(即vne),这些彼此隔离的vr保证了虚拟网之间的隔离性。

如图1所示,基于forces的网络虚拟化方法本质上是一种forces-in-forces架构设计。外层的forces是传统forces的扩展,一方面构建ne,对外呈现出一个转发和控制分离的物理网络节点;另一方面还需增加对vfe和vce的管理,用于控制vne的构建过程。里层的forces就是传统意义上的forces,只不过运行环境换成了虚拟机。由上可见,这种forces-in-forces架构设计在解决节点虚拟化问题的同时,解决了网络层面的虚拟化,即虚拟网的构建。

基于图1所示的网络虚拟化方法,我们设计并实现了一个网络虚拟化平台(vforter),其内部结构设计如图2。vforter是一个物理服务器的集群,其中一个服务器是控制平面设备,即ce,数据平面通常被分散在多个服务器之上,这些执行数据转发功能的服务器,即是fe。vforter针对虚拟网构建虚拟路由器vr,确保每个虚拟网对应一个vr。vr中vfe的数量取决于虚拟网所需的转发能力和vforter所能提供的可用资源。

图2中,se是vforter内通信流量的调度中心,所有流经vforter、vce-vfe之间以及vfe-vfe之间的通信流量都将在其上进行汇集,se根据虚拟网标签对它们进行分发处理,而后的处理过程由vce和vfe完成,se只负责数据包的接收与发送。例如,当se接收到一个数据包时,首先决定它所属的虚拟网,然后将其交付相应的vfe进一步处理(如路由查表和流量整形),经过vfe处理后的数据包重新返还se,此时的数据包已被vfe附加了特定的vn标签信息(如:输出端口等),se根据标签信息完成发送。

图2中vforter之上承载了3个虚拟网,因此vforter产生3个vr,每个vr由一个vce和若干个vfe组成。vce存在于ce之中,是ce的一个虚拟机,每个vce都独立地运行一个路由协议。vfe分布于fe之上,每个vr所包含的vfe可以是跨fe的,具体情况依据当前vr所需的包转发能力而定。以图中的三个虚拟网为例,虚拟网1和虚拟网2对包转发能力要求较高,因此给虚拟网1和虚拟网2中的vr分别分配了2个vfe(虚拟网1的vfe包括:vfe1-1和vfe1-2,虚拟网2的vfe包括:vfe2-1和vfe2-2,),而虚拟网3对包转发能力要求较低,因此只为其分配1个vfe(即vfe3-1)。所有经过vfe处理后的数据包将被打上标签重新汇聚到se,se再根据这些标签对数据包进行分发处理。

图3给出了交换组件se的内部结构图,se是整个vforter的调度中心,vforter内所有数据包的进出都必须经过它。其主要任务是对数据包进行分类,然后分发器根据“vr→vce→vfe”之间的映射关系表进行数据包的分发处理。每一个进入se的数据包,分类器首先判断它的来源,可能会有两种情况:1)外部端口输入和2)内部接口输入。对于前者,又细分为两种情况:1)来自外部vforter中vr所发出的路由协议包,这时分发器需将其以重定向的方式通过内部端口发送至vce(图中①标识);2)来自虚拟网的普通转发包,分发器将选择相应的vfe并发送(图中②标识)。

当数据包的来源为内部接口输入的情况下,又分为四种情况:1)来自vce的forces控制消息,用于实现vce对vfe的控制管理,分发器将其发送至vfe(图中③标识);2)来自vce的路由协议包,其目的地是外部vforter中的vr,因此分发器需通过外部接口进行发送(图中④标识);3)vfe处理后的转发数据包,已对其附加了标签,这时分发器还需根据标签信息,选择相应的外部接口发送(图中②标识);4)vfe主动产生的forces事件消息,分发器只需通过内部接口将其发送至相应的vce即可(图中⑤标识)。同时,se维护了一张“vr→vce→vfe”的映射表,这张表非常重要,因为它明确了vforter内部虚拟网、vr、fe、vfe和vce之间的对应关系,这张表在划分虚拟网的时候同步创建。

如前所述,每个经过vfe处理后的数据包都将发回se。处理过程中,vfe执行路由查表、获取出端口并将出端口信息以标签的形式附加在数据包之上。这些标签仅存在vforter内部,采用轻量级封装,se中的分发器根据标签并通过外部接口发送数据。显然,在数据包高速转发的情形下,se可能会成为vforter的瓶颈,因此我们采取了2种措施来加速数据包的交换处理:1)让分类器和分发器工作在内核态,减少数据包处理过程中的不必要的系统调用开销;2)se避免对数据包进行深度包检查,取而代之,只是根据包头中的某些字段(如udp报文中的端口号)进行简单的分类,迅速交由vfe处理(如路由查表等)。

为防止se成为整个vforter的瓶颈,分类器和分发器还可以通过一些特殊硬件实现,如netfpga、网络处理器或者openflow交换机。se的分类器和分发器对所有虚拟网都一视同仁,因此没有必要对se进行虚拟化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1