一种实现虚拟机通信的方法和装置.pdf

上传人:a*** 文档编号:4884666 上传时间:2018-11-21 格式:PDF 页数:41 大小:3.01MB
返回 下载 相关 举报
摘要
申请专利号:

CN201480000400.0

申请日:

2014.06.16

公开号:

CN104115453A

公开日:

2014.10.22

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 12/46申请日:20140616|||公开

IPC分类号:

H04L12/46

主分类号:

H04L12/46

申请人:

华为技术有限公司

发明人:

吴天议

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

2013.12.31 CN PCT/CN2013/091202

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明实施例提供的方法和装置,第一交换机从SDN控制器接收ARP响应,所述ARP响应携带目的网关的MAC地址,所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心;所述第一交换机根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。因此SDN控制器代答,减少了广播报文对传输带宽的占用,并且只经过了第一数据中心的路由器,减少了报文在数据中心间的迂回。

权利要求书

权利要求书1.  一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心的第一子网并且与第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,其特征在于:所述第一交换机从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;所述第一交换机向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求;所述第一交换机从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的网关的媒体接入控制MAC地址;所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心;所述第一交换机根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。2.  如权利要求1所述的方法,其特征在于,所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体包括:所述第一交换机向所述SDN控制器发送请求,以请求获取所述目的网关的MAC地址对应的VTEP信息;接收所述SDN控制器发送的所述目的网关的MAC地址对应的VTEP信息。3.  如权利要求1所述的方法,其特征在于,所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体包括:所述第一交换机根据所述目的网关的MAC地址,查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息。4.  如权利要求3所述的方法,其特征在于,所述第一交换机查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体包括:所述第一交换机根据所述目的网关的MAC地址,查询本地保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。5.  如权利要求4所述的方法,其特征在于,当所述第一交换机根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上位于所述第一数据中心的路由器的VTEP信息时,所述第一交换机根据以下至少之一:路由器的负载和调度策略,选择所述目的网关的MAC地址对应的VTEP信息。6.  如权利要求1至5任一所述的方法,其特征在于,所述第一交换机根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机具体包括:所述第一交换机对从所述第一虚拟机接收的IP报文进行虚拟可扩展局域网VxLAN封装,其中所述VxLAN封装的目的IP地址为获取的所述VTEP信息,虚拟网络标识VNI为所述第一子网的标识,所述IP报文的目的MAC地址为所述目的网关的MAC地址;所述VTEP信息对应的路由器,将目的IP地址改为所述第二交换机的IP地址,VNI改为所述第二子网的标识,目的MAC地址改为所述第二虚拟 机的MAC地址,然后将改变VxLAN封装的IP报文,发送给所述第二交换机;所述第二交换机对接收的改变VxLAN封装的IP报文,进行VxLAN解封装后,发送给所述第二虚拟机。7.  一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心的第一子网并且与第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,其特征在于:所述第一数据中心的软件定义网络SDN控制器从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;所述SDN控制器根据所述目的网关的IP地址,获取所述目的网关的媒体接入控制MAC地址,并向所述第一交换机发送ARP响应,所述ARP响应携带所述目的网关的MAC地址,以使所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心,使所述VTEP信息对应的路由器将IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。8.  如权利要求7所述的方法,其特征在于,还包括:所述SDN控制器接收所述第一交换机发送的请求,以请求获取所述目的网关的MAC地址对应的VTEP信息;所述SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的网关的MAC地址对应的VTEP信息。9.  如权利要求8所述的方法,其特征在于,所述SDN控制器查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体包括:所述SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。10.  如权利要求9所述的方法,其特征在于,当所述SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上位于所述第一数据中心的路由器的VTEP信息时,所述SDN控制器根据以下至少之一:路由器的负载和调度策略,选择所述目的网关的MAC地址对应的VTEP信息。11.  如权利要求7至10任一所述的方法,其特征在于,若所述第二虚拟机位于第二数据中心,则还包括:所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址、所述第二子网的虚拟网络标识VNI,和所述第二交换机的VTEP信息,以在所述第一数据中心的SDN控制器的控制下,使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。12.  一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心并且与第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,其特征在于:所述第一交换机从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;所述第一交换机根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址;根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交 换机的IP地址;所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。13.  如权利要求12所述的方法,其特征在于,所述第一交换机根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址具体包括:所述第一交换机向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求,所述ARP请求携带所述目的虚拟机的IP地址;所述第一交换机从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址。14.  如权利要求12或13所述的方法,其特征在于,根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体包括:所述第一交换机向所述SDN控制器发送请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息;接收所述SDN控制器发送的所述目的虚拟机的MAC地址对应的VTEP信息。15.  如权利要求12或13所述的方法,其特征在于,根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体包括:所述第一交换机根据所述目的虚拟机的MAC地址,查询本地保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息。16.  如权利要求15所述的方法,其特征在于,还包括:所述第一交换机从所述SDN控制器获取所述第二虚拟机的IP地址、MAC地址、和所述第二交换机的VTEP信息,以通过所述第一交换机与所述 第二交换机的隧道将IP报文发送给所述第二虚拟机。17.  一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心并且与第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,其特征在于:所述第一数据中心的软件定义网络SDN控制器从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;所述SDN控制器根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址,并向所述第一交换机发送ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址,以使所述第一交换机根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址,使所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。18.  如权利要求17所述的方法,其特征在于,还包括:所述SDN控制器接收所述第一交换机发送的请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息;所述SDN控制器根据所述目的虚拟机的MAC地址,查询本地保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的虚拟机的MAC地址对应的VTEP信息。19.  如权利要求17或18所述的方法,其特征在于,还包括:所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息,并将所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息下发给所述第一交换机。20.  一种实现虚拟机通信的第一交换机,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心的第一子网并且与所述第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,其特征在于,所述第一交换机包括:接收模块,用于从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;发送模块,用于向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求;所述接收模块还用于从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的网关的媒体接入控制MAC地址;获取模块,用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心;所述发送模块,还用于根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。21.  如权利要求20所述的交换机,其特征在于,所述获取模块用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体为:所述获取模块用于向所述SDN控制器发送请求,以请求获取所述目的网关的MAC地址对应的VTEP信息,接收所述SDN控制器发送的所述目的网关的MAC地址对应的VTEP信息。22.  如权利要求20所述的交换机,其特征在于,所述获取模块用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体为:所述获取模块用于根据所述目的网关的MAC地址,查询所述第一交换机保存的流表,获取所述目的网关的MAC地址对应的VTEP信息。23.  如权利要求22所述的交换机,其特征在于,所述获取模块用于查询所述第一交换机保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体为:所述获取模块用于根据所述目的网关的MAC地址,查询所述第一交换机保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。24.  一种实现虚拟机通信的软件定义网络SDN控制器,其特征在于,所述SDN控制器位于第一数据中心,并且应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于所述第一数据中心的第一子网并且与第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,所述SDN控制器包括:接收模块,用于从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;处理模块,用于根据所述目的网关的IP地址,获取所述目的网关的媒体接入控制MAC地址;发送模块,用于向所述第一交换机发送ARP响应,所述ARP响应携带所述目的网关的MAC地址,以使所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心,使所述VTEP信息对应的路由器将IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。25.  如权利要求24所述的控制器,其特征在于,所述接收模块还用于接收所述第一交换机发送的请求,以请求获取所 述目的网关的MAC地址对应的VTEP信息;所述处理模块还用于根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取所述目的网关的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的网关的MAC地址对应的VTEP信息。26.  如权利要求25所述的控制器,其特征在于,所述处理模块用于查询所述SDN控制器保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体为:所述处理模块用于根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。27.  如权利要求26所述的控制器,其特征在于,当所述处理模块用于根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取了两条或以上位于所述第一数据中心的路由器的VTEP信息时,所述处理模块用于根据以下至少之一:路由器的负载和调度策略,选择所述目的网关的MAC地址对应的VTEP信息。28.  如权利要求24至27任一所述的控制器,若所述第二虚拟机位于第二数据中心,则所述处理模块还用于从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址、第二子网的虚拟网络标识VNI,和所述第二交换机的VTEP信息。29.  一种实现虚拟机通信的第一交换机,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心并且与所述第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,其特征在于,所述交换机包括:接收模块,用于从所述第一虚拟机接收地址解析协议ARP请求,所述 ARP请求携带目的虚拟机的IP地址;处理模块,用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址,根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址;发送模块,用于通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。30.  如权利要求29所述的交换机,其特征在于,所述处理模块用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的MAC地址具体为:所述处理模块用于向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求,所述ARP请求携带所述目的虚拟机的IP地址,从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址。31.  如权利要求29或30所述的交换机,其特征在于,所述处理模块用于根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体为:所述处理模块用于向所述SDN控制器发送请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息,接收所述SDN控制器发送的所述目的虚拟机的MAC地址对应的VTEP信息。32.  如权利要求29或30所述的交换机,其特征在于,所述处理模块用于根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体为:所述处理模块用于根据所述目的虚拟机的MAC地址,查询所述第一交换机保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息。33.  如权利要求32所述的交换机,其特征在于,所述处理模块还用于从所述第一数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC 地址、和所述第二交换机的VTEP信息。34.  一种实现虚拟机通信的软件定义网络SDN控制器,其特征在于,所述SDN控制器位于第一数据中心,并且应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于所述第一数据中心并且与第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,所述SDN控制器包括:接收模块,用于从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;获取模块,用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址;发送模块,用于向所述第一交换机发送ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址,以使所述第一交换机根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址,使所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。35.  如权利要求34所述的控制器,其特征在于,所述接收模块还用于接收所述第一交换机发送的请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息;所述获取模块还用于根据所述目的虚拟机的MAC地址,查询所述SDN控制器保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的虚拟机的MAC地址对应的VTEP信息。36.  如权利要求34或35所述的控制器,其特征在于,所述获取模块还用于从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息;所述发送模块还用于将所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息下发给所述第一交换机。37.  一种实现虚拟机通信的交换机,其特征在于,包括:处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;所述存储器,用于存储计算机执行指令;所述处理器,用于运行所述计算机执行指令,执行如权利要求1至6任一所述的方法。38.  一种实现虚拟机通信的软件定义网络SDN控制器,其特征在于,包括:处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;所述存储器,用于存储计算机执行指令;所述处理器,用于运行所述计算机执行指令,执行如权利要求7至11任一所述的方法。39.  一种实现虚拟机通信的交换机,其特征在于,包括:处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;所述存储器,用于存储计算机执行指令;所述处理器,用于运行所述计算机执行指令,执行如权利要求12至16任一所述的方法。40.  一种实现虚拟机通信的软件定义网络SDN控制器,其特征在于,包括:处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;所述存储器,用于存储计算机执行指令;所述处理器,用于运行所述计算机执行指令,执行如权利要求17至19任一所述的方法。

说明书

