云间通信方法及相关设备、云间通信配置方法及相关设备与流程

文档序号:11147882阅读:581来源:国知局
云间通信方法及相关设备、云间通信配置方法及相关设备与制造工艺

本申请涉及云间通信技术领域,更具体地,涉及云间通信方法及相关设备、云间通信的配置方法及相关设备。



背景技术:

租户可以向云服务提供商,请求创建云平台。云服务提供商使用大量通用服务器组成资源池,为租户提供包括计算、存储及网络等一体化的云平台。租户并不需要关注云平台的实现细节,只需提出需求,如平台包括什么规格的计算、什么容量的存储、以及计算与存储资源之间如何通过网络互连,云服务提供商的云管理系统便可以根据需求,生成相应的云平台并提供给租户。

为了保证云平台的安全性及稳定性,云平台通常被部署在多个云上。这样,当某个云由于不可抗拒的因素不可提供服务时,可以使用其他云上的计算及存储资源,从而避免云平台出现故障不可用的情况。

云平台跨云部署,因此,需要一种技术方案来实现多云之间的通信。



技术实现要素:

本申请提出一种云间通信的方法,用于实现部署在不同云内的虚拟机之间的通信。

为实现以上发明目的,本申请提供的技术方案如下:

第一方面,本申请实施例提供了一种云间通信方法,用于将第一虚拟机的数据包发送至第二虚拟机,所述第一虚拟机与所述第二虚拟机处于不同云中,且所述第一虚拟机与第一虚拟交换机部署在第一计算节点上,所述第二虚拟机与第二虚拟交换机部署在第二计算节点上;该方法包括:所述第一虚拟交换机接收到第一虚拟机的数据包后,确定所述数据包的第一跳节点为所述第二虚拟机所在的云内的网关节点;所述第一虚拟交换机通过所述第一计算节点与所述网关节点之间的隧道,将所述数据包发送至所述网关节点;所述网关节点接收到所述数据包后,确定所述数据包的第二跳节点为所述第二计算节点;所述网关节点通过自身与所述第二计算节点之间的隧道,将所述数据包发送至所述第二计算节点;所述第二计算节点上部署的所述第二虚拟交换机将所述数据包发送至所述第二虚拟机。在本实施例中,云间通信的数据包只经过两跳节点,分别为接收数据包的虚拟机所在云内的网关节点及接收数据包的虚拟机所在的计算节点,本实施例通信路径较短,通信效率更高。

在一个可能的设计中,所述第一虚拟交换机接收到第一虚拟机的数据包后,确定所述数据包的第一跳节点为所述第二虚拟机所在的云内的网关节点,具体包括:所述第一虚拟交换机接收到第一虚拟机的数据包后,根据所述数据包的目的地址及预生成的第一转发关系表,将所述目的地址对应的所述网关节点确定为第一跳节点;其中,所述第一转发关系表用于表示第二虚拟机与所述第二虚拟机所在的云内的网关节点之间的对应关系。本实现方式中,虚拟交换机使用转发关系表来确定数据包的第一跳节点,确定方式简单且易实现。

在一个可能的设计中,所述网关节点接收到所述数据包后,确定所述数据包的第二跳节点为所述第二计算节点,包括:所述网关节点接收到所述数据包后,根据所述数据包的目的地址及预生成的第二转发关系表,将所述目的地址对应的所述第二计算节点确定为第二跳节点;其中,所述第二转发关系表用于表示所述第二虚拟机与所述第二虚拟机所在的计算节点之间的对应关系。本实现方式中,网关节点同样使用转发关系表来确定数据包的第二跳节点,确定方式简单且易实现。

在一个可能的设计中,所述第一计算节点与所述网关节点之间的隧道是在所述第一虚拟交换机接收到第一虚拟机的数据包后建立的。所述网关节点与所述第二计算节点之间的隧道是在所述网关节点接收到所述数据包后建立的。本实现方式中,隧道是在有业务需求时才建立的,可以节省隧道资源。

