虚拟机信息获取方法及装置与流程

文档序号:16666339发布日期:2019-01-18 23:17阅读:291来源:国知局
虚拟机信息获取方法及装置与流程

本公开涉及通信技术领域,具体而言,涉及一种虚拟机信息获取方法及装置。



背景技术:

虚拟化是一种资源管理技术,能够将计算机的各种实体资源予以抽象、转换后呈现出来,打破实体结构间的障碍。虚拟交换机是利用虚拟化平台,通过软件的方式形成的交换机。在虚拟化技术中,虚拟交换机会连接多个虚拟机,并完成虚拟机之间的数据交互。为了对虚拟网络进行管理,需要获取虚拟机的网络之间互连的协议(internetprotocol,ip)地址等相关信息,因而,便捷地获取虚拟机的相关信息为应用所需。



技术实现要素:

有鉴于此,本公开提供一种虚拟机信息获取方法及装置。

第一方面,本公开提供了一种虚拟机信息获取方法,应用于虚拟交换机,所述虚拟交换机与虚拟机连接以实现虚拟机之间的数据交互,所述方法包括:

从所述虚拟交换机接收到的报文中获得设定类型的报文;

针对获得的所述设定类型的报文,解析得到该报文对应的虚拟机的网络之间互连的协议ip地址和媒体访问控制mac地址;

将解析得到的ip地址和mac地址关联存储至所述虚拟交换机所在硬件设备的文件系统中。

可选地,所述方法还包括:

在所述虚拟交换机启动之后的初始化过程中,将存储在所述文件系统中的ip地址和mac地址加载至所述虚拟交换机所在硬件设备的内存中;

当所述虚拟交换机接收到报文时,判断所述报文是否满足预设条件,若所述报文满足所述预设条件,则从所述报文中解析得到对应的虚拟机的ip地址和mac地址,判断所述内存中是否已将该ip地址和mac地址进行关联存储;

若所述内存中未将所述ip地址和mac地址进行关联存储,则将所述ip地址和mac地址关联存储至所述内存中。

可选地,判断所述报文是否满足预设条件的步骤,包括:

判断所述报文是否为首次通过所述虚拟交换机进行转发的报文,若所述报文为首次通过所述虚拟交换机进行转发的报文,则判断所述报文是否为所述设定类型的报文;

当所述报文为首次通过所述虚拟交换机进行转发的报文,并且为所述设定类型的报文时,判定所述报文为满足预设条件的报文。

可选地,将存储在所述文件系统中的ip地址和mac地址加载至所述虚拟交换机所在硬件设备的内存中的步骤,包括:以存储在所述文件系统中的mac地址为键,以该mac地址对应的ip地址为值,将所述文件系统中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中;

所述判断所述内存中是否已将该ip地址和mac地址进行关联存储的步骤,包括:

查询所述内存中的哈希表是否存储有该mac地址;

若存储有该mac地址,则判断所述哈希表中存储的与该mac地址关联的ip地址是否与所述报文中的ip地址一致,若不一致,则将所述哈希表中存储的与该mac地址关联的ip地址更新为所述报文中的ip地址;

若所述哈希表中未存储有该mac地址,则以该mac地址为键,以该mac地址对应的ip地址为值,将所述报文中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中。

可选地,所述方法还包括:

接收信息添加请求,从所述信息添加请求中解析得到所需添加的ip地址和mac地址;

判断所述内存中是否已将该ip地址和mac地址进行关联存储;

若所述内存中未将所述ip地址和mac地址进行关联存储,则将所述ip地址和mac地址关联存储至所述内存中。

可选地,所述方法还包括:

判断所述内存中存储的各ip地址和mac地址是否达到老化条件,若存在ip地址和mac地址达到所述老化条件,则删除该ip地址和mac地址。

第二方面,本公开还提供一种虚拟机信息获取装置,应用于虚拟交换机,所述虚拟交换机与虚拟机连接以实现虚拟机之间的数据交互,所述虚拟机信息获取装置包括:

报文获得模块,用于从所述虚拟交换机接收到的报文中获得设定类型的报文;

报文解析模块,用于针对获得的所述设定类型的报文,解析得到该报文对应的虚拟机的网络之间互连的协议ip地址和媒体访问控制mac地址;

信息存储模块,用于将解析得到的ip地址和mac地址关联存储至所述虚拟交换机所在硬件设备的文件系统中。

可选地,所述虚拟机信息获取装置还包括:

信息加载模块,用于在所述虚拟交换机启动之后的初始化过程中,将存储在所述文件系统中的ip地址和mac地址加载至所述虚拟交换机所在硬件设备的内存中;

报文处理模块,用于当所述虚拟交换机接收到报文时,判断所述报文是否满足预设条件,若所述报文满足所述预设条件,则从所述报文中解析得到对应的虚拟机的ip地址和mac地址,判断所述内存中是否已将该ip地址和mac地址进行关联存储,若所述内存中未将所述ip地址和mac地址进行关联存储,则将所述ip地址和mac地址关联存储至所述内存中。

可选地,所述报文处理模块用于,以存储在所述文件系统中的mac地址为键,以该mac地址对应的ip地址为值,将所述文件系统中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中;

所述报文处理模块用于通过以下步骤判断所述内存中是否已将该ip地址和mac地址进行关联存储:

查询所述内存中的哈希表是否存储有该mac地址;

若存储有该mac地址,则判断所述哈希表中存储的与该mac地址关联的ip地址是否与所述报文中的ip地址一致,若不一致,则将所述哈希表中存储的与该mac地址关联的ip地址更新为所述报文中的ip地址;

若所述哈希表中未存储有该mac地址,则以该mac地址为键,以该mac地址对应的ip地址为值,将所述报文中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中。

可选地,所述虚拟机信息获取装置还包括:

信息处理模块,用于接收信息添加请求,从所述信息添加请求中解析得到所需添加的ip地址和mac地址;

信息存储模块,用于判断所述内存中是否已将该ip地址和mac地址进行关联存储,若所述内存中未将所述ip地址和mac地址进行关联存储,则将所述ip地址和mac地址关联存储至所述内存中。

第三方面,本公开还提供一种服务器,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时使得所述服务器中的虚拟交换机实现上述的虚拟机信息获取方法。

第四方面,本公开提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在服务器中的虚拟交换机执行上述的虚拟机信息获取方法。

本公开提供的虚拟机信息获取方法及装置,对虚拟交换机进行了巧妙设计,直接通过虚拟交换机对接收到的报文进行处理,即可得到虚拟机的ip地址和mac地址,将获取的虚拟机的ip地址和mac地址存储在虚拟交换机所在硬件设备的文件系统中,使得虚拟机的ip地址和mac地址能够从文件系统中被便捷地获取。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本公开提供的一种服务器的方框示意图。

图2为本公开提供的一种虚拟机信息获取方法的流程示意图。

图3为本公开提供的一种虚拟机信息获取方法的另一流程示意图。

图4为本公开提供的图3中步骤s24的一种流程示意图。

图5为本公开提供的一种虚拟机信息获取方法的另一流程示意图。

图6为本公开提供的一种虚拟机信息获取装置的方框示意图。

图标:10-服务器;11-存储器;12-处理器;13-网络模块;20-虚拟机信息获取装置;21-报文获得模块;22-报文解析模块;23-信息存储模块;24-信息加载模块;25-报文处理模块;26-信息处理模块。

具体实施方式

为了对虚拟网络进行管理,如进行网络限速管理、应用访问控制列表(accesscontrollist,acl)策略与防火墙策略管理等,虚机交换机需要获取所连接的虚拟机的ip地址等信息。经研究发现,libvirt主要通过数据包捕获函数库(packetcapturelibray,libpcap)抓取数据包,对抓取的数据包进行过滤,得到所需的报文类型,进而得到与虚拟机的媒体访问控制(mediaaccesscontrol或者mediumaccesscontrol,mac)地址对应的虚拟机的网络之间互连的协议(internetprotocoladdress,ip)地址。

其中,libvirt是用于管理虚拟化平台的开源的api(applicationprogramminginterface,应用程序编程接口),后台程序和管理工具。它可以用于管理kvm、xen、vmwareesx,qemu和其他虚拟化技术。通过数据包捕获函数库抓取数据包需要从抓取的数据包中过滤出的报文类型主要包括以下几种:arprequest、arpreplymessages、dhcpoffer和ipv4packet。可以通过判断detect(发现)方式来区分数据包的类型。例如,如果数据包为detectdhcp(dynamichostconfigurationprotocol,动态主机配置协议),则通过dhcpoffer报文来获取虚拟机的ip地址。如果为detectstatic,则通过arp(addressresolutionprotocol,地址解析协议)报文和ip报文来获取虚拟机的ip地址。

