数据传输方法及相关设备转让专利

申请号 : CN201610082958.9

文献号 : CN105721313B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吉敏

申请人 : 联想(北京)有限公司

摘要 :

本发明公开了一种数据传输方法,包括:当第一设备发送由自身的第一虚拟机产生的第一报文时,对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机位于所述至少一个第二设备的一个第二设备中;调用第一列表;依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。本发明实施例还公开了另一种数据传输方法、两种数据传输设备。能够有效减轻主机的传输负担,减少对云平台系统处理资源的占用。

权利要求 :

1.一种数据传输方法,应用于第一设备中,所述第一设备、至少一个第二设备通过各自运行的至少一个虚拟机进行通信;所述方法包括:当所述第一设备发送由自身的第一虚拟机产生的第一报文时,对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机为能够接收第一报文的虚拟机,所述第一标识为所述目标虚拟机的媒体接入控制MAC地址,所述第二标识为所述目标虚拟机所连接网络的网络标识,所述目标虚拟机位于所述至少一个第二设备的一个第二设备中;

调用第一列表;

依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;其中,所述第一列表中存在有所述目标虚拟机所属的第二设备的设备标识用于表征,目标虚拟机所连接网络的网络标识与所述第一设备中运行的每个虚拟机的至少一个虚拟机所连接网络的网络标识相同;

判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当判断为在第一列表中不存在有所述目标虚拟机所属的第二设备的设备标识时,调用第二列表;

依据第二标识,判断在第二列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;

判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。

3.根据权利要求1或2所述的方法,在发送第一报文至具有所述设备标识的第二设备之前,所述方法包括:调用第三列表;

在第三列表中,依据所述设备标识,确定所述目标虚拟机所属的第二设备的网际互联协议IP地址和MAC地址;

依据该IP地址和MAC地址,对第一报文进行封装,得到第二报文;

相应的,所述发送第一报文至具有所述设备标识的第二设备,包括:发送第二报文至具有所述设备标识的第二设备。

4.根据权利要求3所述的方法,其特征在于,在调用第三列表之前,所述方法还包括:建立第三列表;

进一步的,所述建立第三列表,包括:

当所述第一设备接收到隧道建立指令时,所述指令用于建立所述第一设备与至少一个第二设备之间的隧道通信的指令;

至少获取所述至少一个第二设备中每个第二设备的设备标识、IP地址及MAC地址;

至少获取第一设备的第一标识;

将每个第二设备的设备标识、IP地址及MAC地址与所述第一设备的第一标识进行对应记录,形成第三列表。

5.根据权利要求4所述的方法,其特征在于,在调用第一列表之前,所述方法还包括:建立第一列表;

进一步的,所述建立第一列表,包括:

确定第一设备所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识;

在至少一个第二设备中,确定符合第一预定条件的第二设备的设备标识,得到至少一个设备标识,所述符合第一预定条件的第二设备为其上所运行的虚拟机所连接网络的网络标识为所述至少一个网络标识;

确定运行有具有所述至少一个网络标识的虚拟机的第二设备;

将第一设备所运行的每个虚拟机的MAC地址、所述至少一个网络标识、所述至少一个设备标识进行对应记录,形成第一列表。

6.根据权利要求2所述的方法,其特征在于,在调用第二列表之前,所述方法还包括:建立第二列表;

进一步的,所述建立第二列表,包括:

获取在第一设备中所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识;

在具有所述至少一个网络标识的至少一个网络中,确定每个网络中的第一虚拟路由器,得到至少一个虚拟路由器;

确定每个第一虚拟路由器所在的第二设备的设备标识,得到至少一个设备标识;

将所述至少一个网络标识、所述至少一个设备标识进行对应记录,得到所述第二列表。

7.一种数据传输设备,所述设备包括:

第一分析单元,用于当所述设备发送由自身的第一虚拟机产生的第一报文时,对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机为能够接收第一报文的虚拟机,所述第一标识为所述目标虚拟机的媒体接入MAC地址,所述第二标识为所述目标虚拟机所连接网络的网络标识,所述目标虚拟机位于至少一个第二设备的一个第二设备中;

第一调用单元,用于调用第一列表;

第一判断单元,用于依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;其中,所述第一列表中存在有所述目标虚拟机所属的第二设备的设备标识用于表征,目标虚拟机所连接网络的网络标识与所述设备中运行的每个虚拟机的至少一个虚拟机所连接网络的网络标识相同;

第一发送单元,用于在第一判断单元判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。

8.根据权利要求7所述的设备,其特征在于,所述设备还包括:第二调用单元,用于当第一判断单元判断为在第一列表中不存在有所述目标虚拟机所属的第二设备的设备标识时,调用第二列表;

第二判断单元,用于依据第二标识,判断在第二列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;

第一发送单元,用于在第二判断单元判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。