另一方面,本申请实施例提供了一种云间通信的设置方法,包括:第一交换机代理模块若监控到与第一虚拟交换机相连的第一虚拟机上线,则通知第一网络控制器或所述网络协调器将所述第一虚拟机的连通性信息发送至第一网关代理模块;其中,所述连通性信息包含所述第一虚拟机的地址及所述第一虚拟机所在的计算节点的地址;所述第一网关代理模块依据所述连通性信息,为第一网关节点配置转发关系表;其中,所述第一虚拟机及所述第一网关节点部署在第一云内;所述网络协调器修改所述连通性信息,并将修改后的连通性信息发送至第二交换机代理模块;其中,所述修改后的连通性信息包含所述第一虚拟机的地址及所述第一网关节点的地址;所述第二交换机代理模块依据所述修改后的连通性信息,为第二虚拟交换机配置转发关系表;其中,所述第二交换机代理模块及所述第二虚拟交换机部署在第二云内。本实施例可以为网关节点及虚拟交换机配置转发关系表,使用转发关系表可以实现将一个云内的数据包通过两跳节点发送至另一云中。

在一个可能的设计中,在所述第一网关代理模块依据所述连通性信息,为第一网关节点配置转发关系表之后,还包括:所述第一网关节点建立与所述第一交换机代理模块所在的计算节点之间的隧道。在所述第二交换机代理模块依据所述修改后的连通性信息,为第二交换机配置转发关系表之后,还包括:所述第二交换机代理模块所在的计算节点建立与所述第一网关节点之间的隧道。在此实现方式中,隧道在业务数据发送之前建立,可以提高业务数据的发送效率。

在一个可能的设计中,所述网络协调器将修改后的连通性信息发送至第二交换机代理模块,包括:所述网络协调器将修改后的连通性信息发送至第二网络控制器;所述第二网络控制器保存所述修改后的连通性信息,并将所述修改后的连通性信息发送至第二交换机代理模块。本实现方式中,第二网络控制器可以保存连通性信息,以在接收数据包的虚拟机所在的云内新创建虚拟机后,交换机代理模块读取该连通性信息,并为虚拟交换机生成转发关系表。

所述第二交换机代理模块若监控到所述第二虚拟交换机连接第二虚拟机,且监测到所述第二虚拟交换机上并未配置有转发关系表,则从所述第二网络控制器读取所述修改后的连通性信息,并依据所述修改后的连通性信息,为所述第二虚拟交换机配置转发关系表。本实现方式中,接收数据包的虚拟机所在的云内新创建虚拟机后,交换机代理模块可以读取该连通性信息,并为虚拟交换机生成转发关系表。

在一个可能的设计中,在第一交换机代理模块若监控到第一虚拟交换机连接第一虚拟机之后,还包括:所述第一交换机代理模块从第一网络控制器上读取所述第一虚拟机所连接的虚拟端口的虚拟网络信息,并根据所述虚拟网络信息,生成流表记录并下发给所述第一虚拟交换机。这样,虚拟交换机可以使用流表转发数据包。

再一方面,本申请实施例提供了一种云间通信系统,该系统具有实现上述云间通信方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

再一方面,本申请实施例提供了一种云间通信设置系统,该系统具有实现上述云间通信设置方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

再一方面,本申请提供了一种计算节点,包括处理器和存储器,其中,所述处理器通过运行存储在所述存储器内的软件程序、调用存储在所述存储器内的数据,至少执行步骤:生成数据包后,确定所述数据包的下一跳节点为接收所述数据包的虚拟机所在的云内的网关节点;通过所述计算节点与所述网关节点之间的隧道,将所述数据包发送至所述网关节点。

再一方面,本申请提供了一种网关节点,包括处理器和存储器,其中,所述处理器通过运行存储在所述存储器内的软件程序、调用存储在所述存储器内的数据,至少执行步骤:接收到数据包后,确定所述数据包的下一跳节点为接收所述数据包的虚拟机所在的计算节点;通过所述网关节点与所述计算节点之间的隧道,将所述数据包发送至所述计算节点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其它的附图。

图1及图2为现有的两种云间通信方法的流程图;

图3为本申请提供的用于VM1向VM3通信的系统结构图;

图4为本申请提供的VM1向VM3通信方法的流程图;

图5为本申请提供的用于VM3向VM1通信的系统结构图;

图6为本申请提供的云间通信的配置系统的结构图;

