一种网络流量控制方法和计算节点与流程

文档序号:13391451阅读:432来源:国知局
一种网络流量控制方法和计算节点与流程

本发明实施例涉及云计算网络虚拟化技术领域,尤其涉及一种网络流量控制方法和计算节点。



背景技术:

在基础设施即服务平台(infrastructureasaservice,简称iaas)中,存在计算节点、存储节点和网络节点等设备,主要为用户提供各种服务。其中,计算节点上创建有虚拟机,虚拟机与虚拟机之间的通信产生的东西流量只需要经过计算节点,虚拟机与外网通信产生的南北流量都要经过网络节点上设置的分布式路由,这种架构很容易出现网络节点的单点问题,影响到所有虚拟机与外网的通信。

为了解决网络节点存在的单点问题,将分布式路由设置在计算节点上,这样虚拟机与外网通信的南北流量直接从计算节点出外网,但是需要对虚拟机与外网通信的南北流量进行控制时,南北流量需要发送至网络节点上的网络服务质量(qualityofservice,简称qos)模块,完成对南北流量进行控制,再通过网络节点发送至外网。如图1所示现有技术中的系统架构中,虚拟机产生的网络流量,依次经过计算节点内部的集成网桥、分布式路由、隧道节点,通过计算节点的物理网卡发送至网络节点,进入网络节点上的网络服务质量模块进行流量控制,之后再通过网络节点的物理网卡发送至外网。这种对网络流量进行限度的方式会导致网络节点的负载过高,依旧存在单点故障问题。

因此,亟需一种网络流量控制方法,实现解决网络节点的单点故障问题,并实现对虚拟机的网络流量进行控制,保证虚拟机的网络服务质量。



技术实现要素:

本发明实施例提供一种网络流量控制方法和计算节点,实现解决网络节点的单点故障问题,并实现对虚拟机的网络流量进行控制,保证虚拟机的网络服务质量。

本发明实施例提供一种网络流量控制方法,适用于包括虚拟机、集成网桥、分布式路由、外网网桥、网络服务质量模块和第一物理网卡的计算节点;所述方法包括:所述虚拟机产生访问外网的第一数据包,并将所述第一数据包发送至所述集成网桥;所述集成网桥将所述第一数据包发送至所述分布式路由;所述分布式路由对接收到的所述第一数据包进行处理,并将处理后第一数据包通过所述外网网桥发送至所述网络服务质量模块;所述网络服务质量模块对所述处理后第一数据包进行流量控制,并通过所述第一物理网卡发送至所述外网。

可选地,还包括:所述第一物理网卡接收到外网访问所述虚拟机的第二数据包,并将所述第二数据包发送至所述网络服务质量模块;所述网络服务质量模块对所述第二数据包进行流量控制,并通过所述外网网桥将经过流量控制的所述第二数据包发送至所述分布式路由;所述分布式路由对所述第二数据包进行处理,并将处理后第二数据包通过所述集成网桥发送至所述虚拟机。

可选地,所述计算节点还包括第二物理网卡和隧道网桥;所述方法还包括:第二物理网卡接收网络节点发送的第三数据包;其中,所述第三数据包中包括所述网络节点上的动态主机配置协议dhcp命名空间为虚拟机分配的ip地址;所述第二物理网卡将所述第三数据包发送至所述隧道网桥;所述隧道网桥将所述第三数据包发送至所述集成网桥,并通过所述集成网桥发送至所述虚拟机以完成所述虚拟机的创建。

可选地,所述网络服务质量模块通过以下方式进行流量控制,包括:按照业务类型将接收到的数据包分配至所述网络服务质量模块中的各个队列中;其中,每个队列对应存放一种业务类型的数据包;根据各个队列的优先级,所述网络数据模块依次处理各个队列中优先级最高的队列中的数据包。

可选地,所述分布式路由和所述网络服务质量模块之间通过至少两个外网网桥连接,每个外网网桥对应一个网络平面;所述方法还包括:若所述至少两个外网网桥接收到所述分布式路由发送的处理后第一数据包,则通过与所述第一数据包网络平面一致的外网网桥将所述处理后第一数据包发送至所述网络服务质量模块;若所述至少两个外网网桥接收到所述网络服务质量模块发送的所述第二数据包,则通过与所述第二数据包网络平面一致的外网网桥将所述第二数据包发送至所述分布式路由。