说明书一种实现虚拟机通信的方法和装置
技术领域
本发明实施例涉及网络通信领域,特别涉及一种实现虚拟机通信的方法和装置。
背景技术
现有技术应用虚拟可扩展局域网(VxLAN,Virtual extensible LAN)技术扩展网络虚拟化,用以得到足够数量的虚拟网络,来满足用户使用。
每一个数据中心可能运行多个虚拟网络的虚拟机(VM,Virtual Machine)。当一个数据中心的VM与另一数据中心的VM通信时,它会向第一跳路由器发出广播地址解析协议(ARP,Address Resolution Protocol)请求,以广播获取目的网关的MAC地址,然后ARP请求被广播到各VM。获取到目的网关的MAC地址后,通过目的网关的MAC地址,将报文发送到各个数据中心的路由器,然后到达目的VM,从而实现VM之间的通信。但是这种ARP广播到各VM的方式,会占用大量传输带宽;而且报文会通过各数据中心的路由器才能到达目的VM,在数据中心间迂回比较严重。
发明内容
本发明实施例提出了一种实现虚拟机通信的方法和装置,以减少广播报文对传输带宽的占用,和减少报文在数据中心间的迂回。
第一方面,本发明实施例提出了一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心的第一子网并且与第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,所述第一交换机与所述第二交换机可以相同,也可以不同,该方法包括:所述第一交换机从所述第一虚拟机接收地址解析协 议ARP请求,所述ARP请求携带目的网关的IP地址;
所述第一交换机向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求;
所述第一交换机从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的网关的媒体接入控制MAC地址;
所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心;
所述第一交换机根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。
结合第一方面,在第一种可能的实现方式中,所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体包括:所述第一交换机向所述SDN控制器发送请求,以请求获取所述目的网关的MAC地址对应的VTEP信息;接收所述SDN控制器发送的所述目的网关的MAC地址对应的VTEP信息。
结合第一方面,在第二种可能的实现方式中,所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体包括:所述第一交换机根据所述目的网关的MAC地址,查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息。
结合第一方面的第二种可能的实现方式中,在第三种可能的实现方式中,所述第一交换机查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体包括:
所述第一交换机根据所述目的网关的MAC地址,查询本地保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP 信息作为所述目的网关的MAC地址对应的VTEP信息。
结合第一方面的第三种可能的实现方式中,在第四种可能的实现方式中,当所述第一交换机根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上位于所述第一数据中心的路由器的VTEP信息时,所述第一交换机根据以下至少之一:路由器的负载和调度策略,选择所述目的网关的MAC地址对应的VTEP信息。
结合第一方面或者第一方面的第一种至第四种任意一种可能的实现方式,在第五种可能的实现方式中,所述第一交换机根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机具体包括:
所述第一交换机对从所述第一虚拟机接收的IP报文进行虚拟可扩展局域网VxLAN封装,其中所述VxLAN封装的目的IP地址为获取的所述VTEP信息,虚拟网络标识VNI为所述第一子网的标识,所述IP报文的目的MAC地址为所述目的网关的MAC地址;
所述VTEP信息对应的路由器,将目的IP地址改为所述第二交换机的IP地址,VNI改为所述第二子网的标识,目的MAC地址改为所述第二虚拟机的MAC地址,然后将改变VxLAN封装的IP报文,发送给所述第二交换机;
所述第二交换机对接收的改变VxLAN封装的IP报文,进行VxLAN解封装后,发送给所述第二虚拟机。
第二方面,本发明实施例提出了一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心的第一子网并且与第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,所述第一交换机与所述第二交换机可以相同,也可 以不同,该方法包括:所述第一数据中心的软件定义网络SDN控制器从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;
所述SDN控制器根据所述目的网关的IP地址,获取所述目的网关的媒体接入控制MAC地址,并向所述第一交换机发送ARP响应,所述ARP响应携带所述目的网关的MAC地址,以使所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心,使所述VTEP信息对应的路由器将IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。
结合第二方面,在第一种可能的实现方式中,所述SDN控制器接收所述第一交换机发送的请求,以请求获取所述目的网关的MAC地址对应的VTEP信息;
所述SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的网关的MAC地址对应的VTEP信息。
结合第二方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述SDN控制器查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体包括:
所述SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
结合第二方面的第二种可能的实现方式中,在第三种可能的实现方式中,当所述SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上位于所述第一数据中心的路由器的VTEP信息时, 所述SDN控制器根据以下至少之一:路由器的负载和调度策略,选择所述目的网关的MAC地址对应的VTEP信息。
结合第二方面或者第二方面的第一种至第三种任意一种可能的实现方式,在第四种可能的实现方式中,若所述第二虚拟机位于第二数据中心,则还包括:
所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址、所述第二子网的虚拟网络标识VNI,和所述第二交换机的VTEP信息,以在所述第一数据中心的SDN控制器的控制下,使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。
第三方面,本发明实施例提出了一种实现虚拟机通信的第一交换机,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心的第一子网并且与所述第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,所述第一交换机与所述第二交换机可以相同,也可以不同,所述第一交换机包括:接收模块,用于从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;
发送模块,用于向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求;
所述接收模块还用于从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的网关的媒体接入控制MAC地址;
获取模块,用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心;
所述发送模块,还用于根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过 所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。
结合第三方面,在第一种可能的实现方式中,所述获取模块用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体为:
所述获取模块用于向所述SDN控制器发送请求,以请求获取所述目的网关的MAC地址对应的VTEP信息,接收所述SDN控制器发送的所述目的网关的MAC地址对应的VTEP信息。
结合第三方面,在第二种可能的实现方式中,所述获取模块用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体为:
所述获取模块用于根据所述目的网关的MAC地址,查询所述第一交换机保存的流表,获取所述目的网关的MAC地址对应的VTEP信息。
结合第三方面的第二种可能的实现方式中,在第三种可能的实现方式中,所述获取模块用于查询所述第一交换机保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体为:
所述获取模块用于根据所述目的网关的MAC地址,查询所述第一交换机保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
第四方面,本发明实施例提出了一种实现虚拟机通信软件定义网络SDN控制器,所述SDN控制器位于第一数据中心,并且应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于所述第一数据中心的第一子网并且与第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,所述第一交换机与所述第二交换机可以相同,也可以不同,所述SDN控制器包括:
接收模块,用于从所述第一交换机接收地址解析协议ARP请求,所述 ARP请求携带目的网关的IP地址;
处理模块,用于根据所述目的网关的IP地址,获取所述目的网关的媒体接入控制MAC地址;
发送模块,用于向所述第一交换机发送ARP响应,所述ARP响应携带所述目的网关的MAC地址,以使所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心,使所述VTEP信息对应的路由器将IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。
结合第四方面,在第一种可能的实现方式中,所述接收模块还用于接收所述第一交换机发送的请求,以请求获取所述目的网关的MAC地址对应的VTEP信息;
所述处理模块还用于根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取所述目的网关的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的网关的MAC地址对应的VTEP信息。
结合第四方面的在第一种可能的实现方式中,在第二种可能的实现方式中,所述处理模块用于查询所述SDN控制器保存的流表,获取所述目的网关的MAC地址对应的VTEP信息具体为:
所述处理模块用于根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
结合第四方面的第二种可能的实现方式中,在第三种可能的实现方式中,当所述处理模块用于根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取了两条或以上位于所述第一数据中心的路由器的VTEP信息时,所述处理模块用于根据以下至少之一:路由器的负载和调度 策略,选择所述目的网关的MAC地址对应的VTEP信息。
结合第四方面或者第四方面的第一种至第三种任意一种可能的实现方式,在第四种可能的实现方式中,若所述第二虚拟机位于第二数据中心,则所述处理模块还用于从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址、第二子网的虚拟网络标识VNI,和所述第二交换机的VTEP信息。
第五方面,本发明实施例提出了一种实现虚拟机通信的交换机,包括:
处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如第一方面或第一方面的第一种至第五种任意一种可能的实现方式。
第六方面,本发明实施例提出了一种实现虚拟机通信软件定义网络SDN控制器,包括处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行第二方面或第二方面的第一种至第四种任意一种可能的实现方式。
本发明实施例,第一交换机从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的网关的MAC地址,所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心;所述第一交换机根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。因此SDN控制器代答,减少了广播报文对传输带宽 的占用,并且只经过了第一数据中心的路由器,而不像现有技术可能同时经过第一数据中心的路由器和第二数据中心的路由器,减少了报文在数据中心间的迂回。
第七方面,本发明实施例提出了一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心并且与第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,所述第一交换机与所述第二交换机可以相同,也可以不同,该方法包括:所述第一交换机从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;
所述第一交换机根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址;
根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址;
所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。
结合第七方面,在第一种可能的实现方式中,所述第一交换机根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址具体包括:
所述第一交换机向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求,所述ARP请求携带所述目的虚拟机的IP地址;
所述第一交换机从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址。
结合第七方面或第七方面的第一种可能的实现方式中,在第二种可能 的实现方式中,根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体包括:
所述第一交换机向所述SDN控制器发送请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息;
接收所述SDN控制器发送的所述目的虚拟机的MAC地址对应的VTEP信息。
结合第七方面或第七方面的第一种可能的实现方式中,在第三种可能的实现方式中,根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体包括:
所述第一交换机根据所述目的虚拟机的MAC地址,查询本地保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息。
根据第七方面的第三种可能的实现方式中,在第四种可能的实现方式中,所述第一交换机从所述SDN控制器获取所述第二虚拟机的IP地址、MAC地址、和所述第二交换机的VTEP信息,以通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。
第八方面,本发明实施例提出了一种实现虚拟机通信的方法,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心并且与第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,所述第一交换机与所述第二交换机可以相同,也可以不同,该方法包括:所述第一数据中心的软件定义网络SDN控制器从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;
所述SDN控制器根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址,并向所述第一交换机发送ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址,以使所述第一交换机根据所述目的 虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址,使所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。
结合第八方面,在第一种可能的实现方式中,所述SDN控制器接收所述第一交换机发送的请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息;
所述SDN控制器根据所述目的虚拟机的MAC地址,查询本地保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的虚拟机的MAC地址对应的VTEP信息。
结合第八方面或第八方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息,并将所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息下发给所述第一交换机。
第九方面,本发明实施例提出了一种实现虚拟机通信的第一交换机,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心并且与所述第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,所述第一交换机与所述第二交换机可以相同,也可以不同,所述交换机包括:
接收模块,用于从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;
处理模块,用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址,根据所述目的虚拟机的MAC地址,获取所述 目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址;
发送模块,用于通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。
结合第九方面,在第一种可能的实现方式中,所述处理模块用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的MAC地址具体为:
所述处理模块用于向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求,所述ARP请求携带所述目的虚拟机的IP地址,从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址。
结合第九方面或第九方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述处理模块用于根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体为:
所述处理模块用于向所述SDN控制器发送请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息,接收所述SDN控制器发送的所述目的虚拟机的MAC地址对应的VTEP信息。
结合第九方面或第九方面的第一种可能的实现方式中,在第三种可能的实现方式中,所述处理模块用于根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体为:
所述处理模块用于根据所述目的虚拟机的MAC地址,查询所述第一交换机保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息。
结合第九方面的第三种可能的实现方式中,在第四种可能的实现方式中,所述处理模块还用于从所述第一数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址、和所述第二交换机的VTEP信息。
第十方面,本发明实施例提出了一种实现虚拟机通信软件定义网络SDN控制器,所述SDN控制器位于第一数据中心,并且应用于至少包括第 一虚拟机与第二虚拟机的系统,所述第一虚拟机位于所述第一数据中心并且与第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,所述第一交换机与所述第二交换机可以相同,也可以不同,所述SDN控制器包括:
接收模块,用于从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;
获取模块,用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址;
发送模块,用于向所述第一交换机发送ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址,以使所述第一交换机根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址,使所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。
结合第十方面,在第一种可能的实现方式中,所述接收模块还用于接收所述第一交换机发送的请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息;
所述获取模块还用于根据所述目的虚拟机的MAC地址,查询所述SDN控制器保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的虚拟机的MAC地址对应的VTEP信息。
根据第十方面或第十方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述获取模块还用于从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息;
所述发送模块还用于将所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息下发给所述第一交换机。
第十一方面,本发明实施例提出了一种实现虚拟机通信的交换机,包括:
处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如第七方面或第七方面的第一种至第四种任意一种可能的实现方式。
第十二方面,本发明实施例提出了一种实现虚拟机通信软件定义网络SDN控制器,包括处理器、存储器和系统总线,所述处理器和所述存储器之间通过所述系统总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行第八方面或第八方面的第一种至第二种任意一种可能的实现方式。
本发明实施例,所述第一交换机根据所述目的虚拟机的IP地址,获取所述目的虚拟机的MAC地址;根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息,所述VTEP信息为所述第二交换机的IP地址;所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。因此SDN控制器代答,减少了广播报文对传输带宽的占用,即不用经过第一数据中心的路由器,也不用经过第二数据中心的路由器,减少了报文在两个数据中心间的迂回。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中所需要使用的图作简单地介绍,显而易见地,下面描述中的图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的图。
图1a是根据本发明实施例提供的一种实现虚拟机通信的系统架构图;
图1b是根据本发明实施例提供的一种实现虚拟机通信的系统架构图;
图2是根据本发明实施例提供的一种配置方法示意图;
图3是根据本发明实施例提供的一种配置方法流程图;
图4a是根据本发明实施例提供的VM增加时的流程图;
图4b是根据本发明实施例提供的VM删除时的流程图;
图5a是根据本发明实施例提供的一种实现VM通信的流程图;
图5b是根据本发明实施例提供的一种实现VM通信的流程图;
图6a是根据本发明实施例提供的一种实现VM通信的流程图;
图6b是根据本发明实施例提供的一种实现VM通信的流程图;
图7a是根据本发明实施例提供的一种实现VM通信的流程图;
图7b是根据本发明实施例提供的一种实现VM通信的流程图;
图8是根据本发明实施例提供的一种交换机结构示意图;
图9是根据本发明实施例提供的一种控制器结构示意图;
图10是根据本发明实施例提供的一种交换机结构示意图;
图11是根据本发明实施例提供的一种控制器结构示意图;
图12是根据本发明实施例提供的一种硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提出了一种实现虚拟机通信的方法、和系统,能够减少广播报文对传输带宽的占用,和减少报文在数据中心间的迂回。
本发明实施例的系统架构
本发明实施例提供的实现虚拟机通信的方法可以在如图1a和图1b所示的系统架构中实现。图1a和图1b仅是示例性说明,并不限定具体的组网方式。
虚拟可扩展局域网(VxLAN,Virtual extensible LAN)是在3层网络上借助封装来实现网络虚拟化的。具体地,VxLAN封装借助VxLAN隧道端点(VTEP,VxLAN Tunnel End Point)来完成。该端点可以通过一台hypervisor交换机或物理接入交换机来提供的。VTEP之间建立隧道(Tunnel),通过该隧道传输虚拟网络的数据。
如图1a所示,该系统包括第一数据中心(DC1),第二数据中心(DC2)。DC1内包括虚拟机(VM,Virtual Machine)VM1、VM2、VM3和VM4。DC2内包括虚拟机VM5、VM6和VM7。
网络管理器(NetworkManager),部署于任意数据中心中,可实现与各数据中心的软件定义网络控制器(SDN Controller,Software Defined Network Controller)通信。网络管理器的功能,具体参见图2和图3的描述。
每个数据中心可以各部署一个SDN控制器,各个数据中心的SDN控制器互相通信。具体的,SDN控制器集群之间可以是Full-Mesh全互联,也可以是部分相连。也可以多个数据中心,部署一个SDN控制器,本发明对此不作限定。
位于DC1内的VM1属于第一子网(也可以表示为子网1),该子网的虚拟网络标识(VNI,Virtual Network Identifier)以11111为例。第一子网在DC1的网关的IP地址以192.168.1.1为例,媒体接入控制(MAC,Media Access Control)地址为MAC1。第一子网在DC2的网关的IP地址以192.168.1.1为例,MAC地址为MAC1。第一子网在DC1的网关的IP地址和第一子网在DC2的网关的IP地址可以相同或者不同。第一子网在DC1的网关的MAC地址和第一子网在DC2的网关的MAC地址可以相同或者不同。在IP地址和MAC地址相同的情况下(也可以称为双活),本方案的效果更明显。
VM1通过第一交换机(Switch)与第一子网外的VM通信。这里的交换机可以是虚拟的,也可以是物理的。本发明对此不作限定。第一交换机的IP地址以10.10.10.2为例。第一交换机在隧道中以VTEP1表示。VM1的IP地址以192.168.1.2为例,MAC地址表示为MAC-VM1。
位于DC1内的VM2、VM3、VM4和位于DC2内的VM7属于同一子网,称为第二子网(也可以表示为子网2)。该子网的VNI以22222为例。第二子网在DC1的网关的IP地址以192.168.2.1为例,MAC地址为MAC2。第二子网在DC2的网关的IP地址以192.168.2.1为例,MAC地址为MAC2。第二子网在DC1的网关的IP地址和第二子网在DC2的网关的IP地址可以相同或者不同。第二子网在DC1的网关的MAC地址和第二子网在DC2的网关的MAC地址可以相同或者不同。
VM2、VM3和VM4通过第二交换机与第二子网外的VM通信。这里的交换机可以是虚拟的,也可以是物理的。第二交换机的IP地址以10.10.10.3为例,在隧道中以VTEP2表示。VM7通过第三交换机与第二子网外的VM通信。第三交换机的IP地址以11.11.11.3为例,在隧道中以VTEP3表示。VM2的IP地址以192.168.2.2为例,MAC地址表示为MAC-VM2。VM3的IP地址以192.168.2.3为例,MAC地址表示为MAC-VM3。VM4的IP地址以192.168.2.4为例,MAC地址表示为MAC-VM4。VM7的IP地址以192.168.2.7为例,MAC地址表示为MAC-VM7。
第一交换机与第二交换机可以相同,也可以不同。
位于DC2内的VM5和VM6属于第三子网(也可以表示为子网3),该子网的VNI以33333为例。第三子网在DC1的网关的IP地址以192.168.3.1为例,MAC地址为MAC3。第三子网在DC2的网关的IP地址以192.168.3.1为例,MAC地址为MAC3。第三子网在DC1的网关的IP地址和第三子网在DC2的网关的IP地址可以相同或者不同。第三子网在DC1的网关的MAC地 址和第三子网在DC2的网关的MAC地址可以相同或者不同。
VM5和VM6通过第四交换机与第三子网外的VM通信。这里的交换机可以是虚拟的,也可以是物理的。第四交换机的IP地址以11.11.11.4为例,在隧道中以VTEP4表示。VM5的IP地址以192.168.3.5为例,MAC地址表示为MAC-VM5。VM6的IP地址以192.168.3.6为例,MAC地址表示为MAC-VM6。
第三交换机与第四交换机可以相同,也可以不同。
在DC1内,部署一台或多台路由器(router),以部署路由器1为例说明。路由器1在隧道中以VTEP5表示,IP地址以10.10.10.5为例。类似地,在DC2内,部署一台或多台路由器,以部署路由器2为例说明。路由器1在隧道中以VTEP6表示,IP地址以11.11.11.6为例。
部署多个路由器的情况,可以参照图1b。比如路由器1和路由器3可以组成集群,从而可以消除单路由器的瓶颈,实现路由器间的弹性伸缩。本发明对部署多少个路由器不做限定,当然也可以大于2个。其他信息与图1a类似,不再详述。
参见图2,描述网络管理器对任一SDN控制器的配置过程,包括但不限于以下三条命令:AddRouterInfo、AddSwitchInfo、和ADDPeerSDNCtrl。
其中AddRouterInfo,用来配置路由器的IP地址和DC标识信息,以表1为例说明:
表1
项目类型描述RouterIPAddressString路由器的IP地址DCNameString数据中心的标识
AddSwitchInfo,用来配置交换机的VTEP信息,以表2为例说明:
表2
项目类型描述VTEPIPAddressString交换机作为VTEP的IP地址DCNameString数据中心的标识
ADDPeerSDNCtrl,用来配置对端SDN控制器的IP地址,对端DC的示识,以表3为例说明:
表3
项目类型描述PeerSDNCtrlIPAddressString对端SDN控制器的IP地址PeerDCNameString对端数据中心的标识
可选地,SDN控制器把表1-表3的各项信息,以流表的形式保存。
然后,结合图3,描述网络管理器通过SDN控制器对各子网进行配置的过程。
A1)、NetworkManager向DC1内的SDN控制器添加子网与路由器的关联关系,具体的添加命令以AddRouterInterface为例。以添加子网1为例,子网1的VNI为11111,该子网在DC1的网关的IP地址为192.168.1.1/24,24表示子网掩码为255.255.255.0,MAC地址为MAC1。
可选地,SDN控制器把添加的信息以流表的形式保存,下面类似地,SDN控制器会把其他添加的信息,也以流表的形式保存。
A2)、DC1内的SDN控制器向DC1内的路由器1添加子网与路由器的关联关系,具体的添加命令以AddRouterGwIP为例。
A3)、在子网1中创建了VM的情况下,SDN控制器向本数据中心的Switch添加网关的MAC地址对应的VTEP信息,具体的添加命令以 AddGwMacVTEP为例。以图1a和图1b中信息为例,如果子网1中VM1发送报文,若该报文对应的网关的MAC地址为MAC1,则将该报文发送给VTEP为10.10.10.5的路由器,其中VNI确定路由器上的处理接口。本数据中心的Switch把网关的MAC地址对应的VTEP信息以流表的形式保存。
B1)、NetworkManager向DC2内的SDN控制器添加子网与路由器的关联关系,具体的添加命令以AddRouterInterface为例。以添加子网1为例,子网1的VNI为11111,该子网在DC2的网关的IP地址为192.168.1.1/24,24表示子网掩码为255.255.255.0,MAC地址为MAC1。
B2)、DC2内的SDN控制器向DC2内的路由器2添加子网与路由器的关联关系,具体的添加命令以AddRouterGwIP为例。
B3)、在子网1中创建了VM的情况下,SDN控制器向本数据中心的Switch添加网关的MAC地址对应的VTEP信息,具体的添加命令以AddGwMacVTEP为例。以图1a和图1b中信息为例,如果子网1中VM1发送报文,若该报文对应的网关的MAC地址为MAC1,则将该报文发送给VTEP为11.11.11.6的路由器,其中VNI确定路由器上的处理接口。
步骤B1)、B2)、B3)和步骤A1)、A2)、A3)之间没有先后顺序之分。类似地,网络控制器和SDN控制器可以添加其他子网与路由器的关联关系。
在图3所述的配置过程中,子网1在DC1的网关的IP地址和在DC2内的网关的IP地址相同,子网1在DC1的网关的MAC地址和在DC2内的网关的IP地址相同,但是路由器的VTEP信息(即指路由器的VTEP的IP地址)不同。
下面结合图4a,描述如何创建VM以及实现信息同步的过程。以创建VM2为例说明。
A1)、向DC1的第二交换机发起创建虚拟机VM2的命令,具体的创建命令以Create VM on Switch为例。
A2)、DC1的第二交换机创建了VM2,然后将VM2虚拟端口与对应的VTEP信息通知到DC1的SDN Controller,具体的通知命令以VM vPort VTEP notify为例。对VM2,其MAC地址为MAC-VM2,IP地址为192.168.2.2。属于第二子网,VNI为22222。VM2对应的VTEP信息为10.10.10.3。当DC1的SDN Controller保存有VM2所在第二交换机的VTEP信息时,第二交换机只需要将VM2虚拟端口信息通知到DC1的SDN Controller。
SDN控制器可以根据端口信息,获得该端口的VNI。
A3)、DC1的SDN Controller将VM2虚拟端口与对应的VTEP信息通知给DC2的SDN Controller,具体的通知命令以VM vPort VTEP notify为例。具体地,DC1的SDN Controller可以通过AddSwitchInfo获取VM2所在vSwtich的VTEP信息,然后将VM2虚拟端口与对应的VTEP信息通知给DC2的SDN Controller。
A4.1)、DC1的SDN Controller将VM2的信息添加到DC1的路由器中,具体的添加命令以AddVMMacVTEP为例,包括VM2的IP=192.168.2.2,MAC=MAC-VM2,VNI=222222,VTEP=10.10.10.3。
A4.2)、DC2的SDN Controller将VM2的信息添加到DC2的路由器中,具体的添加命令以AddVMMacVTEP为例,包括VM2的IP=192.168.2.2,MAC=MAC-VM2,VNI=222222,VTEP=10.10.10.3。
A3)和A4.1)之间没有先后顺序之分,A4.1)与A4.2)之间也没有先后顺序之分。
A5)、DC1的SDN控制器向DC1的Switch添加网关的MAC地址对应的VTEP信息。具体的添加命令以AddGwMacVTEP为例。以VM2为例,如果子网2中VM2发送报文,该报文对应的网关的MAC地址为MAC2,则将该报文发送给VTEP为10.10.10.5的路由器。VNI=22222,用于确定路由器上的处理接口。
如图3的B3)和A3)所示,若在子网中创建了VM的情况下,SDN控制器向本数据中心的Switch添加网关的MAC地址对应的VTEP信息。若在图3创建子网的时候,VM仍未建立。那么可以通过图4a的A5)向本数据中心的Switch添加网关的MAC地址对应的VTEP信息。
A5)与A3)-A4.2)之间,无先后顺序之分。
下面结合图4b,描述如何删除VM以及实现信息同步的过程。以删除VM2为例说明。
B1)、向DC1的第二交换机发起删除虚拟机VM2的命令,具体的删除命令以delete VM on Switch为例。
B2)、DC1的第二交换机删除了VM2,然后通知DC1的SDN Controller将VM2的虚拟端口与对应的VTEP信息删除,具体的删除命令以delete VM vPort notify为例。
对应图4a的A5),网关的MAC地址对应的VTEP信息也可以在步骤B2)删除。
B3)、DC1的SDN Controller将删除VM2的信息通知给DC2的SDNController,具体的通知命令以delete VM vPort notify为例。
B4.1)、DC1的SDN Controller将DC1的路由器中的VM2的MAC地址及VTEP信息删除,具体的删除命令以DeleteRouterMacVTEP为例,包括VM2的IP=192.168.2.2,MAC=MAC-VM2,VNI=222222。
当然也可以删除MAC=MAC-VM2,VNI=222222;或者还可以删除MAC=MAC-VM2,VNI=222222,VTEP=10.10.10.3。
B4.2)、DC2的SDN Controller将DC2的路由器中的VM2的MAC地址及VTEP信息删除,具体的删除命令以DeleteRouterMacVTEP为例,包括VM2的IP=192.168.2.2,MAC=MAC-VM2,VNI=222222。
与B4.1)类似,当然也可以删除MAC=MAC-VM2,VNI=222222;或者还 可以删除MAC=MAC-VM2,VNI=222222,VTEP=10.10.10.3。
B3)和B4.1)之间没有先后顺序之分,B4.1)与B4.2)之间也没有先后顺序之分。
虚拟机迁移可以拆解为VM创建和VM删除两个操作,具体可以参见图4a和图4b描述的流程,不再赘述。
经过图2-图4的配置过程,DC1的SDN控制器获得了DC1中路由器1的信息、第一交换机的信息、第二交换机的信息,DC1中各子网与路由器的关联关系、以及DC1中各虚拟机的MAC地址和VTEP信息,同时DC1的SDN控制器也获得了DC2的SDN控制器的信息,以及DC2的SDN控制器控制下的虚拟机的MAC地址和VTEP的信息,可以是DC2的SDN控制器控制下的部分虚拟机的MAC地址和VTEP的信息,也可以是DC2的SDN控制器控制下的全部虚拟机的MAC地址和VTEP的信息。类似地,DC2的SDN控制器获得了DC2中路由器2的信息、第三交换机的信息、第四交换机的信息,DC2中各子网与路由器的关联关系、以及DC2中各虚拟机的MAC地址和VTEP信息,同时DC2的SDN控制器也获得了DC1的SDN控制器的信息,以及DC1的SDN控制器控制下的虚拟机的MAC地址和VTEP的信息,可以是DC1的SDN控制器控制下的部分虚拟机的MAC地址和VTEP的信息,也可以是DC1的SDN控制器控制下的全部虚拟机的MAC地址和VTEP的信息。
在图1a和图1b所述的系统架构上,如何实现虚拟机通信,具体参见下面实施例的描述。
实现虚拟机通信的方法
下面介绍本发明实施例提供的实现虚拟机通信的方法,该方法可以在前述实施例的系统架构上实现。
如图5a所示的实现虚拟机通信的方法实施例,用于实现位于数据中心DC1的虚拟机VM4与位于数据中心DC2的虚拟机VM5通信,VM4位于第 二子网,VM5位于第三子网。VM4通过第二交换机与第二子网外的VM通信,VM5通过第四交换机与第三子网外的VM通信。该方法包括以下步骤:
1)VM4需要与VM5通信。VM4查询路由表,发现VM4与VM5位于不同子网,则VM4使用第二子网的默认网关192.168.2.1作为目的网关。VM4向第二交换机发送广播地址解析协议(ARP,Address Resolution Protocol)请求,以广播获取目的网关的MAC地址,该ARP请求携带所述目的网关的IP地址。
2)第二交换机接收所述ARP请求,并将所述ARP请求转发给第一数据中心的SDN控制器。
3)第一数据中心的SDN控制器接收所述ARP请求,根据所述ARP请求携带的目的网关的IP地址,查询本地保存的流表,获取目的网关的MAC地址为MAC2。SDN控制器向所述第二交换机发送ARP响应,所述ARP响应携带所述目的网关的MAC地址。并且,此ARP响应相当于对广播ARP请求进行了代答。
可选地,该ARP请求还可以携带接收ARP响应的第二交换机的端口信息,SDN控制器根据所述端口信息,查询流表,获得所述端口信息对应的VNI。获取所述目的网关的MAC地址具体包括:所述SDN控制器根据所述目的网关的IP地址和端口信息对应的VNI,获取所述目的网关的MAC地址。具体地,该端口信息可以为VM4在第二交换机上的虚拟端口信息。
可选地,该ARP请求还可以携带接收ARP响应的第二交换机的端口的VNI。获取所述目的网关的MAC地址具体包括:所述SDN控制器根据所述目的网关的IP地址和第二交换机的端口的VNI,获取所述目的网关的MAC地址。
4)第二交换机接收所述ARP响应,并将所述ARP响应转发给VM4。
5)VM4向第二交换机发送IP报文,该IP报文的目的MAC(DestMAC) 为MAC2,目的IP(DestIP)为VM5的IP地址:192.168.3.5,源MAC为VM4的MAC(以MAC-VM4表示),源IP为VM4的IP地址:192.168.2.4。
经过图3、图4a和图4b的配置过程,第二交换机可能缓存了MAC2对应的VTEP信息。如果第二交换机发现MAC2对应的VTEP信息存在,则直接执行步骤8)。如果第二交换机发现MAC2对应的VTEP信息不存在,则执行步骤6)和步骤7)。
6)第二交换机向本数据中心的SDN控制器发送请求,以请求获取目的网关的MAC地址对应的VTEP信息。
7)SDN控制器查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息,并向所述第二交换机发送所述目的网关的MAC地址对应的VTEP信息。
当SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上的VTEP信息,则以与所述第二交换机位于同一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
在本实施例中,根据MAC2,如果获取了VTEP5(IP为10.10.10.5)和VTEP6(IP为11.11.11.6)两条VTEP信息,则选择与第二交换机位于同一数据中心的VTEP5作为目的网关的MAC地址对应的VTEP。
当第一数据中心内,与目的网关的MAC地址对应的VTEP信息有两条或以上时,如图1b所示的多路由器的方案,SDN控制器根据以下至少之一:路由器的负载和调度策略,为VM4选择合适的VTEP,把选择的合适的VTEP的IP地址发送给所述第二交换机。路由器的负载包括但不限于路由器的流量、和路由器的CPU负荷。调度策略包括但不限于RondRobin、最小负载优先、和最大负载优先。
8)第二交换机获取目的网关的MAC地址对应的VTEP信息,然后将从VM4接收的IP报文VxLAN封装后发送给该VTEP信息对应的路由器。其中 VxLAN封装的IP报文的源IP为第二交换机的IP地址10.10.10.3,目的IP为获取的VTEP信息(10.10.10.5),VNI为22222。
如果第二交换机查询本地的流表,发现MAC2对应的VTEP信息不存在,则通过上述的步骤6)和7),获取目的网关的MAC地址对应的VTEP信息;或者,
第二交换机查询本地的流表,获取目的网关的MAC地址对应的VTEP信息。具体的,获取了两条或以上的VTEP信息时,则以与所述第二交换机位于同一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。同一数据中心有多个路由器的时候,采取步骤7)类似的路由器的负载和调度策略进行选择,不再详细描述。
9)所述第一数据中心的路由器,对接收的报文改变VxLAN封装,通过第一数据中心的路由器与第四交换机之间的隧道,发送给第四交换机。
经过图3、图4a和图4b的配置过程,第一数据中心的路由器缓存了第二数据中心的虚拟机的MAC地址和VTEP信息,因此可以直接在第一数据中心的路由器与第四交换机之间建立VxLAN隧道,并通过第一数据中心的路由器与第四交换机之间隧道,直接将改变封装后的报文发送给第四交换机,而不用通过第二数据中心的路由器。
改变VxLAN封装具体为:将步骤8)的VxLAN封装的源IP改为10.10.10.5,目的IP改为第四交换机的IP地址11.11.11.4,VNI改为33333;然后将步骤5)的IP报文的目的MAC改为MAC-VM5,源MAC改为MAC2。经过对VxLAN封装的改变,第四交换机收到封装后的IP报文,直接进行处理,不会再触发广播ARP请求的流程。
10)第四交换机进行VxLAN解封装后,将IP报文发送给VM5。
VM5向VM4发送IP报文的过程,与此类似,不再赘述。
如图5b所示的实现虚拟机通信的方法实施例,应用场景与实施例5a 类似,下面详细描述交互过程。
1)-4),与实施例5a的1)-4)类似,不再赘述。
5)VM4向第二交换机发送IP报文,该IP报文的目的MAC(DestMAC)为MAC2,目的IP(DestIP)为VM5的IP地址:192.168.3.5,源MAC为VM4的MAC(以MAC-VM4表示),源IP为VM4的IP地址:192.168.2.4。
6)第二交换机向本数据中心的SDN控制器发送请求,以请求获取目的网关的MAC地址对应的VTEP信息。
7.1)SDN控制器查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息。SDN控制器将从第二交换机接收的IP报文VxLAN封装后再发送给第二交换机。其中VxLAN封装的IP报文的源IP为第二交换机的IP地址10.10.10.3,目的IP为获取的VTEP信息(10.10.10.5),VNI为22222。
当SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上的VTEP信息,则以与所述第二交换机位于同一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
在本实施例中,根据MAC2,如果获取了VTEP5(IP为10.10.10.5)和VTEP6(IP为11.11.11.6)两条VTEP信息,则选择与第二交换机位于同一数据中心的VTEP5作为目的网关的MAC地址对应的VTEP。
当第一数据中心内,与目的网关的MAC地址对应的VTEP信息有两条或以上时,如图1b所示的多路由器的方案,SDN控制器根据以下至少之一:路由器的负载和调度策略,为VM4选择合适的VTEP,把选择的合适的VTEP的IP地址发送给所述第二交换机。路由器的负载包括但不限于路由器的流量、和路由器的CPU负荷。调度策略包括但不限于RondRobin、最小负载优先、和最大负载优先。
7.2)另一方面,SDN控制器将所述目的网关的MAC地址对应的VTEP 信息通过流表的形式向所述第二交换机下发。当所述第二交换机接收到后续IP报文的时候,可以根据该目的网关的MAC地址对应的VTEP信息,直接把后续接收的IP报文封装后转发给该VTEP信息对应的路由器,而不用再去SDN控制器请求流表。
8)第二交换机从SDN控制器接收VxLAN封装后的IP报文,根据VxLAN封装后的IP报文中的VTEP信息,将VxLAN封装后的IP报文转发给该VTEP信息对应的路由器。
需要说明的是,步骤7.2)与步骤8)之间没有先后顺序。
9)-10),与实施例5a的9)-10)类似,不再赘述。
经过上述任一流程,实现了跨数据中心跨子网的通信,而且VM发送的广播ARP请求,可由SDN控制器代答,减少了广播报文对传输带宽的占用。并且VM通信时,只经过了第一数据中心的路由器,而不用同时经过第一数据中心的路由器和第二数据中心的路由器,减少了报文在数据中心间的迂回。
如图6a所示的实现虚拟机通信的方法实施例,用于实现位于数据中心DC1的虚拟机VM3与位于数据中心DC2的虚拟机VM7通信,VM3和VM7均位于第二子网。VM3通过第二交换机与第二子网外的VM通信,VM7通过第三交换机与第二子网外的VM通信。该方法包括以下步骤:
1)VM3需要与VM7通信。VM3查询路由表,发现VM3与VM7位于同一子网。如果VM3没有保存VM7的MAC地址,则VM3向第二交换机发送广播地址解析协议(ARP,Address Resolution Protocol)请求,以广播获取目的虚拟机的MAC地址。该ARP请求携带VM7的IP地址。
2)第二交换机将所述ARP请求转发给第一数据中心的SDN控制器。
3)第一数据中心的SDN控制器接收所述ARP请求,根据所述ARP请求携带的目的虚拟机的IP地址,查询本地保存的流表,获取目的虚拟机 的MAC地址为MAC-VM7。SDN控制器向所述第二交换机发送ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址。并且,此ARP响应相当于对广播ARP请求进行了代答。
4)第二交换机接收所述ARP响应,并将所述ARP响应转发给VM3。
5)VM3向第二交换机发送IP报文,该IP报文的目的MAC(DestMAC)为MAC-VM7,目的IP(DestIP)为VM7的IP地址:192.168.2.7,源MAC为VM3的MAC(以MAC-VM3表示),源IP为VM3的IP地址:192.168.2.3。
经过图4a和图4b的配置过程,第二交换机可能缓存了MAC-VM7对应的VTEP信息。如果第二交换机发现MAC-VM7对应的VTEP信息存在,则直接执行步骤8)。如果第二交换机发现MAC-VM7对应的VTEP信息不存在,则执行步骤6)和步骤7)。
6)第二交换机向本数据中心的SDN控制器发送请求,以请求获取目的虚拟机的MAC地址对应的VTEP信息。
7)SDN控制器查询本地保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息,并向所述第二交换机发送所述目的虚拟机的MAC地址对应的VTEP信息。
在本实施例中,根据MAC-VM7,获取的VTEP为VTEP3,VTEP信息为11.11.11.3。
8)第二交换机获取目的虚拟机的MAC地址对应的VTEP信息,然后将从VM3接收的IP报文VxLAN封装后发送给该VTEP信息对应的交换机。其中VxLAN封装的IP报文的源IP为第二交换机的IP地址10.10.10.3,目的IP为获取的VTEP信息(11.11.11.3)。
如果第二交换机查询本地的流表,发现MAC-VM7对应的VTEP信息不存在,则通过上述的步骤6)和7),获取目的虚拟机的MAC地址对应的VTEP信息;或者,
第二交换机查询本地的流表,获取目的虚拟机的MAC地址对应的VTEP信息。
经过图2、图3、图4a和图4b的配置方法,所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取了VM7的IP地址、MAC地址和第三交换机的VTEP信息,并将VM7的IP地址、MAC地址和第三交换机的VTEP信息下发给了第二交换机。第二交换机从而能够通过第二交换机与第三交换机的隧道将IP报文发送给VM7,即不用经过数据中心1的路由器,也不用经过数据中心2的路由器。
9)第三交换机进行VxLAN解封装后,将IP报文发送给VM7。
VM7向VM3发送IP报文的过程,与此类似,不再赘述。
如图6b所示的实现虚拟机通信的方法实施例,应用场景与实施例6a类似,下面详细描述交互过程。
1)VM3需要与VM7通信。VM3查询路由表,发现VM3与VM7位于同一子网。如果VM3没有保存VM7的MAC地址,则向第二交换机发送广播地址解析协议(ARP,Address Resolution Protocol)请求,以广播获取目的虚拟机的MAC地址。该ARP请求携带VM7的IP地址。
2)第二交换机将所述ARP请求转发给第一数据中心的SDN控制器。
3)第一数据中心的SDN控制器接收所述ARP请求,根据所述ARP请求携带的目的虚拟机的IP地址,查询本地保存的流表,获取目的虚拟机的MAC地址为MAC-VM7。SDN控制器向所述第二交换机发送ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址。并且,此ARP响应相当于对广播ARP请求进行了代答。
4)第二交换机接收所述ARP响应,并将所述ARP响应转发给VM3。
5)VM3向第二交换机发送IP报文,该IP报文的目的MAC(DestMAC)为MAC-VM7,目的IP(DestIP)为VM7的IP地址:192.168.2.7,源MAC 为VM3的MAC(以MAC-VM3表示),源IP为VM3的IP地址:192.168.2.3。
6)第二交换机向本数据中心的SDN控制器发送请求,以请求获取目的虚拟机的MAC地址对应的VTEP信息。
7.1)SDN控制器查询本地保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息。SDN控制器将从第二交换机接收的IP报文VxLAN封装后再发送给第二交换机。
在本实施例中,根据MAC-VM7,获取的VTEP为VTEP3,VTEP信息为11.11.11.3。其中VxLAN封装的IP报文的源IP为第二交换机的IP地址10.10.10.3,目的IP为获取的VTEP信息(11.11.11.3),VNI为22222。
7.2)另一方面,SDN控制器将所述目的虚拟机的MAC地址对应的VTEP信息通过流表的形式向所述第二交换机下发。当所述第二交换机接收到后续IP报文的时候,可以根据该目的虚拟机的MAC地址对应的VTEP信息,直接把后续接收的IP报文封装后转发给该VTEP信息对应的路由器,而不用再去SDN控制器请求流表。
8)第二交换机从SDN控制器接收VxLAN封装后的IP报文,根据VxLAN封装后的IP报文中的VTEP信息,将VxLAN封装后的IP报文转发给该VTEP信息对应的路由器。
需要说明的是,步骤7.2)与步骤8)之间没有先后顺序。
经过图2、图3、图4a和图4b的配置方法,所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取了VM7的IP地址、MAC地址和第三交换机的VTEP信息,并将VM7的IP地址、MAC地址和第三交换机的VTEP信息下发给了第二交换机。第二交换机从而能够通过第二交换机与第三交换机的隧道将IP报文发送给VM7,即不用经过数据中心1的路由器,也不用经过数据中心2的路由器。
9)第三交换机进行VxLAN解封装后,将IP报文发送给VM7。
经过上述任一流程,实现了跨数据中心同一子网的通信,而且VM发送的广播ARP请求,可由SDN控制器代答,减少了广播报文对传输带宽的占用。并且VM通信时,即不用经过第一数据中心的路由器,也不用经过第二数据中心的路由器,减少了报文在两个数据中心间的迂回。
如图7a所示的实现虚拟机通信的方法实施例,用于实现位于数据中心DC1的虚拟机VM1与位于同一数据中心DC1的另一虚拟机VM2通信,VM1位于第一子网,VM2位于第二子网,第一子网与第二子网不同。VM1通过第一交换机与第一子网外的VM通信,VM2通过第二交换机与第二子网外的VM通信。该方法包括以下步骤:
1)VM1需要与VM2通信。VM1查询路由表,发现VM2与VM1位于不同子网,则VM1使用第一子网的默认网关192.168.1.1作为目的网关。VM1向第一交换机发送广播地址解析协议(ARP,Address Resolution Protocol)请求,以广播获取目的网关的MAC地址,该ARP请求携带所述目的网关的IP地址。
2)第一交换机接收所述ARP请求,并将所述ARP请求转发给第一数据中心的SDN控制器。
3)第一数据中心的SDN控制器接收所述ARP请求,根据所述ARP请求携带的目的网关的IP地址,查询本地保存的流表,获取目的网关的MAC地址为MAC1。SDN控制器向所述第一交换机发送ARP响应,所述ARP响应携带所述目的网关的MAC地址。并且,此ARP响应相当于对广播ARP请求进行了代答。
可选地,该ARP请求还可以携带接收ARP响应的第一交换机的端口信息,SDN控制器根据所述端口信息,查询流表,获得所述端口信息对应的VNI。获取所述目的网关的MAC地址具体包括:所述SDN控制器根据所述目的网关的IP地址和端口信息对应的VNI,获取所述目的网关的MAC地址。 具体地,该端口信息可以为VM1在第一交换机上的虚拟端口信息。
可选地,该ARP请求还可以携带接收ARP响应的第一交换机的端口的VNI。获取所述目的网关的MAC地址具体包括:所述SDN控制器根据所述目的网关的IP地址和第一交换机的端口的VNI,获取所述目的网关的MAC地址。
4)第一交换机接收所述ARP响应,并将所述ARP响应转发给VM1。
5)VM1向第一交换机发送IP报文,该IP报文的目的MAC(DestMAC)为MAC1,目的IP(DestIP)为VM2的IP地址:192.168.2.2,源MAC为VM1的MAC(以MAC-VM1表示),源IP为VM1的IP地址:192.168.1.2。
经过图3、图4a和图4b的配置过程,第一交换机可能缓存了MAC1对应的VTEP信息。如果第一交换机发现MAC1对应的VTEP信息存在,则直接执行步骤8)。如果第一交换机发现MAC1对应的VTEP信息不存在,则执行步骤6)和步骤7)。
6)第一交换机向本数据中心的SDN控制器发送请求,以请求获取目的网关的MAC地址对应的VTEP信息。
7)SDN控制器查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息,并向所述第一交换机发送所述目的网关的MAC地址对应的VTEP信息。
当SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上的VTEP信息,则以与所述第一交换机位于同一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
在本实施例中,根据MAC1,如果获取了VTEP5(IP为10.10.10.5)和VTEP6(IP为11.11.11.6)两条VTEP信息,则选择与第一交换机位于同一数据中心的VTEP5作为目的网关的MAC地址对应的VTEP。
当第一数据中心内,与目的网关的MAC地址对应的VTEP信息有两条 或以上时,如图1b所示的多路由器的方案,SDN控制器根据以下至少之一:路由器的负载和调度策略,为VM4选择合适的VTEP,把选择的合适的VTEP的IP地址发送给所述第一交换机。路由器的负载包括但不限于路由器的流量、和路由器的CPU负荷。调度策略包括但不限于RondRobin、最小负载优先、和最大负载优先。
8)第一交换机获取目的网关的MAC地址对应的VTEP信息,然后将从VM1接收的IP报文VxLAN封装后发送给该VTEP信息对应的路由器。其中VxLAN封装的IP报文的源IP为第一交换机的IP地址10.10.10.2,目的IP为获取的VTEP信息(10.10.10.5),VNI为11111。
如果第一交换机查询本地的流表,发现MAC1对应的VTEP信息不存在,则通过上述的步骤6)和7),获取目的网关的MAC地址对应的VTEP信息;或者
第一交换机查询本地的流表,获取目的网关的MAC地址对应的VTEP信息。具体的,获取了两条或以上的VTEP信息时,则以与所述第一交换机位于同一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。同一数据中心有多个路由器的时候,采取步骤7)类似的路由器的负载和调度策略进行选择,不再详细描述。
9)所述第一数据中心的路由器,对接收的报文改变VxLAN封装,通过第一数据中心的路由器与第二交换机之间的隧道,发送给第二交换机。
改变VxLAN封装具体为:将步骤8)的VxLAN封装的源IP改为10.10.10.5,目的IP改为第二交换机的IP地址10.10.10.3,VNI改为22222;然后将步骤5)的IP报文的目的MAC改为MAC-VM2,源MAC改为MAC1。经过对VxLAN封装的改变,第二交换机收到封装后的IP报文,直接进行处理,不会再触发广播ARP请求的流程。
10)第二交换机进行VxLAN解封装后,将IP报文发送给VM2。
如图7b所示的实现虚拟机通信的方法实施例,应用场景与实施例7a类似,下面详细描述交互过程。
1)-4),与实施例7a的1)-4)类似,不再赘述。
5)VM1向第一交换机发送IP报文,该IP报文的目的MAC(DestMAC)为MAC1,目的IP(DestIP)为VM2的IP地址:192.168.2.2,源MAC为VM1的MAC(以MAC-VM1表示),源IP为VM1的IP地址:192.168.1.2。
6)第一交换机向本数据中心的SDN控制器发送请求,以请求获取目的网关的MAC地址对应的VTEP信息。
7.1)SDN控制器查询本地保存的流表,获取所述目的网关的MAC地址对应的VTEP信息。SDN控制器将从第一交换机接收的IP报文VxLAN封装后再发送给第一交换机。其中VxLAN封装的IP报文的源IP为第一交换机的IP地址10.10.10.2,目的IP为获取的VTEP信息(10.10.10.5),VNI为11111。
当SDN控制器根据所述目的网关的MAC地址,查询本地保存的流表,获取了两条或以上的VTEP信息,则以与所述第一交换机位于同一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
在本实施例中,根据MAC1,如果获取了VTEP5(IP为10.10.10.5)和VTEP6(IP为11.11.11.6)两条VTEP信息,则选择与第一交换机位于同一数据中心的VTEP5作为目的网关的MAC地址对应的VTEP。
当第一数据中心内,与目的网关的MAC地址对应的VTEP信息有两条或以上时,如图1b所示的多路由器的方案,SDN控制器根据以下至少之一:路由器的负载和调度策略,为VM4选择合适的VTEP,把选择的合适的VTEP的IP地址发送给所述第一交换机。路由器的负载包括但不限于路由器的流量、和路由器的CPU负荷。调度策略包括但不限于RondRobin、最小负载优先、和最大负载优先。
7.2)另一方面,SDN控制器将所述目的网关的MAC地址对应的VTEP信息通过流表的形式向所述第一交换机下发。当所述第一交换机接收到后续IP报文的时候,可以根据该目的网关的MAC地址对应的VTEP信息,直接把后续接收的IP报文封装后转发给该VTEP信息对应的路由器,而不用再去SDN控制器请求流表。
8)第一交换机从SDN控制器接收VxLAN封装后的IP报文,根据VxLAN封装后的IP报文中的VTEP信息,将VxLAN封装后的IP报文转发给该VTEP信息对应的路由器。
需要说明的是,步骤7.2)与步骤8)之间没有先后顺序。
9)-10),与实施例7a的9)-10)类似,不再赘述。
经过上述任一流程,实现了同一数据中心跨子网的通信,而且VM发送的广播ARP请求,可由SDN控制器代答,减少了广播报文对传输带宽的占用。并且VM通信时,只经过了数据中心1的路由器,而不像现有技术可能同时经过数据中心1的路由器和数据中心2的路由器,减少了报文在数据中心间的迂回。对多个路由器的方案,还能够实现路由器间的弹性伸缩。
同一数据中心同一子网的通信,不需要经过路由器。以VM2与VM3通信为例,VM2发送报文到第二交换机,然后第二交换机将报文发送给VM3。
上述流程描述了本发明实施例在各种场景下的应用,当然并不限于这些场景。
本发明实施例的装置
如图8所示,本发明实施例提供一种实现虚拟机通信的第一交换机,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心的第一子网并且与所述第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,第一交换机与第二交换机可以相同,也 可以不同,所述第一交换机包括:
接收模块801,用于从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;
发送模块803,用于向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求;
所述接收模块801还用于从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的网关的媒体接入控制MAC地址;
获取模块802,用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心;
所述发送模块803,还用于根据所述VTEP信息,发送IP报文给所述VTEP信息对应的路由器,以使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。
获取模块802用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体为:
获取模块802用于向所述SDN控制器发送请求,以请求获取所述目的网关的MAC地址对应的VTEP信息,接收所述SDN控制器发送的所述目的网关的MAC地址对应的VTEP信息。或者
获取模块802用于根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的VTEP信息具体为:
获取模块802用于根据所述目的网关的MAC地址,查询所述第一交换机保存的流表,获取所述目的网关的MAC地址对应的VTEP信息。当获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。
如图9所示,本发明实施例提供一种实现虚拟机通信的软件定义网络 SDN控制器,所述SDN控制器位于第一数据中心,并且应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于所述第一数据中心的第一子网并且与第一交换机通信,所述第二虚拟机位于第二子网并且与第二交换机通信,第一交换机与第二交换机可以相同,也可以不同,所述SDN控制器包括:
接收模块901,用于从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的网关的IP地址;
处理模块902,用于根据所述目的网关的IP地址,获取所述目的网关的媒体接入控制MAC地址;
发送模块903,用于向所述第一交换机发送ARP响应,所述ARP响应携带所述目的网关的MAC地址,以使所述第一交换机根据所述目的网关的MAC地址,获取所述目的网关的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息对应的路由器位于所述第一数据中心,使所述VTEP信息对应的路由器将IP报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。
接收模块901还用于接收所述第一交换机发送的请求,以请求获取所述目的网关的MAC地址对应的VTEP信息;
处理模块902还用于根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取所述目的网关的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的网关的MAC地址对应的VTEP信息。当查询所述SDN控制器保存的流表,获取两条或以上VTEP信息时,以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址对应的VTEP信息。并且当处理模块902根据所述目的网关的MAC地址,查询所述SDN控制器保存的流表,获取了两条或以上位于所述第一数据中心的路由器的VTEP信息时,处理模块902根据以下至少之一:路由器的负载和调 度策略,选择所述目的网关的MAC地址对应的VTEP信息。
若所述第二虚拟机位于第二数据中心,则处理模块902还用于从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址、第二子网的VNI,和所述第二交换机的VTEP信息。
本发明实施例图8提供的交换机和图9提供的SDN控制器,可以用来执行图2、图3、图4a和图4b的配置过程,以及用来执行图5a、图5b、图7a和图7b所述的方法,具体的过程,参见系统实施例和方法实施例的描述,不再赘述。
本发明实施例图8提供的交换机和图9提供的SDN控制器,可以实现跨子网的通信,而且VM发送的广播ARP请求,可由SDN控制器代答,减少了广播报文对传输带宽的占用。并且VM通信时,只经过了数据中心1的路由器,而不用同时经过数据中心1的路由器和数据中心2的路由器,减少了报文在数据中心间的迂回。
如图10所示,本发明实施例提供一种实现虚拟机通信的第一交换机,应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于第一数据中心并且与所述第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,第一交换机与第二交换机可以相同,也可以不同,所述第一交换机包括:
接收模块1001,用于从所述第一虚拟机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;
处理模块1002,用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址,根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址;
发送模块1003,用于通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。
处理模块1002用于根据所述目的虚拟机的IP地址,获取所述目的虚拟机的媒体接入控制MAC地址具体为:向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请求,所述ARP请求携带所述目的虚拟机的IP地址,从所述SDN控制器接收ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址。
处理模块1002用于根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的VTEP信息具体为:处理模块1002用于向所述SDN控制器发送请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息,接收所述SDN控制器发送的所述目的虚拟机的MAC地址对应的VTEP信息;或者,
处理模块1002用于根据所述目的虚拟机的MAC地址,查询所述第一交换机保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息。
处理模块1002还用于从所述第一数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址、和所述第二交换机的VTEP信息。
如图11所示,本发明实施例提供一种实现虚拟机通信的软件定义网络SDN控制器,所述SDN控制器位于第一数据中心,并且应用于至少包括第一虚拟机与第二虚拟机的系统,所述第一虚拟机位于所述第一数据中心并且与第一交换机通信,所述第二虚拟机位于第二数据中心并且与第二交换机通信,所述第一虚拟机和所述第二虚拟机位于同一子网,第一交换机与第二交换机可以相同,也可以不同,所述SDN控制器包括:
接收模块1101,用于从所述第一交换机接收地址解析协议ARP请求,所述ARP请求携带目的虚拟机的IP地址;
获取模块1102,用于根据所述目的虚拟机的IP地址,获取所述目的 虚拟机的媒体接入控制MAC地址;
发送模块1103,用于向所述第一交换机发送ARP响应,所述ARP响应携带所述目的虚拟机的MAC地址,以使所述第一交换机根据所述目的虚拟机的MAC地址,获取所述目的虚拟机的MAC地址对应的虚拟可扩展局域网隧道端点VTEP信息,所述VTEP信息为所述第二交换机的IP地址,使所述第一交换机通过所述第一交换机与所述第二交换机的隧道将IP报文发送给所述第二虚拟机。
接收模块1101还用于所述第一交换机发送的请求,以请求获取所述目的虚拟机的MAC地址对应的VTEP信息;获取模块1102还用于根据所述目的虚拟机的MAC地址,查询所述SDN控制器保存的流表,获取所述目的虚拟机的MAC地址对应的VTEP信息,并向所述第一交换机返回所述目的虚拟机的MAC地址对应的VTEP信息。
获取模块1102还用于从所述第二数据中心的SDN控制器获取所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息;发送模块1103还用于将所述第二虚拟机的IP地址、MAC地址和所述第二交换机的VTEP信息下发给所述第一交换机。
本发明实施例图10提供的交换机和图11提供的SDN控制器,可以用来执行图2、图3、图4a和图4b的配置过程,以及用来执行图6a和图6b所述的方法,具体的过程,参见系统实施例和方法实施例的描述,不再赘述。
本发明实施例图10提供的交换机和图11提供的SDN控制器,可以实现跨数据中心同一子网的通信,而且VM发送的广播ARP请求,可由SDN控制器代答,减少了广播报文对传输带宽的占用。并且VM通信时,即不用经过数据中心1的路由器,也不用经过数据中心2的路由器,减少了报文在两个数据中心间的迂回。
为本发明实施例提供的另一实现虚拟机通信的装置1200,包括:
处理器101、存储器102、系统总线(简称总线)105。处理器101和存储器102之间通过系统总线105连接并完成相互间的通信。
处理器101可能为单核或多核中央处理单元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成电路。
存储器102可以为高速RAM存储器,也可以为非易失性存储器(non-volatile memory),例如至少一个硬盘存储器。
存储器102用于存储计算机执行指令1021。具体的,计算机执行指令1021中可以包括程序代码。
当计算机运行时,处理器101运行计算机执行指令1021,可以执行图2-图7b任意之一的流程。
本发明实施例还提供一种虚拟机通信的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行图2-图7b任意之一的流程。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存 储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