图7为本申请提供的云间通信的配置方法的流程图;

图8为本申请提供的计算机通用框架示意图。

具体实施方式

为了便于理解,首先对本申请涉及的应用场景进行介绍。

云服务提供商可以根据租户的请求,构建相应的云平台。为了保证云平台的安全性及稳定性,云平台通常跨云部署,这样可以避免由于一个云出现故障导致云平台整体不可用的情况。

具体来讲,云平台中包含VM(Virtual Machine,虚拟机)及虚拟网络。其中,VM作为计算及存储等资源,可以提供计算及存储等服务。VM被部署在多个云上,并使用虚拟网络进行跨云的通信。

目前,实现多云之间互通的方案主要有以下几种。

第一种方案如图1所示,云1与云2通过外网internet互通。当云1上的VM1与云2上的VM2通信时,VM1的数据包需要通过vRouter(Virtual Router,虚拟路由器)进入外网internet,通过外网internet到达云2上的vRouter,再由vRouter到达VM3。

此种互通方案至少存在两方面的问题。问题一是无法实现高可用性。因为此方案需要经过vRouter的转发,为三层互通方式,然而高可用性要求通信双方在同一个二层网络中。问题二是通信成本较高。数据包需要经过外网internet的转发,因此需要公网IP(Internet Protocol,网络之间的互连协议)地址。然而,云里的VM为了节省成本,多采用私有地址,若申请带宽收费较贵的公网IP地址,必然会提高通信成本。

第二种方案如图2所示,云1的计算节点Computer Node1与云2的计算节点Computer Node2之间建立有隧道。当计算节点Computer Node1上的VM1与Computer Node2上的VM3通信时,VM1的数据包直接通过隧道到达VM3。

此种互通方案同样至少存在两方面的问题。问题一是需要建立的隧道过多。一个VM所在的计算节点需要跟所有通信的VM所在的通信节点建立隧道,例如,VM1还需要与VM5通信,VM5位于另一台计算节点如Computer Node3上,则Computer Node1还需要与Computer Node3建立隧道。问题二是云里VM的位置发生变化,则其他云需要感知位置的变化,并需要重新建立隧道。例如,VM1从计算节点Computer Node1迁移至计算节点Computer Node3,则需要建立Computer Node3与Computer Node1之间的隧道。

可见,现有的两种云间互通的方案存在成本及效率等方面的问题。对此,本申请提供了一种云间通信方法,用以解决现有的云间通信方案中存在的问题。

见图3,其示出了本申请提供的云间通信系统的结构示意。如图3所示,该云间通信系统用于实现云1与云2之间的通信,具体指的是云1中的VM1与云2中的VM3通信。需要说明的是,本申请中的云1与云2为两个不同的云。云内部署有计算、存储、网络等资源,每个云均有各自的云管理系统,用于对自身云内的资源进行管理,云管理系统可以包括各种管理模块例如本申请中的网络控制器。不同云管理系统的网络地址及域名不同,因此,可以根据云管理系统的网络地址或域名来界定不同的云。

云1中部署有Computer Node1及GW1,Computer Node1上设置有vSwitch1、VM1及VM2,VM1及VM2与vSwitch1相连。云2中部署有Computer Node2及GW2,Computer Node2上设置有vSwitch2、VM3及VM4,VM3及VM4与vSwitch2相连。

需要说明的是,GW1及GW2均为网关节点,Computer Node1及Computer Node2均为计算节点,vSwitch1及vSwitch2均为虚拟交换机,VM1~VM4为虚拟机。为了实现云之间的通信,云中还部署有其他网络设备,如TOR(Top-of-Rack Switch,机架顶层交换机)及CORE(Core Switch,核心交换机),此些网络设备均为现有设备,并不赘述。

其中,VM1与VM3属于一个虚拟网络,可以互相通信;VM2及VM4属于另一虚拟网络,可以互相通信。本申请以VM1与VM3之间的通信为例进行说明,VM2与VM4之间的通信过程可以参见下文,并不赘述。

见图4,其示出了虚拟机1向虚拟机3发送数据包的通信流程,具体包括以下步骤S41~S46。

S41:在计算节点1上,虚拟机1将数据包发送给虚拟交换机1。