可选地,所述第一数据包中的源ip地址为所述虚拟机的ip地址,目的ip地址为外网ip地址;所述分布式路由对接收到的所述第一数据包进行处理,并将处理后第一数据包通过所述外网网桥发送至所述网络服务质量模块,包括:若所述虚拟机与所述外网连接方式为桥接模式,则所述分布式路由将所述第一数据包通过所述外网网桥转发至所述网络服务质量模块;若所述虚拟机与所述外网连接方式为网络地址转换(networkaddresstranslation,简称nat)模式,则所述分布式路由将所述第一数据包中的源ip地址更新为所述外网网段ip地址,并将更新后第一数据包发送至所述外网。

可选地,所述分布式路由对所述第二数据包进行处理,并将处理后第二数据包通过所述集成网桥发送至所述虚拟机,包括:若所述虚拟机与所述外网连接方式为桥接模式,所述第二数据包中的源ip地址为外网ip地址,目的ip地址为所述虚拟机的ip地址,则所述分布式路由将所述第二数据包通过所述外网网桥转发至所述网络服务质量模块;若所述虚拟机与所述外网连接方式为nat模式,所述第二数据包中的源ip地址为外网ip地址,目的ip地址为外网网段的ip地址,则所述分布式路由将所述第二数据包中的目的ip地址更新为所述虚拟机所在子网的ip地址,并将更新后第二数据包通过所述集成网桥发送至所述虚拟机。

本发明实施例提供一种用于网络流量控制的计算节点,包括虚拟机、集成网桥、分布式路由、外网网桥、网络服务质量模块和第一物理网卡;所述虚拟机,用于产生访问外网的第一数据包,并将所述第一数据包发送至所述集成网桥;所述集成网桥,用于将所述第一数据包发送至所述分布式路由;所述分布式路由,用于对接收到的所述第一数据包进行处理,并将处理后第一数据包发送至所述外网网桥;所述外网网桥,用于将从所述分布式路由接收到的处理后第一数据包发送至所述网络服务质量模块;所述网络服务质量模块,用于对所述处理后第一数据包进行流量控制,并将经过流量控制的所述第一数据包发送至所述第一物理网卡;所述第一物理网卡,用于将从所述网络服务质量模块接收到的所述第一数据包发送至所述外网。

可选地,所述第一物理网卡,还用于:接收到外网访问所述虚拟机的第二数据包,并将所述第二数据包发送至所述网络服务质量模块;所述网络服务质量模块,还用于:对所述第二数据包进行流量控制,并将经过流量控制的所述第二数据包发送至所述外网网桥;所述外网网桥,还用于:将接收到的所述第二数据包发送至所述分布式路由;所述分布式路由,还用于:对所述第二数据包进行处理,并将处理后第二数据包发送至所述集成网桥;所述集成网桥,还用于:将接收到的所述处理后第二数据包发送至所述虚拟机。

可选地,还包括第二物理网卡和隧道网桥;所述第二物理网卡,用于接收网络节点发送的第三数据包,并将所述第三数据包发送至所述隧道网桥;其中,所述第三数据包中包括所述网络节点上的动态主机配置协议dhcp命名空间为虚拟机分配的ip地址;所述隧道网桥,用于将所述第三数据包发送至所述集成网桥,并通过所述集成网桥发送至所述虚拟机以完成所述虚拟机的创建。

可选地,所述网络服务质量模块,用于:按照业务类型将接收到的数据包分配至所述网络服务质量模块中的各个队列中;其中,每个队列对应存放一种业务类型的数据包;根据各个队列的优先级,依次处理各个队列中优先级最高的队列中的数据包。

可选地,所述分布式路由和所述网络服务质量模块之间通过至少两个外网网桥连接,每个外网网桥对应一个网络平面;所述至少两个外网网桥中的每个外网网桥,用于:若接收到所述分布式路由发送的与所述外网网桥的网络平面一致的第一数据包,则将与所述外网网桥的网络平面一致的第一数据包发送至所述网络服务质量模块;若接收到所述网络服务质量模块发送的与所述外网网桥的网络平面一致的所述第二数据包,则将所述第二数据包发送至所述分布式路由。

