一种网络中实现报文路由的方法、设备和系统与流程

文档序号:12557922阅读:177来源:国知局
一种网络中实现报文路由的方法、设备和系统与流程
本发明涉及网络技术领域,尤其涉及一种网络中实现报文路由的方法、设备和系统。

背景技术:
随着云计算(CloudComputing)技术的发展,将云计算技术应用到数据中心(DC,DataCenter)已成为不可阻挡的趋势。由于云计算数据中心内部资源服务器(服务器、存储器以及数据库等)之间的访问需求和交互流量相比于传统数据中心都将大大增加,流量模型从纵向流量(即南北向流量,具体指的是用户访问服务器的流量)为主转变为横向流量(东西向流量,具体指的是服务器之间的流量)为主。当前在应对数据中心的东西向流量暴涨的问题上,业界有不少厂家提出解决方案,其中这类解决方案如图1所示,其中,按照标准的网络通信协议,当子网1的物理机(PhysicalMachine,PM)或者虚拟机(VirtualMachine,VM)要和子网2的物理机或者虚拟机通信时,均需要经过物理/虚拟网关(Physical/VirtualGateway)。采用上述解决方案,使得所有跨子网通信的数据报文都需要经过物理/虚拟网关,从而物理/虚拟网关成为数据中心的东西向流量的单点瓶颈,整个数据中心的东西向流量总带宽受限于这个物理/虚拟网关,且由于物理/虚拟网关的通信带宽有限,随着通信并发量的增加,通信对之间互相抢占物理网关的通信带宽,导致网络平均带宽急剧下降。