其中,虚拟机1及虚拟交换机1设置在同一计算节点上,如图3所示,设置在计算节点1上。虚拟交换机1具有虚拟端口,虚拟机1具有虚拟网卡,通过配置将该虚拟端口与该虚拟网卡绑定,则虚拟机1便连接在该虚拟交换机1上。这样,虚拟机1发送的数据包便通过该虚拟端口发送至虚拟交换机1。

需要说明的是,虚拟机1发送的该数据包为向虚拟机3发送的数据包,则该数据包中携带有目的MAC(Media Access Control,介质访问控制)地址,即虚拟机3的物理地址MAC3。

S42:虚拟交换机1依据自身的转发关系表,确定下一跳节点为网关节点2。

其中,虚拟交换机1上保存有转发关系表,为了将虚拟交换机1上的转发关系表与其他节点上的转发关系表区分,可以将该转发关系表称为第一转发关系表。

该转发关系表用于表示目的地址与下一跳节点的对应关系。换句话讲,转发关系表可以用于指示,发往目的地址的数据包发送至下一跳节点即可。因此,根据转发关系表及目的MAC地址,可以为数据包确定下一跳节点。

目的MAC地址与下一跳节点所在的云与虚拟交换机1所在的云为不同云,以实现不同云间的通信。具体地,该下一跳节点可以为虚拟交换机1所在的云之外的其他云内的网关节点。

例如,虚拟交换机1上的转发关系表包括(MAC3,vTepM),MAC3为图3中的VM3的地址,vTepM为下一跳节点即该图中GW2的地址。因此,虚拟交换机1接收到发往VM3的数据包后,根据转发关系表及目的地址MAC3,根据,确定下一跳节点的地址为vTepM,从而可以确定需要将数据包发送至GW2。

S43:虚拟交换机1通过计算节点1与网关节点2建立的隧道,将该数据包发送至网关节点2。

其中,虚拟交换机1所在的计算节点1与网关节点2之间建立有隧道,该隧道的建立可以有两种方式。第一种方式可以是,在虚拟交换机1接收到该数据包后,确定需要向网关节点2发送该数据包时,建立该隧道。第二种方式可以是在云间通信配置过程中建立的,详见下文图7所示的流程。简单而言,第一种方式是在有数据发送业务的需求时才建立隧道,可以节省隧道资源;第二种方式是在有数据发送业务之前建立隧道,可以提高数据发送效率。

隧道是一种叠加(Overlay)技术,即通过在现有网络上叠加一个软件定义的逻辑网络,通过定义其上的逻辑网络,实现业务逻辑,从而也物理解耦。更具体地,隧道是将二层网络架构在三层/四层报文中进行传递的网络封装技术。隧道的一种具体的应用形式可以为VXLAN(virtual Extensible LAN,虚拟可扩展局域网)。VXLAN使用MAC in UDP(User Data Protocol,用户数据报协议)的方法对数据包进行封装,提供了将二层网络叠加在四层网络上的能力。

计算节点1与网关节点2之间建立有隧道,虚拟交换机1设置在计算节点1上,则虚拟交换机1发送至网关节点2的数据包可以通过该隧道发送至网关节点2。

S44:网关节点2依据自身的转发关系表,确定下一跳节点为计算节点2。

其中,网关节点2上保存有转发关系表,可以将该转发关系表称为第二转发关系表。

该转发关系表用于表示目的地址与下一跳节点的对应关系。目的地址与该下一跳节点在同一云内,具体地,该下一跳节点可以为目的地址所在的计算节点。

根据该转发关系表及目的地址,可以为数据包确定下一跳节点,该下一跳节点即本云内的计算节点。

例如,网关节点2上的转发关系表包括(MAC3,vTep3),MAC3为图3中的VM3的地址,vTep3为下一跳节点即该图中的Computer Node2的地址。因此,网关节点2接收到发往VM3的数据包后,根据转发关系表及目的地址MAC3,根据,确定下一跳节点的地址为vTep3,从而可以确定需要将数据包发送至Computer Node2。

S45:网关节点2通过与计算节点2建立的隧道,将该数据包发送至计算节点2。

