发明内容
本发明提供一种虚拟机位置定位方法和装置,以提高虚拟机网络位置的定位效率。
为了达到上述目的,本发明提供一种虚拟机位置定位方法,该方法包括以下步骤:
网管获取各虚拟机的介质访问控制MAC地址与接入虚拟局域网VLAN标识之间的第一对应关系,并获取各交换机的地址与配置的VLAN标识之间的第二对应关系;
在所述网管检测到虚拟机迁移事件时,所述网管根据该迁移事件获取迁移的虚拟机的MAC地址,并通过所述虚拟机的MAC地址查询所述第一对应关系,获得所述虚拟机对应的接入VLAN标识;
所述网管通过所述虚拟机对应的接入VLAN标识查询所述第二对应关系,获得所述虚拟机对应的接入VLAN标识所对应的交换机的地址;
所述网管通过简单网络管理协议SNMP对所述交换机的地址进行探测,并根据探测结果确定所述虚拟机迁移后的网络位置。
所述方法进一步包括:所述网管依据虚拟机迁移前后接入接口VLAN配置一致的特性,获知所述虚拟机迁移前所对应的接入VLAN标识,与所述虚拟机迁移后所对应的接入VLAN标识相同。
所述网管通过简单网络管理协议SNMP对所述交换机的地址进行探测,并根据探测结果确定所述虚拟机迁移后的网络位置,包括:
所述网管利用所述交换机的地址向交换机发送探测消息;
如果接收到来自所述交换机的探测响应消息,且所述探测响应消息中携带的接口上未学习到其他交换机和路由器的MAC地址,则所述网管确定所述虚拟机迁移后的网络位置为所述交换机的所述接口。
所述探测消息中携带所述虚拟机的MAC地址和所述虚拟机的接入VLAN标识;当所述交换机在所述接入VLAN标识下已经学习到所述虚拟机的MAC地址时,所述网管接收来自所述交换机的探测响应消息。
所述探测消息包括:SNMP-获取GET报文,且所述SNMP-GET报文的第一级索引中携带所述接入VLAN标识,所述SNMP-GET报文的第二级索引中携带所述虚拟机的MAC地址。
一种虚拟机位置定位装置,所述装置包括:
对应关系获取模块,用于获取各虚拟机的介质访问控制MAC地址与接入虚拟局域网VLAN标识之间的第一对应关系,并获取各交换机的地址与配置的VLAN标识之间的第二对应关系;
VLAN标识获取模块,用于在检测到虚拟机迁移事件时,根据该迁移事件获取迁移的虚拟机的MAC地址,并通过所述虚拟机的MAC地址查询所述第一对应关系,获得所述虚拟机对应的接入VLAN标识;
交换机地址获取模块,用于通过所述虚拟机对应的接入VLAN标识查询所述第二对应关系,获得所述虚拟机对应的接入VLAN标识所对应的交换机的地址;
确定模块,用于通过简单网络管理协议SNMP对所述交换机的地址进行探测,并根据探测结果确定所述虚拟机迁移后的网络位置。
依据虚拟机迁移前后接入接口VLAN配置一致的特性,可获知所述虚拟机迁移前所对应的接入VLAN标识,与所述虚拟机迁移后所对应的接入VLAN标识相同。
所述确定模块,具体用于利用所述交换机的地址向交换机发送探测消息;
如果接收到来自所述交换机的探测响应消息,且所述探测响应消息中携带的接口上未学习到其他交换机和路由器的MAC地址,则确定所述虚拟机迁移后的网络位置为所述交换机的所述接口。
所述探测消息中携带所述虚拟机的MAC地址和所述虚拟机的接入VLAN标识;所述确定模块,进一步用于当所述交换机在所述接入VLAN标识下已经学习到所述虚拟机的MAC地址时,接收来自所述交换机的探测响应消息。
所述探测消息包括:SNMP-获取GET报文,且所述SNMP-GET报文的第一级索引中携带所述接入VLAN标识,所述SNMP-GET报文的第二级索引中携带所述虚拟机的MAC地址。
与现有技术相比,本发明至少具有以下优点:通过在网管上记录MAC地址与接入VLAN(Virtual Local Area Network,虚拟局域网)标识之间的对应关系、以及记录交换机的地址与配置的VLAN标识之间的对应关系,在虚拟机发生迁移后,网管可快速确定出虚拟机迁移后的网络位置,从而可提高虚拟机网络位置的定位效率。
具体实施方式
本发明提出一种虚拟机位置定位方法,该方法应用于包括网管、多个虚拟服务器和多个交换机的系统中,虚拟服务器与交换机连接,且虚拟服务器上运行有虚拟机(VM)。以图1为本发明应用场景示意图,虚拟服务器1与交换机1连接,且虚拟服务器1上运行虚拟机1;虚拟服务器2与交换机2连接,且虚拟服务器2上运行虚拟机2;虚拟服务器3与交换机3连接,且虚拟服务器3上运行虚拟机3和虚拟机4。
本发明中,虚拟机的位置为虚拟机的网络位置,具体为虚拟机对应的交换机以及虚拟机与交换机所连接的接口,以图1为例,则虚拟机1的网络位置为交换机1和接口A;虚拟机2的网络位置为交换机2和接口B;虚拟机3的网络位置为交换机3和接口C。
基于上述应用场景,如图2所示,该方法包括以下步骤:
步骤201,网管获取各虚拟机的MAC地址与接入VLAN标识之间的对应关系(以第一对应关系为例),并获取各交换机的地址与配置的VLAN标识之间的对应关系(以第二对应关系为例)。
本发明中,在将交换机加入到网管后,该网管可以通过轮询等方式获得各虚拟机的MAC地址与接入VLAN标识之间的第一对应关系,并可以获得各交换机的地址与配置的VLAN标识之间的第二对应关系。需要注意的是,在获得所有虚拟机的MAC地址与接入VLAN标识之间的第一对应关系后,网管还需要存储该第一对应关系,如通过表格等方式进行存储;在获得各交换机的地址与配置的VLAN标识之间的第二对应关系后,网管还需要存储该第二对应关系,如通过表格等方式进行存储。
以接口A的VLAN标识为VLAN1,接口B的VLAN标识为VLAN2,接口C的VLAN标识为VLAN3为例;则在第一对应关系中,将记录虚拟机1的MAC地址与VLAN1的对应关系、虚拟机2的MAC地址与VLAN2的对应关系、虚拟机3的MAC地址与VLAN3的对应关系;在第二对应关系中,将至少记录交换机1的地址与VLAN1的对应关系、交换机2的地址与VLAN2的对应关系、交换机3的地址与VLAN3的对应关系。
一种优选的实施方式为:通过虚拟机接入记录结构维护各虚拟机的MAC地址与接入VLAN标识之间的第一对应关系,该虚拟机接入记录结构用于存储虚拟机的接入位置,其内容包括:虚拟机的MAC地址、接入交换机、接入接口、接入VLAN等信息。通过交换机同VLAN的映射关系结构维护各交换机的地址与配置的VLAN标识之间的第二对应关系,该交换机同VLAN的映射关系结构用于在网管中存储交换机同配置的VLAN标识集合的映射关系,其内容包括:交换机IP地址、配置的VLAN标识集合。
步骤202,在网管检测到虚拟机迁移事件时,网管根据该迁移事件获取迁移的虚拟机的MAC地址,并通过该虚拟机的MAC地址查询第一对应关系,以获得该虚拟机对应的接入VLAN标识。
具体的,当一个虚拟服务器发生故障后,该虚拟服务器上运行的虚拟机会迁移到另一个虚拟服务器上,此时会产生虚拟机迁移事件,且网管可检测到该迁移事件,继而可以根据该迁移事件直接获取迁移的虚拟机的MAC地址。以虚拟服务器1发生故障,虚拟服务器1上的虚拟机1迁移到虚拟服务器3上为例进行后续说明;通过虚拟机1的MAC地址查询第一对应关系,可以获得虚拟机1对应的接入VLAN标识为VLAN1。
步骤203,网管通过虚拟机对应的接入VLAN标识查询第二对应关系,获得虚拟机对应的接入VLAN标识所对应的交换机的地址。
需要注意的是,上述通过查询第一对应关系获得的虚拟机对应的接入VLAN标识,为虚拟机在发生迁移前所对应的接入VLAN标识;且依据虚拟机迁移前后接入接口VLAN配置一致的特性,网管可获知虚拟机迁移前所对应的接入VLAN标识,与虚拟机迁移后所对应的接入VLAN标识相同;因此,网管可直接通过虚拟机对应的接入VLAN标识(该接入VLAN标识为虚拟机在发生迁移前所对应的接入VLAN标识,且为虚拟机在发生迁移后所对应的接入VLAN标识)查询第二对应关系,获得虚拟机对应的接入VLAN标识所对应的交换机的地址(可以为1或多个交换机的地址),以缩小实时定位的交换机范围。
步骤204,网管通过SNMP(Simple Network Management Protocol,简单网络管理协议)对交换机的地址进行探测,并根据探测结果确定虚拟机迁移后的网络位置。
具体的,网管可利用交换机的地址向交换机发送探测消息(当存在多个交换机的地址时,则向每个交换机分别发送探测消息,以交换机3为例进行说明),该探测消息中携带了虚拟机的MAC地址和虚拟机的接入VLAN标识。
当交换机3在该接入VLAN标识下已经学习到该虚拟机的MAC地址时,交换机3需要向网管发送探测响应消息;如果网管接收到来自交换机3的探测响应消息,且探测响应消息中携带的接口上未学习到其他交换机和路由器的MAC地址,则网管确定虚拟机迁移后的网络位置为该交换机的该接口。
进一步的,网管需要对探测响应消息中携带的接口进行判断(当存在多个接口时,需要对每个接口分别进行判断);如果接口(以接口C为例)上未学习到其他交换机和路由器的MAC地址,则网管确定虚拟机迁移后的网络位置为该交换机的该接口(即交换机3的接口C)。
本发明中,该探测消息包括但不限于:SNMP-GET(获取)报文,且该SNMP-GET报文的第一级索引中携带有接入VLAN标识,该SNMP-GET报文的第二级索引中携带有虚拟机的MAC地址。
为了实现上述过程,在获得交换机的地址后,将交换机的地址添加到交换机探测集合A中;针对交换机探测集合A中的每个交换机,网管构造探测Dot1qBridge MIB(Management Information Base,管理信息库)的MAC学习节点dot1qTpFdbPort的SNMP-GET报文,该SNMP-GET报文的第一级索引填写VLAN ID,第二级索引填写虚拟机的MAC地址;如果SNMP-GET响应成功(即网管接收到探测响应消息),则将探测响应消息中携带的接口添加到接口集合B中。
针对接口集合B中的每一个接口,网管需要依据交换机接口是否为虚拟机接入接口的判断原则(接口上没有学习到其他交换机和路由器的MAC地址),过滤出虚拟机迁移后的网络位置,即如果接口上未学习到其他交换机和路由器的MAC地址,则网管确定虚拟机迁移后的网络位置为该接口。
需要说明的是,网管通过虚拟机接入记录结构存储虚拟机的接入位置(包括虚拟机的MAC地址、接入交换机、接入接口、接入VLAN等内容)时,在确定虚拟机迁移后的网络位置后,网管还需要将虚拟机迁移后的网络位置(即迁移后的交换机和对应的接口)更新到虚拟机接入记录结构中。之后,网管可利用虚拟机迁移后的网络位置,进行虚拟机的网络配置信息的迁移,以保证虚拟机的正常运行,实现随需而动的数据中心网络。
综上所述,本发明提供了一种通用且能有效提高虚拟机位置定位效率的方案,通过在网管上记录MAC地址与接入VLAN标识之间的对应关系、以及记录交换机的地址与配置的VLAN标识之间的对应关系,在虚拟机发生迁移后,网管可快速确定出虚拟机迁移后的网络位置,从而可提高虚拟机网络位置的定位效率,从而保证虚拟网络配置动态迁移的实时性和准确性。
进一步的,通过使用SNMP-GET方式实现同交换机一次SNMP交互,即可探测出交换机是否学习到虚拟机的MAC地址,以及学习到MAC地址的接口索引,进而定位出虚拟机迁移后的位置,在提高虚拟机位置定位效率的同时,又兼容各种厂商设备。
基于与上述方法同样的发明构思,本发明还提出了一种虚拟机位置定位装置,如图3所示,所述装置包括:
对应关系获取模块11,用于获取各虚拟机的介质访问控制MAC地址与接入虚拟局域网VLAN标识之间的第一对应关系,并获取各交换机的地址与配置的VLAN标识之间的第二对应关系;
VLAN标识获取模块12,用于在检测到虚拟机迁移事件时,根据该迁移事件获取迁移的虚拟机的MAC地址,并通过所述虚拟机的MAC地址查询所述第一对应关系,获得所述虚拟机对应的接入VLAN标识;
交换机地址获取模块13,用于通过所述虚拟机对应的接入VLAN标识查询所述第二对应关系,获得所述虚拟机对应的接入VLAN标识所对应的交换机的地址;
确定模块14,用于通过简单网络管理协议SNMP对所述交换机的地址进行探测,并根据探测结果确定所述虚拟机迁移后的网络位置。
本发明中,依据虚拟机迁移前后接入接口VLAN配置一致的特性,可获知所述虚拟机迁移前所对应的接入VLAN标识,与所述虚拟机迁移后所对应的接入VLAN标识相同。
所述确定模块14,具体用于利用所述交换机的地址向交换机发送探测消息;
如果接收到来自所述交换机的探测响应消息,且所述探测响应消息中携带的接口上未学习到其他交换机和路由器的MAC地址,则确定所述虚拟机迁移后的网络位置为所述交换机的所述接口。
所述探测消息中携带所述虚拟机的MAC地址和所述虚拟机的接入VLAN标识;所述确定模块14,进一步用于当所述交换机在所述接入VLAN标识下已经学习到所述虚拟机的MAC地址时,接收来自所述交换机的探测响应消息。
所述探测消息包括:SNMP-获取GET报文,且所述SNMP-GET报文的第一级索引中携带所述接入VLAN标识,所述SNMP-GET报文的第二级索引中携带所述虚拟机的MAC地址。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。