CN104601428B - 虚拟机之间的通信方法 - Google Patents

虚拟机之间的通信方法 Download PDF

Info

Publication number
CN104601428B
CN104601428B CN201410815855.XA CN201410815855A CN104601428B CN 104601428 B CN104601428 B CN 104601428B CN 201410815855 A CN201410815855 A CN 201410815855A CN 104601428 B CN104601428 B CN 104601428B
Authority
CN
China
Prior art keywords
virtual machine
network packet
routing table
gateway
sent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410815855.XA
Other languages
English (en)
Other versions
CN104601428A (zh
Inventor
叶耀荣
刘锦涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Onecloud Information Technology Co ltd
Guangzhou Yunbiao Bureau Network Technology Co.,Ltd.
Original Assignee
GUANGZHOU ONECLOUD INFORMATION TECHNOLOGY Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GUANGZHOU ONECLOUD INFORMATION TECHNOLOGY Inc filed Critical GUANGZHOU ONECLOUD INFORMATION TECHNOLOGY Inc
Priority to CN201410815855.XA priority Critical patent/CN104601428B/zh
Publication of CN104601428A publication Critical patent/CN104601428A/zh
Application granted granted Critical
Publication of CN104601428B publication Critical patent/CN104601428B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

虚拟机之间的通信方法,其包括:第一虚拟机发出接收方为第二虚拟机的网络数据包;第一路由模块查询网络数据包中的第二虚拟机的IP地址是否存在第一内网路由表中,若是,则:根据第一内网路由表将网络数据包发送至第二主机节点的第二路由模块,第二路由模块根据第二内网路由表将网络数据包发送至第二虚拟机;若否,则:将网络数据包转发至第一虚拟机所在的第一网关,第一网关根据第一外网路由表将网络数据包发送至第二虚拟机所在的第二网关,第二网关根据第二外网路由表将网络数据包发送至第二主机节点的第二路由模块,第二路由模块根据第二内网路由表将网络数据包发送至第二虚拟机。本发明能够实现分散于互联网上的虚拟机之间进行通信和隔离。

Description

虚拟机之间的通信方法
技术领域
本发明涉及虚拟机之间的通信技术。
背景技术
在云计算领域中,属于一个租户网络的虚拟机可以都是在一台物理机器上,可以是分散在多台物理机器上,逻辑上属于一个局域网。属于同一租户网络的虚拟机要求能够实现本局域网内部的互联互通,而属于不同租户网络的虚拟机之间则需要进行网络隔离。
传统的虚拟机网络主要通过VLAN/VXLAN模式实现互联互通、隔离。这种技术主要应用于虚拟机都部署在同一个集中的数据中心上的情况。VLAN是基于交换机和路由器的一种局域网实现,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的,处于一个VLAN的设备和用户并不受物理位置的影响,他们之前的相互通信就好像处于同一个网段之中。同时VLAN也可以进行不同网络之间的隔离,VXLAN是作为VLAN的补充和改进,解决了VLAN只能支持4096个VLAN网络等缺点。
这两种技术在一个数据中心内部可以得到很好的支持,但是他们的配置比较繁琐,需要手工介入较多,并且针对嵌套虚拟机化来说也会更加麻烦,另外VXLAN会涉及到IP多播技术,而多播技术在互联网上不能得到很好的支持,当虚拟机节点是完全分散在互联网各个区域的时候就显得不那么适用了。
发明内容
本发明的目的在于提出一种虚拟机之间的通信方法,其能解决分散于互联网上的虚拟机之间的通信和隔离的问题。
为了达到上述目的,本发明所采用的技术方案如下:
虚拟机之间的通信方法,其包括以下步骤:
步骤1、第一虚拟机发出接收方为第二虚拟机的网络数据包;
步骤2、第一虚拟机所在的第一主机节点的第一路由模块查询所述网络数据包中的第二虚拟机的IP地址是否存在第一内网路由表中,若是,则执行步骤3至步骤4,若否,则执行步骤5至步骤8;
步骤3、第一路由模块根据第一内网路由表将所述网络数据包发送至所述第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;
步骤4、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;
步骤5、第一路由模块将所述网络数据包转发至第一虚拟机所在的第一网关;
步骤6、第一网关根据第一外网路由表将所述网络数据包发送至第二虚拟机所在的第二网关;
步骤7、第二网关根据第二外网路由表将所述网络数据包发送至第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;
步骤8、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;
其中,第一内网路由表存储在第一路由模块中,第二内网路由表存储在第二路由模块中,第一外网路由表存储在第一网关中,第二外网路由表存储在第二网关中;第二路由模块和第二虚拟机均位于第二主机节点上。
优选的,第一主机节点为物理机或虚拟机。
优选的,第二主机节点均物理机或虚拟机
优选的,第一网关采用SNAT的方式将网络数据包发送至第二网关。
优选的,第二网关采用DNAT的方式将网络数据包发送至第二主机节点。
本发明具有如下有益效果:
整个网络通信架构实现全自动部署,能够实现分散于互联网上的虚拟机之间进行通信和隔离,并不要求所有的虚拟机必须存在于同一个集中的数据中心内,虚拟机集群的分布更加自由。
附图说明
图1为本发明较佳实施例的虚拟机之间的通信方法的流程图;
图2为本发明较佳实施例的系统架构图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述。
结合图1和图2所示,一种虚拟机之间的通信方法,其包括以下步骤:
步骤S1、第一虚拟机发出接收方为第二虚拟机的网络数据包。
步骤S2、第一虚拟机所在的第一主机节点的第一路由模块查询所述网络数据包中的第二虚拟机的IP地址是否存在第一内网路由表中,若是,说明第一虚拟机和第二虚拟机在同一个租户网络中,则执行步骤S3至步骤S4,若否,说明第一虚拟机和第二虚拟机不在同一个租户网络中,则执行步骤S5至步骤S8。
步骤S3、第一路由模块根据第一内网路由表将所述网络数据包发送至所述第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块。
步骤S4、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机。
步骤S5、第一路由模块将所述网络数据包转发至第一虚拟机所在的第一网关。
步骤S6、第一网关根据第一外网路由表将所述网络数据包发送至第二虚拟机所在的第二网关,具体的,第一网关可采用SNAT的方式将网络数据包发送至第二网关。
步骤S7、第二网关根据第二外网路由表将所述网络数据包发送至第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块,具体的,第二网关可采用DNAT的方式将网络数据包发送至第二主机节点。
步骤S8、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机。
其中,第一内网路由表存储在第一路由模块中,第二内网路由表存储在第二路由模块中,第一外网路由表存储在第一网关中,第二外网路由表存储在第二网关中;第二路由模块和第二虚拟机均位于第二主机节点上。
本实施例的第一主机节点可以是物理机或虚拟机,第二主机节点均物理机或虚拟机。第一主机节点和第二主机节点也可以是同一台物理机或虚拟机。
为了便于理解本发明,下面结合可行的通信架构及案例进行详细说明。要实现本实施例的通信方法,需要网路接口模块、路由表模块和网络转发模块。其中,第一路由模块和第二路由模块分别由路由表模块和网络转发模块组成。
网络接口模块主要由网络接口(简称为TAP设备)和网桥设备组成,与网络转发模块关联。当创建虚拟机的时候会为每个虚拟机创建一个对应的网络接口。TAP设备能够捕获所有进出虚拟机的网络数据包,并进行网络数据包的解析,完成网络数据包的读取和发送功能。当使用Libvirt等虚拟化技术创建一个虚拟机的时候,会自动的创建出一个被虚拟机所使用的虚拟网卡VNET,网络接口模块会将VNET与TAP设备通过网桥设备进行桥接,使得虚拟机的VNET与TAP设备同处于一个广播域,方便TAP设备捕获通过VNET的网络数据包。
路由表模块由JAVA控制程序和数据库组成,为了避免使用交换机等设备,而又能保证正常的网络数据包转发操作,路由表模块设计了一个JAVA控制程序,由JAVA控制程序维护路由表的添加删除等操作,而路由表信息则是存在于数据库之中。创建虚拟机的时候,不同的租户网络使用OAID进行区分(OAID是一个区分不同网络的唯一标识字符串),OIAD+IP是区分虚拟机的标志,数据库会维护一张网络ID与相应IP的路由映射关系表,同时还会维护一张网络ID与主机ID的映射表,路由表信息是JAVA控制程序实时进行更新的,当创建虚拟机的时候JAVA控制程序会将虚拟机的IP地址、MAC地址、OAID、主机ID等信息存入到相应的数据库的路由表中,而当删除虚拟机时也会将路由表中相应的信息移除。通过这种方式,网络转发模块收到互联网上发送过来的网络数据包时,只需要查询数据库就能够获取到IP地址、MAC地址、OAID、主机ID之间的对应关系,利用路由表就可以将网络数据包按照一定的策略进行转发。
网络转发模块由JAVA控制程序实现,底层对于网络数据包的转发等操作调用网络接口模块实现。租户网络叠加于互联网网络,是一种叠加网络。租户网络数据包封装在互联网网络数据包内。当网络转发模块收到网络数据包之后,对网络数据包进行解析,获取网络数据包的源地址和目的IP地址等信息,然后通过路由表模块查询路由表,比对之后按照一定策略转发网络数据包。通过这种方式,网络转发模块能够通过路由表判别目的虚拟机所在的主机,通过互联网将网络数据包转发,也可以通过路由表确定到达本主机的网络数据包是要发往哪个虚拟机,从而通过TAP设备将网络数据包发到对应的虚拟机上。
同一个租户网络对应于同一个OAID,对应同个OAID的网络内部虚拟机之间是能够相互通信的。
同一个租户网络内部的虚拟机的通信过程如下(假设同个OAID下有第一虚拟机和第二虚拟机进行通信):
(1)第一虚拟机通过其虚拟网卡向第二虚拟机发出网络数据包;
(2)第一虚拟机对应的第一主机节点上的TAP设备捕获到网络数据包并解析出IP地址等信息,然后转发给第一路由模块;
(3)第一路由模块通过数据库查询路由表获取目的IP地址对应第二主机节点的IP地址,调用TAP设备修改目的IP地址,将网络数据包发送出去;
(4)第二虚拟机所在第二主机节点上的第二路由模块获取到网络数据包;
(5)第二路由模块分析网络数据包获得的目的MAC地址;
(6)通过查询路由表可知MAC地址对应的TAP设备;
(7)调用TAP设备将网络数据包发送到第二虚拟机。
不同租户网络之间的虚拟机是隔离的,无法直接进行两者相互之间的访问。虚拟机之间也无法得知他们对应主机节点的IP,所以无法直接通过互联网通路进行通信。所以要实现不同租户网络的虚拟机之间的相互访问,首先必须解决虚拟机所在主机节点之间的相互通信。
主机节点之间的相互通信可以通过互联网数据通路进行。要实现不同OAID虚拟机 之间的通信需要为每个虚拟机分配一个公网IP,并且通过相应的网关。每个OAID下的网络 有一个网关,网关上也一样维护了一个路由表,并且当创建某一个租户网络的时候在网关 上为这个租户网络创建一个桥设备,将网关上的TAP设备绑定到桥设备上,当为虚拟机分配 一个公网IP的时候,将公网IP与桥设备IP进行静态NAT,通过设置Iptables规则实现。
当网络数据包往外发的时候做SNAT:
例如:iptables-t nat-A POSTROUTING-s 10.10.10.0-o eth0-j SNAT--to- source 192.168.11.3。
当收到网络数据包的时候做DNAT:
例如:iptables-t nat-A PREROUTING-s 192.168.11.3-o eth0-j DNAT--to- destination 10.10.10.0。
通过NAT方式,不同租户网络的虚拟机之间的通信的网络数据包都能够通过网关到达虚拟机所在的主机节点。然后同样通过TAP设备以及网络转发模块将网络数据包发送到最终的虚拟机上。这样就实现了不同租户网路的虚拟机之间的通信。
以不同OAID网络下的第一虚拟机和第二虚拟机之间的通信为例进行说明,通信流程如下:
(1)第一虚拟机通过其虚拟网卡向第二虚拟机发出网络数据包;
(2)第一虚拟机对应的第一主机节点上的TAP设备捕获到网络数据包并解析出IP地址等信息,然后转发给第一路由模块;
(3)第一路由模块通过数据库查询是否有相应的信息在路由表中,由于两个虚拟机是属于不同的OAID网络,所以查找不到对应的IP信息,所以将网络数据包转发到第一虚拟机所在的第一网关;
(4)第一网关对网络数据包做SNAT之后将网络数据包转发到第二虚拟机所在的第二网关;
(5)第二网关对网络数据包做DNAT转换,发送到第二虚拟机所在的第二主机节点;
(6)第二主机节点上的第二路由模块捕获到网络数据包,解析出目的IP,查询路由表获得对应的第二虚拟机的MAC地址;
(7)TAP设备根据MAC地址找到第二虚拟机的虚拟网卡,将网络数据包发送到虚拟网卡,从而第二虚拟机获得网络数据包。
本实施例具有如下优势:
1、能够解决多租户网络通信和隔离的问题,解决分散于互联网上的虚拟机之间的通信和隔离的难题。本实施例所述的隔离是指在策略或规则允许下的通信,并不是无条件的通信。
2、本实施例的网络模式与VLAN的网络模式相比,其并不要求所有的虚拟机必须存在于同一个集中的数据中心内,虚拟机集群的分布更加自由。
3、与传统VLAN只能支持4096个节点相比,本实施例理论上没有节点的限制,当然会受限于网络带宽,但是提高网络带宽的前提下远远不止4096个节点。
4、VLAN操作需手工介入较多,对于大规模的集群来说,将造成管理员十分繁重的负担,而本实施例的各个网络模块的安装和部署都可以采用全自动的方式进行。
5、虚拟机的网络数据包的转发等操作都是依赖于软件模块,减少了对于网络硬件设备的依赖。
6、提供了一种整合互联网主机资源的租户网络解决方案。
对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。

Claims (5)

1.虚拟机之间的通信方法,其特征在于,包括以下步骤:
步骤1、第一虚拟机发出接收方为第二虚拟机的网络数据包;
步骤2、第一虚拟机所在的第一主机节点的第一路由模块查询所述网络数据包中的第二虚拟机的IP地址是否存在第一内网路由表中,若是,则执行步骤3至步骤4,若否,则执行步骤5至步骤8;
步骤3、第一路由模块根据第一内网路由表将所述网络数据包发送至第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;
步骤4、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;
步骤5、第一路由模块将所述网络数据包转发至第一虚拟机所在的第一网关;
步骤6、第一网关根据第一外网路由表将所述网络数据包发送至第二虚拟机所在的第二网关;
步骤7、第二网关根据第二外网路由表将所述网络数据包发送至第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;
步骤8、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;
其中,当创建虚拟机时,JAVA控制程序将虚拟机的IP地址、MAC地址、OAID、主机ID信息存入对应数据库的内网路由表中,不同的租户网络使用OAID进行区分,所述OAID是一个区分不同网络的唯一标识字符串,OIAD+IP是区分虚拟机的标志;通过查询数据库获取IP地址、MAC地址、OAID、主机ID之间的对应关系,通过内网路由表或外网路由表对所述网络数据包进行转发,第一内网路由表存储在第一路由模块中,第二内网路由表存储在第二路由模块中,第一外网路由表存储在第一网关中,第二外网路由表存储在第二网关中;第二路由模块和第二虚拟机均位于第二主机节点上。
2.如权利要求1所述的通信方法,其特征在于,第一主机节点为物理机或虚拟机。
3.如权利要求1所述的通信方法,其特征在于,第二主机节点均物理机或虚拟机。
4.如权利要求1所述的通信方法,其特征在于,第一网关采用SNAT的方式将网络数据包发送至第二网关。
5.如权利要求1所述的通信方法,其特征在于,第二网关采用DNAT的方式将网络数据包发送至第二主机节点。
CN201410815855.XA 2014-12-23 2014-12-23 虚拟机之间的通信方法 Active CN104601428B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410815855.XA CN104601428B (zh) 2014-12-23 2014-12-23 虚拟机之间的通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410815855.XA CN104601428B (zh) 2014-12-23 2014-12-23 虚拟机之间的通信方法

Publications (2)

Publication Number Publication Date
CN104601428A CN104601428A (zh) 2015-05-06
CN104601428B true CN104601428B (zh) 2018-10-09

Family

ID=53126949

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410815855.XA Active CN104601428B (zh) 2014-12-23 2014-12-23 虚拟机之间的通信方法

Country Status (1)

Country Link
CN (1) CN104601428B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106470155B (zh) * 2015-08-14 2020-03-31 中国电信股份有限公司 一种虚拟机数据的转发方法、sdn控制器和sdn系统
CN105337858B (zh) * 2015-11-20 2019-10-18 北京百度网讯科技有限公司 虚拟路由器集群、数据转发方法和装置
CN105491020B (zh) * 2015-11-24 2019-01-29 上海市共进通信技术有限公司 实现智能设备的操作系统中程序访问ip地址限制的方法
WO2017127972A1 (zh) * 2016-01-25 2017-08-03 华为技术有限公司 一种数据传输方法以及宿主机
SG10202105475YA (en) * 2017-07-10 2021-07-29 Bgc Partners Lp Networks for packet monitoring and replay
CN110753093B (zh) * 2019-09-29 2022-11-29 苏州浪潮智能科技有限公司 云计算系统中设备的管理方法和装置
CN111290746A (zh) * 2020-02-13 2020-06-16 腾讯科技(深圳)有限公司 对象访问方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102075537A (zh) * 2011-01-19 2011-05-25 华为技术有限公司 一种实现虚拟机间数据传输的方法和系统
CN102480420A (zh) * 2010-11-29 2012-05-30 北京系统工程研究所 报文发送方法以及报文接收方法、装置及系统
CN103621026A (zh) * 2013-04-01 2014-03-05 华为技术有限公司 虚拟机的数据交换方法、装置和系统
CN103905309A (zh) * 2012-12-28 2014-07-02 中国电信股份有限公司 虚拟机之间的数据交换方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101610215B (zh) * 2009-07-21 2011-08-17 杭州华三通信技术有限公司 一种路由转发方法和一种网关设备
CN101827038B (zh) * 2010-05-24 2013-12-11 杭州华三通信技术有限公司 分布式设备和分布式设备中报文转发的方法
CN103685235A (zh) * 2013-11-18 2014-03-26 汉柏科技有限公司 一种基于防火墙的三层网络虚拟化实现方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102480420A (zh) * 2010-11-29 2012-05-30 北京系统工程研究所 报文发送方法以及报文接收方法、装置及系统
CN102075537A (zh) * 2011-01-19 2011-05-25 华为技术有限公司 一种实现虚拟机间数据传输的方法和系统
CN103905309A (zh) * 2012-12-28 2014-07-02 中国电信股份有限公司 虚拟机之间的数据交换方法和系统
CN103621026A (zh) * 2013-04-01 2014-03-05 华为技术有限公司 虚拟机的数据交换方法、装置和系统

Also Published As

Publication number Publication date
CN104601428A (zh) 2015-05-06

Similar Documents

Publication Publication Date Title
CN104601428B (zh) 虚拟机之间的通信方法
US10693678B2 (en) Data center networks
US9800496B2 (en) Data center networks
CA2950206C (en) Flow entry configuration method, apparatus, and system
CN103227843B (zh) 一种物理链路地址管理方法及装置
US9331872B2 (en) Implementing PVLANs in a large-scale distributed virtual switch
US20180077048A1 (en) Controller, control method and program
CN104081692B (zh) 用于FCoE融合结构的网络设备、方法和装置
CN102158421B (zh) 创建三层接口的方法及单元
CN103078969B (zh) 一种mac地址信息通告方法和设备
WO2016004556A1 (zh) 业务流的处理方法、装置及设备
US10742697B2 (en) Packet forwarding apparatus for handling multicast packet
US11469998B2 (en) Data center tenant network isolation using logical router interconnects for virtual network route leaking
CN105471744A (zh) 一种虚拟机迁移方法和装置
CN104780088A (zh) 一种业务报文的传输方法和设备
CN106034052B (zh) 一种对虚拟机间二层流量进行监控的系统及方法
CN105634770A (zh) 部署虚拟扩展局域网的方法和装置
CN103763310A (zh) 基于虚拟网络的防火墙服务系统及方法
US9584340B2 (en) Data center networks
US20180088972A1 (en) Controller, control method and program
CN105391635A (zh) 一种基于sdn的网络虚拟化方法
CN109688241B (zh) 基于SDN的IPv4/IPv6双栈转换方法和系统
CN105721487B (zh) 信息处理方法及电子设备
CN107104871A (zh) 子网互通方法和装置
JP2019519146A (ja) ルーティング確立、パケット送信

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 705-714, block B, Zhongda science and technology complex building, 135 Xingang West Road, Haizhu District, Guangzhou, Guangdong 510260

Patentee after: GUANGZHOU ONECLOUD INFORMATION TECHNOLOGY CO.,LTD.

Address before: Room 705-714, block B, Zhongda science and technology complex building, 135 Xingang West Road, Haizhu District, Guangzhou, Guangdong 510260

Patentee before: ONECLOUD, Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230602

Address after: Room 715, Building B, Zhongda Science and Technology Park, Building 705, West District, Yuanyuan, No. 135 Xingang West Road, Haizhu District, Guangzhou City, Guangdong Province, 510000 (for office only)

Patentee after: Guangzhou Yunbiao Bureau Network Technology Co.,Ltd.

Address before: Room 705-714, block B, Zhongda science and technology complex building, 135 Xingang West Road, Haizhu District, Guangzhou, Guangdong 510260

Patentee before: GUANGZHOU ONECLOUD INFORMATION TECHNOLOGY CO.,LTD.