其中,网关节点2与计算节点2建立有隧道,参见步骤S43的说明,该隧道的建立方式有两种,此处不赘述。通过该隧道,可以将发送虚拟机3的数据包发送至计算节点2,具体地,该数据包可以被发送至计算节点2上的虚拟交换机2。

S46:在计算节点2上,虚拟交换机2将数据包发送给虚拟机3。

参见图3,计算节点2设置有虚拟交换机2及虚拟机3。虚拟机3通过虚拟端口p3连接虚拟交换机2,虚拟交换机2的流表中记录有虚拟机3与虚拟端口p3的对应关系。从而根据流表,可以确定出发往该虚拟机3的数据包需要通过虚拟端口p3发送出去。

以上通信流程为云1内虚拟机1向云2内虚拟机3发送数据包的流程,数据包的路径可以参见图3中的虚线。

为了便于描述,可以将数据包的目的地址(虚拟机3)所在的云称为接收端云,将发送数据包的虚拟机1所在的云称为发送端云。

与现有技术1相比,该流程中,数据包通过隧道发送至下一跳节点,隧道是将二层网络叠加在三层网络上,应用可以基于此实现高可用。另外,云内的虚拟机并不需要使用公网地址,通信成本较低。

与现有技术2相比,在该流程中,接收端云内的网关作为对外通信的入口,发送数据包的虚拟机只需要与接收端云内的网关建立隧道即可,向接收端云内的虚拟机发送的数据包发送至该网关即可。这样,既可以减少隧道的数量,而且,接收端云内的虚拟机的位置发生变化,发送数据包的虚拟机也并不需要感知此位置变化。

另外,该流程中,数据包直接到达接收端云内的网关节点,并不需要经过发送端云内的网关节点,这样,任意两个云内虚拟机的通信只需要经过两跳节点,通信路径较短,通信效率较高。

以上流程可以实现虚拟机1向虚拟机3发送数据包,虚拟机3向虚拟机1发送数据包的流程与上述流程相似,数据包同样经过两跳节点,第一跳节点为虚拟机1所在云内的网关节点,第二跳节点为虚拟机1所在的计算节点,通信路径较短。

需要说明的是,本申请涉及的两跳节点并非三层网络架构中的路由器及网关等网络节点,而是二层虚拟网络的应用场景中的两跳节点。在此应用场景中,二层虚拟网络内构建有隧道,通过隧道将数据包发送到的节点即数据包所跳至的节点。

以图3为例,计算节点1与网关节点2之间建立有隧道,通过该隧道将数据包发送至网关节点2,网关节点2即第一跳节点;网关节点2与计算节点2之间建立有隧道,通过该隧道将数据包发送至计算节点2,计算节点2即第二跳节点。可见,本申请中的两跳节点是与两个隧道相关的,与三层网络中泛指的网络节点不同。

具体地,虚拟机3所在的计算节点内的虚拟交换机2上保存有转发关系表(MAC1,vTepN),MAC1为虚拟机1的物理地址,vTepN为虚拟机1所在的云内的网关节点的地址。网关节点GW1上保存有转发关系表(MAC1,vTep1),vTep1为虚拟机1所在的云内的计算节点的地址。需要说明的是,本申请中的vTep1、vTep2、vTepN、vTepM等均指的是vTep(VXLAN Tunnel End Point,VXLAN隧道端点)地址。

见图5所示的虚线表示的VM3向VM1发送数据包的路径,MAC1为VM1的物理地址,vTepN为GW1的地址,vTep1为Computer Node1的地址。vSwitch2根据转发关系表,通过Computer Node2与GW1之间的隧道将数据包发送至GW1,GW1根据转发关系表,通过GW1与Computer Node1之间的隧道将数据包发送至Computer Node1,Computer Node1内的vSwitch1将数据包发送至VM1。

需要说明的是,不同云上的属于同一网络的其他虚拟机之间的通信过程可以参见上述流程,如图3及图5中的云1中的VM2向云2中的VM4发送数据包的流程可以参见VM1向VM3发送数据包的流程,VM4向VM2发送数据包的流程可以参见VM3向VM1发送数据包的流程。

本申请提供的多云之间的通信流程可以应用在各种云环境管理平台中,如OpenStack,CloudStack等。