虽然基于libvirt可以得到虚拟机的ip地址。然而,基于libvirt获取虚拟机的ip地址需要依赖于libpcap的安装,所支持获取虚拟机的ip地址类型较为有限,主要支持ipv4类型的ip地址获取。libvirt的ip地址获取功能位于libvirt的nwfilter模块,nwfilter的功能包括acl策略,如drop(丢弃)或pass(通过)发往或来自某个ip地址段的报文。在libvirt层获取的虚拟机的ip地址会提供给nwfilter,虚拟机的ip地址提供给nwfilter后,nwfilter并没有考虑将虚拟机的ip地址提供给其他模块,没有提供将虚拟机的ip地址存储在文件系统等功能来方便其他模块获取该信息。因而其他模块,如虚拟交换机无法便捷地获取到该ip地址。

其中,nwfilter是libvirt管理的一个模块,负责下发acl、状态防火墙策略管理、限速等,从而管理虚拟机之间的网络。

基于上述研究,本公开提供了一种虚拟机信息获取方法及装置,不依赖于libpcap的安装,将获取虚拟机的ip地址的功能作为一种独立于nwfilter的服务集成于开源的虚拟交换机(openvirtualswitch,ovs),并将获取到的虚拟机的ip地址存储在虚拟交换机所在硬件设备的文件系统中,从而便于各功能模块能够便捷地获取该信息予以应用。由于虚拟交换机主要负责完成各个虚拟机之间的数据交换,其本身即会收发数据包,因而虚拟交换机无需依赖于libpcap。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

本公开中的虚拟信息获取方案可以应用于图1所示的服务器10。本公开中的服务器10可以为路由器、交换机等具有通信功能的硬件设备,服务器10中可以通过虚拟化技术虚拟出虚拟交换机和虚拟机,虚拟交换机与虚拟机连接以实现虚拟机之间的数据交互。例如,虚拟交换机上可以有多个虚拟网络接口(virtualnetworkedit口,vnet口),各vnet口分别绑定一ip地址,虚拟交换机通过vnet口的ip地址来转发数据流量。

如图1所示,服务器10可以包括:存储器11、处理器12、网络模块13及虚拟机信息获取装置20。

所述存储器11、处理器12以及网络模块13相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器11中存储有虚拟机信息获取装置20,所述虚拟机信息获取装置20包括至少一个可以软件或固件(firmware)的形式存储于所述存储器11中的软件功能模块,所述处理器12通过运行存储在存储器11内的软件程序以及模块,如本公开中的虚拟机信息获取装置20,从而使得服务器10中的虚拟交换机执行各种功能应用以及数据处理,即实现本公开中的虚拟机信息获取方法。

其中,所述存储器11可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器11用于存储程序,所述处理器12在接收到执行指令后,执行所述程序。

所述处理器12可能是一种集成电路芯片,具有数据的处理能力。上述的处理器12可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。可以实现或者执行本公开中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

网络模块13用于通过网络建立服务器10与其他通信设备之间的通信连接,实现网络信号及数据的收发操作。上述网络信号可包括无线信号或者有线信号。

可以理解,图1所示的结构仅为示意,服务器10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

在上述基础上,本公开还提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在服务器10中的虚拟交换机执行下述虚拟机信息获取方法。

请结合参阅图2,本公开提供一种虚拟机信息获取方法,应用于图1所示服务器10中虚拟出的虚拟交换机,虚拟交换机与虚拟机连接以实现虚拟机之间的数据交互。

方法可以包括以下步骤。

步骤s11,从所述虚拟交换机接收到的报文中获得设定类型的报文。

本公开中,在虚拟交换机中集成虚拟机的ip地址获取功能,例如,可以在虚拟交换机中新增虚拟机的ip地址学习模块。通过对虚拟机的ip地址获取功能的集成,虚拟交换机通过vnet口接收报文,从接收到的报文中获得设定类型的报文,进而执行后续虚拟机的ip地址获取操作。

其中,设定类型的报文包括携带有虚拟机的ipv4(网际协议版本4)、ipv6(网际协议版本6)和mac地址的报文。例如,设定类型的报文可以包括arprequest和互联网信息协议第六版(internetcontrolmanagemetprotocolversion6,icmpv6)。

本公开中,虚拟交换机可以针对接收到的每个报文,判断该报文是否为设定类型的报文,如是否为arprequest类型的报文或者icmpv6类型的报文,从而从接收到的报文中获得设定类型的报文。