可选地,所述第一数据包中的源ip地址为所述虚拟机的ip地址,目的ip地址为外网ip地址;所述分布式路由,用于:若所述虚拟机与所述外网连接方式为桥接模式,则将所述第一数据包通过所述外网网桥转发至所述网络服务质量模块;若所述虚拟机与所述外网连接方式为nat模式,则将所述第一数据包中的源ip地址更新为所述外网网段的ip地址,并将更新后第一数据包发送至所述外网。

可选地,所述第二数据包中的源ip地址为外网ip地址,目的ip地址为所述虚拟机的ip地址;所述分布式路由,用于:若所述虚拟机与所述外网连接方式为桥接模式,所述第二数据包中的源ip地址为外网ip地址,目的ip地址为所述虚拟机的ip地址,则将所述第二数据包通过所述外网网桥转发至所述网络服务质量模块;若所述虚拟机与所述外网连接方式为nat模式,所述第二数据包中的源ip地址为外网ip地址,目的ip地址为外网网段的ip地址,则将所述第二数据包中的目的ip地址更新为所述虚拟机所在子网的ip地址,并将更新后第二数据包通过所述集成网桥发送至所述虚拟机。

本发明实施例中提供一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,当所述处理器执行所述存储器存储的指令时,所述计算机设备用于执行上述任一实施例所述的方法。

本发明实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述任一实施例所述的方法。

本发明实施例中提供的网络流量控制方法,适用于包括虚拟机、集成网桥、分布式路由、外网网桥、网络服务质量模块和第一物理网卡的计算节点;虚拟机产生访问外网的第一数据包,并将第一数据包发送至集成网桥;集成网桥将第一数据包发送至分布式路由;分布式路由对接收到的第一数据包进行处理,并将处理后第一数据包通过外网网桥发送至网络服务质量模块;网络服务质量模块对处理后第一数据包进行流量控制,并通过第一物理网卡发送至外网。可见,本发明实施例中虚拟机访问外网的网络流量,经过计算节点内的分布式路由的处理和网络服务质量模块的流量控制,并通过第一物理网卡出外网,不需要像现有技术中的网络流量经过网络节点进行流量控制;如此,一方面,可以实现在计算节点内部对虚拟机的网络流量进行控制;另一方面,经过控制之后网络流量从计算节点出外网,而不需要经过网络节点出外网,避免了经过网络节点的负载过高造成的单点故障问题。进一步,相对于现有技术中的系统架构中(如图1所示)网络流量的流经路径,本发明实施例中的虚拟机访问外网的网络流量经过的路径较短,因此,可以降低第一数据包从虚拟机到达外网的时延,进而保证虚拟机的网络服务质量。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。

图1为现有技术中的系统架构示意图;

图2为本发明实施例适用的一种系统架构示意图;

图3为本发明实施例提供的一种网络流量控制方法流程示意图;

图4为本发明实施例提供的另一种网络流量控制方法流程示意图;

图5为本发明实施例提供的qos模块的结构示意图;

图6为本发明实施例提供的分布式路由的结构示意图;

图7为本发明实施例提供的用于网络流量控制的计算节点的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图2示例性示出了本发明实施例适用的一种系统架构示意图。

如图2所示,本发明实施例中的系统架构包括计算节点210、网络节点220、物理交换机230、外网240;其中,计算节点210与网络节点220通过物理交换机230连接。

如图2所示,计算节点210包括虚拟机211、linux网桥212、集成网桥213、分布式路由214、外网网桥215、qos模块216、第一物理网卡217、隧道网桥218和第二物理网卡219。其中,集成网桥213包括portqvo、portqg、portqr、patch-tun等端口设备;分布式路由214包括公网命名空间和路由命名空间。其中,虚拟机211通过porttap挂载在linux网桥212。集成网桥213通过portqvo端口与linux网桥212连接,通过portqr端口与分布式路由214中的路由命名空间连接,通过portqg端口与分布式路由214中的公网命名空间连接;此外,集成网桥213还通过外网网桥215与qos模块216连接;可选的,集成网桥213可通过多个外网网桥215与qos模块216连接。qos模块216与第一物理网卡217连接;第一物理网卡217连接外网240,虚拟机211访问外网240的网络流量经过第一物理网卡217进入外网240,外网240访问虚拟机211的网络流量经过第一物理网卡217进入计算节点210,进而进入虚拟机211。