为了实现以上多云之间的通信,本申请还提供了云间通信的配置流程,以实现对通信过程所需的转发关系表的配置及隧道的建立。

见图6,其示出了本申请提供的云间通信的配置系统结构示意图。该系统具体包括:Network Coordinator、Network Controller1、Network Controller2、agent1、agnet3、gw_agent1及gw_agent2。

Network Controller1、agent1及gw_agent1部署在云1内,Network Controller2、agent3及gw_agent1部署在云2内。Network Coordinator可以部署在云1内,也可以部署在云2内。进一步地,Network Coordinator可以与Network Controller1合设在同一个物理服务器或物理服务器集群中,也可以与Network Controller2合设在同一个物理服务器或物理服务器集群中。

更具体地,agent1部署在vSwitch1所在的计算节点上,该计算节点可以称为计算节点1,该计算节点的地址为vTep1。agent3部署在vSwitch3所在的计算节点上,该计算节点可以称为计算节点3,该计算节点的地址为vTep3。

计算节点1上还可以创建有VM1,VM1与虚拟交换机vSwitch1相连。计算节点3上还可以创建有VM3,VM3与虚拟交换机vSwitch3相连。

经过本系统的配置后,VM1及VM3之间可以实现跨云通信,且通信过程仅需要经过两跳,通信路径较短。

为了便于理解,对本系统中的英文名称表示的设备或模块进行中文解释说明。Network Coordinator为网络协调器、Network Controller1及Network Controller2为网络控制器、agent1及agent3为交换机代理模块、gw_agent1及gw_agent2为网关代理模块、vSwitch1及vSwitch3为虚拟交换机、VM1及VM3为虚拟机。

基于上述结构的系统,本申请提供了一种云间通信的配置流程,该配置流程可以具体参见图7,包括步骤S701~S712。

S701:交换机代理模块1监控虚拟交换机1的配置信息。

其中,交换机代理模块1即图6中的agent1,虚拟交换机1即vSwitch1。交换机代理模块1与虚拟交换机1设置在同一计算节点上,用于对虚拟交换机1进行监控及配置。监控的一方面内容为虚拟交换机的配置信息。虚拟交换机上可以设置虚拟端口,虚拟端口增加、减少或更改均会导致配置信息的变化。

虚拟端口用于连接虚拟机,不同虚拟交换机的虚拟端口可以属于同一虚拟网络,这样与该此些虚拟端口相连的虚拟机可以实现互相通信。若此些虚拟交换机位于不同云,则可以实现跨云的虚拟机之间的通信。跨云通信的虚拟机如图6中的VM1与VM3,或者如VM2与VM4。

S702:交换机代理模块1若监控到虚拟交换机1的虚拟端口连接虚拟机1,则从网络控制器1上读取虚拟端口的虚拟网络信息。

假设云管理系统创建有虚拟网络1,该虚拟网络跨云部署在云1及云2上,具体包括图6中云1上的vSwitch1及云2上的vSwitch3。另外,云管理系统可以创建虚拟机,连接在虚拟交换机上。仍以图6为例,假设云管理系统创建VM1,并调用Network Coordinator1在vSwitch1上创建一个虚拟端口p1,并将VM1的虚拟网卡与虚拟端口p1绑定,实现VM1与vSwitch1的连接。

当VM1与vSwitch1连接时,会导致vSwitch1配置信息的变化,agent1可以监控到该变化,从而agent1从Network Controller1处读取虚拟端口的虚拟网络信息。

S703:交换机代理模块1根据该虚拟网络信息,生成流表记录并下发给虚拟交换机1。

具体地,虚拟网络信息可以包括虚拟端口的标识、虚拟端口所属的虚拟网络的标识、以及虚拟端口所连接的虚拟机的地址。将该三者建立对应关系后,获得一条流表记录,并将该流表记录下发给虚拟交换机1。如图6所示,与VM1相连的虚拟端口为p1,且p1所属的虚拟网络的标识为100,VM1的地址为MAC1,则生成的流表记录为p1-100-MAC1。

虚拟交换机1可以使用流表进行数据包的转发,或者在发送的数据包内添加虚拟网络的标识等。