9.根据权利要求7或8所述的设备,其特征在于,所述设备还包括:第三调用单元,用于调用第三列表;在第三列表中,依据所述设备标识,确定所述目标虚拟机所属的第二设备的网际互联协议IP地址和MAC地址;依据该IP地址和MAC地址,对第一报文进行封装,得到第二报文;

相应的,所述第一发送单元,用于发送第二报文至具有所述设备标识的第二设备。

10.根据权利要求9所述的设备,其特征在于,所述设备还包括:第一建立单元,用于:

建立第三列表;

进一步的,当第一设备接收到隧道建立指令时,所述指令用于建立所述第一设备与至少一个第二设备之间的隧道通信的指令;

至少获取所述至少一个第二设备中每个第二设备的设备标识、IP地址及MAC地址;

至少获取第一设备的第一标识;

将每个第二设备的设备标识、IP地址及MAC地址与所述第一设备的第一标识进行对应记录,形成第三列表。

11.根据权利要求10所述的设备,其特征在于,所述设备还包括:第二建立单元,还用于:

建立第一列表;

进一步的,确定第一设备所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识;

在至少一个第二设备中,确定符合第一预定条件的第二设备的设备标识,得到至少一个设备标识,所述符合第一预定条件的第二设备为其上所运行的虚拟机所连接网络的网络标识为所述至少一个网络标识;

确定运行有具有所述至少一个网络标识的虚拟机的第二设备;

将第一设备所运行的每个虚拟机的MAC地址、所述至少一个网络标识、所述至少一个设备标识进行对应记录,形成第一列表。

12.根据权利要求8所述的设备,其特征在于,所述设备还包括:第三建立单元,还用于

建立第二列表;

进一步的,获取在第一设备中所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识;

在具有所述至少一个网络标识的至少一个网络中,确定每个网络中的第一虚拟路由器,得到至少一个虚拟路由器;

确定每个第一虚拟路由器所在的第二设备的设备标识,得到至少一个设备标识;

将所述至少一个网络标识、所述至少一个设备标识进行对应记录,得到所述第二列表。

说明书 :

数据传输方法及相关设备

技术领域

[0001] 本发明涉及传输技术,具体涉及一种数据传输方法及相关设备。

背景技术

[0002] 在云平台环境中,至少包括云平台系统及多个主机。云平台系统用于对多个主机进行管理与控制,例如通过为主机间建立基于通用路由封装(GRE Generic Routing Encapsulation)/虚拟局域网(VLAN,Virtual Local Area Network)/虚拟可扩展局域网VXLAN等协议的通信,而控制数据在主机间进行传输。实际上,每个主机上均通过安装有多层交换机OVS软件而运行有至少一个虚拟机,主机间的数据传输意在将由一个虚拟机产生的数据传输到另一个主机所运行的某个虚拟机上。当主机1所运行的虚拟机1要进行数据1的发送时,需要查询OVS中的流表,确定GRE/VXLAN端口,再进行基于GRE/VXLAN协议的报头封装,之后进入协议栈处理流程,根据隧道信息中的源网际协议(IP,Internet Protocol)地址与目的IP地址对数据1进行IP层报头的封装,再根据隧道信息中存储的目的IP查询路由表获取物理网卡信息及源媒体接入控制(MAC,Media Access Control)地址信息,再根据物理网卡信息和目的IP查询地址解析协议(ARP,Address Resolution Protocol)表,获得目的MAC,从而再对数据1进行链路层报头的封装,通过确定出的网卡将封装好的报文发送出去。由此可见,在主机传输数据的过程中至少需要查询流表和路由表这两个表,在主机之间每进行一次数据传输就需要对这两个表查询一次,对于主机来说无疑增加了处理负担。
[0003] 另外,协议栈处理流程的处理时间较长,会占用大量的处理资源,不利于云平台环境的运行。

发明内容