步骤s12,针对获得的所述设定类型的报文,解析得到该报文对应的虚拟机的网络之间互连的协议ip地址和媒体访问控制mac地址。

对设定类型的报文进行解析,即可得到虚拟机的ip地址,如ipv4和ipv6,以及mac地址。

步骤s13,将解析得到的ip地址和mac地址关联存储至所述虚拟交换机所在硬件设备的文件系统中。

可选地,虚拟交换机所在硬件设备,如服务器10支持linux,相应地,ip地址和mac地址关联存储在虚拟交换机所在硬件设备的linux文件系统中。例如,可以基于linux文件系统,维护一个存放虚拟机的mac地址、ipv4和ipv6信息对的文件。

本公开中,虚拟交换机解析得到ip地址和mac地址之后,可以直接将ip地址和mac地址关联存储至虚拟交换机所在硬件设备的文件系统中。也可以先将ip地址和mac地址关联存储至虚拟交换机所在硬件设备的内存中,然后再按一定的时间间隔定时地将内存中的ip地址和mac地址同步至虚拟交换机所在硬件设备的文件系统。应当理解,也可以实时地将内存中的ip地址和mac地址同步至虚拟交换机所在硬件设备的文件系统。

其中,ip地址和mac地址可以采用多种方式关联存储在内存中,本公开对此不作限制。考虑到信息获取的便捷性,可选地,可以将解析得到的mac地址和ip地址以键值对的方式存储在虚拟交换机所在硬件设备的内存的哈希表中,进而将所述内存存储的哈希表同步到所述虚拟交换机所在硬件设备的文件系统。

基于该种虚拟机信息获取方法,将获取虚拟机的ip地址的功能作为一种独立于nwfilter的服务集成于开源的虚拟交换机,不依赖于libpcap的安装,而是通过虚拟交换机在vnet口接收的报文来获取虚拟机的ip地址,简化了虚拟机的ip地址获取流程。

将虚拟机的ip地址和mac地址关联存储在文件系统中,使得在需要应用虚拟机的ip地址时,直接从文件系统即可获得,实现较为便捷。

请结合参阅图3,在需要获取虚拟机的ip地址的场景中,例如,在虚拟交换机启动之后的初始化过程中,原本存储在内存中的ip地址等信息会被清除,为了实现对新增ip地址的可靠识别和获取,可以执行以下步骤。

步骤s21,将存储在所述文件系统中的ip地址和mac地址加载至所述虚拟交换机所在硬件设备的内存中。

ip地址和mac地址可以通过多种方式加载至内存中,只要能够在内存中进行关联存储即可。考虑到信息获取的便捷性,可选地,可以将文件系统中的mac地址和ip地址以键值对的方式存储在虚拟交换机所在硬件设备的内存的哈希表中。例如,以存储在所述文件系统中的mac地址为键,以该mac地址对应的ip地址为值,将所述文件系统中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中。

其中,mac地址对应的ip地址可能包括ipv4或ipv6,相应地,在存储时,以存储在所述文件系统中的mac地址为键,以该mac地址对应的ipv4或ipv6地址为值,将所述文件系统中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中。

步骤s22,当所述虚拟交换机接收到报文时,判断所述报文是否满足预设条件,若所述报文满足所述预设条件,则执行步骤s23至步骤s25。

其中,预设条件可以灵活设定,例如,为了准确识别出携带有虚拟机的ipv4、ipv6和mac地址的报文,预设条件可以为报文为设定类型的报文。其中,设定类型的报文可以包括arprequest和icmpv6。又例如,鉴于虚拟交换机已经传输过的相同报文,所携带的mac地址和ip地址与上一次传输过程中获取的mac地址和ip地址相同,为了避免虚拟交换机对这类报文进行多次重复操作,从而占用处理资源,预设条件可以包括报文为首次通过虚拟交换机进行转发的报文。

其中,虚拟交换机可以通过以下方式判断报文是否为首次通过虚拟交换机进行转发:当虚拟交换机的vnet口接收的报文时,将报文递交至datapath模块中的内核模块,由内核模块对数据进行转发,例如通过转发表进行转发。因而,在接收到报文时,内核模块将该报文的信息与转发表进行匹配,若没有匹配到,则判定报文为首次通过虚拟交换机进行转发,从而将报文上送至用户态,进而判断报文是否为设定类型的报文,在为设定类型的报文时,获取报文中的ip地址等信息并执行后续操作。