如图2所示,网络节点220包括虚拟接口221、隧道网桥222、集成网桥223和动态主机配置协议(dynamichostconfigurationprotocol,简称dhcp)命名空间224,其中,虚拟接口221,一方面通过物理交换机230连接计算节点210,另一方面连接隧道网桥222,隧道网桥222连接集成网桥223,集成网桥223连接dhcp命名空间224,在计算节点210上创建虚拟机211时,网络节点220上的dhcp命名空间224为虚拟机211分配ip地址。

本发明实施例提供的系统架构中,存在多种网桥:linux网桥、集成网桥、隧道网桥和外网网桥等,其中,linux网桥用于挂载虚拟机;集成网桥(br-int)、隧道网桥(br-tun)和外网网桥(br-ex)为虚拟交换机上的二层lan网桥。如图2所示,在计算节点210中,集成网桥213相当于虚拟交换机的功能,用于将计算节点210上的所有虚拟机211连接在集成网桥213上;隧道网桥218用于充当一个通道层,通过它与其他节点上的隧道网桥通信,比如与网络节点220上的隧道网桥222进行通信。在网络节点220中,集成网桥223相当于交换机的功能,用于连接dhcp命名空间224;隧道网桥222用于充当一个通道层,通过它与其他节点上的隧道网桥通信,比如与计算节点210上的隧道网桥218进行通信。外网网桥215连接外部网络,用于实时接收网络上的数据包。

基于图2所示的系统架构,图3示例性示出了本发明实施例提供的一种网络流量控制方法流程示意图。如图3所示,本发明实施例提供的网络流量控制方法,适用于包括虚拟机、集成网桥、分布式路由、外网网桥、网络服务质量模块和第一物理网卡的计算节点;该方法包括以下步骤:

步骤301:虚拟机产生访问外网的第一数据包,并将第一数据包发送至集成网桥;

步骤302:集成网桥将第一数据包发送至分布式路由;

步骤303:分布式路由对接收到的第一数据包进行处理,并将处理后第一数据包通过外网网桥发送至网络服务质量模块;

步骤304:网络服务质量模块对处理后第一数据包进行流量控制,并通过第一物理网卡发送至外网。

本发明实施例中,虚拟机访问外网的网络流量,经过计算节点内的分布式路由进行处理和网络服务质量模块的流量控制,并通过第一物理网卡出外网,不需要像现有技术中的网络流量经过网络节点进行流量控制;如此,一方面,可以实现在计算节点内部对虚拟机的网络流量进行控制;另一方面,经过控制之后网络流量从计算节点出外网,而不需要经过网络节点出外网,避免了经过网络节点的负载过高造成的单点故障问题。进一步,相对于现有技术中的系统架构中(如图1所示)网络流量的流经路径,本发明实施例中的虚拟机访问外网的网络流量经过的路径较短,因此,可以降低第一数据包从虚拟机到达外网的时延,进而保证虚拟机的网络服务质量。

基于图2中的系统架构和图3中的网络流量控制方法,针对虚拟机访问外网的网络流量在计算节点中的流向进行举例说明。虚拟机211产生的第一数据包发送至linux网桥212,linux网桥212将网桥发送至集成网桥213,通过集成网桥213中的portqr端口进入分布式路由214中的路由命名空间,再从路由命名空间流向公网命名空间,通过portqg端口进入集成网桥213,之后通过外网网桥215发送至网络服务质量模块216进行流量控制,再通过第一物理网卡217发送至外网240。

相应的,图4示例性示出了本发明实施例提供的另一种网络流量控制方法流程示意图。如图4所示,本发明实施例提供的另一种网络流量控制方法,适用于包括虚拟机、集成网桥、分布式路由、外网网桥、网络服务质量模块和第一物理网卡的计算节点;该方法包括以下步骤:

步骤401:第一物理网卡接收到外网访问虚拟机的第二数据包,并将第二数据包发送至网络服务质量模块;

步骤402:网络服务质量模块对第二数据包进行流量控制,并通过外网网桥将经过流量控制的第二数据包发送至分布式路由;

步骤403:分布式路由对第二数据包进行处理,并将处理后第二数据包通过集成网桥发送至虚拟机。