[0004] 为解决现有存在的技术问题,本发明实施例提供一种数据传输方法及相关设备,在数据在主机(虚拟机)之间进行传输时,能够有效减轻主机的传输负担,减少对云平台系统处理资源的占用。
[0005] 本发明实施例的技术方案是这样实现的:
[0006] 本发明实施例提供一种数据传输方法,应用于第一设备中,所述第一设备、至少一个第二设备通过各自运行的至少一个虚拟机进行通信;所述方法包括:
[0007] 当所述第一设备发送由自身的第一虚拟机产生的第一报文时,
[0008] 对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机为能够接收第一报文的虚拟机,所述第一标识为所述目标虚拟机的媒体接入控制MAC地址,所述第二标识为所述目标虚拟机所连接网络的网络标识,所述目标虚拟机位于所述至少一个第二设备的一个第二设备中;
[0009] 调用第一列表;
[0010] 依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;
[0011] 判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。
[0012] 本发明实施例提供一种数据传输方法,应用于第二设备中,所述第二设备、至少一个第一设备通过各自运行的虚拟机进行通信;所述方法包括:
[0013] 缓存由第一设备发送的第一报文;
[0014] 对第一报文进行解析,至少得到在第二设备中所运行的至少一个虚拟机中能够接收第一报文的虚拟机的MAC地址;
[0015] 触发具有所述MAC地址的虚拟机进行第一报文的接收。
[0016] 本发明实施例提供一种数据传输设备,所述设备包括:
[0017] 第一分析单元,用于当所述设备发送由自身的第一虚拟机产生的第一报文时,对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机为能够接收第一报文的虚拟机,所述第一标识为所述目标虚拟机的媒体接入MAC地址,所述第二标识为所述目标虚拟机所连接网络的网络标识,所述目标虚拟机位于所述至少一个第二设备的一个第二设备中;
[0018] 第一调用单元,用于调用第一列表;
[0019] 第一判断单元,用于依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;
[0020] 第一发送单元,用于在第一判断单元判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。
[0021] 本发明实施例提供一种数据传输设备,所述设备包括:
[0022] 第一存储单元,用于缓存由第一设备发送的第一报文;
[0023] 第一解析单元,用于对第一报文进行解析,至少得到在第二设备中所运行的至少一个虚拟机中能够接收第一报文的虚拟机的MAC地址;
[0024] 第一触发单元,用于触发具有所述MAC地址的虚拟机进行第一报文的接收。
[0025] 本发明实施例提供的数据传输方法及相关设备,所述方法包括:当第一设备发送由自身的第一虚拟机产生的第一报文时,对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机位于所述至少一个第二设备的一个第二设备中;调用第一列表;依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。能够有效减轻主机的传输负担,减少对云平台系统处理资源的占用。

附图说明

[0026] 图1为本发明提供的应用于第一设备中的数据传输方法的第一实施例的实现流程示意图;
[0027] 图2为本发明提供的应用于第一设备中的数据传输方法的第二实施例的实现流程示意图;
[0028] 图3(a)、(b)为本发明提供的应用于第一设备中的数据传输方法的第三实施例的实现流程示意图;
[0029] 图4为本发明实施例中第一报文的GRE报头封装以及外部报头封装的示意图;
[0030] 图5为本发明实施例中第一报文的VXLAN报头封装以及外部报头封装的示意图;
[0031] 图6为本发明提供的应用于第二设备中的数据传输方法实施例的实现流程示意图;
[0032] 图7为本发明提供的数据传输设备实施例的组成结构示意图;
[0033] 图8为本发明提供的另一种数据传输设备实施例的组成结构示意图。

具体实施方式

[0034] 以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0035] 实施例一
[0036] 本发明提供的数据传输方法的第一实施例,应用于第一设备中,该第一设备为一主机、具体是数据发送方的主机,该主机通过安装有OVS软件而运行有至少一个虚拟机。该主机通过自身运行的至少一个虚拟机与至少一个第二设备进行数据通信,第二设备也为主机、具体为数据接收方的主机。当然,当第二设备为数据发送方主机时,第一设备可以为数据接收方主机,对此本文不做具体限定。
[0037] 图1为本发明提供的数据传输方法的第一实施例的实现流程示意图;如图1所示,所述方法包括:
[0038] 步骤101:当所述第一设备发送由自身的第一虚拟机产生的第一报文时,对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机为能够接收第一报文的虚拟机,所述第一标识为所述目标虚拟机的媒体接入MAC地址,所述第二标识为所述目标虚拟机所连接网络的网络标识,所述目标虚拟机位于所述至少一个第二设备的一个第二设备中;
[0039] 这里,当数据发送方主机如主机A上所运行的某个虚拟机如虚拟机A1需要发送第一报文至另一主机如B上的某个虚拟机如虚拟机B1时,目标虚拟机为虚拟机B1,读取第一报文中携带的虚拟机B1的MAC地址和其所连接的(虚拟)网络的网络标识Tunnle key。
[0040] 步骤102:调用第一列表;
[0041] 这里,在获知目标虚拟机的MAC地址和其所连接的(虚拟)网络的网络标识Tunnle key之后,对第一列表进行调用。
[0042] 步骤103:依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;
[0043] 这里,在第一列表中,依据目标虚拟机的MAC地址和其所连接的(虚拟)网络的网络标识Tunnle key这两个元素,判断第一列表中是否存在有目标虚拟机所属的主机如虚拟机B1所属的主机B的设备标识,该设备标识为主机号。即判断第一列表中是否存在有与该MAC地址和Tunnle key这两个元素对应的设备标识的表项。
[0044] 步骤104:判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。
[0045] 这里,当判断为第一列表存在有目标虚拟机所属主机的主机号时,将具有该主机号的主机作为目标主机(接收方主机),发送方主机发送第一报文至目标主机,以使位于目标主机中的目标虚拟机进行第一报文的接收。
[0046] 本发明实施例中,在调用第一列表之前,还需要建立第一列表,建立过程包括:
[0047] 确定第一设备所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识Tunnle key;在至少一个第二设备中,确定符合第一预定条件的第二设备的设备标识如主机号,得到至少一个设备标识,所述符合第一预定条件的第二设备为其上所运行的虚拟机所连接网络的网络标识为所述至少一个网络标识;确定运行有具有所述至少一个网络标识的虚拟机的第二设备;将第一设备所运行的每个虚拟机的MAC地址、所述至少一个网络标识、所述至少一个设备标识进行对应记录,形成第一列表。
[0048] 具体的,建立过程为:当云平台系统为主机建立一个虚拟机/虚拟路由器/动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)服务器时,为该虚拟机/虚拟路由器/DHCP分配一个MAC地址及其所在的网络的网络标识Tunnle key。以虚拟机D1为例,云平台系统将为该虚拟机D1分配的MAC地址和其所在的网络的网络标识Tunnle key 1通过固定端口发送给云平台系统的所有主机。云平台系统中的每个主机如主机C接收该虚拟机如虚拟机D1的MAC地址和Tunnle key 1,首先将接收到的Tunnle key 1与OVS原来存储的Tunnle key信息进行对比,如果原本存储的Tunnle key信息中存在有该接收到的Tunnle key 1,说明具有Tunnle key 1的网络已经存在且主机C中存在有可运行在这个网络下的虚拟机,主机C将虚拟机D1的MAC地址、Tunnle key 1及虚拟机D 1所属的主机的主机号进行对应记录,形成第一列表的一行内容。如果原本存储的Tunnle key信息中未存在有Tunnle key 1,则表明主机C上无该(虚拟)网络的虚拟机,将该信息丢弃。由此可见,第一列表中记录的是与本机的虚拟机运行在同一(虚拟)网络下的其它虚拟机的相关信息且该其它虚拟机运行在其它主机上。
[0049] 表1为本发明实施例中第一列表的示意图。在第一列表中,每一行为一条记录,每条记录至少包括虚拟机的MAC地址、Tunnle key及该虚拟机所属的主机的主机号等三个表项。第一列表可称之为MAC-主机MAP表。
[0050] 表1
[0051]虚拟机的MAC地址 虚拟机所在(虚拟)网络的Tunnle key 虚拟机所属的主机号
     
     
     