可选地,虚拟交换机可以通过以下方式判断所述报文是否满足预设条件:判断所述报文是否为首次通过所述虚拟交换机进行转发的报文,若所述报文为首次通过所述虚拟交换机进行转发的报文,则判断所述报文是否为所述设定类型的报文。当所述报文为首次通过所述虚拟交换机进行转发的报文,并且为所述设定类型的报文时,判定所述报文为满足预设条件的报文,进而执行后续步骤s23。相应地,若报文非首次通过所述虚拟交换机进行转发的报文,或者非设定类型的报文,则直接进行转发操作。

通过预设条件的设定,使得虚拟交换机只会从携带有虚拟机的ipv4、ipv6和mac地址,并且为首次通过虚拟交换机进行转发的报文中解析得到ip地址和mac地址,进而显著提高了信息获取的准确性,避免了处理资源的浪费。

步骤s23,从所述报文中解析得到对应的虚拟机的ip地址和mac地址。

步骤s24,判断所述内存中是否已将该ip地址和mac地址进行关联存储。若所述内存中未将所述ip地址和mac地址进行关联存储,则执行步骤s25。若内存中已将该ip地址和mac地址进行关联存储,则无需再执行存储操作。

步骤s25,将所述ip地址和mac地址关联存储至所述内存中。

请结合参阅图4,在文件系统中的mac地址和ip地址以键值对的方式存储在内存的哈希表中的情况下,可以通过以下方式判断所述内存中是否已将该ip地址和mac地址进行关联存储。

步骤s241,查询所述内存中的哈希表是否存储有该mac地址。若存储有该mac地址,则执行步骤s242和步骤s243。若所述哈希表中未存储有该mac地址,则执行步骤s244。

步骤s242,判断所述哈希表中存储的与该mac地址关联的ip地址是否与所述报文中的ip地址一致,若不一致,则说明与mac地址关联的ip地址发生变化,需要对存储的内容进行更新,从而执行步骤s243。若一致,则说明与mac地址关联的ip地址未发生变化,无需对存储的内容进行更新。

步骤s243,将所述哈希表中存储的与该mac地址关联的ip地址更新为所述报文中的ip地址。进而将更新的信息定时或实时地同步至文件系统。

步骤s244,以该mac地址为键,以该mac地址对应的ip地址为值,将所述报文中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中。进而将新增的信息定时或实时地同步至文件系统。

通过步骤s21至步骤s25,虚拟交换机启动之后的初始化过程中,将存储在所述文件系统中的ip地址和mac地址加载至所述虚拟交换机所在硬件设备的内存中,通过判断从接收到的、满足预设条件的报文中解析得到的虚拟机的ip地址和mac地址是否已存储在内存中,从而查找出更新后的以及新增的ip地址和mac地址对。将更新后的以及新增的ip地址和mac地址对存储至所述内存中,进而同步至文件系统,从而完成对ip地址和mac地址对的更新和新增。以此类推,通过对文件系统中ip地址和mac地址对的不断更新和新增,实现了对虚拟机的ip地址和mac地址全面、可靠地存储。进而使得其他功能模块从文件系统中即可便捷、全面地获取虚拟机的ip地址和mac地址信息。

其中,为了提高同步效率,可以将内存中更新后的以及新增的ip地址和mac地址对进行标识,通过标识判断相应的ip地址和mac地址对是否需要同步至文件系统。例如,可以将内存中更新后的以及新增的ip地址和mac地址对标识为true,进而将具有标识true的ip地址和mac地址对同步至文件系统。

为了提高本公开的适用性,在虚拟交换机通过vnet口接收报文,进而获取虚拟机的ip地址的基础上,还可以对虚拟交换机进行配置,以使虚拟交换机能够支持用户手动增加或者更新mac地址和ip地址对。

请结合参阅图5,虚拟机信息获取方法还可以包括以下步骤。

步骤s31,接收信息添加请求,从所述信息添加请求中解析得到所需添加的ip地址和mac地址。

其中,信息添加请求可以为用户手动增加或者更新mac地址和ip地址对的相关命令,相应地,虚拟交换机接收到该命令后,会解析得到所需添加的ip地址和mac地址,并执行后续步骤s32和步骤s33。

步骤s32,判断所述内存中是否已将该ip地址和mac地址进行关联存储。若所述内存中未将所述ip地址和mac地址进行关联存储,则执行步骤s33。若内存中已将该ip地址和mac地址进行关联存储,则无需再执行存储操作。

步骤s33,将所述ip地址和mac地址关联存储至所述内存中。

