本发明涉及云计算中的网络虚拟化技术领域,尤其涉及一种在数据中心的计算节点间实现高速分布式路由的方法。
背景技术:
数据中心中的云计算系统由控制节点、计算节点、网络节点等多个节点组成。计算节点负责运行向外提供服务虚拟机以响应用户请求,网络节点为云计算系统提供对外及对内的各种网络服务,控制节点则负责云计算系统的正常运行。随着越来越多的业务和数据迁移到云计算系统,如果不能在数据中心实现高效的数据路由,将会给用户带来不可估量的损失。
目前,数据中心的路由技术主要包括:集中式路由技术和分布式路由技术。集中式路由技术是通过网络节点里的虚拟路由器实现计算节点的东西向和南北向的数据通路。集中式路由技术能够简化数据中心的拓扑结构,便于网络数据流的集中控制,但存在网络节点负担过重,因此难以实现较高的网络速度,并存在网络延迟较大的缺陷。同时,由于集中式路由技术使得任何计算节点之间的联通必须通过网络节点,因此不能有效减少数据中心的网络负载。
分布式路由技术是通过让计算节点自己来处理原先的大量东西向流量和非SNAT南北向流量(由被分配Floating IP的虚拟机与外部数据中心进行通信)。网络节点只需要处理占到一部分的SNAT流量,降低了数据中心的网络负载和整个云计算系统对网络节点的依赖。分布式路由技术虽然能够减轻网络节点的压力,但是由于依然使用网络命名空间(Network Name Space)技术来模拟路由器并对数据进行路由,使计算节点上拓扑结构过于复杂,从而无法有效减少整个网络延迟(Latency),且会影响计算节点的计算性能。
有鉴于此,有必要对现有技术中的数据中心的路由技术予以改进,以解决上述问题。
技术实现要素:
本发明的目的在于公开一种在数据中心的计算节点间实现高速分布式路由的方法,用以简化数据中心的拓扑结构,降低网络延迟,实现对计算节点上网络流量的监控及对数据的高速路由,减少数据中心的网络负载。
为实现上述发明目的,本发明提供了一种在数据中心的计算节点间实现高速分布式路由的方法,包括:
在计算节点及网络节点上安装用于对外提供网络服务的OVS虚拟交换机,并仅在计算节点上安装用于监控所述OVS虚拟交换机流量的高速分布式路由控制器,并通过所述高速分布式路由控制器更新通道网桥,各计算节点上所部署的高速分布式路由控制器被控制节点集中控制;
用户通过API向高速分布式路由控制器下发自定义配置,所述自定义配置为成对的两个计算节点之间的网络流量阈值,当两个计算节点之间的网络流量超过网络流量阈值后,由高速分布式路由控制器动态规划各计算节点间的网络拓扑。
作为本发明的进一步改进,所述通道网桥设置为Flow模式。
作为本发明的进一步改进,所述方法还包括:对至少两个计算节点间成对的两个不同网络设置不同的自定义配置。
作为本发明的进一步改进,所述高速分布式路由控制器对通道网桥上的三层路由流表、二层交换流表及二层交换流表与通道网桥的接入点之间所形成的数据通道执行添加、删除或者修改操作。
作为本发明的进一步改进,所述方法还包括:网络节点实时更新已经建立连接的网络的路由信息上报并保存至控制节点。
作为本发明的进一步改进,所述网络流量阈值不超过与通道网桥连接的物理网卡的最大传输速度。
作为本发明的进一步改进,所述动态规划各计算节点间的网络拓扑具体为:随已经建立网络连接的成对的两个计算节点间的网络流量的变化,将高于网络流量阈值的成对的两个计算节点通过计算节点中与OVS虚拟交换机连接的物理网卡直接连通。
与现有技术相比,本发明的有益效果是:在本发明中,实现了对计算节点上网络流量的监控,并通过网络节点和计算节点实现了网络路由功能,既简化了整个数据中心的拓扑结构又能够显著减少网络节点的网络吞吐压力,提高了数据中心整体的网络性能。
附图说明
图1为示出了具有多个计算节点的Openstack系统的架构图;
图2为非高速分布式路由模式下在计算节点上的网络服务控制图;
图3为高速分布式路由模式下在计算节点上的网络服务控制图;
图4为图1中的计算节点A与计算节点B间不实现直接互联的网络拓扑图;
图5为图1中的计算节点A与计算节点B间实现直接互联的网络拓扑图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
在详细阐述本发明之前,首先对具体实施方式中的主要技术术语作出简要阐述或者定义。
术语“数据链路”是指,已经建立网络连接的网络与网络之间在接收和发送数据时所形成的路径。
术语“网络”是指,计算节点中开启的一个或者多个虚拟机所共同组成的网络,该网络可用于响应用户发起操作请求。
术语“外网”是指:互联网或者另一个数据中心,具体的,外网可以被配置为一台计算机或者一个集群服务器甚至是物理态的路由器。
请参图1至图5所示出的发明一种在数据中心的计算节点间实现高速分布式路由的方法的一种实施例。本实施例所示出的方法不使用网络命名空间技术来模拟路由器并进行路由,因此可简化计算节点的拓扑结构;同时,在本发明中,可根据计算节点中所创建的网络之间因数据传输过程中所产生的不同规格数据流量,而根据预先设定的网络流量阈值,选择是否通过网络节点40进行数据的转发。
具体的,该一种在数据中心的计算节点间实现高速分布式路由的方法,该方法主要包括以下步骤。
参图1所示,首先:部署至少包含两个计算节点的云计算系统。在本实施方式中,该云计算系统可选用Openstack系统30。Openstack系统30中包括:计算节点A、计算节点B、网络节点40及控制节点50。网络节点40、计算节点A与计算节点B接入数据网络交换机10。其中,计算节点A通过物理网卡A03接入数据网络交换机10,计算节点B通过物理网卡B03接入数据网络交换机10。网络节点40接入外网,控制节点50分别连接网络节点40、计算节点A与计算节点B。上述每个节点占用一台物理机。计算节点A与计算节点B部署虚拟机,并通过虚拟机向用户提供云服务。
参图2所示,然后,将Openstack系统30的二层网络服务设置以开放虚拟交换机(Openvswitch,OVS虚拟交换机)为驱动,将三层网络服务模式设置为高速分布式路由模式(Fast-DVR)。在计算节点A上安装并启动开放虚拟交换机(OVS虚拟交换机)A02。通过高速分布式路由控制器70(即Fast-DVR控制器)更新计算节点A的通道网桥(br-tun)。同理所述,在计算节点B上安装并启动开放虚拟交换机(OVS虚拟交换机)B02,通过高速分布式路由控制器70更新计算节点B的通道网桥(br-tun)。计算节点A与计算节点B被控制节点50集中控制。
计算节点A开启与开放虚拟交换机(即OVS虚拟交换机)A02逻辑上耦联的虚拟机VM-i……虚拟机VM-J、虚拟机VM-j1,并与物理网卡A03连接。计算节点B上开启与开放虚拟交换机(OVA)B02逻辑上耦联的虚拟机VM-1…..虚拟机VM-m、虚拟机VM-o,并与物理网卡B03连接。物理网卡A03与物理网卡B03同时接入数据网络交换机10,并通过数据网络交换机10对计算节点A与计算节点B中所形成的网络进行组网。
网络节点40中配置有虚拟路由器401及OVS虚拟交换机402,并通过物理网卡403接入数据网络交换机10。任何一个计算节点中的虚拟机藕接集成网桥(br-int),并通过集成网桥(br-int)与通道网桥(br-tun)连接。通道网桥(br-tun)设置为Flow模式。
在本实施方式中,为了简化表示,计算节点A中的虚拟机VM-j与虚拟机VM-j1组成网络X,计算节点B中的虚拟机VM-m与虚拟机VM-o组成网络Y。开放虚拟交换机(Openvswitch,OVS虚拟交换机)主要功能为:传递位于不同计算节点之间的网络X与网络Y之间的数据包,以及,网络X及网络Y中所包含的虚拟机与外网之间的通信。
在本实施方式中,高速分布路由模式是指,通过网络节点40与计算节点A和/或计算节点B共同来实现Openstack系统30的网络路由功能。网络节点40实时更新和上报网络X与网络Y的路由信息,计算节点A与计算节点B使用高速分布式路由控制器(Fast-DVR控制器)70监控从OVS虚拟交换机A02、OVS虚拟交换机B02进出的网络流量,并更新OVS虚拟交换机A02、OVS虚拟交换机B02上的三层路由流表、二层交换流表以及二层交换流表与通道网桥的接入点之间所形成的数据通道。所谓计算节点间的网络流量是指从一个计算节点的OVS虚拟交换机向另一个计算节点的OVS虚拟交换机进行数据包分发广播过程中所形成的流量。
同时,在本实施方式中,还包括网络节点40实时更新已经建立的网络的路由信息,并上报至控制节点40中,从而是实现了整个Openstack系统30内部的网络拓扑动态规划的透明性,使得控制节点40能够灵活的在不同计算节点之间需要建立网络连接的不同虚拟机之间制定不同的网络流量阈值,以更好的响应用户发起个性化请求所导致的数据流量的差异,在不降低用户体验的前提下又能够提高整个Openstack系统30的性能,避免网络节点40出现拥塞的现象。
例如,当启动Openstack系统30中的各个节点上的网络服务后,用户可通过API(Openstack系统30的应用程序接口)向Openstack系统30下发如下自定义配置:
192.168.1.0/24:192.168.2.0/24:1M
在本实施例中,以计算节点A与计算节点B之间形成不同规格的数据链路举例说明。该条自定义配置表示:当计算节点A上的内网网段为192.168.1.0/24网络X与计算节点B上的内网网段为192.168.2.0/24的网络Y进行通信时所形成的网络流速低于1Mb/s时,计算节点A上的内网网段为192.168.1.0/24的网络X的虚拟机必须借助网络节点40,以实现与计算节点B上内网网段为192.168.2.0/24的网络Y的虚拟机进行通信。当网络流速高于1Mb/s时,该计算节点A上的内网网段为192.168.1.0/24的网络X的虚拟机可以不借助网络节点40,而能够直接与计算节点B上的内网网段为192.168.2.0/24的网络Y的虚拟机进行通信。
当计算节点A与计算节点B之间的网络流量超过网络流量阈值后,可通过高速分布式路由控制器(Fast-DVR控制器)70操作OVS虚拟交换机上的路由和交换规则以及数据通道等,实现动态规划各计算节点之间的网络拓扑。
在Openstack系统30中创建网络X(内网网段:192.168.1.0/24)及网络Y(内网网段:192.168.2.0/24),并在每个计算节点上都创建若干属于该两个网络的虚拟机。为简化表示,网络X与网络Y均包含两台虚拟机。
初始时,Openstack系统30内的网络X与网络Y之间的网络流量较小,不同计算节点A的网络X与计算节点B的网络Y之间的网络流量没有到达上述用户配置的自定义配置出的成对的两个计算节点之间的网络流量阈值。这段时间Openstack系统30内的内部网络拓扑如图4所示。其中,黑色粗虚线表示位于不同计算节点的网络X与网络Y之间进行网络通信所形成的数据链路需要通过网络节点40以到达对端的计算节点。
结合图4及图5所示,同时,作为本发明的一种重要变形例,还可对至少两个计算节点间成对的两个不同网络设置不同的自定义配置。例如,还可对计算节点A与计算节点B之间的两个不同网络设置不同的自定义配置,甚至是可在计算节点A与计算节点B所形成的不同网络之间建立成对的网络连接时设置不同的自定义配置。
例如,在计算节点A中将内网网段不同的一个或者多个虚拟机组成两个不同的网络(例如网络C和网络D),在计算节点B中将内网网段不同的一个或者多个虚拟机组成两个不同的网络(例如网络E和网络F)。此时,用户可通过下发不同的自定义配置,在网络C与网络E之间配置网络流量阈值为T的自定义配置,在网络D和网络F之间配置网络流量阈值为G的自定义配置,且网络流量阈值T与网络流量阈值为G可为不同的设定值,当然也可为相同的网络流量阈值的设定值。从而为整个数据中心在计算节点间由于网络流量的变化而实现更加灵活的拓扑调整,从而进一步的简化了整个数据中心的拓扑结构,显著的减少了网络节点40的网络吞吐压力,提高了数据中心整体的网络性能。
当不同计算节点间网络X与网络Y间的网络流量超过到上述用户配置的自定义配置出的成对的两个计算节点之间的网络流量阈值时,Openstack系统30的内部网络拓扑会发生变化,变化后的拓扑图如图5所示。其中,黑色粗虚线表示位于不同计算节点的网络X与网络Y进行网络通信所形成的数据链路。
在此种情形下,网络X与网络Y进行分发的数据包不需要通过网络节点40,而直接通过数据网络交换机10直接对数据包进行转发并达到对端的计算节点中,从而避免了占用网络节点40的网络资源。在本实施方式中,网络拓扑可随各计算节点间网络流量的变化而不断变化,以追求在不影响计算节点性能的前提下,有效减轻网络节点40的负担,并提高Openstack系统30的性能,显著减少了网络节点40的数据吞吐压力,提高了数据中心整体的网络性能。
计算节点A及计算节点B可以按照以下顺序操作网络拓扑动态配置的相关服务:
(1)配置网络服务:使用Openvswitch虚拟交换机(OVS虚拟交换机)作为网络服务的驱动,配置通道网桥(br-tun)和集成网桥(br-int);
(2)启动Openvswitch服务;
(3)启动Fast-DVR控制器70;
(4)启动Neutron-Openvswitch-Agent服务并加载至Fast-DVR控制器70。
自定义配置规则有以下约束:
(1)一条自定义配置只能设置不同计算节点间的某两个不同网络间的网络流量阈值。
(2)当多条自定义配置对应相同的两个不同网络时(先后顺序不一致不算相同),后下发的自定义配置将覆盖先下发的自定义配置。
(2)网络流量阈值设置在一个合理范围内,理论上必须大于0Mb/S,小于物理网卡的最大限速,具体运行时应参照网络环境设置合理网络流量阈值。在本实施方式中,网络流量阈值不超过与通道网桥连接的物理网卡的最大传输速度。所述物理网卡包括计算节点A与计算节点B中的物理网卡。
同时,本实施方式中的所述动态规划各计算节点间的网络拓扑可以包含但不限于以下几种操作:
链路切换:当某一计算节点与其他计算节点的不同网络间的流量高于或低于某一自定义配置所包含的网络流量阈值时,该计算节点将创建或删除到其他计算节点或网络节点40间的数据链路。以实现计算节点间东西方向的数据链路与计算节点和网络节点40间的南北方向的数据链路的切换。
链路分配:当某一计算节点与其他计算节点的不同网络间的流量超过某一自定义阈值所包含的网络流量阈值时,该计算节点将在到其他计算节点或网络节点40的数据链路上分配不同比例的网络流量。
具体的,结合图2至图5所示,本实施方式中,计算节点A与计算节点B之间的网络拓扑的动态规划操作具体如下所述。
在本实施方式中,可随已经建立网络连接的成对的两个计算节点间的网络流量的变化,将高于网络流量阈值的成对的两个计算节点通过计算节点中与OVS虚拟交换机连接的物理网卡直接连通,并将数据通过数据网络交换机10到达对端的计算节点中的网络(例如上文所述的网络X与网络Y)。具体的,网络节点40实时上报本节点(即网络节点40)最新的网络路由信息。用户通过API向Fast-DVR控制器70下发自定义配置后,计算节点上的Fast-DVR控制器70将实时监控从OVS虚拟交换机流出的网络流量。
当监测到网络流量触发用户下发的自定义配置中的网络流量阈值后,Fast-DVR控制器70会及时更新OVS虚拟交换机上的二层交换流表、三层路由流表和数据通道,触发类型主要分为以下两种:
当Fast-DVR控制器70监测计算节点A上的网络X与计算节点B(其他计算节点可能为多个,但一定是成对互联的)上的另一网络Y之间的网络流量增长到自定义配置的网络流量阈值时,Fast-DVR控制器70会对这些计算节点进行以下操作:
1、在计算节点A、计算节点B上的OVS虚拟交换机A02及OVS虚拟交换机B02中的三层路由流表中添加或修改网络X与网络Y间的路由规则;
2、在计算节点A、计算节点B上的OVS虚拟交换机A02及OVS虚拟交换机B02通道网桥上添加或修改计算节点A与计算节点B间的数据通道;
3、在计算节点A、计算节点B上的OVS虚拟交换机A02及OVS虚拟交换机B02中的二层交换流表中添加或修改网络X与网络Y间的交换规则,将计算节点A上的网络X与计算节点B上的网络Y之间所分发的网络数据直接发往上一步骤设置的数据通道,如图5所示(黑色粗虚线表示网络X与网络Y之间直接建立连接时所形成的数据链路,且该数据链路是双向的)。从而在计算节点A与计算节点B之间建立直接的数据链路,并避免通过网络节点40。
当Fast-DVR控制器70监测计算节点A上的某个网络X与计算节点B(其他计算节点可能为多个)上的另一网络Y之间的网络流量降低到自定义配置的网络流量阈值时,Fast-DVR控制器70会对这些计算节点进行以下操作:
1、在计算节点A、计算节点B上的OVS虚拟交换机A02、OVS虚拟交换机B02三层路由流表中删除或修改网络X与网络Y间的路由规则;
2、在计算节点A、计算节点B上的OVS虚拟交换机的通道网桥上删除或修改计算节点A与计算节点B间的数据链路;
3、在计算节点A、计算节点B上的OVS虚拟交换机A02、OVS虚拟交换机B02二层交换流表中删除或修改网络X与网络Y间的交换规则,将计算节点A上的网络X与计算节点B上的网络Y之间所形成的数据包在转发过程中通过网络节点40进行转发,以形成双向的数据通道,如图4所示(黑色粗虚线表示网络X与网络Y之间直接建立连接时所形成的数据链路,且该数据链路是双向的)。
在本实施方式中,实现了对计算节点上网络流量的监控,并通过网络节点40和计算节点实现了网络路由功能,既简化了整个数据中心的拓扑结构又能够显著的减少了网络节点40的网络吞吐压力,提高了数据中心整体的网络性能。
本实施方式所示出的方法,能够实时监控计算节点中的OVS虚拟交换机的网络流量,将集中式路由方式和分布式路由方式有机结合,既保留了一个全功能的集中式路由方式来处理所有缺省的路由请求,又也可随着不同计算节点间的不同网络所形成的数据链路流量的变化,采用二层转发及三层路由等方式,将流量大、性能要求高的计算节点之间的数据链路直接连通的方式,并将之作为补充。
因此,本实施方式所示出的一种在数据中心的计算节点间实现高速分布式路由的方法在计算节点保留二层转发功能的基础之上,添加了少量的三层路由规格,在不影响计算节点工作效率的前提下,又能够提高对较大数据规模的数据链路的支持能力,从而提高了整个数据中心以及Openstack系统30网络数据的整体吞吐能力,具有非常良好的用户体验,避免了网络节点40承担过重的数据分发任务。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。