S704:交换机代理模块1通知网络控制器1该虚拟端口上线。

其中,网络控制器1即图6中的Network Controller1。虚拟端口上线表示虚拟机可以通过该虚拟端口向虚拟交换机发送数据包。虚拟机与虚拟交换机的虚拟端口具有绑定关系,虚拟端口上线可以表示与该虚拟端口绑定的虚拟机上线。以图6为例,虚拟机VM1与虚拟交换机vSwitch1的虚拟端口p1绑定,p1上线可以表示VM1上线。

S705:网络控制器1将虚拟端口的连通性信息(VNI,MAC,vTep)发送至网关代理模块1。

网络控制器1可以将虚拟端口上线的通告转发至网络协调器,因此,向网关代理模块1发送连通性消息的另一种实现方式是,由网络协调器将该虚拟端口的连通性信息(VNI,MAC,vTep)发送至网关代理模块1。

连通性信息包括虚拟端口所归属的虚拟网络的标识VNI、虚拟端口所连接的虚拟机的地址MAC、虚拟端口所在的计算节点的地址vTep。如图6所示,虚拟端口p1的连通性信息可以包括(100,MAC1,vTep1)。

如上所述,虚拟机与虚拟交换机的虚拟端口具有绑定关系,则虚拟端口的连通性信息也可以认为是与该虚拟端口绑定的虚拟机的连通性信息。以图6为例,虚拟端口p1的连通性信息可以认为是虚拟机VM1的连通性信息。

S706:网关代理模块1依据连通性信息(VNI,MAC,vTep),在网关节点1上配置转发关系表。

其中,网关代理模块1即图6中的gw_agent1,网关节点1即GW1。网关代理模块用于对网关节点进行管理,网关代理模块1所管理的网关节点即网关节点1,两者可以部署在同一网关集群中。

网关代理模块1将连通性信息中的MAC与vTep的对应关系生成转发关系表(MAC,vTep),转发关系表可以作为网关节点1转发数据包的依据。网关节点1接收到目的地址为MAC的数据包后,根据该转发关系表,可以确定该数据包的下一跳节点为该vTep指示的计算节点。

例如,在图5所示的VM3向VM1发送数据包的流程中,GW1上保存有转发关系表(MAC1,vTep1),GW1接收到发送至VM1的数据包后,根据该数据包的目的地址MAC1,确定数据包的下一跳节点为vTep1指示的Computer Node1。

S707:网关节点1建立与交换机代理模块1所在的计算节点的隧道。

其中,在网关代理模块1接收到连通性信息后,便可以触发网关节点建立与交换机代理模块1所在计算节点的隧道。以图6为例,GW1建立与agent1所在的计算节点Computer Node1的隧道。

若交换机代理模块1所在的计算节点为下一跳节点,则网关节点1通过建立的该隧道可以直接将数据包发送至交换机代理模块1所在的计算节点。

S708:网络控制器1将虚拟端口的连通性信息(VNI,MAC,vTep)发送至网络协调器。

S709:网络协调器将该连通性信息(VNI,MAC,vTep)修改为(VNI,MAC,vTep’)发送至网络控制器2。

其中,网络协调器接收到网络控制器1发送的连通性信息后,将连通性信息中的虚拟端口所在的计算节点的地址vTep修改为vTep’,vTep’为网关节点1的地址,以使网关节点1作为对外通信的接口。

以图6为例,Network Coordinator将连通性信息(100,MAC1,vTep1)修改为(100,MAC1,vTepN)后发送至Network Controller2。

S710:网络控制器2将修改后的连通性信息发送至交换机代理模块3。

需要说明的是,S709及S710中,修改后的连通性信息是通过网络控制器2发送至交换机代理模块3。或者,还可以由网络协调器直接将连通性信息发送至交换机代理模块3。在前一种实现方式中,网络控制器2可以保存连通性信息,这样,网络控制器2所在的云内,若新创建一个虚拟机,并将虚拟机连接到虚拟交换机的虚拟端口上后,管理该虚拟交换机的交换机代理模块首先判断虚拟交换机上是否配置有转发关系表,若否,则交换机代理模块从网络控制器2上读取修改后的连通性信息,并执行S711在该虚拟交换机上配置转发关系表。