一种实现虚拟机通信的方法和装置.pdf_第1页
第1页 / 共41页
一种实现虚拟机通信的方法和装置.pdf_第2页
第2页 / 共41页
一种实现虚拟机通信的方法和装置.pdf_第3页
第3页 / 共41页
点击查看更多>>
资源描述

《一种实现虚拟机通信的方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种实现虚拟机通信的方法和装置.pdf(41页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104115453 A (43)申请公布日 2014.10.22 CN 104115453 A (21)申请号 201480000400.0 (22)申请日 2014.06.16 PCT/CN2013/091202 2013.12.31 CN H04L 12/46(2006.01) (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华为 总部办公楼 (72)发明人 吴天议 (54) 发明名称 一种实现虚拟机通信的方法和装置 (57) 摘要 本发明实施例提供的方法和装置, 第一交换 机从SDN控制器接收ARP响应, 所述ARP响应携带 目的网关。

2、的 MAC 地址, 所述第一交换机根据所述 目的网关的MAC地址, 获取所述目的网关的MAC地 址对应的VTEP信息, 所述VTEP信息对应的路由器 位于所述第一数据中心 ; 所述第一交换机根据所 述 VTEP 信息, 发送 IP 报文给所述 VTEP 信息对应 的路由器, 以使所述 VTEP 信息对应的路由器将所 述 IP 报文通过所述路由器与所述第二交换机的 隧道发送给所述第二虚拟机。因此 SDN 控制器代 答, 减少了广播报文对传输带宽的占用, 并且只经 过了第一数据中心的路由器, 减少了报文在数据 中心间的迂回。 (66)本国优先权数据 (85)PCT国际申请进入国家阶段日 2014.。

3、06.18 (86)PCT国际申请的申请数据 PCT/CN2014/079949 2014.06.16 (51)Int.Cl. 权利要求书 7 页 说明书 25 页 附图 8 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书7页 说明书25页 附图8页 (10)申请公布号 CN 104115453 A CN 104115453 A 1/7 页 2 1. 一种实现虚拟机通信的方法, 应用于至少包括第一虚拟机与第二虚拟机的系统, 所 述第一虚拟机位于第一数据中心的第一子网并且与第一交换机通信, 所述第二虚拟机位于 第二子网并且与第二交换机通信, 其特征在于 : 所述第一交。

4、换机从所述第一虚拟机接收地址解析协议 ARP 请求, 所述 ARP 请求携带目 的网关的 IP 地址 ; 所述第一交换机向所述第一数据中心的软件定义网络 SDN 控制器转发所述 ARP 请求 ; 所述第一交换机从所述 SDN 控制器接收 ARP 响应, 所述 ARP 响应携带所述目的网关的 媒体接入控制 MAC 地址 ; 所述第一交换机根据所述目的网关的 MAC 地址, 获取所述目的网关的 MAC 地址对应的 虚拟可扩展局域网隧道端点 VTEP 信息, 所述 VTEP 信息对应的路由器位于所述第一数据中 心 ; 所述第一交换机根据所述 VTEP 信息, 发送 IP 报文给所述 VTEP 信息对。

5、应的路由器, 以 使所述VTEP信息对应的路由器将所述IP报文通过所述路由器与所述第二交换机的隧道发 送给所述第二虚拟机。 2.如权利要求1所述的方法, 其特征在于, 所述第一交换机根据所述目的网关的MAC地 址, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体包括 : 所述第一交换机向所述 SDN 控制器发送请求, 以请求获取所述目的网关的 MAC 地址对 应的 VTEP 信息 ; 接收所述 SDN 控制器发送的所述目的网关的 MAC 地址对应的 VTEP 信息。 3.如权利要求1所述的方法, 其特征在于, 所述第一交换机根据所述目的网关的MAC地 址, 获取所述目的网关的 MA。

6、C 地址对应的 VTEP 信息具体包括 : 所述第一交换机根据所述目的网关的 MAC 地址, 查询本地保存的流表, 获取所述目的 网关的 MAC 地址对应的 VTEP 信息。 4. 如权利要求 3 所述的方法, 其特征在于, 所述第一交换机查询本地保存的流表, 获取 所述目的网关的 MAC 地址对应的 VTEP 信息具体包括 : 所述第一交换机根据所述目的网关的 MAC 地址, 查询本地保存的流表, 获取两条或以 上 VTEP 信息时, 以位于所述第一数据中心的路由器的 VTEP 信息作为所述目的网关的 MAC 地址对应的 VTEP 信息。 5.如权利要求4所述的方法, 其特征在于, 当所述第。

7、一交换机根据所述目的网关的MAC 地址, 查询本地保存的流表, 获取了两条或以上位于所述第一数据中心的路由器的 VTEP 信 息时, 所述第一交换机根据以下至少之一 : 路由器的负载和调度策略, 选择所述目的网关的 MAC 地址对应的 VTEP 信息。 6. 如权利要求 1 至 5 任一所述的方法, 其特征在于, 所述第一交换机根据所述 VTEP 信 息, 发送 IP 报文给所述 VTEP 信息对应的路由器, 以使所述 VTEP 信息对应的路由器将所述 IP 报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机具体包括 : 所述第一交换机对从所述第一虚拟机接收的 IP 报文进行虚拟可扩。

8、展局域网 VxLAN 封 装, 其中所述 VxLAN 封装的目的 IP 地址为获取的所述 VTEP 信息, 虚拟网络标识 VNI 为所述 第一子网的标识, 所述 IP 报文的目的 MAC 地址为所述目的网关的 MAC 地址 ; 所述 VTEP 信息对应的路由器, 将目的 IP 地址改为所述第二交换机的 IP 地址, VNI 改 权 利 要 求 书 CN 104115453 A 2 2/7 页 3 为所述第二子网的标识, 目的 MAC 地址改为所述第二虚拟机的 MAC 地址, 然后将改变 VxLAN 封装的 IP 报文, 发送给所述第二交换机 ; 所述第二交换机对接收的改变 VxLAN 封装的 。

9、IP 报文, 进行 VxLAN 解封装后, 发送给所 述第二虚拟机。 7. 一种实现虚拟机通信的方法, 应用于至少包括第一虚拟机与第二虚拟机的系统, 所 述第一虚拟机位于第一数据中心的第一子网并且与第一交换机通信, 所述第二虚拟机位于 第二子网并且与第二交换机通信, 其特征在于 : 所述第一数据中心的软件定义网络 SDN 控制器从所述第一交换机接收地址解析协议 ARP 请求, 所述 ARP 请求携带目的网关的 IP 地址 ; 所述 SDN 控制器根据所述目的网关的 IP 地址, 获取所述目的网关的媒体接入控制 MAC 地址, 并向所述第一交换机发送 ARP 响应, 所述 ARP 响应携带所述目。

10、的网关的 MAC 地址, 以 使所述第一交换机根据所述目的网关的 MAC 地址, 获取所述目的网关的 MAC 地址对应的虚 拟可扩展局域网隧道端点VTEP信息, 所述VTEP信息对应的路由器位于所述第一数据中心, 使所述VTEP信息对应的路由器将IP报文通过所述路由器与所述第二交换机的隧道发送给 所述第二虚拟机。 8. 如权利要求 7 所述的方法, 其特征在于, 还包括 : 所述 SDN 控制器接收所述第一交换机发送的请求, 以请求获取所述目的网关的 MAC 地 址对应的 VTEP 信息 ; 所述SDN控制器根据所述目的网关的MAC地址, 查询本地保存的流表, 获取所述目的网 关的 MAC 地。

11、址对应的 VTEP 信息, 并向所述第一交换机返回所述目的网关的 MAC 地址对应的 VTEP 信息。 9. 如权利要求 8 所述的方法, 其特征在于, 所述 SDN 控制器查询本地保存的流表, 获取 所述目的网关的 MAC 地址对应的 VTEP 信息具体包括 : 所述SDN控制器根据所述目的网关的MAC地址, 查询本地保存的流表, 获取两条或以上 VTEP信息时, 以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC地址 对应的 VTEP 信息。 10. 如权利要求 9 所述的方法, 其特征在于, 当所述 SDN 控制器根据所述目的网关 的 MAC 地址, 查询本地保存的流表。

12、, 获取了两条或以上位于所述第一数据中心的路由器的 VTEP 信息时, 所述 SDN 控制器根据以下至少之一 : 路由器的负载和调度策略, 选择所述目的 网关的 MAC 地址对应的 VTEP 信息。 11.如权利要求7至10任一所述的方法, 其特征在于, 若所述第二虚拟机位于第二数据 中心, 则还包括 : 所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取所述第二虚拟 机的 IP 地址、 MAC 地址、 所述第二子网的虚拟网络标识 VNI, 和所述第二交换机的 VTEP 信 息, 以在所述第一数据中心的 SDN 控制器的控制下, 使所述 VTEP 信息对应的路由器将所述 IP 。

13、报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。 12. 一种实现虚拟机通信的方法, 应用于至少包括第一虚拟机与第二虚拟机的系统, 所述第一虚拟机位于第一数据中心并且与第一交换机通信, 所述第二虚拟机位于第二数据 中心并且与第二交换机通信, 所述第一虚拟机和所述第二虚拟机位于同一子网, 其特征在 权 利 要 求 书 CN 104115453 A 3 3/7 页 4 于 : 所述第一交换机从所述第一虚拟机接收地址解析协议 ARP 请求, 所述 ARP 请求携带目 的虚拟机的 IP 地址 ; 所述第一交换机根据所述目的虚拟机的 IP 地址, 获取所述目的虚拟机的媒体接入控 制 MAC。

14、 地址 ; 根据所述目的虚拟机的 MAC 地址, 获取所述目的虚拟机的 MAC 地址对应的虚拟可扩展 局域网隧道端点 VTEP 信息, 所述 VTEP 信息为所述第二交换机的 IP 地址 ; 所述第一交换机通过所述第一交换机与所述第二交换机的隧道将 IP 报文发送给所述 第二虚拟机。 13. 如权利要求 12 所述的方法, 其特征在于, 所述第一交换机根据所述目的虚拟机的 IP 地址, 获取所述目的虚拟机的媒体接入控制 MAC 地址具体包括 : 所述第一交换机向所述第一数据中心的软件定义网络 SDN 控制器转发所述 ARP 请求, 所述 ARP 请求携带所述目的虚拟机的 IP 地址 ; 所述第。

15、一交换机从所述 SDN 控制器接收 ARP 响应, 所述 ARP 响应携带所述目的虚拟机 的 MAC 地址。 14.如权利要求12或13所述的方法, 其特征在于, 根据所述目的虚拟机的MAC地址, 获 取所述目的虚拟机的 MAC 地址对应的 VTEP 信息具体包括 : 所述第一交换机向所述 SDN 控制器发送请求, 以请求获取所述目的虚拟机的 MAC 地址 对应的 VTEP 信息 ; 接收所述 SDN 控制器发送的所述目的虚拟机的 MAC 地址对应的 VTEP 信息。 15.如权利要求12或13所述的方法, 其特征在于, 根据所述目的虚拟机的MAC地址, 获 取所述目的虚拟机的 MAC 地址对。

16、应的 VTEP 信息具体包括 : 所述第一交换机根据所述目的虚拟机的 MAC 地址, 查询本地保存的流表, 获取所述目 的虚拟机的 MAC 地址对应的 VTEP 信息。 16. 如权利要求 15 所述的方法, 其特征在于, 还包括 : 所述第一交换机从所述 SDN 控制器获取所述第二虚拟机的 IP 地址、 MAC 地址、 和所述 第二交换机的 VTEP 信息, 以通过所述第一交换机与所述第二交换机的隧道将 IP 报文发送 给所述第二虚拟机。 17. 一种实现虚拟机通信的方法, 应用于至少包括第一虚拟机与第二虚拟机的系统, 所述第一虚拟机位于第一数据中心并且与第一交换机通信, 所述第二虚拟机位于。

17、第二数据 中心并且与第二交换机通信, 所述第一虚拟机和所述第二虚拟机位于同一子网, 其特征在 于 : 所述第一数据中心的软件定义网络 SDN 控制器从所述第一交换机接收地址解析协议 ARP 请求, 所述 ARP 请求携带目的虚拟机的 IP 地址 ; 所述 SDN 控制器根据所述目的虚拟机的 IP 地址, 获取所述目的虚拟机的媒体接入控 制 MAC 地址, 并向所述第一交换机发送 ARP 响应, 所述 ARP 响应携带所述目的虚拟机的 MAC 地址, 以使所述第一交换机根据所述目的虚拟机的MAC地址, 获取所述目的虚拟机的MAC地 址对应的虚拟可扩展局域网隧道端点 VTEP 信息, 所述 VTE。

18、P 信息为所述第二交换机的 IP 地 址, 使所述第一交换机通过所述第一交换机与所述第二交换机的隧道将 IP 报文发送给所 权 利 要 求 书 CN 104115453 A 4 4/7 页 5 述第二虚拟机。 18. 如权利要求 17 所述的方法, 其特征在于, 还包括 : 所述 SDN 控制器接收所述第一交换机发送的请求, 以请求获取所述目的虚拟机的 MAC 地址对应的 VTEP 信息 ; 所述SDN控制器根据所述目的虚拟机的MAC地址, 查询本地保存的流表, 获取所述目的 虚拟机的 MAC 地址对应的 VTEP 信息, 并向所述第一交换机返回所述目的虚拟机的 MAC 地址 对应的 VTEP。

19、 信息。 19. 如权利要求 17 或 18 所述的方法, 其特征在于, 还包括 : 所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取所述第二虚拟 机的IP地址、 MAC地址和所述第二交换机的VTEP信息, 并将所述第二虚拟机的IP地址、 MAC 地址和所述第二交换机的 VTEP 信息下发给所述第一交换机。 20. 一种实现虚拟机通信的第一交换机, 应用于至少包括第一虚拟机与第二虚拟机的 系统, 所述第一虚拟机位于第一数据中心的第一子网并且与所述第一交换机通信, 所述第 二虚拟机位于第二子网并且与第二交换机通信, 其特征在于, 所述第一交换机包括 : 接收模块, 用于从所述第。

20、一虚拟机接收地址解析协议ARP请求, 所述ARP请求携带目的 网关的 IP 地址 ; 发送模块, 用于向所述第一数据中心的软件定义网络 SDN 控制器转发所述 ARP 请求 ; 所述接收模块还用于从所述 SDN 控制器接收 ARP 响应, 所述 ARP 响应携带所述目的网 关的媒体接入控制 MAC 地址 ; 获取模块, 用于根据所述目的网关的 MAC 地址, 获取所述目的网关的 MAC 地址对应的 虚拟可扩展局域网隧道端点 VTEP 信息, 所述 VTEP 信息对应的路由器位于所述第一数据中 心 ; 所述发送模块, 还用于根据所述 VTEP 信息, 发送 IP 报文给所述 VTEP 信息对应的。

21、路由 器, 以使所述 VTEP 信息对应的路由器将所述 IP 报文通过所述路由器与所述第二交换机的 隧道发送给所述第二虚拟机。 21. 如权利要求 20 所述的交换机, 其特征在于, 所述获取模块用于根据所述目的网关 的 MAC 地址, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体为 : 所述获取模块用于向所述 SDN 控制器发送请求, 以请求获取所述目的网关的 MAC 地址 对应的 VTEP 信息, 接收所述 SDN 控制器发送的所述目的网关的 MAC 地址对应的 VTEP 信息。 22. 如权利要求 20 所述的交换机, 其特征在于, 所述获取模块用于根据所述目的网关 的 M。

22、AC 地址, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体为 : 所述获取模块用于根据所述目的网关的 MAC 地址, 查询所述第一交换机保存的流表, 获取所述目的网关的 MAC 地址对应的 VTEP 信息。 23. 如权利要求 22 所述的交换机, 其特征在于, 所述获取模块用于查询所述第一交换 机保存的流表, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体为 : 所述获取模块用于根据所述目的网关的 MAC 地址, 查询所述第一交换机保存的流表, 获取两条或以上 VTEP 信息时, 以位于所述第一数据中心的路由器的 VTEP 信息作为所述目 的网关的 MAC 地址对应。

23、的 VTEP 信息。 24. 一种实现虚拟机通信的软件定义网络 SDN 控制器, 其特征在于, 所述 SDN 控制器位 权 利 要 求 书 CN 104115453 A 5 5/7 页 6 于第一数据中心, 并且应用于至少包括第一虚拟机与第二虚拟机的系统, 所述第一虚拟机 位于所述第一数据中心的第一子网并且与第一交换机通信, 所述第二虚拟机位于第二子网 并且与第二交换机通信, 所述 SDN 控制器包括 : 接收模块, 用于从所述第一交换机接收地址解析协议ARP请求, 所述ARP请求携带目的 网关的 IP 地址 ; 处理模块, 用于根据所述目的网关的 IP 地址, 获取所述目的网关的媒体接入控制。

24、 MAC 地址 ; 发送模块, 用于向所述第一交换机发送 ARP 响应, 所述 ARP 响应携带所述目的网关的 MAC 地址, 以使所述第一交换机根据所述目的网关的 MAC 地址, 获取所述目的网关的 MAC 地 址对应的虚拟可扩展局域网隧道端点 VTEP 信息, 所述 VTEP 信息对应的路由器位于所述第 一数据中心, 使所述 VTEP 信息对应的路由器将 IP 报文通过所述路由器与所述第二交换机 的隧道发送给所述第二虚拟机。 25. 如权利要求 24 所述的控制器, 其特征在于, 所述接收模块还用于接收所述第一交换机发送的请求, 以请求获取所述目的网关的 MAC 地址对应的 VTEP 信息。

25、 ; 所述处理模块还用于根据所述目的网关的MAC地址, 查询所述SDN控制器保存的流表, 获取所述目的网关的MAC地址对应的VTEP信息, 并向所述第一交换机返回所述目的网关的 MAC 地址对应的 VTEP 信息。 26.如权利要求25所述的控制器, 其特征在于, 所述处理模块用于查询所述SDN控制器 保存的流表, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体为 : 所述处理模块用于根据所述目的网关的MAC地址, 查询所述SDN控制器保存的流表, 获 取两条或以上 VTEP 信息时, 以位于所述第一数据中心的路由器的 VTEP 信息作为所述目的 网关的 MAC 地址对应的 VTE。

26、P 信息。 27. 如权利要求 26 所述的控制器, 其特征在于, 当所述处理模块用于根据所述目的网 关的 MAC 地址, 查询所述 SDN 控制器保存的流表, 获取了两条或以上位于所述第一数据中 心的路由器的 VTEP 信息时, 所述处理模块用于根据以下至少之一 : 路由器的负载和调度策 略, 选择所述目的网关的 MAC 地址对应的 VTEP 信息。 28. 如权利要求 24 至 27 任一所述的控制器, 若所述第二虚拟机位于第二数据中心, 则 所述处理模块还用于从所述第二数据中心的 SDN 控制器获取所述第二虚拟机的 IP 地址、 MAC 地址、 第二子网的虚拟网络标识 VNI, 和所述第。

27、二交换机的 VTEP 信息。 29. 一种实现虚拟机通信的第一交换机, 应用于至少包括第一虚拟机与第二虚拟机的 系统, 所述第一虚拟机位于第一数据中心并且与所述第一交换机通信, 所述第二虚拟机位 于第二数据中心并且与第二交换机通信, 所述第一虚拟机和所述第二虚拟机位于同一子 网, 其特征在于, 所述交换机包括 : 接收模块, 用于从所述第一虚拟机接收地址解析协议ARP请求, 所述ARP请求携带目的 虚拟机的 IP 地址 ; 处理模块, 用于根据所述目的虚拟机的 IP 地址, 获取所述目的虚拟机的媒体接入控制 MAC 地址, 根据所述目的虚拟机的 MAC 地址, 获取所述目的虚拟机的 MAC 地。

28、址对应的虚拟可 扩展局域网隧道端点 VTEP 信息, 所述 VTEP 信息为所述第二交换机的 IP 地址 ; 权 利 要 求 书 CN 104115453 A 6 6/7 页 7 发送模块, 用于通过所述第一交换机与所述第二交换机的隧道将 IP 报文发送给所述 第二虚拟机。 30. 如权利要求 29 所述的交换机, 其特征在于, 所述处理模块用于根据所述目的虚拟 机的 IP 地址, 获取所述目的虚拟机的 MAC 地址具体为 : 所述处理模块用于向所述第一数据中心的软件定义网络 SDN 控制器转发所述 ARP 请 求, 所述 ARP 请求携带所述目的虚拟机的 IP 地址, 从所述 SDN 控制器。

29、接收 ARP 响应, 所述 ARP 响应携带所述目的虚拟机的 MAC 地址。 31. 如权利要求 29 或 30 所述的交换机, 其特征在于, 所述处理模块用于根据所述目的 虚拟机的 MAC 地址, 获取所述目的虚拟机的 MAC 地址对应的 VTEP 信息具体为 : 所述处理模块用于向所述 SDN 控制器发送请求, 以请求获取所述目的虚拟机的 MAC 地 址对应的 VTEP 信息, 接收所述 SDN 控制器发送的所述目的虚拟机的 MAC 地址对应的 VTEP 信息。 32. 如权利要求 29 或 30 所述的交换机, 其特征在于, 所述处理模块用于根据所述目的 虚拟机的 MAC 地址, 获取所。

30、述目的虚拟机的 MAC 地址对应的 VTEP 信息具体为 : 所述处理模块用于根据所述目的虚拟机的 MAC 地址, 查询所述第一交换机保存的流 表, 获取所述目的虚拟机的 MAC 地址对应的 VTEP 信息。 33. 如权利要求 32 所述的交换机, 其特征在于, 所述处理模块还用于从所述第一数据 中心的 SDN 控制器获取所述第二虚拟机的 IP 地址、 MAC 地址、 和所述第二交换机的 VTEP 信 息。 34. 一种实现虚拟机通信的软件定义网络 SDN 控制器, 其特征在于, 所述 SDN 控制器位 于第一数据中心, 并且应用于至少包括第一虚拟机与第二虚拟机的系统, 所述第一虚拟机 位于。

31、所述第一数据中心并且与第一交换机通信, 所述第二虚拟机位于第二数据中心并且与 第二交换机通信, 所述第一虚拟机和所述第二虚拟机位于同一子网, 所述 SDN 控制器包括 : 接收模块, 用于从所述第一交换机接收地址解析协议ARP请求, 所述ARP请求携带目的 虚拟机的 IP 地址 ; 获取模块, 用于根据所述目的虚拟机的 IP 地址, 获取所述目的虚拟机的媒体接入控制 MAC 地址 ; 发送模块, 用于向所述第一交换机发送 ARP 响应, 所述 ARP 响应携带所述目的虚拟机 的MAC地址, 以使所述第一交换机根据所述目的虚拟机的MAC地址, 获取所述目的虚拟机的 MAC 地址对应的虚拟可扩展局。

32、域网隧道端点 VTEP 信息, 所述 VTEP 信息为所述第二交换机 的 IP 地址, 使所述第一交换机通过所述第一交换机与所述第二交换机的隧道将 IP 报文发 送给所述第二虚拟机。 35. 如权利要求 34 所述的控制器, 其特征在于, 所述接收模块还用于接收所述第一交 换机发送的请求, 以请求获取所述目的虚拟机的 MAC 地址对应的 VTEP 信息 ; 所述获取模块还用于根据所述目的虚拟机的 MAC 地址, 查询所述 SDN 控制器保存的流 表, 获取所述目的虚拟机的 MAC 地址对应的 VTEP 信息, 并向所述第一交换机返回所述目的 虚拟机的 MAC 地址对应的 VTEP 信息。 36。

33、. 如权利要求 34 或 35 所述的控制器, 其特征在于, 所述获取模块还用于从所述第二 数据中心的 SDN 控制器获取所述第二虚拟机的 IP 地址、 MAC 地址和所述第二交换机的 VTEP 权 利 要 求 书 CN 104115453 A 7 7/7 页 8 信息 ; 所述发送模块还用于将所述第二虚拟机的IP地址、 MAC地址和所述第二交换机的VTEP 信息下发给所述第一交换机。 37. 一种实现虚拟机通信的交换机, 其特征在于, 包括 : 处理器、 存储器和系统总线, 所述处理器和所述存储器之间通过所述系统总线连接并 完成相互间的通信 ; 所述存储器, 用于存储计算机执行指令 ; 所述。

34、处理器, 用于运行所述计算机执行指令, 执行如权利要求 1 至 6 任一所述的方法。 38. 一种实现虚拟机通信的软件定义网络 SDN 控制器, 其特征在于, 包括 : 处理器、 存储器和系统总线, 所述处理器和所述存储器之间通过所述系统总线连接并 完成相互间的通信 ; 所述存储器, 用于存储计算机执行指令 ; 所述处理器, 用于运行所述计算机执行指令, 执行如权利要求7至11任一所述的方法。 39. 一种实现虚拟机通信的交换机, 其特征在于, 包括 : 处理器、 存储器和系统总线, 所述处理器和所述存储器之间通过所述系统总线连接并 完成相互间的通信 ; 所述存储器, 用于存储计算机执行指令 。

35、; 所述处理器, 用于运行所述计算机执行指令, 执行如权利要求 12 至 16 任一所述的方 法。 40. 一种实现虚拟机通信的软件定义网络 SDN 控制器, 其特征在于, 包括 : 处理器、 存储器和系统总线, 所述处理器和所述存储器之间通过所述系统总线连接并 完成相互间的通信 ; 所述存储器, 用于存储计算机执行指令 ; 所述处理器, 用于运行所述计算机执行指令, 执行如权利要求 17 至 19 任一所述的方 法。 权 利 要 求 书 CN 104115453 A 8 1/25 页 9 一种实现虚拟机通信的方法和装置 技术领域 0001 本发明实施例涉及网络通信领域, 特别涉及一种实现虚拟。

36、机通信的方法和装置。 背景技术 0002 现有技术应用虚拟可扩展局域网 (VxLAN, Virtual extensible LAN) 技术扩展网 络虚拟化, 用以得到足够数量的虚拟网络, 来满足用户使用。 0003 每一个数据中心可能运行多个虚拟网络的虚拟机 (VM, Virtual Machine)。当一 个数据中心的 VM 与另一数据中心的 VM 通信时, 它会向第一跳路由器发出广播地址解析协 议 (ARP,Address Resolution Protocol) 请求, 以广播获取目的网关的 MAC 地址, 然后 ARP 请求被广播到各VM。 获取到目的网关的MAC地址后, 通过目的网。

37、关的MAC地址, 将报文发送 到各个数据中心的路由器, 然后到达目的 VM, 从而实现 VM 之间的通信。但是这种 ARP 广播 到各 VM 的方式, 会占用大量传输带宽 ; 而且报文会通过各数据中心的路由器才能到达目的 VM, 在数据中心间迂回比较严重。 发明内容 0004 本发明实施例提出了一种实现虚拟机通信的方法和装置, 以减少广播报文对传输 带宽的占用, 和减少报文在数据中心间的迂回。 0005 第一方面, 本发明实施例提出了一种实现虚拟机通信的方法, 应用于至少包括第 一虚拟机与第二虚拟机的系统, 所述第一虚拟机位于第一数据中心的第一子网并且与第一 交换机通信, 所述第二虚拟机位于第。

38、二子网并且与第二交换机通信, 所述第一交换机与所 述第二交换机可以相同, 也可以不同, 该方法包括 : 所述第一交换机从所述第一虚拟机接收 地址解析协议 ARP 请求, 所述 ARP 请求携带目的网关的 IP 地址 ; 0006 所述第一交换机向所述第一数据中心的软件定义网络SDN控制器转发所述ARP请 求 ; 0007 所述第一交换机从所述 SDN 控制器接收 ARP 响应, 所述 ARP 响应携带所述目的网 关的媒体接入控制 MAC 地址 ; 0008 所述第一交换机根据所述目的网关的 MAC 地址, 获取所述目的网关的 MAC 地址对 应的虚拟可扩展局域网隧道端点 VTEP 信息, 所述。

39、 VTEP 信息对应的路由器位于所述第一数 据中心 ; 0009 所述第一交换机根据所述 VTEP 信息, 发送 IP 报文给所述 VTEP 信息对应的路由 器, 以使所述 VTEP 信息对应的路由器将所述 IP 报文通过所述路由器与所述第二交换机的 隧道发送给所述第二虚拟机。 0010 结合第一方面, 在第一种可能的实现方式中, 所述第一交换机根据所述目的网关 的 MAC 地址, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体包括 : 所述第一交换机向 所述 SDN 控制器发送请求, 以请求获取所述目的网关的 MAC 地址对应的 VTEP 信息 ; 接收所 述 SDN 控制器发送。

40、的所述目的网关的 MAC 地址对应的 VTEP 信息。 说 明 书 CN 104115453 A 9 2/25 页 10 0011 结合第一方面, 在第二种可能的实现方式中, 所述第一交换机根据所述目的网关 的 MAC 地址, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体包括 : 所述第一交换机根 据所述目的网关的 MAC 地址, 查询本地保存的流表, 获取所述目的网关的 MAC 地址对应的 VTEP 信息。 0012 结合第一方面的第二种可能的实现方式中, 在第三种可能的实现方式中, 所述第 一交换机查询本地保存的流表, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具。

41、体包括 : 0013 所述第一交换机根据所述目的网关的 MAC 地址, 查询本地保存的流表, 获取两条 或以上 VTEP 信息时, 以位于所述第一数据中心的路由器的 VTEP 信息作为所述目的网关的 MAC 地址对应的 VTEP 信息。 0014 结合第一方面的第三种可能的实现方式中, 在第四种可能的实现方式中, 当所述 第一交换机根据所述目的网关的 MAC 地址, 查询本地保存的流表, 获取了两条或以上位于 所述第一数据中心的路由器的 VTEP 信息时, 所述第一交换机根据以下至少之一 : 路由器的 负载和调度策略, 选择所述目的网关的 MAC 地址对应的 VTEP 信息。 0015 结合第。

42、一方面或者第一方面的第一种至第四种任意一种可能的实现方式, 在第五 种可能的实现方式中, 所述第一交换机根据所述 VTEP 信息, 发送 IP 报文给所述 VTEP 信息 对应的路由器, 以使所述 VTEP 信息对应的路由器将所述 IP 报文通过所述路由器与所述第 二交换机的隧道发送给所述第二虚拟机具体包括 : 0016 所述第一交换机对从所述第一虚拟机接收的 IP 报文进行虚拟可扩展局域网 VxLAN封装, 其中所述VxLAN封装的目的IP地址为获取的所述VTEP信息, 虚拟网络标识VNI 为所述第一子网的标识, 所述 IP 报文的目的 MAC 地址为所述目的网关的 MAC 地址 ; 001。

43、7 所述 VTEP 信息对应的路由器, 将目的 IP 地址改为所述第二交换机的 IP 地址, VNI 改为所述第二子网的标识, 目的 MAC 地址改为所述第二虚拟机的 MAC 地址, 然后将改变 VxLAN 封装的 IP 报文, 发送给所述第二交换机 ; 0018 所述第二交换机对接收的改变 VxLAN 封装的 IP 报文, 进行 VxLAN 解封装后, 发送 给所述第二虚拟机。 0019 第二方面, 本发明实施例提出了一种实现虚拟机通信的方法, 应用于至少包括第 一虚拟机与第二虚拟机的系统, 所述第一虚拟机位于第一数据中心的第一子网并且与第一 交换机通信, 所述第二虚拟机位于第二子网并且与第。

44、二交换机通信, 所述第一交换机与所 述第二交换机可以相同, 也可以不同, 该方法包括 : 所述第一数据中心的软件定义网络 SDN 控制器从所述第一交换机接收地址解析协议 ARP 请求, 所述 ARP 请求携带目的网关的 IP 地 址 ; 0020 所述SDN控制器根据所述目的网关的IP地址, 获取所述目的网关的媒体接入控制 MAC地址, 并向所述第一交换机发送ARP响应, 所述ARP响应携带所述目的网关的MAC地址, 以使所述第一交换机根据所述目的网关的 MAC 地址, 获取所述目的网关的 MAC 地址对应的 虚拟可扩展局域网隧道端点 VTEP 信息, 所述 VTEP 信息对应的路由器位于所述。

45、第一数据中 心, 使所述 VTEP 信息对应的路由器将 IP 报文通过所述路由器与所述第二交换机的隧道发 送给所述第二虚拟机。 0021 结合第二方面, 在第一种可能的实现方式中, 所述 SDN 控制器接收所述第一交换 机发送的请求, 以请求获取所述目的网关的 MAC 地址对应的 VTEP 信息 ; 说 明 书 CN 104115453 A 10 3/25 页 11 0022 所述SDN控制器根据所述目的网关的MAC地址, 查询本地保存的流表, 获取所述目 的网关的 MAC 地址对应的 VTEP 信息, 并向所述第一交换机返回所述目的网关的 MAC 地址对 应的 VTEP 信息。 0023 结。

46、合第二方面的第一种可能的实现方式中, 在第二种可能的实现方式中, 所述 SDN 控制器查询本地保存的流表, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体包括 : 0024 所述SDN控制器根据所述目的网关的MAC地址, 查询本地保存的流表, 获取两条或 以上VTEP信息时, 以位于所述第一数据中心的路由器的VTEP信息作为所述目的网关的MAC 地址对应的 VTEP 信息。 0025 结合第二方面的第二种可能的实现方式中, 在第三种可能的实现方式中, 当所述 SDN 控制器根据所述目的网关的 MAC 地址, 查询本地保存的流表, 获取了两条或以上位于所 述第一数据中心的路由器的 V。

47、TEP 信息时, 所述 SDN 控制器根据以下至少之一 : 路由器的负 载和调度策略, 选择所述目的网关的 MAC 地址对应的 VTEP 信息。 0026 结合第二方面或者第二方面的第一种至第三种任意一种可能的实现方式, 在第四 种可能的实现方式中, 若所述第二虚拟机位于第二数据中心, 则还包括 : 0027 所述第一数据中心的SDN控制器从所述第二数据中心的SDN控制器获取所述第二 虚拟机的 IP 地址、 MAC 地址、 所述第二子网的虚拟网络标识 VNI, 和所述第二交换机的 VTEP 信息, 以在所述第一数据中心的 SDN 控制器的控制下, 使所述 VTEP 信息对应的路由器将所 述 I。

48、P 报文通过所述路由器与所述第二交换机的隧道发送给所述第二虚拟机。 0028 第三方面, 本发明实施例提出了一种实现虚拟机通信的第一交换机, 应用于至少 包括第一虚拟机与第二虚拟机的系统, 所述第一虚拟机位于第一数据中心的第一子网并且 与所述第一交换机通信, 所述第二虚拟机位于第二子网并且与第二交换机通信, 所述第一 交换机与所述第二交换机可以相同, 也可以不同, 所述第一交换机包括 : 接收模块, 用于从 所述第一虚拟机接收地址解析协议 ARP 请求, 所述 ARP 请求携带目的网关的 IP 地址 ; 0029 发送模块, 用于向所述第一数据中心的软件定义网络 SDN 控制器转发所述 ARP。

49、 请 求 ; 0030 所述接收模块还用于从所述 SDN 控制器接收 ARP 响应, 所述 ARP 响应携带所述目 的网关的媒体接入控制 MAC 地址 ; 0031 获取模块, 用于根据所述目的网关的MAC地址, 获取所述目的网关的MAC地址对应 的虚拟可扩展局域网隧道端点 VTEP 信息, 所述 VTEP 信息对应的路由器位于所述第一数据 中心 ; 0032 所述发送模块, 还用于根据所述 VTEP 信息, 发送 IP 报文给所述 VTEP 信息对应的 路由器, 以使所述 VTEP 信息对应的路由器将所述 IP 报文通过所述路由器与所述第二交换 机的隧道发送给所述第二虚拟机。 0033 结合第三方面, 在第一种可能的实现方式中, 所述获取模块用于根据所述目的网 关的 MAC 地址, 获取所述目的网关的 MAC 地址对应的 VTEP 信息具体为 : 0034 所述获取模块用于向所述 SDN 控制器发送请求, 以请求获取所述目的网关的 MAC 地址对应的 VTEP 信息, 接收所述 SDN 控制器发送的所述目的网关的 MAC 地址对应的 VTEP 信息。 0035 结合第三方面, 在第二种可能的实现方式中, 所述获取模块用于根据所述目的网 说 明。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1