本发明实施例中,一方面,外网访问虚拟机的网络流量直接从外网进入计算节点的第一物理网卡,不需要经过网络节点在进入计算节点,可以降低网络节点的负载,进而解决网络节点的单点故障问题;另一方面,进入计算节点内部的网络流量经过网络服务质量模块的控制之后进入分布式路由进行处理,之后进入虚拟机,可以实现在计算节点中对外网访问虚拟机的网络流量进行控制。进一步,相对于现有技术中的系统架构(如图1所示)中网络流量的流经路径,本发明实施例中的外网访问虚拟机的网络流量经过的路径较短,因此,可以降低第二数据包从外网到达虚拟机的时延,进而保证虚拟机的网络服务质量。

本发明实施例提供的系统架构中,虚拟机的网络流量除了外网与虚拟机之间通信产生的南北流量(如上述实施例中的第一数据包和第二数据包)、虚拟机与虚拟机之间通信产生的东西流量,还包括计算节点与网络节点之间通信产生的dhcp流量。

一种可选的实施方式中,计算节点还包括第二物理网卡和隧道网桥;网络流量控制方法还包括:第二物理网卡接收网络节点发送的第三数据包;其中,第三数据包中包括网络节点上的动态主机配置协议dhcp命名空间为虚拟机分配的ip地址;第二物理网卡将第三数据包发送至隧道网桥;隧道网桥将第三数据包发送至集成网桥,并通过集成网桥发送至虚拟机以完成虚拟机的创建。如此,虚拟机的南北流量和东西流量全部在计算节点上处理,不经过网络节点;只有dhcp流量(本发明实施例中的第三数据包)从网络节点流向计算节点中的虚拟机,可以降低网络节点的负载。

下面对qos模块如何实现网络流量控制进行详细介绍。

图5示例性示出了本发明实施例提供的qos模块的结构示意图。如图5所示,qos模块500包括网卡设备一510、物理设备520、虚拟设备530、网卡设备二540。其中,物理设备520中包括队列规则521、过滤器522、过滤器523、队列规则524;虚拟设备530中包括队列规则531和过滤器532。

本发明实施例中,qos模块500一端连接外网网桥,另一端连接第一物理网卡。若网卡设备一510连接外网网桥,则网卡设备二540连接第一物理网卡;若网卡设备一510连接第一物理网卡,则网卡设备二540连接外网网桥。下面以网卡设备一510连接外网网桥、网卡设备二540连接第一物理网卡为例进行介绍。

针对虚拟机访问外网的网络流量,qos模块500从外网网桥接收到第一数据包,从网卡设备一510进入物理设备520中的队列规则521,经过过滤器522进行分类,再网卡设备二540发送至第一物理网卡,然后发送至外网。

针对外网访问虚拟机的网络流量,qos模块500从第一物理网卡收到第二数据包,从网卡设备二540进入物理设备520中的队列规则523,经过过滤器524进入虚拟设备530中的队列规则531,经过过滤器532进行分类,再通过网卡设备一510发送至外网网桥,然后发送至虚拟机。

基于上述实施例以及图5,网络服务质量模块通过以下方式进行流量控制,包括:按照业务类型将接收到的数据包分配至网络服务质量模块中的各个队列中;其中,每个队列对应存放一种业务类型的数据包;根据各个队列的优先级,网络数据模块依次处理各个队列中优先级最高的队列中的数据包。可选的,本发明实施例中的业务类型可以为udp协议类型、tcp协议类型、icmp协议类型、snp协议类型等。如此,可以实现对虚拟机访问外网的网络流量,以及外网访问虚拟机的网络流量进行控制,比如,根据用户需求使用基于操作系统内核的流量控制进行网络服务质量控制功能,在qos模块接收到外网向虚拟机发送的大量广播报文时,将广播报文分配至优先级最低的队列,可以在其他高优先级队列中的数据包处理完之后再进行处理;而且,qos模块还可以对虚拟机出外网和外网进入队列入口处的流量速率进行控制,比如将速度限制在10m/s,不至于出现大量的广播包,可以避免外网网桥广播风暴。

