虚拟机之间的通信方法技术

技术编号:11425910 阅读:87 留言:0更新日期:2015-05-07 07:15
虚拟机之间的通信方法,其包括:第一虚拟机发出接收方为第二虚拟机的网络数据包;第一路由模块查询网络数据包中的第二虚拟机的IP地址是否存在第一内网路由表中,若是,则:根据第一内网路由表将网络数据包发送至第二主机节点的第二路由模块,第二路由模块根据第二内网路由表将网络数据包发送至第二虚拟机;若否,则:将网络数据包转发至第一虚拟机所在的第一网关,第一网关根据第一外网路由表将网络数据包发送至第二虚拟机所在的第二网关,第二网关根据第二外网路由表将网络数据包发送至第二主机节点的第二路由模块,第二路由模块根据第二内网路由表将网络数据包发送至第二虚拟机。本发明专利技术能够实现分散于互联网上的虚拟机之间进行通信和隔离。

【技术实现步骤摘要】
虚拟机之间的通信方法
本专利技术涉及虚拟机之间的通信技术。
技术介绍
在云计算领域中,属于一个租户网络的虚拟机可以都是在一台物理机器上,可以是分散在多台物理机器上,逻辑上属于一个局域网。属于同一租户网络的虚拟机要求能够实现本局域网内部的互联互通,而属于不同租户网络的虚拟机之间则需要进行网络隔离。传统的虚拟机网络主要通过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地址等信息,然后通过路由表模块本文档来自技高网...

【技术保护点】
虚拟机之间的通信方法,其特征在于,包括以下步骤:步骤1、第一虚拟机发出接收方为第二虚拟机的网络数据包;步骤2、第一虚拟机所在的第一主机节点的第一路由模块查询所述网络数据包中的第二虚拟机的IP地址是否存在第一内网路由表中,若是,则执行步骤3至步骤4,若否,则执行步骤5至步骤8;步骤3、第一路由模块根据第一内网路由表将所述网络数据包发送至所述第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;步骤4、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;步骤5、第一路由模块将所述网络数据包转发至第一虚拟机所在的第一网关;步骤6、第一网关根据第一外网路由表将所述网络数据包发送至第二虚拟机所在的第二网关;步骤7、第二网关根据第二外网路由表将所述网络数据包发送至第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;步骤8、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;其中,第一内网路由表存储在第一路由模块中,第二内网路由表存储在第二路由模块中,第一外网路由表存储在第一网关中, 第二外网路由表存储在第二网关中;第二路由模块和第二虚拟机均位于第二主机节点上。...

【技术特征摘要】
1.虚拟机之间的通信方法,其特征在于,包括以下步骤:步骤1、第一虚拟机发出接收方为第二虚拟机的网络数据包;步骤2、第一虚拟机所在的第一主机节点的第一路由模块查询所述网络数据包中的第二虚拟机的IP地址是否存在第一内网路由表中,若是,则执行步骤3至步骤4,若否,则执行步骤5至步骤8;步骤3、第一路由模块根据第一内网路由表将所述网络数据包发送至第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;步骤4、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;步骤5、第一路由模块将所述网络数据包转发至第一虚拟机所在的第一网关;步骤6、第一网关根据第一外网路由表将所述网络数据包发送至第二虚拟机所在的第二网关;步骤7、第二网关根据第二外网路由表将所述网络数据包发送至第二主机节点,以使第二主机节点将所述网络数据包转发至第二路由模块;步骤8、第二路由模块根据第二内网路由表将所述网络数据包发送至第二虚拟机;其中,当创建虚拟机时,JAVA控制程...

【专利技术属性】
技术研发人员:叶耀荣刘锦涛
申请(专利权)人:广州亦云信息技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1