需要说明的是,交换机代理模块3并非一个,根据实际情况,可以是多个。

S711:交换机代理模块3依据修改后的连通性信息,在虚拟交换机3上配置转发关系表。

其中,交换机代理模块3即图6中的agent3,虚拟交换机3即图6中的vSwitch3。交换机代理模块与虚拟交换机在同一计算节点上,交换机代理模块用于对虚拟交换机进行管理,交换机代理模块3管理的模块即虚拟交换机3。

交换机代理模块3将连通性信息中的MAC与vTep’的对应关系生成转发关系表(MAC,vTep’),转发关系表可以作为虚拟交换机3转发数据包的依据。虚拟交换机3接收到目的地址为MAC的数据包后,根据该转发关系表,可以确定该数据包的下一跳节点为该vTep’指示的网关节点。

例如,在图5所示的VM3向VM1发送数据包的流程中,vSwitch3上保存有转发关系表(MAC1,vTepN),vSwitch3接收到发送至VM1的数据包后,根据该数据包的目的地址MAC1,确定数据包的下一跳节点为vTepN指示的GW1。

S712:交换机代理模块3所在的计算节点建立与网关节点1的隧道。

其中,交换机代理模块3接收到修改后的连通性信息后,便可以触发所在的计算节点建立与网关节点1的隧道。以图6为例,agent3所在的计算节点Computer Node3建立GW1的隧道。

若网关节点1为下一跳节点,则虚拟交换机3可以通过该隧道直接将数据包发送至网关节点1。

由以上的配置流程可知,配置后的云间通信系统可以实现图5所示的虚拟机3向虚拟机1发送数据包的流程。具体地,虚拟机3发送的数据包,首先依据步骤S711配置的转发关系表,通过步骤S712建立的隧道到达网关节点1,然后依据步骤S706配置的转发关系表,通过步骤S707建立的隧道到达计算节点1,由计算节点1内的虚拟交换机1将数据包发送给虚拟机1。所述通信流程中仅经过两跳,通信路径较短。

以上配置流程,以交换机代理模块1对虚拟交换机1的监控为例进行说明,交换机代理模块3对虚拟交换机3的监控与上述配置流程相同,具体流程并不赘述,以下仅说明该流程中所涉及的与图7不同的几处数据。

以图6为例,在后者配置流程中,创建的虚拟机为VM3,同样属于虚拟网络100。VM3的物理地址为MAC3,VM3连接的vSwitch3的虚拟端口为p3,vSwitch3上配置的流表记录为p3-100-MAC3。

Network Controller2发送给agent3的连通性信息包括(100,MAC3,vTep3),GW2上配置的转发关系表为(MAC3,vTep3),GW2建立与Computer Node3的隧道。

Network Coordinator将该连通性信息(100,MAC3,vTep3)修改为(100,MAC3,vTepM)发送至Network Controller1。在vSwitch1上配置的转发关系表为(MAC3,vTepM)。vSwitch1所在的计算节点Computer Node1建立与GW2的隧道。

见图8,其示出了计算节点/网关节点的一种可能的结构示意,包括:

总线、控制器/处理器1、存储器2、通信接口3、输入设备4和输出设备5。处理器1、存储器2、通信接口3、输入设备4和输出设备5通过总线相互连接。其中:

总线可包括一通路,在计算机系统各个部件之间传送信息。

控制器/处理器1可以是通用处理器,例如通用中央处理器(CPU)、网络处理器(Network Processor,简称NP)、微处理器等,也可以是特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。控制器/处理器1也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。具体地:

计算节点的控制器/处理器可用于执行图4中涉及计算节点1的处理过程以及图7中涉及虚拟交换机1及交换机代理模块1的处理过程和/或用于本申请所描述的技术的其他过程。

网关节点的控制器/处理器可用于执行图4中涉及网关节点2的处理过程和/或用于本申请所描述的技术的其他过程。

存储器2中保存有执行本申请技术方案的程序,还可以保存有操作系统和其他应用程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器2可以是只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器等等。

通信接口3可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。

输入设备4可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏等。

输出设备5可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。

结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于用户设备中。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

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