本发明实施例提供的系统架构中存在多个网络平面,比如存储网,带外管理网,控制网,管理网等,分布式路由和qos模块之间容易出现网络环路或者广播风暴的问题。为了解决这个问题,本发明实施例中,分布式路由和网络服务质量模块之间通过至少两个外网网桥连接,每个外网网桥对应一个网络平面。由于各个外网网桥之间的功能不同,流经不同外网网桥的网络流量相互之间隔离,如此,可以实现将这些多个网络平面的相互隔离。而且,将这些表示不同网络平面的虚拟网桥同时连接到qos模块,由于nos模块的网络队列的分类,就可以规避掉大量的广播包,解决广播风暴的问题,避免了网络环路。

一种可选的实施方式中,若至少两个外网网桥接收到分布式路由发送的处理后第一数据包,则通过与第一数据包网络平面一致的外网网桥将处理后第一数据包发送至网络服务质量模块;如此,可以实现对虚拟机访问外网的不同网络平面的网络流量进行隔离,并通过qos模块进行流量控制。若至少两个外网网桥接收到网络服务质量模块发送的第二数据包,则通过与第二数据包网络平面一致的外网网桥将第二数据包发送至分布式路由。如此,可以实现对外网访问虚拟机的网络流量通过qos模块进行流量控制,并且可以实现将流量控制之后的不同网络平面的网络流量进行隔离,并发送至分布式路由。

本发明实施例中,若分布式路由接收到数据包,根据接收到的数据包的源ip地址和目的ip地址,对数据包的发送路径进行选择。图6示例性示出了本发明实施例提供的分布式路由的结构示意图。如图6所示,分布式路由600中包括公网命名空间610和路由命名空间620,其中,公网命名空间610包括fg端口611和fpr端口612;路由命名空间620包括rfp端口621和qr端口622。

基于图5,数据包在分布式路由内部经过的路径有两种。一种路径为:若分布式路由600接收到第一数据包,从路由命名空间620的qr端口622接收到第一数据包并处理,从rfp端口621发送至公网命名空间610的fpr端口612,在公网命名空间610处理之后,从fg端口611发送至qos模块,然后出外网。另一种路径为:若分布式路由600接收到第二数据包,从公网命名空间610的fg端口611接收到第二数据包并处理,从fpr端口612发送至路由命名空间620的rfp端口621,在路由命名空间620处理之后,从qr端口622发送至集成网桥,然后发送至虚拟机。

本发明实施例中,第一数据包中的源ip地址为虚拟机的ip地址,目的ip地址为外网ip地址;分布式路由对接收到的第一数据包进行处理,并将处理后第一数据包通过外网网桥发送至网络服务质量模块,包括以下两种情况。

第一种情况,若虚拟机与外网连接方式为桥接模式,则分布式路由将第一数据包通过外网网桥转发至网络服务质量模块。这种情况下,虚拟机的ip地址暴露给外网,那么虚拟机可以直接和外网进行通信,不需要转换源ip地址,分布式路由直接转发第一数据包至qos模块。

第二种情况,若虚拟机与外网连接方式为nat模式,则分布式路由将第一数据包中的源ip地址更新为外网网段的ip地址,并将更新后第一数据包发送至外网。举个例子,虚拟机的ip地址10.10.10.1,虚拟机所在子网的ip地址为10.10.10.0/24,虚拟机的ip地址未暴露给外网,那么虚拟机无法直接和外网进行通信,第一数据包需要经过公网命名空间进行源网络地址转换(sourcenetworkaddresstranslation,简称snat),将第一数据包中的源ip地址10.10.10.1更新为192.168.0.2,在将更新后数据包发送至外网。

举个例子,虚机访问外网的第一数据包:源ip地址为10.10.10.1,目的ip地址即外网ip地址为192.168.0.5,此时需要在分布式路由中做一个源地址转换,将源ip地址10.10.10.1转换为外网网段中的一个ip地址,比如192.168.0.2(转换后的ip地址只要在192.168.0.0/24这个网段里面的地址、且不是192.168.0.5都可以),由于192.168.0.5和192.168.0.2在同一个网段里面,所以网络是可达的,两个地址唯一的区别就是,192.168.0.5可以认为是外网一台物理服务器的地址,是真实存在的,192.168.0.2是iaas平台分配的地址,这个地址存在于分布式路由模块里面,位于一个网络端口上。

本发明实施例中,分布式路由接收到外网访问虚拟机的第二数据包,对第二数据包进行处理,并将处理后第二数据包通过集成网桥发送至虚拟机,包括以下两种情况。