[0052] 如果云平台系统要删除一个虚拟机/虚拟路由器/DHCP时,将该虚拟机/虚拟路由器/DHCP的MAC地址、所在网络的Tunnle key、通过固定端口发送给系统中的所有主机。系统中的每个主机如主机C接收到删除命令时,在自身的第一列表中,查询要删除的虚拟机的MAC地址与Tunnle key,如果在第一列表中能够查询到相应的记录,则将查找到的记录删除。
[0053] 由此可见,本实施例中,当某个主机自身的虚拟机产生的第一报文时,获取接收该报文的目标虚拟机的MAC地址和网络标识Tunnle key,调用第一列表,依据该MAC地址和Tunnle key,判断第一列表中是否存在有目标虚拟机所属主机的主机号,判断为存在时,发送第一报文至具有该主机号的主机,以使目标虚拟机进行第一报文的接收。本方案中,仅需要依据目标虚拟机的MAC地址和Tunnle key这两个元素以及依据这两个元素对第一列表中是否存在有目标虚拟机所属主机的主机号的判断,即可确定需要接收第一报文的目标主机。与相关技术中需要查询流表和路由表两个表相比,减少了查询流程,减轻了主机的传输负担,降低了对云平台系统处理资源的占用,缩短了处理时长。
[0054] 实施例二
[0055] 本实施例基于前述的实施例一,如图2所示,所述方法还包括:
[0056] 步骤204:当判断为在第一列表中不存在有所述目标虚拟机所属的第二设备的设备标识时,调用第二列表;
[0057] 这里,当判断为第一列表中不存在目标虚拟机所属主机的主机号(第二设备的设备标识)时,说明当前要接收第一报文的目标虚拟机与本机(第一设备)所运行的每个虚拟机都不处于相同的(虚拟)网络,这时需要调用第二列表。
[0058] 步骤205:依据第二标识,判断在第二列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;
[0059] 这里,判断在第二列表中是否存在有与目标虚拟机所连接网络的网络标识Tunnle key对应的第二设备的主机号。
[0060] 步骤206:判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。
[0061] 这里,当判断为第二列表中存在有与目标虚拟机所连接网络的网络标识Tunnle key对应的第二设备的主机号时,第一设备发送第一报文至具有该主机号的其它主机,以使得目标虚拟机进行第一报文的接收。
[0062] 本发明实施例中,在调用第二列表之前,还需要建立第二列表,所述建立过程包括:获取在第一设备中所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识Tunnle key;在具有所述至少一个网络标识的至少一个网络中,确定每个网络中的第一虚拟路由器,得到至少一个虚拟路由器;确定每个第一虚拟路由器所在的第二设备的设备标识如主机号,得到至少一个设备标识;将所述至少一个网络标识、所述至少一个设备标识进行对应记录,得到所述第二列表。
[0063] 具体的,建立过程为:云平台系统在建立一个虚拟机如虚拟机D1时,需要将虚拟机D1所在网络的Tunnle key和该网络下的虚拟路由器所在主机的主机号通过固定端口发送给虚拟机D1所在的主机。虚拟机D1所在的主机如本机1收到这一消息时,将接收到的虚拟机D1所在网络的Tunnle key和该网络下的虚拟路由器所在主机的主机号进行对应记录,形成本机1的第二列表中的一条记录。本机1上的第二列表中记录的是运行下在该主机下的每个虚拟机所在的网络Tunnle key与对应网络Tunnle key下的虚拟路由器所在主机的主机号之间的对应关系。
[0064] 表2为本发明实施例中第二列表的示意图。在第二列表中,每一行为一条记录,每条记录至少包括虚拟机所在网络的Tunnle key、及在该网络下的虚拟路由器所在主机的主机号。因为第二列表记录的内容可以称之为虚拟网络路由器信息,所以第二列表也称之为虚拟路由表。位于某个主机上的第二列表中记录的是运行下在该主机下的每个虚拟机所在的网络Tunnle key与对应网络Tunnle key下的虚拟路由器所在主机的主机号之间的对应关系。
[0065] 表2
[0066]虚拟机所在网络的Tunnle key 在Tunnle key网络下的虚拟路由器所在主机的主机号
   
   
   
   
   