为了防止内存中存储的ip地址和mac地址过多,可选地,本公开还设定有老化条件。相应地,虚拟机信息获取方法还包括:判断所述内存中存储的各ip地址和mac地址是否达到老化条件,若存在ip地址和mac地址达到所述老化条件,则删除该ip地址和mac地址。

其中,老化条件可以灵活设定。例如,可以基于最近最少使用(leastrecentlyused,lru)算法,将内存中预设比例最少使用的ip地址和mac地址删除。又例如,可以在内存中存储的ip地址和mac地址达到设定量之后,将存储时间最久的预设比例的ip地址和mac地址删除。从而确保内存空间足够。

请参阅图6,本公开还提供一种虚拟机信息获取装置20,应用于虚拟交换机,所述虚拟交换机与虚拟机连接以实现虚拟机之间的数据交互,所述虚拟机信息获取装置20包括报文获得模块21、报文解析模块22和信息存储模块23。

其中,报文获得模块21用于从所述虚拟交换机接收到的报文中获得设定类型的报文。

关于报文获得模块21的实现方式可以参阅图2中步骤s11的相关描述,在此不作赘述。

报文解析模块22用于针对获得的所述设定类型的报文,解析得到该报文对应的虚拟机的网络之间互连的协议ip地址和媒体访问控制mac地址。

关于报文解析模块22的实现方式可以参阅图2中步骤s12的相关描述,在此不作赘述。

信息存储模块23用于将解析得到的ip地址和mac地址关联存储至所述虚拟交换机所在硬件设备的文件系统中。

关于信息存储模块23的实现方式可以参阅图2中步骤s13的相关描述,在此不作赘述。

可选地,所述信息存储模块23用于将解析得到的mac地址和ip地址以键值对的方式存储在所述虚拟交换机所在硬件设备的内存的哈希表中,将所述内存存储的哈希表同步到所述虚拟交换机所在硬件设备的文件系统。

可选地,所述虚拟机信息获取装置20还包括信息加载模块24和报文处理模块25。

其中,信息加载模块24用于在所述虚拟交换机启动之后的初始化过程中,将存储在所述文件系统中的ip地址和mac地址加载至所述虚拟交换机所在硬件设备的内存中。

报文处理模块25用于当所述虚拟交换机接收到报文时,判断所述报文是否满足预设条件,若所述报文满足所述预设条件,则从所述报文中解析得到对应的虚拟机的ip地址和mac地址,判断所述内存中是否已将该ip地址和mac地址进行关联存储,若所述内存中未将所述ip地址和mac地址进行关联存储,则将所述ip地址和mac地址关联存储至所述内存中。

可选地,所述报文处理模块25用于以存储在所述文件系统中的mac地址为键,以该mac地址对应的ip地址为值,将所述文件系统中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中。

所述报文处理模块25用于通过以下步骤判断所述内存中是否已将该ip地址和mac地址进行关联存储:查询所述内存中的哈希表是否存储有该mac地址。若存储有该mac地址,则判断所述哈希表中存储的与该mac地址关联的ip地址是否与所述报文中的ip地址一致,若不一致,则将所述哈希表中存储的与该mac地址关联的ip地址更新为所述报文中的ip地址。若所述哈希表中未存储有该mac地址,则以该mac地址为键,以该mac地址对应的ip地址为值,将所述报文中的ip地址和mac地址存储在所述虚拟交换机所在硬件设备的内存的哈希表中。

可选地,所述虚拟机信息获取装置20还包括信息处理模块26。

信息处理模块26用于接收信息添加请求,从所述信息添加请求中解析得到所需添加的ip地址和mac地址,判断所述内存中是否已将该ip地址和mac地址进行关联存储,若所述内存中未将所述ip地址和mac地址进行关联存储,则将所述ip地址和mac地址关联存储至所述内存中。

本公开中,关于虚拟机信息获取装置20的实现原理可以参阅前述方法实施例,在此不作赘述。

本公开中的虚拟机信息获取方法及装置,简化了虚拟机的ip地址获取,不依赖于libpcap的安装。可以确保相同报文只会进行一次虚拟机的ip地址获取,节省了处理资源,提高了效率。通过文件系统保存虚拟机的ip地址和mac地址,使得其他功能模块能够通过访问该文件系统便捷地获取虚拟机的ip地址等信息,实现较为便捷。

在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读服务器的硬件资源(rom,read-onlymemory)、随机存取服务器的硬件资源(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本公开的可选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1