第一种情况,若虚拟机与外网连接方式为桥接模式,第二数据包中的源ip地址为外网ip地址,目的ip地址为虚拟机的ip地址,则分布式路由将第二数据包通过外网网桥转发至网络服务质量模块;这种情况下,虚拟机的ip地址暴露给外网,那么虚拟机可以直接和外网进行通信,不需要转换目的ip地址,分布式路由直接转发第一数据包至虚拟机。

第二种情况,若虚拟机与外网连接方式为nat模式,第二数据包中的源ip地址为外网ip地址,目的ip地址为外网网段的ip地址,则分布式路由将第二数据包中的目的ip地址更新为虚拟机所在子网的ip地址,并将更新后第二数据包通过集成网桥发送至虚拟机。

举个例子,虚拟机的ip地址10.10.10.1,虚拟机所在子网的ip地址为10.10.10.0/24,虚拟机的ip地址未暴露给外网,那么虚拟机无法直接和外网进行通信。分布式路由在接收到第二数据包时,需要经过公网命名空间进行目的地址转换(destinationnetworkaddresstranslation,简称dnat),将第二数据包中的目的ip地址192.168.0.2更新为10.10.10.1,在将更新后数据包发送至虚拟机。

举个例子,外网访问虚机的第二数据包:源ip地址即外网ip地址为192.168.0.5(外网物理服务器的地址),目的ip地址为外网网段的ip地址192.168.0.2(分布式路由模块里面的地址,可以认为是在一个网络端口上),此时需要在分布式路由中做一个目的ip地址转换,将目的ip地址192.168.0.2转换为虚拟机的ip地址10.10.10.1(由于192.168.0.5和192.168.0.2在同一个网段里面,所以网络是可达的,两个地址唯一的区别就是,192.168.0.5可以认为是外网一台物理服务器的地址,是真实存在,192.168.0.2是iaas平台分配的地址,这个地址存在于分布式路由模块里面),如此,更新后第二数据包才可以发送至虚拟机上。

通过上述实施例可以看出,一方面,虚拟机访问外网的网络流量,经过计算节点内的分布式路由进行处理和网络服务质量模块的流量控制,并通过第一物理网卡出外网,不需要像现有技术中的网络流量经过网络节点进行流量控制;如此,可以实现在计算节点内部对虚拟机的网络流量进行控制;经过控制之后网络流量从计算节点出外网,而不需要经过网络节点出外网,避免了经过网络节点的负载过高造成的单点故障问题。另一方面,外网访问虚拟机的网络流量直接从外网进入计算节点的第一物理网卡,不需要经过网络节点在进入计算节点,可以降低网络节点的负载,进而解决网络节点的单点故障问题;进入计算节点内部的网络流量经过网络服务质量模块的控制之后进入分布式路由进行处理,之后进入虚拟机,可以实现在计算节点中对外网访问虚拟机的网络流量进行控制。进一步,相对于现有技术中的系统架构中网络流量的流经路径,本发明实施例中的虚拟机访问外网的网络流量和外网访问虚拟机的网络流量经过的路径较短,因此,可以降低第一数据包从虚拟机到达外网的时延,进而保证虚拟机的网络服务质量。

基于以上实施例以及相同构思,图7为本发明实施例提供的用于网络流量控制的计算节点的结构示意图,如图7所示,该计算节点700可以对应上述方法中的计算节点,还可以对应上述图1中的210。该计算节点700可以实现如上图3中所示的任一项或任多项对应的方法步骤。该计算节点700可以包括虚拟机701、集成网桥702、分布式路由703、外网网桥704、网络服务质量模块705和第一物理网卡706。可选地,还包括第二物理网卡707和隧道网桥708。

所述虚拟机701,用于产生访问外网的第一数据包,并将所述第一数据包发送至所述集成网桥702;所述集成网桥702,用于将所述第一数据包发送至所述分布式路由703;所述分布式路由703,用于对接收到的所述第一数据包进行处理,并将处理后第一数据包发送至所述外网网桥704;所述外网网桥704,用于将从所述分布式路由703接收到的处理后第一数据包发送至所述网络服务质量模块705;所述网络服务质量模块705,用于对所述处理后第一数据包进行流量控制,并将经过流量控制的所述第一数据包发送至所述第一物理网卡706;所述第一物理网卡706,用于将从所述网络服务质量模块705接收到的所述第一数据包发送至所述外网。