技术实现要素:
基于此,本发明实施例提供一种网络中实现报文路由的方法、设备和系统,能够有效地提升东西向流量的传输带宽。贯穿本说明书,术语“分布式路由”,指的是报文在从源服务器发往目的服务器的过程中,源服务器和目的服务器所直接相连的交换机能够根据路由规则对报文的包头进行修改,从而实现报文的二层数据链路层转发,而不需要经过三层路由协议层的处理。贯穿本说明书,术语“分布式路由规则”,指的是用来下发给发送报文的源服务器所直接连接的交换机和/或接收报文的目的服务器所直接连接的交换机的路由规则,使得该交换机能够根据该路由规则对报文的包头进行修改,从而实现报文的二层数据链路层协议的处理转发,而不需要经过三层的路由协议层的处理。贯穿本说明书,术语“子网”指的是按照某种原则(如按地域划分)将一个比较大的网络结构分解为几个相对较小的网络结构,以方便管理员对网络的管理。在拓扑视图中,把这种相对较小的网络结构称为子网。对于每一个服务器,均会存在一个子网标签,该子网标签用来标识该服务器所属的子网。贯穿本说明书,术语“服务器”一般指通常在联网环境中执行一个或多个软件程序的计算设备。然而,服务器还可以被实现为在被视作网络上的服务器的一个或多个计算设备上执行的虚拟服务器(软件程序),服务器指的是物理机或者安装在物理机上的虚拟机。贯穿本说明书,术语“中心控制平台”以及“控制器”指的是能够获取网络的拓扑信息以及获取报文的源服务器和目的服务器的信息,能够根据网络的拓扑信息判断报文传输的两节点是否符合分布式路由的要求,并能够建立分布式路由规则,以及将建立的分布式路由规则下发给和发送报文的源服务器和接受报文的目的服务器的直接相连的1个或2个交换机,使得该1个或2个交换机能够根据该分布式路由规则对报文进行分布式路由的处理。第一方面,提供了一种网络中实现报文路由的方法,该网络中包括1个控制器,至少两服务器,以及至少1个交换机,其中,该控制器和至少1个交换机相连,至少两个服务器与至少1个交换机相连,该方法包括:控制器获取两服务器的标识以及所述网络的拓扑信息,该网络的拓扑信息包括所述两服务器的网络连接信息;控制器利用两服务器的标识,根据两服务器的网络连接信息确定两服务器处于不同的子网,及两服务器处于同一路由器下时,控制器创建第一分布式路由规则,并将第一分布式路由规则发送给和第一服务器直接相连的第一交换机,第一分布式路由规则用于指示第一交换机对第一服务器向第二服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发。在第一方面的第一种可能的实现方式中,第一分布式路由规则包括:将第一服务器向第二服务器发送的报文的目的Mac地址修改为第二服务器的Mac地址。在第一方面的第二种可能的实现方式中,当第一服务器和第二服务器是跨交换机的两个服务器时,第一分布式路由规则还包括:将第一服务器向第二服务器发送的报文的二层网络标签字段设置为所述第二服务器所在的二层网络标签。在第一方面的第三种可能的实现方式中,为了对报文传输的目的服务器透明,使得对于目的服务器来看,从第一服务器向第二服务器发送的报文从第二服务器所属的网关转发,第一分布式路由规则还包括:将第一服务器向第二服务器发送的报文的源Mac地址修改为第二服务器所属网关的Mac地址。在第一方面的第四种可能的实现方式中,为了对报文传输的目的服务器透明,使得对于目的服务器来看,从第一服务器向第二服务器发送的报文从第二服务器所属的网关转发,在控制器确定两服务器处于不同的子网,及两服务器处于同一路由器下之后,控制器还可以创建第二分布式路由规则,确定和第二服务器直接相连的交换机为区别于第一交换机的第二交换机时,将第二分布式路由规则发送给第二交换机,该第二分布式路由规则用于指示第二交换机对第一服务器向第二服务器发送的报文进行转发。在第一方面的第五种可能的实现方式中,第二分布式路由规则的内容可以包括:将第一服务器向第二服务器发送的报文的源Mac地址修改为第二服务器所属网关的Mac地址。在第一方面的第六种可能的实现方式中,当控制器确定两服务器处于不同的子网,以及两服务器处于同一路由器下之后,控制器为了使得第二服务器向第一服务器发送的报文,也能够采用分布式路由的方式,当控制器确定和第二服务器直接相连的交换机为第一交换机时,该控制器创建第三分布式路由规则,并将第三分布式路由规则发送给第一交换机,第三分布式路由规则用于指示第一交换机对第二服务器向第一服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发;当控制器确定和第二服务器直接相连的交换机为区别于第一交换机的第二交换机时,控制器创建第四分布式路由规则,并将第四分布式路由规则发送给第二交换机,第四分布式路由规则用于指示第二交换机对第二服务器向第一服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发。在第一方面的第七种可能的实现方式中,第三分布式路由规则或第四分布式路由规则包括:将第二服务器向第一服务器发送的报文的目的Mac地址修改为第一服务器的Mac地址;采用这种方式,能够使得修改了目的Mac地址的报文在经过和第二服务器相连的交换机时,该交换机根据报文的目的Mac地址直接送往和该目的Mac地址匹配的交换机,并通过该交换机直接下发给目的Mac对应的服务器,这样直接绕过网关的处理,进而提升了东西向流量的传输效率。在第一方面的第八种可能的实现方式中,为了针对跨交换机的报文的转发,即作为源服务器的第一服务器所连接的交换机和作为目的服务器的第二服务器所连接的交换机是不同的交换机时,第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的二层网络标签字段设置为第一服务器所在的二层网络标签。在第一方面的第九种可能的实现方式中,第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。在第一方面的第十种可能的实现方式中,当控制器确定和第一服务器直接相连的交换机为区别于第二交换机的第一交换机时,创建第五分布式路由规则,将第五分布式路由规则发送给第一交换机,第五分布式路由规则用于指示第一交换机对第二服务器向第一服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发。在第一方面的第十一种可能的实现方式中,第五分布式路由规则包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。在第一方面的第十二种可能的实现方式中,控制器利用两服务器的标识,根据两服务器的网络连接信息确定两服务器处于不同的子网,及两服务器处于同一路由器下,具体包括:控制器获取所述两服务器的标识,根据标识查询所述两服务器的网络连接信息中的两服务器的子网标识,并对查询到的两服务器的子网标识进行比较,当两子网标识不同时,则确定两服务器处于不同的子网;控制器根据所述两服务器的标识查询两服务器的网络连接信息中的两服务器所属路由器的标识,并对查询到的两服务器的路由器标识进行比较,当两者相同时,则确定两服务器处于同一的路由器下。第二方面,还提供一种控制器,用于建立并下发路由规则,其该控制器包括:获取单元,用于获取两服务器的标识以及网络的拓扑信息,网络的拓扑信息包括该两服务器的网络连接信息;触发单元,用于利用两服务器的标识,根据网络拓扑信息中的两服务器的网络连接信息,确定两服务器处于不同的子网中,及两服务器处于同一路由器下,使能路由规则创建单元;路由规则创建单元,用于创建第一分布式路由规则,其中,第一分布式路由规则用于指示第一交换机对第一服务器向第二服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发;发送单元,用于将第一分布式路由规则发送给和第一服务器直接相连的第一交换机。在第二方面的第一种可能的实现方式中,该第一分布式路由规则包括:将第一服务器向第二服务器发送的报文的目的Mac地址修改为第二服务器的Mac地址。在第二方面的第二种可能的实现方式中,该第一分布式路由规则还包括:将第一服务器向第二服务器发送的报文的二层网络标签字段设置为第二服务器所在的二层网络标签。在第二方面的第三种可能的实现方式中,该第一分布式路由规则还包括:将第一服务器向第二服务器发送的报文的源Mac地址修改为第二服务器所属网关的Mac地址。在第二方面的第四种可能的实现方式中,该控制器还包括:确定单元,用于确定和所述第二服务器直接相连的交换机为区别于所述第一交换机的第二交换机时,使能所述路由规则创建单元对第二分布式路由规则的创建;所述路由规则创建单元,还用于创建所述第二分布式路由规则,所述第二分布式路由规则用于指示所述第二交换机对所述第一服务器向所述第二服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发;所述发送单元,还用于将所述第二分布式路由规则发送给所述第二交换机。在第二方面的第五种可能的实现方式中,第二分布式路由规则包括:将第一服务器向第二服务器发送的报文的源Mac地址修改为第二服务器所属网关的Mac地址。在第二方面的第六种可能的实现方式中,所述确定单元,还用于确定和所述第二服务器直接相连的交换机为所述第一交换机时,使能所述路由规则创建单元对第三分布式路由规则的创建,确定和所述第二服务器直接相连的交换机为区别于所述第一交换机的第二交换机时,使能所述路由规则创建单元对第四分布式路由规则的创建;所述路由规则创建单元,还用于创建所述第三分布式路由规则,及创建所述第四分布式路由规则,所述第三分布式路由规则用于指示所述第一交换机对所述第二服务器向所述第一服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发;所述第四分布式路由规则用于指示所述第二交换机对所述第二服务器向所述第一服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发;所述发送单元,还用于将所述第三分布式路由规则发送给所述第一交换机,以及将所述第四分布式路由规则发送给所述第二交换机。在第二方面的第七种可能的实现方式中,该第三分布式路由规则或第四分布式路由规则包括:将第二服务器向第一服务器发送的报文的目的Mac地址修改为第一服务器的Mac地址。在第二方面的第八种可能的实现方式中,第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的二层网络标签字段设置为第一服务器所在的二层网络标签。在第二方面的第九种可能的实现方式中,第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。在第二方面的第十种可能的实现方式中,上述的确定单元,还用于确定和第一服务器直接相连的交换机为区别于第二交换机的第一交换机时,使能路由规则创建单元对第五分布式路由规则的创建;上述的路由规则创建单元,还用于创建第五分布式路由规则,该第五分布式路由规则用于指示第一交换机对第二服务器向第一服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发;上述的发送单元,还用于将第五分布式路由规则发送给第一交换机。在第二方面的第十一种可能的实现方式中,第五分布式路由规则包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。在第二方面的第十二种可能的实现方式中,触发单元进一步包括:第一确定模块,用于根据两服务器的标识,根据标识查询两服务器的网络连接信息中的两服务器的子网标识,并对查询到的两服务器的子网标识进行比较,当两子网标识不同时,则确定两服务器处于不同的子网;第二确定模块,用于根据两服务器的标识查询两服务器的网络连接信息中的两服务器所属路由器的标识,并对查询到的两服务器的路由器标识进行比较,当两者相同时,则确定两服务器处于同一的路由器下;触发模块,用于根据第一确定模块和第二确定模块的结果,使能路由规则创建单元。第三方面,还提供了一种网络中实现报文路由的网络系统,该系统包括:第一服务器、第二服务器、和所述第一服务器及所述第二服务器直接相连的交换机;以及一个如前所述的控制器。第四方面,还提供了一种网络中实现报文路由的网络系统,该系统包括:第一服务器、第二服务器、和第一服务器直接相连的第一交换机、和第二服务器直接相连的第二交换机,以及一个如前所述的控制器。基于上述技术方案,本发明实施例提供的一种网络中实现报文路由的方法、设备和系统,能够对处于同一路由器下,且位于不同子网中的两个服务器之间发送的报文的包头进行修改,从而使得满足分布式路由条件的报文,不需要通过三层路由器的处理,而直接通过交换机的二层转发就到达目的服务器,从而有效地提升了东西向流量的传输带宽。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是现有技术数据中心的实现报文通信的系统组网示意图。图2A是本发明实施例提供的网络中实现分布式路由的第一种系统组网示意图。图2B是本发明实施例提供的网络中实现分布式路由的第二种系统组网示意图。图3是本发明提供的一种网络中实现报文分布式路由的方法实施例的流程示意图。图4是本发明提供的第二种网络中实现报文分布式路由的方法实施例的流程示意图。图5是本发明提供的第三种网络中实现报文分布式路由的方法实施例的流程示意图。图6A是本发明实施例提供的网络中实现分布式路由的第三种系统组网示意图。图6B是本发明实施例提供的网络中实现分布式路由的第四种系统组网示意图。图7是本发明所提供的控制器第一实施例的结构示意图。图8是本发明所提供的控制器第二实施例的结构示意图。图9是本发明所提供的控制器中的触发单元的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。一般的,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构、以及其他类型的结构。此外,本领域的技术人员可以明白,各实施例可以用其他计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机以及类似计算设备。各实施例还能在任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。各实施例可被实现为计算机实现的过程、计算系统、或者诸如计算机程序产品或计算机系统执行示例过程的指令的计算机程序的计算机存储介质。例如:计算机可读存储介质可经由易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘和类似介质中的一个或多个来实现。图2A-2B示出了本发明实现的一种网络中实现报文路由的系统实施例的2种组网示意图。其中,在图2A中,该系统组网示意图包括:中心控制平台100,路由器200,第一交换机310,以及3台服务器,其中,中心控制平台100和第一交换机310相连,路由器200和第一交换机310相连,第一服务器410、第二服务器420和第三服务器430均与第一交换机310相连。图2B相比较于图2A,区别在于,存在第二交换机320,中心控制平台100和第二交换机320相连,同时,路由器200和第二交换机320相连,第一服务器410和第三服务器430和第一交换机310相连,第二服务器420和第二交换机320相连。在图2A和图2B中的中心控制平台100,用于构造并动态维护网络的拓扑信息,做分布式路由决策,建立分布式路由规则并下发到第一交换机310和/或第二交换机。可以理解,在具体实现的过程中,并非一定需要中心控制平台100构造和动态维护网络的拓扑信息,还可以存在另外一种实体,用来构造并动态维护网络的拓扑信息,由中心控制平台100从该实体中获取网络的拓扑信息。第一交换机310和第二交换机320,作为二层转发的实体,用于接收并执行中心控制平台100建立并下发的分布式路由规则,对满足分布式路由条件的源服务器和目的服务器所传输的报文进行报文包头的修改,并把修改后的报文进行转发。其中,分布式路由条件是:判断发送报文的源服务器和接收报文的目的服务器是否处于不同的子网中,以及判断源服务器和目的服务器是否处于同一路由器下。第一服务器410,第二服务器420以及第三服务器430,作为通信的实体,在具体的实现中,上述服务器可以指代物理机,也可以指代为该服务器中安装的1个或多个虚拟机。路由器200,用于实现三层转发的实体,其中可集成1个或多个网关。图3示出了基于上述网络中实现报文的分布式路由的方法,该网络中包括1个控制器,至少两个服务器,以及至少1个交换机,其中,控制器和至少1个交换机相连,至少两个服务器与至少1个交换机相连,网络中包括至少两个子网,至少两个服务器的每个服务器归属于至少两个子网中的某一子网,该方法包括:301、控制器获取两服务器的标识以及网络的拓扑信息,该网络的拓扑信息包括两服务器的网络连接信息;其中,该步骤中的控制器即对应于上述实现报文分布式路由系统的中心控制平台100。302、控制器利用两服务器的标识,根据两服务器的网络连接信息确定两服务器处于不同的子网,及两服务器处于同一路由器下时,该控制器创建第一分布式路由规则,并将第一分布式路由规则发送给和第一服务器直接相连的第一交换机,第一分布式路由规则用于指示第一交换机对第一服务器向第二服务器发送的报文进行报文的包头的修改,并把修改后的报文进行转发。通过上述方法实施例,控制器获取到需要发送报文的两服务器的标识,并利用其标识,查询整个网络的拓扑信息,具体是查询两服务器的网络连接信息,通过网络连接信息判断两服务器是否处于不同的子网,以及两服务器是否处于同一路由器下,当上面两个条件均满足时,该控制器建立分布式路由规则,并将该规则下发给发送报文的服务器所直接相连的交换机,该交换机根据下发的分布式路由规则实现第一服务器向第二服务器发送报文的包头的修改,进而根据报文的包头实现报文的转发。采用上述实现方式,能够避免所有的报文都经过路由器,从而有效地提升了东西向流量的传输带宽。在具体实现的过程中,控制器判断两服务器是否满足分布式路由条件的过程,可以通过如下两种方式触发:方式一:即两服务器的第一服务器向第二服务器发送报文,该报文到达直接和第一服务器相连的交换机,当该交换机无相应的报文路由规则时,该交换机向控制器发送路由规则的请求,该请求包括两服务器的标识(如:IP地址、Mac地址等),控制器根据两服务器的标识以及网络的拓扑信息进行分布式路由条件的判断;方式二:即在主机中分别创建VM1以及VM2,控制器接收到VM1和VM2创建的消息时,通过两虚拟机的标识发现还从未下发两虚拟机进行报文传输的路由规则时,则控制器获取两虚拟机的标识,并根据两虚拟机的标识以及网络的拓扑信息进行分布式路由条件的判断。具体的,第一分布式路由规则包括:将第一服务器向第二服务器发送的报文的目的Mac地址修改为第二服务器的Mac地址。当第一交换机在接收到第一服务器发送给第二服务器的报文时,通过将报文的目的Mac地址修改为第二服务器的Mac地址,使得该报文在经过第一交换机向第二服务器进行转发的过程中,能够避免经过网关的路由转发,而直接转发给第二服务器。可选的,当两个服务器位于不同的交换机下时,分布式路由规则需要包括对二层网络标签字段的修改,即将第一服务器向第二服务器发送的报文的二层网络标签字段设置为第二服务器所在的二层网络标签。其中,二层网络标签具体为:Vlan标签、Vxlan标签等。可以理解,对于二层网络标签的实现方式是多种多样的,上述举例并不能作为对二层网络标签的限定。可选的,将发送给第二服务器的报文的源Mac地址修改为第二服务器所属网关的Mac地址,针对这一规则的下发,根据该网络系统的组网架构不同,可以分为两种情况:(1)当两服务器连接在同一个交换机上时,则将发送给第二服务器的报文的源Mac地址修改为第二服务器所属网关的Mac地址的这一规则,下发给和两服务器直接相连的交换机即可;(2)当两服务器分别和不同的交换机相连时,则将发送给第二服务器的报文的源Mac地址修改为第二服务器所属网关的Mac地址的这一规则,即可以发送给和第一服务器直接相连的第一交换机,也可以发送给和第二服务器直接相连的第二交换机。当选择发送给第二交换机时,需要重新建立新的分布式路由规则,并将该路由规则下发给第二交换机。上述实现方式,从第二服务器的角度,来自于第一服务器的报文,是经过了第二服务器所属的网关转发处理,更符合常规网络转发的过程。前面的实施方式解决的是第一服务器向第二服务器发送报文的分布式路由规则的建立和下发,考虑到两服务器通信的双向性,需要建立分布式路由规则,用来处理第二服务器向第一服务器发送的报文。在控制器确定两服务器处于不同的子网,及两服务器处于同一路由下之后,该方法还包括:控制器确定和第二服务器直接相连的交换机为第一交换机时,控制器创建第三分布式路由规则,并将第三分布式路由规则发送给第一交换机,该第三分布式路由规则用于指示第一交换机对第二服务器向第一服务器发送的报文进行报文包头的修改,并把修改后的报文进行转发;控制器确定和第二服务器直接相连的交换机为区别于述第一交换机的第二交换机时,控制器创建第四分布式路由规则,并将第四分布式路由规则发送给第二交换机,第四分布式路由规则用于指示第二交换机对第二服务器向第一服务器发送的报文进行报文包头的修改,并把修改后的报文进行转发。其中,第三分布式路由规则或第四分布式路由规则包括:将第二服务器向第一服务器发送的报文的目的Mac地址修改为第一服务器的Mac地址。可选的,当从第二服务器和第一服务器分别连接在不同的交换机时,上述的第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的二层网络标签字段设置为第一服务器所在的二层网络标签。可选的,为了使报文的转发路径对第一服务器透明,使得第一服务器认为采用分布式路由规则对报文的处理和传统的路由类似(即第一服务器所属的网关),上述第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。这样,当第二服务器发送给第一服务器的报文经过交换机时,该报文的源Mac地址被修改为第一服务器的所属的Mac地址。可选的,使第二服务器发送给第一服务器的报文对第一服务器透明的另外一种方式是,另外构建一条分布式路由规则,即第五分布式路由规则,下发给和第一服务器直接相连的交换机,该规则包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。可选的,控制器利用两服务器的标识,根据两服务器的网络连接信息确定两服务器处于不同的子网,及两服务器处于同一路由器下,这一过程具体包括:控制器获取两服务器的标识,根据标识查询两服务器的网络连接信息中的两服务器的子网标识,并对查询到的两服务器的子网标识进行比较,当两子网标识不同时,则确定两服务器处于不同的子网;控制器根据两服务器的标识查询两服务器的网络连接信息中的两服务器所属路由器的标识,并对查询到的两服务器的路由器标识进行比较,当两者相同时,则确定两服务器处于同一的路由器下。上述实施例中,控制器和交换机所采用的通信协议包括但不限于:Openflow协议、或者SecureShell协议。为了更清楚地介绍分布式路由规则的建立以及下发的过程,下面通过四个具体的实施例来介绍分布式路由规则的建立和下发:(一)采用被动的方式建立分布式路由规则的方式1)以图2A的网络架构进行描述401、第一服务器410向第二服务器420发送数据报文,数据报文到达和第一服务器410以及第二服务器420相连接的第一交换机310。具体的,该数据报文的包头包含如下五元组信息:其中,该数据报文的目的Mac地址是第一服务器所属网关的Mac地址,即按照传统路由,该数据报文的下一跳是第一服务器所属子网的网关。上述表格中的以太网类型是第一服务器根据传输网络的类型添加的,可以理解,还可以为其他类型的网络类型,在此,本发明的实施例不做任何限制。403、第一交换机310查找自身所存储的本地路由策略,没有发现匹配项,于是向中心控制平台100发出请求;路由策略采用“匹配域+执行域”的结构,其中,匹配域中包括源服务器以及目的服务器的信息,这些信息可以包括:IP地址、Mac地址等,在实现403的过程中,可以通过匹配域的匹配方式,来判断是否能够找到所需要匹配的路由策略。405、中心控制平台100根据第一交换机310所发出的请求,判断第一服务器410和第二服务器420是否符合分布式路由条件,通过获取两服务器的标识,并结合网络的拓扑信息(具体而言是两服务器的网络连接信息),来判断两服务器是否在不同的子网下以及两服务器是否处于同一路由器下;当满足上面两个条件时,则进入407;否则,按照传统的方式创建路由规则。其中,上述按照传统的方式创建路由规则,其中,在判断第一服务器410和第二服务器420是否符合分布式路由的条件的过程具体包括:中心控制平台100获取第一服务器410和第二服务器420的标识(如IP地址、或Mac地址等),根据上述标识查询两服务器的网络连接信息中的两服务器的子网标识(subnet_id),并对查询到的两服务器的子网标识进行比较,当两子网标识不同时,则确定所述两服务器处于不同的子网;中心控制平台100根据两服务器的标识查询两服务器的网络连接信息中的两服务器所属路由器的标识(Router_id),并对查询到的两服务器的路由器标识进行比较,当两者相同时,则确定所述两服务器处于同一的路由器下。407、建立第一服务器向第二服务器发送报文的第一分布式路由规则,并将该第一分布式路由规则下发给第一交换机310,该规则如下:需要说明的是,上述执行域包括的两个执行规则是较佳的实施例,在具体实现的过程中,修改报文的目的Mac地址,即“Mod_Dst_Mac=第二服务器Mac”是必要的;修改报文的源Mac地址,即“Mod_Src_Mac=第二服务器所属网关Mac”是可选的。409、在第一服务器410向第二服务器420发送报文到达第一交换机310时,通过第一分布式路由规则的匹配域匹配确实是第一服务器410发送到第二服务器420的报文,则根据第一分布式路由规则的执行域执行报文的目的Mac地址的修改以及Vlan标签的修改,使得该报文通过第一交换机310和第二交换机320,能够直接到达第二服务器420。需要说明的是,上述针对第一分布式路由规则的匹配域的结构仅是作为一个具体的例子,可以理解,本说明书的各个实施例中所说的分布式路由规则的匹配域还有其他的实现方式,譬如:仅包括源服务器IP以及目的服务器的IP等。对此,本发明的所有实施例均不加以限定。本发明实施例中,控制器对第一服务器410向第二服务器420发送的报文的信息进行判断,看是否满足分布式路由的条件,该分布式路由的条件具体为:判断发送报文的源服务器和接收报文的目的服务器是否处于不同的子网内,以及该两个服务器是否在同一个路由器下。如果满足上述分布式路由条件,则向两服务器直接相连的交换机下发分布式路由规则,接收到分布式路由规则的交换机通过修改报文的目的Mac为目的服务器的Mac的方式,对上述报文进行转发处理,这样就避免所有报文均需要经过三层路由协议转发,极大地减轻具有网关功能的路由器在报文转发的压力。上述过程,是针对第一服务器410向第二服务器420发送报文来创建分布式路由规则实现报文的转发,对于本领域的普通技术人员可以理解,针对第二服务器420向第一服务器410发送的报文进行分布式路由,类似的,控制器会建立相应的分布式路由规则对第二服务器420向第一服务器410所发送的报文进行转发,对此,本说明书不再赘述。上述采用的是两服务器和同一交换机相连的情形,下面以两服务器分别和两个交换机相连为例,对该报文的分布式路由的方式进行介绍。2)以图2B的网络架构进行描述501、第一服务器410向第二服务器420发送数据报文,数据报文到达和第一服务器410相连的第一交换机310。其中,该数据报文包头包含如下五元组信息:其中,该数据报文的目的Mac地址是第一服务器所属网关的Mac地址,即按照传统路由,该数据报文的下一跳是第一服务器所属的网关。上述表格中的以太网类型是第一服务器根据传输网络的类型添加的,可以理解,还可以为其他类型的网络类型,在此,本发明的实施例不做任何限制。503、第一交换机310查找自身所存储的本地路由策略,没有发现匹配项,于是向中心控制平台100发出请求;路由策略采用“匹配域+执行域”的结构,其中,匹配域中包括源服务器以及目的服务器的信息,这些信息可以包括:IP地址、Mac地址等,在实现503的过程中,可以通过匹配域的匹配方式,来判断是否能够找到所需要匹配的路由策略。505、中心控制平台100根据第一交换机310所发出的请求,判断第一服务器410和第二服务器420是否符合分布式路由条件,通过获取两服务器的标识,并结合网络的拓扑信息(具体而言是两服务器的网络连接信息),来判断两服务器是否在不同的子网下以及两服务器是否处于同一路由器下;当满足上面两个条件时,则进入507;否则,按照传统的方式创建路由规则。其中,在判断第一服务器410和第二服务器420是否符合分布式路由的条件的过程具体包括:中心控制平台100获取第一服务器410和第二服务器420的标识(如IP地址、或Mac地址),根据上述标识查询两服务器的网络连接信息中的两服务器的子网标识(subnet_id),并对查询到的两服务器的子网标识进行比较,当两子网标识不同时,则确定所述两服务器处于不同的子网;中心控制平台100根据两服务器的标识查询两服务器的网络连接信息中的两服务器所属路由器的标识(Router_id),并对查询到的两服务器的路由器标识进行比较,当两者相同时,则确定所述两服务器处于同一的路由器下。507、该中心控制平台100建立第一服务器410向第二服务器420发送报文的第一分布式路由规则,并将该第一分布式路由规则下发给第一交换机310,该规则如下:上述下发给第一交换机310的第一分布式路由规则中的执行域中,将报文的源Mac地址修改为作为报文目的接收端的第二服务器的Mac地址,即“Mod_Dst_Mac=第二服务器Mac”是必要的,根据图2B来看,第一服务器410和第二服务器420分别和不同的交换机相连,即在跨交换机通信的两服务器发送的报文中,需要修改二层网络标签,在本实施例中,就是要修改Vlan标签,即“Mod_Vlan_vid=第二服务器Vlan”也是必要的,而修改报文的源Mac地址,即“Mod_Src_Mac=第二服务器所属网关Mac”则是可选的。作为另一种变型,针对“Mod_Src_Mac=第二服务器所属网关Mac”这一指令,还可以单独建立第二分布式路由规则,并将该规则下发给和第二服务420直接相连的第二交换机320如下所示:而将包含“Mod_Dst_Mac=第二服务器Mac”,以及“Mod_vlan_vid=第二服务器Vlan”的第一分布式路由规则下发给第一交换机310,即如下的分布式路由规则下发给第一交换机310:509、在第一服务器410向第二服务器420发送报文到达第一交换机310时,第一交换机310通过第一分布式路由规则的匹配域匹配确实是第一服务器410发送到第二服务器420的报文,则根据第一分布式路由规则的执行域执行报文的目的Mac地址的修改以及Vlan标签的修改,使得该报文通过第一交换机310和第二交换机320的二层数据链路层的转发,能够直接到达第二服务器420。本发明实施例中,控制器对第一服务器410向第二服务器420发送的报文的信息进行判断,看是否满足分布式路由的条件,该分布式路由的条件具体为:判断发送报文的源服务器和接收报文的目的服务器是否处于不同的子网内,以及该两个服务器是否在同一个路由器下。如果满足上述分布式路由条件,则向两服务器相连的交换机下发分布式路由规则,接收到分布式路由规则的交换机通过修改报文的目的Mac为目的服务器的Mac的方式,对上述报文进行转发处理,这样就避免所有报文均需要经过三层的路由器转发,极大地减轻具有网关功能的路由器在报文转发的压力。上述是针对第一服务器410向第二服务器420发送报文的方式建立并下发分布式路由规则的过程进行描述,对于第二服务器420向第一服务器410发送的报文进行分布式路由规则的建立和下发的过程,类似上述过程,对此,本发明的实施例不再赘述。上述“采用被动的方式建立分布式路由规则的方式”中,之所以称为“被动”,是因为上述中心控制平台100是在接收到源服务器向目的服务器发送报文的信息之后,确定未建立路由规则后,才发起建立分布式路由规则的过程。(二)采用主动的方式建立分布式路由规则的方式图6A和图6B中vSwitch(VirtualSwitch)指的是虚拟交换机,VM(VirtualMachine)指的是虚拟机,在具体的实现过程中,vSwitch可以是逻辑实体,可以跟VM处于同一物理实体中。下面以Openstack场景来描述分布式路由规则的建立以及下发过程,参看图6A,该方法包括:601、在计算节点1创建VM1640,此时,vSwitch1620下的网络的拓扑信息发生了变化;602、计算节点1检测到网络的拓扑信息发生了变化,上报给控制节点600;603、控制节点600刷新网络的拓扑信息;604、在计算节点1创建VM2650,计算节点1检测到网络的拓扑信息发生了变化,上报给控制节点600;605、控制节点600根据网络的拓扑信息发现有两个VM被创建,判断VM1640和VM2650是否在同一路由器下,且判断是否在不同的子网中;606、当判断上述两个条件均满足时,控制节点600分别创建两条分布式路由规则。其中,上述第一分布式路由规则用于对VM1640发送给VM2650的报文进行路由转发,第二路由规则用于对VM2650发送给VM1640的报文进行路由转发。其中,第一分布式路由规则为:上述规则中,“Mod_Mac_Dst=VM2Mac”含义为修改报文的目的Mac地址为VM2650的Mac地址,上述规则为必选的。“Mod_Mac_Src=VM2GWMac”含义为修改报文的源Mac地址为VM2650所属网关的Mac地址,上述规则为可选的。类似的,第二分布式路由规则为:上述规则中,“Mod_Mac_Dst=VM1Mac”含义为修改报文的目的Mac地址为VM1的Mac地址,上述规则为必选的。“Mod_Mac_Src=VM1GWMac”含义为修改报文的源Mac地址为VM1所属网关的Mac地址,上述规则为可选的。607、控制节点600将创建的两条路由规则下发给vSwitch1620。通过上述过程,对于VM1向VM2发送的报文,以及VM2向VM1发送的报文,通过上述两条路由规则,能够实现报文的分布式路由转发。可以理解,上述图6A所示的实施例中,vSwitch1、VM1和VM2为具有不同功能的逻辑实体,在具体实现的过程中,vSwitch1可以和VM1处于同一物理实体中实现,或vSwitch1和VM2处于同一物理实体中实现,或vSwitch1、VM1和VM2三者处于同一物理实体中实现等。对此,本发明的所有实施例均不加任何限制。上述实施例是针对两个虚拟机和同一个vSwitch相连的情形,对于两个虚拟机分别和两个vSwitch连接的情形,下面的实施例给予介绍,参看图6B所示:701、在计算节点1上创建VM1640,此时,vSwitch1620下的网络的拓扑信息发生了变化;702、计算节点1检测到网络的拓扑信息发生了变化,将该网络拓扑的变化上报给控制节点600;703、控制节点600刷新网络的拓扑信息;704、在计算节点2创建VM2650,计算节点2检测到网络的拓扑信息发生了变化,上报给控制节点600;705、控制节点600根据网络的拓扑信息发现有两个VM被创建,利用两个VM的标识,并根据网络的拓扑信息判断VM1640和VM2650是否在同一路由器下,且判断是否在不同的子网中;706、当判断上述两个条件均满足时,控制节点600分别创建两条分布式路由规则。其中,上述第一分布式路由规则用于对VM1640发送给VM2650的报文进行路由转发,第二路由规则用于对VM2650发送给VM1640的报文进行路由转发。其中,第一分布式路由规则为:上述规则中,“Mod_Mac_Dst=VM2Mac”含义为修改报文的目的Mac地址为VM2的Mac地址,上述规则为必选的。“Mod_Vlan_vid=VM2Vlan”的含义为修改报文的Vlan标签卫VM2所处的Vlan的标签,该规则也为必选的。“Mod_Mac_Src=VM2GWMac”含义为修改报文的源Mac地址为VM2所属网关的Mac地址,该规则为可选的,目的是使得报文的分布式路由的转发过程对于VM2是透明的,即对于VM2来说,报文似乎和传统的路由方式一样,即由VM2所属网关转发给VM2。类似的,第二分布式路由规则为:上述规则中,“Mod_Mac_Dst=VM1Mac”含义为修改报文的目的Mac地址为VM1的Mac地址,上述规则为必选的。“Mod_Mac_Src=VM1GWMac”含义为修改报文的源Mac地址为VM1所属网关的Mac地址,该规则为可选的。707、控制节点600将创建的第一分布式路由规则下发给vSwitch1,将创建的第二分布式路由规则下发给vSwitch2。图6B所示的实施例中,vSwitch1和VM1、以及vSwitch2和VM2分别是不同的逻辑实体,在具体实现的过程中,vSwitch1和VM1可以在同一物理实体中实现,vSwitch2和VM2可以在同一物理实体中实现。对此,本发明的任何实施例均不加任何限制。通过上述方法实施例,控制器获取到新创建的虚拟机的标识,并利用其标识,通过查询整个网络的拓扑信息判断两个虚拟机是否处于不同的子网,以及这两个虚拟机是否处于同一路由器下,当上面两个条件均满足时,该控制器建立分布式路由规则,并将该规则下发给发送报文的虚拟机所直接相连的交换机,该交换机根据下发的分布式路由规则实现第一虚拟机向第二虚拟机之间发送报文的处理。采用上述实现方式,能够避免所有的报文都经过带有网关功能的路由器,从而有效地提升东西向流量的传输带宽。本发明的另一个实施例是保护一种控制器,该控制器用于实现网络中报文的分布式路由,该控制器100包括,参看图7所示:获取单元110,用于获取两服务器的标识以及网络的拓扑信息,该网络的拓扑信息包括所述两服务器的网络连接信息;触发单元120,用于利用两服务器的标识,根据网络拓扑信息中的两服务器的网络连接信息,确定两服务器处于不同的子网中,及两服务器处于同一路由器下,使能路由规则创建单元130;路由规则创建单元130,用于创建第一分布式路由规则,其中,第一分布式路由规则用于指示第一交换机对第一服务器向第二服务器发送的报文进行报文包头的修改,并把修改后的报文进行转发;发送单元140,用于将第一分布式路由规则发送给和第一服务器直接相连的第一交换机。其中,第一分布式路由规则包括:将所述第一服务器向所述第二服务器发送的报文的目的Mac地址修改为所述第二服务器的Mac地址。可选的,第一分布式路由规则还包括:将第一服务器向第二服务器发送的报文的二层网络标签字段设置为第二服务器所在的二层网络标签。可选的,第一分布式路由规则还包括:将第一服务器向第二服务器发送的报文的源Mac地址修改为第二服务器所属网关的Mac地址。可选的,该控制器100还包括:确定单元150,用于确定和第二服务器相连的交换机为区别于第一交换机的第二交换机时,使能所述路由规则创建单元对第二分布式路由规则的创建;路由规则创建单元130,还用于创建第二分布式路由规则,该第二分布式路由规则用于指示所述第二交换机对第一服务器向第二服务器发送的报文进行报文包头的修改,并把修改后的报文进行转发;发送单元140,还用于将第二分布式路由规则发送给第二交换机。其中,第二分布式路由规则包括:将第一服务器向第二服务器发送的报文的源Mac地址修改为第二服务器所属网关的Mac地址。对于针对第一服务器向第二服务器发送的报文创建分布式路由规则的过程时,针对第一服务器和第二服务器同第一交换机相连,以及第一服务器和第一交换机相连,第二服务器和第二交换机相连的这两种情形:上述控制器100中的确定单元150,还用于确定和所述第二服务器直接相连的交换机为所述第一交换机时,使能所述路由规则创建单元对第三分布式路由规则的创建,确定和所述第二服务器直接相连的交换机为区别于所述第一交换机的第二交换机时,使能所述路由规则创建单元对第四分布式路由规则的创建;上述控制器100中的路由规则创建单元130,还用于创建第三分布式路由规则,及创建第四分布式路由规则,第三分布式路由规则用于指示第一交换机对第二服务器向第一服务器发送的报文进行报文包头的修改,并把修改后的报文进行转发,第四分布式路由规则用于指示第二交换机对第二服务器向第一服务器发送的报文进行报文包头的修改,并把修改后的报文进行转发;发送单元140,还用于将第三分布式路由规则发送给第一交换机,以及将第四分布式路由规则发送给所述第二交换机。其中,第三分布式路由规则或第四分布式路由规则包括:将第二服务器向第一服务器发送的报文的目的Mac地址修改为第一服务器的Mac地址。可选的,第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的二层网络标签字段设置为第一服务器所在的二层网络标签。可选的,第三分布式路由规则或第四分布式路由规则还包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。对于针对第二服务器向第一服务器发送的报文进行分布式路由,该控制器100所包括的确定单元150,还用于确定和第一服务器直接相连的交换机为区别于第二交换机的第一交换机时,使能路由规则创建单元对第五分布式路由规则的创建;路由规则创建单元130,还用于创建第五分布式路由规则,第五分布式路由规则用于指示第一交换机对第二服务器向第一服务器发送的报文进行报文包头的修改,并把修改后的报文进行转发;发送单元140,还用于将第五分布式路由规则发送给第一交换机。其中,第五分布式路由规则包括:将第二服务器向第一服务器发送的报文的源Mac地址修改为第一服务器所属网关的Mac地址。进一步的,触发单元120进一步包括,参看图9:第一确定模块121,用于根据两服务器的标识,根据标识查询两服务器的网络连接信息中的两服务器的子网标识,并对查询到的两服务器的子网标识进行比较,当两子网标识不同时,则确定两服务器处于不同的子网;第二确定模块122,用于根据两服务器的标识查询两服务器的网络连接信息中的两服务器所属路由器的标识,并对查询到的两服务器的路由器标识进行比较,当两者相同时,则确定两服务器处于同一的路由器下;触发模块123,用于根据第一确定模块和第二确定模块的结果,使能路由规则创建单元。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1