[0067] 当删除一个虚拟机时,确定此虚拟机所在网络的Tunnle key是否为本机的第二列表中的最后一个该Tunnle key,如果是则删除第一列表中的该Tunnle key对应的记录。
[0068] 举个例子,主机A1运行有两个虚拟机如虚拟机1和虚拟机2,这两个虚拟机的网络标识Tunnle key均为Tunnle key 1,在Tunnle key 1的网络下的虚拟路由器所在主机的主机号为A2,那么主机A1的第二列表中记录有2条相同记录如Tunnle key 1和A2的对应记录,当删除其中1条记录之后,当删除第2条记录时,Tunnle key 1为取值为1的最后一个Tunnle key,那么删除第二列表中Tunnle key 1对应的记录。即主机A1将不存在运行有网络标识Tunnle key=1的虚拟机。
[0069] 由此可见,本实施例中,当某个主机自身的虚拟机产生的第一报文时,获取接收该报文的目标虚拟机的MAC地址和网络标识Tunnle key,调用第一列表,依据该MAC地址和Tunnle key,判断第一列表中是否存在有目标虚拟机所属主机的主机号,判断为不存在时,调用第二列表,判断在第二列表中是否存在有与目标虚拟机所连接网络的网络标识Tunnle key对应的第二设备的主机号,如果存在,则发送第一报文至具有该主机号的主机,以使目标虚拟机进行第一报文的接收。本方案中,当第一列表中没有存在有目标虚拟机所属主机的主机号时,调用第二列表,在第二列表中做是否存在有与目标虚拟机所连接网络的网络标识Tunnle key对应的第二设备的主机号的判断,即可确定需要接收第一报文的目标主机。与相关技术中需要查询流表和路由表两个表相比,减少了查询流程,减轻了主机的传输负担,降低了对云平台系统处理资源的占用,缩短了处理时长。
[0070] 实施例三
[0071] 本实施例基于前述实施例一和/或实施例二,在第一列表或第二列表中确定存在有第二设备的设备标识之后且在发送第一报文至具有所述设备标识的第二设备之前,如图3(a)或3(b)所示,所述方法还包括:
[0072] 步骤301:调用第三列表;
[0073] 这里,在确定目标虚拟机所属主机的主机号之后,调用第三列表。
[0074] 步骤302:在第三列表中,依据所述设备标识,确定所述目标虚拟机所属的第二设备的IP地址和MAC地址;
[0075] 这里,在第三列表中,查找与目标虚拟机所属主机的主机号对应的目标虚拟机所属主机的IP地址和MAC地址(即目的IP和目的MAC)。
[0076] 步骤303:依据该IP地址和MAC地址,对第一报文进行封装,得到第二报文;
[0077] 这里,将目的IP添加至第一报文的前面作为IP层的报头添加,将目的MAC添加至IP层的报头的前面作为对数据链路层报头的添加,得到第二报文。
[0078] 步骤304:发送第二报文至具有所述设备标识的第二设备。
[0079] 这里,发送第二报文至目标主机(目标虚拟机所属主机),以使得目标虚拟机接收第二报文。
[0080] 本发明实施例中,在调用第三列表之前,还需要建立第三列表,所述建立过程包括:当所述第一设备接收到隧道建立指令时,所述指令用于建立所述第一设备与至少一个第二设备之间的隧道通信的指令;至少获取所述至少一个第二设备中每个第二设备的设备标识、IP地址及MAC地址;至少获取第一设备的第一标识;将每个第二设备的设备标识、IP地址及MAC地址与所述第一设备的第一标识进行对应记录,形成第三列表。其中,第二设备的设备标识为第二设备的主机号;第一设备的第一标识至少包括第一设备的IP地址即源IP地址和MAC地址即源MAC地址。
[0081] 具体的,云平台系统为多个主机中的其中两个主机如主机1(第一设备)和主机2(第二设备)建立隧道,以进行通信时,以主机1为例,云平台系统向主机1发送隧道建立指令,该指令中就携带有主机1的主机号、主机1的IP地址(源IP地址)、主机2的主机号及主机2的IP地址即目的IP地址。主机1接收该隧道建立指令,查询本机的网卡地址,并得到源IP地址对应的物理网卡号与源MAC地址,之后通过目的IP地址查询本机的ARP表,获取到目的MAC即主机2的MAC地址,得到这些隧道信息之后,主机1将自身的源IP地址、源MAC地址、自身的物理网卡号、主机2的主机号、主机2的IP地址(目的IP地址)、主机2的MAC地址(目的MAC地址)进行对应记录,形成第三列表中的一条记录。其中,当主机1通过查询本机的ARP表如果没有查询到目的MAC,则主机1向其它主机发起ARP请求获取目的MAC。
[0082] 表3为本发明实施例中第三列表的示意图。第三列表中记录的是本机与云平台系统中的其它主机之间的隧道信息的对应关系。云平台系统中的每个主机均会记录有如图3表所示的第三列表。
[0083] 表3
[0084]主机号 物理网卡号 源IP地址 目的IP地址 源MAC地址 目的MAC地址
           
           
[0085] 当云平台系统要删除一台主机如主机2时,向系统中的每台主机发送删除隧道的命令,则每台主机如主机1接收到删除隧道的命令后,根据主机号查询第三列表中有关主机号=2的一条记录时,删除该条记录。
[0086] 本实施例中,在确定目标虚拟机所属主机的主机号之后,在第三列表中,查询与该主机号对应的隧道信息如源/目的IP地址、源MAC地址及物理网卡号,并将第一报文进行GRE报头封装或VXLAN报头封装以及外部报头的封装,得到第二报文,通过与查询到的物理网卡号对应的物理网卡将第二报文发送出去。
[0087] 如图4所示为第一报文进行的GRE报头封装以及外部报头封装的示意图;
[0088] 如图5所示为第一报文进行的VXLAN报头封装以及外部报头封装的示意图。在图4和图5中,原报文均为第一设备中的第一虚拟机产生的第一报文,VXLAN的固定端口可通过流表中的信息而查询。将原报文经如图4和5所示的封装,得到第二报文,然后通过与查询到的物理网卡号对应的物理网卡第一设备将第二报文发送至第二设备即目标主机(目标虚拟机所在的主机)。
[0089] 相应的,第二设备需要进行第一报文和/或第二报文的接收,图6为应用于第二设备中的数据传输方法的实现流程示意图;如图6所示,所述方法包括:
[0090] 步骤601:缓存由第一设备发送的第一报文;
[0091] 这里,目标主机先缓存已接收到的第一报文和/或第二报文;
[0092] 步骤602:对第一报文进行解析,至少得到在第二设备中所运行的至少一个虚拟机中能够接收第一报文的虚拟机的MAC地址;
[0093] 这里,第一报文是没有进行封装的报文,第二报文是经过封装的报文。对第一报文和/或第二报文进行解析,得到目标虚拟机的MAC地址。其中,对第二报文的解析还需要进行解封装。
[0094] 步骤603:触发具有所述MAC地址的虚拟机进行第一报文的接收。
[0095] 这里,目标主机在确定能够接收第一报文和/或第二报文的目标虚拟机后,将报文发送至目标虚拟机,以触发目标虚拟机对报文的接收。
[0096] 本实施例中,在第一设备中,在确定目标虚拟机所在主机的主机号之后,对第三列表进行调用,并依据所确定的主机号得到传输第一报文和/或第二报文时使用的隧道信息如源/目的IP地址、源MAC地址及物理网卡号,第一设备通过与该物理网卡号对应的物理网卡发送报文至目标主机,目标主机进行报文的接收并通过对报文的解析得到目标虚拟机的MAC地址,再把报文传输至具有该MAC地址的虚拟机上。其中,仅通过依据第三列表及目标虚拟机所在主机的主机号即可确定报文传输时使用的隧道信息,与相关技术中需要查询流表和路由表两个表才能得到隧道信息相比,减少了查询流程,减轻了主机的传输负担,降低了对云平台系统处理资源的占用,缩短了处理时长。
[0097] 实施例四
[0098] 本发明提供一种数据传输设备的实施例,该设备为前述实施例一至实施例三种的第一设备,如图7所示,所述设备包括:
[0099] 第一分析单元701,用于当所述设备发送由自身的第一虚拟机产生的第一报文时,对第一报文进行分析,至少得到目标虚拟机的第一标识和第二标识,所述目标虚拟机为能够接收第一报文的虚拟机,所述第一标识为所述目标虚拟机的媒体接入MAC地址,所述第二标识为所述目标虚拟机所连接网络的网络标识,所述目标虚拟机位于所述至少一个第二设备的一个第二设备中;
[0100] 第一调用单元702,用于调用第一列表;
[0101] 第一判断单元703,用于依据第一标识和第二标识,判断在第一列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;
[0102] 第一发送单元704,用于在第一判断单元703判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。
[0103] 其中,所述设备还包括:
[0104] 第二调用单元,用于当第一判断单元703判断为在第一列表中不存在有所述目标虚拟机所属的第二设备的设备标识时,调用第二列表;
[0105] 第二判断单元,用于依据第二标识,判断在第二列表中是否存在有所述目标虚拟机所属的第二设备的设备标识;
[0106] 第一发送单元704,用于在第二判断单元判断为存在时,发送第一报文至具有所述设备标识的第二设备,以使第二设备的所述目标虚拟机进行第一报文的接收。
[0107] 其中,所述设备还包括:
[0108] 第三调用单元,用于调用第三列表;在第三列表中,依据所述设备标识,确定所述目标虚拟机所属的第二设备的网际互联协议IP地址和MAC地址;依据该IP地址和MAC地址,对第一报文进行封装,得到第二报文;
[0109] 相应的,所述第一发送单元704,用于发送第二报文至具有所述设备标识的第二设备。
[0110] 所述设备还包括:
[0111] 第一建立单元,用于:
[0112] 建立第三列表;
[0113] 进一步的,当所述第一设备接收到隧道建立指令时,所述指令用于建立所述第一设备与至少一个第二设备之间的隧道通信的指令;
[0114] 至少获取所述至少一个第二设备中每个第二设备的设备标识、IP地址及MAC地址;
[0115] 至少获取第一设备的第一标识;
[0116] 将每个第二设备的设备标识、IP地址及MAC地址与所述第一设备的第一标识进行对应记录,形成第三列表。
[0117] 所述设备还包括:
[0118] 第二建立单元,还用于:
[0119] 建立第一列表;
[0120] 进一步的,确定第一设备所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识;
[0121] 在至少一个第二设备中,确定符合第一预定条件的第二设备的设备标识,得到至少一个设备标识,所述符合第一预定条件的第二设备为其上所运行的虚拟机所连接网络的网络标识为所述至少一个网络标识;
[0122] 确定运行有具有所述至少一个网络标识的虚拟机的第二设备;
[0123] 将第一设备所运行的每个虚拟机的MAC地址、所述至少一个网络标识、所述至少一个设备标识进行对应记录,形成第一列表。
[0124] 所述设备还包括:
[0125] 第三建立单元,还用于:
[0126] 建立第二列表;
[0127] 进一步的,获取在第一设备中所运行的每个虚拟机所连接网络的网络标识,得到至少一个网络标识;
[0128] 在具有所述至少一个网络标识的至少一个网络中,确定每个网络中的第一虚拟路由器,得到至少一个虚拟路由器;
[0129] 确定每个第一虚拟路由器所在的第二设备的设备标识,得到至少一个设备标识;
[0130] 将所述至少一个网络标识、所述至少一个设备标识进行对应记录,得到所述第二列表。
[0131] 由此可见,本实施例中,当某个主机自身的虚拟机产生的第一报文时,获取接收该报文的目标虚拟机的MAC地址和网络标识Tunnle key,调用第一列表,依据该MAC地址和Tunnle key,判断第一列表中是否存在有目标虚拟机所属主机的主机号,判断为存在时,发送第一报文至具有该主机号的主机,以使目标虚拟机进行第一报文的接收。与相关技术中需要查询流表和路由表两个表相比,减少了查询流程,减轻了主机的传输负担,降低了对云平台系统处理资源的占用,缩短了处理时长。
[0132] 本发明提供另一种数据传输设备的实施例,该设备为前述实施例一至实施例三种的第二设备,如图8所示,所述设备包括:
[0133] 第一存储单元801,用于缓存由第一设备发送的第一报文;
[0134] 第一解析单元802,用于对第一报文进行解析,至少得到在第二设备中所运行的至少一个虚拟机中能够接收第一报文的虚拟机的MAC地址;
[0135] 第一触发单元803,用于触发具有所述MAC地址的虚拟机进行第一报文的接收。
[0136] 本实施例中,目标主机进行报文的接收并通过对报文的解析得到目标虚拟机的MAC地址,再把报文传输至具有该MAC地址的虚拟机上。实现过程较为简单,便于工程实施。
[0137] 需要说明的是,为实现前述的应用于第一设备和第二设备中的数据传输方法,本发明实施例还提供了两种数据传输设备,由于第一种数据传输设备、第二种数据传输设备解决问题的原理与前述实施例一至实施例三中的第一数据传输方法、第二种数据传输方法相似,因此,第一种数据传输设备、第二种数据传输设备的实施过程及实施原理均可以参见前述相关方法的实施过程及实施原理描述,重复之处不再赘述。
[0138] 为便于对本方案的理解,下面举一个具体的应用场景。
[0139] 假定云平台系统中具有三台主机,分别是主机01、主机02、和主机03。其中,主机01的IP地址为1.1.1.1,MAC地址为01:01:01:01:01:01,主机01上的虚拟机11的MAC地址为11:11:11:11:11:11。主机02的IP地址为2.2.2.2,MAC地址为02:02:02:02:02:02,主机02上的虚拟机22的MAC地址为22:22:22:22:22:22。主机03的IP地址为3.3.3.3,MAC地址为03:03:
03:03:03:03,主机03上的虚拟路由器33的MAC地址为33:33:33:33:33:33。
[0140] 假设三台主机均采用物理网卡eth0建立GRE隧道,建立隧道时,每台主机收到云平台系统的发送来的其它主机的隧道信息。以主机01为例,主机01中的第三列表记录的隧道信息如表4所示。
[0141] 表4
[0142]主机号 物理网卡 源IP地址 目的IP地址 源MAC地址 目的MAC地址
02 eth0 1.1.1.1 2.2.2.2 01:01:01:01:01:01 02:02:02:02:02:02
03 eth0 1.1.1.1 3.3.3.3 01:01:01:01:01:01 03:03:03:03:03:03
[0143] 假设虚拟机11、虚拟机22、虚拟路由器33均处于同一(虚拟)网络,该网络的网络标识Tunnel key=1。在云平台系统建立虚拟机22和虚拟路由器33时,云平台系统会通知主机01。主机01将虚拟机22(虚拟路由器33)的MAC地址、虚拟机22(虚拟路由器33)所在主机的主机号及所处网络的Tunnel key进行对应记录,得到如表5所示的第一列表。
[0144] 表5
[0145]虚拟机的MAC地址 虚拟机所在主机的主机号 虚拟机所处网络的Tunnel key
22:22:22:22:22:22 02 1
33:33:33:33:33:33 03 1
[0146] 对于Tunnel key=1的(虚拟)网络来说,由于该网络下的虚拟路由器33位于主机03上,对于主机01来说其记录的第二列表如表6所示。
[0147] 表6
[0148]Tunnle key 主机号
1 03
[0149] 当主机01中的虚拟机11发送报文DATA给主机02中的虚拟机22(目标虚拟机)时,该报文DATA如表7所示,主机01的OVS首先根据报文中的VLAN号查询到对应到Tunnle key(该关系为预先存储的),进而得到Tunnle key=1、MAC地址22:22:22:22:22等信息,调用主机01中的第一列表,判断在第一列表中是否有与Tunnle key=1、MAC地址22:22:22:22:22对应的主机号,本场景中判断为存在有这样的主机号即主机号02。接着调用第三列表,依据确定出的主机号02判断第三列表中是否存在有与该主机号对应的隧道信息,本场景中判断为存在有与主机号02对应的隧道信息如源IP地址为1.1.1.1、目的IP地址是2.2.2.2、目的MAC地址是02:02:02:02:02:02、物理网卡号eth0,利用这些隧道进行对数据DATA分别进行GRE封装、IP层报头封装及数据链路层报头封装,得到如表8所示的报文。主机01通过eth0物理网卡发送至主机02,主机02将报文进行解封装,得到目标虚拟机的MAC地址,把接收到的DATA发送至目标虚拟机即虚拟机22。
[0150] 表7
[0151]
[0152] 表8
[0153]
[0154] 当主机01中的虚拟机11发送报文DATA至外网虚拟机44时,该外网虚拟机的MAC地址为44:44:44:44:44:44,该报文DATA如表9所示,主机01的OVS首先根据报文中的VLAN号查询对应Tunnle key,进而得到Tunnle key=1、MAC地址44:44:44:44:44:44等信息,调用主机01中的第一列表,在第一列表中没有存在有Tunnle key=1、MAC地址44:44:44:44:44:44对应的主机号,则调用第二列表,在第二列表中查找与Tunnle key=1对应的主机号为03。接着调用第三列表,依据确定出的主机号03判断第三列表中是否存在有与该主机号对应的隧道信息,本场景中判断为存在有与主机号03对应的隧道信息,则利用这些隧道信息,对DATA进行GRE封装、IP层报头封装及数据链路层报头封装,得到如表10所示的报文。主机01通过eth0物理网卡发送主机03上,通过主机03将封装后的报文发送至外网中的虚拟机44中。
[0155] 表9
[0156]
[0157] 表10
[0158]
[0159] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0160] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0161] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0162] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0163] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。