本发明实施例中,虚拟机访问外网的网络流量,经过计算节点内的分布式路由进行处理和网络服务质量模块的流量控制,并通过第一物理网卡出外网,不需要像现有技术中的网络流量经过网络节点进行流量控制;如此,一方面,可以实现在计算节点内部对虚拟机的网络流量进行控制;另一方面,经过控制之后网络流量从计算节点出外网,而不需要经过网络节点出外网,避免了经过网络节点的负载过高造成的单点故障问题。进一步,相对于现有技术中的系统架构中(如图1所示)网络流量的流经路径,本发明实施例中的虚拟机访问外网的网络流量经过的路径较短,因此,可以降低第一数据包从虚拟机到达外网的时延,进而保证虚拟机的网络服务质量。

可选的,所述第一物理网卡706,还用于:接收到外网访问所述虚拟机701的第二数据包,并将所述第二数据包发送至所述网络服务质量模块705;所述网络服务质量模块705,还用于:对所述第二数据包进行流量控制,并将经过流量控制的所述第二数据包发送至所述外网网桥704;所述外网网桥704,还用于:将接收到的所述第二数据包发送至所述分布式路由703;所述分布式路由703,还用于:对所述第二数据包进行处理,并将处理后第二数据包发送至所述集成网桥702;所述集成网桥702,还用于:将接收到的所述处理后第二数据包发送至所述虚拟机701。

可选的,所述第二物理网卡707,用于接收网络节点发送的第三数据包,并将所述第三数据包发送至所述隧道网桥708;其中,所述第三数据包中包括所述网络节点上的动态主机配置协议dhcp命名空间为虚拟机701分配的ip地址;所述隧道网桥708,用于将所述第三数据包发送至所述集成网桥702,并通过所述集成网桥702发送至所述虚拟机701以完成所述虚拟机701的创建。

可选的,所述网络服务质量模块705,用于:按照业务类型将接收到的数据包分配至所述网络服务质量模块705中的各个队列中;其中,每个队列对应存放一种业务类型的数据包;根据各个队列的优先级,依次处理各个队列中优先级最高的队列中的数据包。

可选的,所述分布式路由703和所述网络服务质量模块705之间通过至少两个外网网桥704连接,每个外网网桥704对应一个网络平面;所述至少两个外网网桥704中的每个外网网桥704,用于:若接收到所述分布式路由703发送的与所述外网网桥704的网络平面一致的第一数据包,则将与所述外网网桥704的网络平面一致的第一数据包发送至所述网络服务质量模块705;若接收到所述网络服务质量模块705发送的与所述外网网桥704的网络平面一致的所述第二数据包,则将所述第二数据包发送至所述分布式路由703。

可选的,所述第一数据包中的源ip地址为所述虚拟机701的ip地址,目的ip地址为外网ip地址;所述分布式路由703,用于:若所述虚拟机701与所述外网连接方式为桥接模式,则将所述第一数据包通过所述外网网桥704转发至所述网络服务质量模块705;若所述虚拟机701与所述外网连接方式为nat模式,则将所述第一数据包中的源ip地址更新为外网网段的ip地址,并将更新后第一数据包发送至所述外网。

可选的,所述分布式路由703,用于:若所述虚拟机701与所述外网连接方式为桥接模式,所述第二数据包中的源ip地址为外网ip地址,目的ip地址为所述虚拟机701的ip地址,则将所述第二数据包通过所述外网网桥704转发至所述网络服务质量模块705;若所述虚拟机701与所述外网连接方式为nat模式,所述第二数据包中的源ip地址为外网ip地址,目的ip地址为外网网段的ip地址,则将所述第二数据包中的目的ip地址更新为所述虚拟机701所在子网的ip地址,并将更新后第二数据包通过所述集成网桥702发送至所述虚拟机701。

该计算节点所涉及的与本发明实施例提供的技术方案相关的概念,解释和详细说明及其他步骤请参见前述方法或其他实施例中关于这些内容的描述,此处不做赘述。

基于以上实施例以及相同构思,本发明实施例中提供一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,当所述处理器执行所述存储器存储的指令时,所述计算机设备用于执行上述任一实施例所述的方法。

需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本发明的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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