一种确定虚拟机迁移的方法和装置与流程

    专利2022-07-08  68


    本申请是申请号为201610777000.1,申请日为2016年08月30日提交中国国家知识产权局的中国专利申请的分案申请。本申请涉及通信
    技术领域
    ,尤其涉及一种确定虚拟机(英文:virtualmachine,vm)迁移的方法及其装置。
    背景技术
    :在云计算的多租户环境中,每个租户都需要分配一个能够与其它逻辑网络进行很好隔离的逻辑网络,逻辑网络的隔离可以通过虚拟可扩展局域网(英文:virtualextensiblelocalareanetwork,vxlan)技术来实现。vxlan网络通过24bit的vxlan网络标识(vxlannetworkidentifier,vni)来标识。一般情况下,vxlan会在数据中心(英文:datacenter,dc)网络中部署,vxlan隧道端点(英文:vxlantunnelendpoint,vtep)负责vxlan报文的封装和解封装。vtep之间通过vxlan隧道通信。随着dc的服务器虚拟化技术的大量使用,dc中经常会进行虚拟机(英文:virtualmachine,vm)迁移。现有技术中,当虚拟机从第一vtep迁移到第二vtep下时,vm向所述第二vtep发送免费地址解析协议(英文:addressresolutionprotocol,arp)报文。第二vtep通过免费arp学习所述vm的主机路由,并将学习到的所述vm的主机路由与之前从第一vtep获取的以太网虚拟私有网络(英文:ethernetvirtualprivatenetwork,evpn)集成路由和桥接(英文:integratedroutingandbridging,irb)路由比较,以确定所述vm是否发生迁移。由上可知,现有技术中,依赖于vm发送免费arp报文来感知虚拟机发生迁移,但是目前,很多厂商的vm迁移后不会发送免费arp报文,而是发送比如反向地址解析协议(英文:reverseaddressresolutionprotocol,rarp)报文。rarp报文只携带所述虚拟机的媒体接入控制(英文:mediaaccesscontrol,mac)地址,现有技术中,迁入的vtep无法根据rarp报文确认虚拟机发生迁移。进一步的,现有技术中,虚拟机迁出的vtep也无法快速感知到接入的虚拟机迁出,从而导致网络无法及时的进行路由收敛。技术实现要素:本申请实施例提供了一种确定虚拟机迁移的方法、装置和系统,使得vm迁移后,迁入设备不必受限于虚拟机发送免费arp报文来感知vm迁入,有效提高了对虚拟机配置的兼容性。进一步的,迁出设备能够快速,准确的感知到虚拟机发生迁移。第一方面,本申请实施例提供了一种确定虚拟机vm迁移的方法。首先,第一vtep设备从第一接口获取该vm的mac地址。其中,该第一接口与接入电路ac连接,该第一接口例如可以是vtep的eth1接口。该第一vtep设备以该mac地址为关键字,查找该第一vtep设备保存的arp缓存cache表。根据查表的结果,确定该arpcache表中记录该vm接入第二vtep设备。该第一vtep设备根据该arpcache表获取该vm的互联网协议(英文:internetprotocol,ip)地址,并以该ip地址为目的ip地址构造arp单播请求报文。将该arp单播请求报文发送到上述的第一接口。如果该第一vtep设备从该第一接口接收到所述vm发送的针对该arp单播请求报文的arp响应报文,则确定所述vm发生迁移。即vm由其他的vtep设备迁移至第一vtep设备。由此可见,根据本申请实施例提供的方法,当vm发生迁移后,vm的迁入设备仅需获取vm的mac地址,即可通过查找arpcache表获取该vm的ip地址,进一步通过arp学习,来确定vm是否发生迁移。使得vm迁移后,迁入设备不必受限于虚拟机发送免费arp报文来感知vm迁入,有效提高了对虚拟机配置的兼容性。结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:所述第一vtep设备根据所述arp单播请求报文或所述arp响应报文,生成所述vm的主机路由,并将所述vm的主机路由同步给其它vtep设备。通过在vtep设备间同步各自接入的虚拟机的主机路由,从而各vtep设备获取所有对端vtep设备接入虚拟机的主机路由,能够加快网络路由收敛的速度。结合第一方面以及上述可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一vtep设备确定所述vm发生迁移后,所述第一vtep设备根据所述vm迁移后接入的vtep的ip地址更新与所述vm对应的arpcache表项信息,并将所述arpcache表项信息同步给其它vtep设备。通过在vtep设备间同步arpcache表信息,从而各vtep设备获取所有对端vtep设备保存的arpcache表信息,进而获取所有对端vtep设备保存的接入虚拟机的路由信息,在虚拟机发生迁移时,通过查找arpcache表,能够快速,准确的感知虚拟机的迁移。结合第一方面以及上述可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一vtep设备根据所述第一接口接收到的所述vm发送的反向地址解析协议rarp报文或免费arp报文,获取所述vm的mac地址。第二方面,本申请实施例提供了一种确定虚拟机vm迁移的方法。首先,第二vtep设备接收第一vtep设备发送的与所述vm对应的arpcache表项信息。根据接收到的该arpcache表项信息,该第二vtep设备确定该arpcache表项信息记录该vm接入该第一vtep设备。该第二vtep设备确定第二vtep设备保存的arpcache表中记录所述vm为接入该第二vtep设备的本地主机。即第二vtep设备接收到第一vtep设备发送的arpcache表项信息中记录该vm接入该第一vtep设备,然而第二vtep设备自身保存的表中的记录为:该vm是接入自身的本地设备。由此,第二设备获取所述vm的ip地址,可以通过自身保存的arpcache表获取该ip地址,也可以通过第一vtep设备发送的arpcache表项信息获取该ip地址。第二设备获取所述vm的ip地址以后,以该ip地址为目的ip地址,构造并发送arp单播请求报文。如果所述第二vtep设备在预定时间内未接收到所述vm发送的、针对该arp单播请求报文的arp响应报文,则该第二vtep设备该vm发生迁移,即由第二vtep设备迁出。通过本实施例提供的方法,vtep设备在接收到所有对端设备发送的arpcache表项信息后,触发vteip设备确定虚拟机是否发生迁移,从而能够快速,准确的感知虚拟机迁移。结合第二方面,在第二方面第一种可能的实现方式中,在所述第二vtep设备确定所述vm发生迁移后,所述第二vtep设备在所述第二vtep设备自身保存的arp表中删除与所述vm对应的arp表项。当第二vtep设备在预定时间内,未接收到所述第二arp响应报文,则在该第二vtep设备自身保存的arp表中删除与所述第一vm对应的arp表项,而不必等到所述arp表项老化时间到达后再进行老化。由此节省所述arp表项信息对所述arp表资源的占用。结合第二方面以及上述可能的实现方式,在第二方面第二种可能的实现方式中,在所述第二vtep设备确定所述vm发生迁移后,所述第二vtep设备撤销指向所述第二vtep设备的所述vm的主机路由,并向其他vtep设备发送控制信息。所述控制信息用于指示所述其他vtep设备撤销指向所述第二vtep设备的所述vm的的主机路由。由此,当vtep设备确认接入自身的主机设备发生迁移时,通过撤销迁出的虚拟机的主机路由,同时发送撤销该迁出的虚拟机的主机路由至其他vtep设备,从而加快路由收敛的速度。结合第二方面以及上述可能的实现方式,在在第二方面第三种可能的实现方式中,在所述第二vtep设备确定所述vm发生迁移后,所述第二vtep设备利用所述第一vtep设备发送的所述arpcache表项信息更新所述第二vtep设备保存的arpcache表中与所述vm对应的arpcache表项。vtep设备根据获取到对端vtep设备发送的同步arpcache表信息后,更新自身保存的arpcache表信息,并且实时更新所有对端vtep设备保存的接入虚拟机的主机路由,在虚拟机发生迁移时,通过查找arpcache表,能够快速,准确的感知虚拟机的迁移,加速路由的收敛。第三方面,本申请实施例提供了一种确定虚拟机迁移的装置,用于执行第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的模块。第四方面,本申请实施例提供了一种确定虚拟机迁移的装置,用于执行第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的模块。第五方面,本申请实施例提供了一种通信系统,包括第三方面提供的装置和第四方面提供的装置。第六方面,本申请实施例提供了一种确定虚拟机迁移的装置,所述装置包括:输入接口、输出接口、处理器和存储器。其中,输入接口、输出接口、处理器以及所述存储器之间可以通过总线系统相连。该存储器用于存储程序、指令或代码,所述处理器用于执行所述存储器中的程序、指令或代码,完成第一方面或第一方面的任意可能的实现方式中的方法。第七方面,本申请实施例提供了一种确定虚拟机迁移的装置,所述装置包括:输入接口、输出接口、处理器和存储器。其中,输入接口、输出接口、处理器以及所述存储器之间可以通过总线系统相连。该存储器用于存储程序、指令或代码,所述处理器用于执行所述存储器中的程序、指令或代码,完成第二方面或第二方面的任意可能的实现方式中的方法。第八方面,本申请实施例提供了一种通信系统,包括第六方面提供的装置和第七方面提供的装置。第九方面,本申请提实施例供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行第一方面、第二方面、第一方面任意可能的实现方式或第二方面任意可能的实现方式中的方法的指令。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例涉及一种应用场景示意图;图2为本申请实施例所涉及的一种确定虚拟机迁移的方法流程图;图3为本发明实施例所涉及的另一种确定虚拟机迁移的方法流程图图4为本申请实施例提供的一种确定虚拟机迁移的装置的结构示意图;图5为本申请实施例提供的另一种确定虚拟机迁移的装置的结构示意图;图6为本申请实施例提供的一种确定虚拟机迁移的装置的硬件结构示意图;图7为本申请实施例提供的另一种确定虚拟机迁移的装置的硬件结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本申请保护的范围。本申请实施例描述的应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对本申请实施例提供的技术方案的限定。本领域普通技术人可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适应。除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序。下面结合图1对本申请实施例的应用场景进行示例性的说明。图1示例性的示出了本申请实施例应用的vxlan网络100.该网络100包括核心层设备spine1和spine2,以及接入层设备leaf1、leaf2和leaf3;其中,核心层设备spine1和spine2不感知vxlan网络业务,仅用于转发互联网协议ip报文。接入层设备leaf1、leaf2和leaf3为vxlan网络100的边缘节点,用于接入用户的虚拟机。由图1可知,vm1和vm2通过leaf1接入vxlan网络100,vm3通过leaf3接入vxlan网络100。leaf1、leaf2和leaf3作为vxlan网络的vtep。在leaf1、leaf2和leaf3上分别部署vxlan三层网关。三个vxlan三层网关两两之间建立vxlan隧道,并通过边界网关协议(英文:bordergatewayprotocol,bgp)发布通过自身接入vxlan网络100的vm的主机路由给其它bgp邻居,从而实现跨leaf节点的vm之间的相互通信。可选的,三个vxlan三层网关都部署中间系统到中间系统(英文:intermediatesystemtointermediatesystem,isis)协议,通过链路状态协议数据模块(linkstateprotocoldataunit,lsp)报文携带接入经由自身接入vxlan网络100的vm的主机路由给其它vxlan三层网关设备,从而实现跨leaf节点的vm之间的相互通信图1中,vm1的ip地址为ip_1,媒体接入控制(英文:mediaaccesscontrol,mac)地址为mac_1;vm2的ip地址为ip_2,mac地址为mac_2;vm3的ip地址为ip_3,mac地址为mac_3。leaf1用于接入主机设备的vtep的ip地址为vtep_1。leaft2的用于接入主机设备的vtep的ip地址为vtep_2。leaf3的用于接入主机设备的vtep的ip地址为vtep_3。所述主机设备可以是vm,可以是服务器,也可以是一台个人计算机(英文:personalcomputer,pc)等有自身的ip地址和mac地址的设备。图2示例性的示出了本申请实施例提供的一种确定虚拟机vm迁移的方法200。该方法200可以应用于如图1所示的vxlan网络100,但本申请实施例不限于此。s201、第一vtep设备从该第一vtep设备的第一接口获取第一vm的第一mac地址。所述第一vtep设备,可以用于将所述第一vm接入vxlan网络。示例地,所述第一vtep设备,可以为图1所示的leaf3。所述第一vm可以为图1所示的vm1。该第一接口与接入线路(英文:attachmentcircuit,ac)连接。例如,该第一接口可以为leaf3的eth1接口。本申请实施例对此不作具体限定。在一个具体的实施方式中,所述第一vtep设备接收所述第一vm发送的免费arp报文,所述免费arp报文中携带有所述第一vm的第一mac地址。所述第一vtep设备从所述免费arp报文获取所述第一mac地址。具体地,当vm1由leaf1迁移到leaf3后,vm1发送免费arp报文,该免费arp报文包括vm1的mac地址。leaf3从eth1接口接收到vm1发送的免费arp报文,获取所述vm1的mac地址。在另一个具体的实施方式中,所述第一vtep设备接收所述第一vm发送的rarp报文,所述rarp报文中携带有所述第一vm的第一mac地址。所述第一vtep设备从所述rarp报文获取所述第一mac地址。具体地,当vm1从leaf1迁移到leaf3后,vm1发送rarp报文,leaf3从eth1接口接收到vm1发送的rarp报文,获取所述vm1的mac地址。s202、第一vtep设备确定该第一vtep设备保存的arpcache表记录所述vm接入第二vtep设备。具体的,所述第一vtep设备根据所述第一mac地址,在自身保存的地址解析协议缓存arpcache表中,以所述第一mac地址为关键字,进行arpcache表查找,确定自身保存的arpcache表记录所述vm接入第二vtep设备。所述第二vtep设备具体可以是图1所示的leaf1。所述arpcache表包括:接入vtep设备的主机设备的ip地址、该主机设备的mac地址、该主机设备所属的vxlan网络标识(英文:vxlannetworkidentifier,vni)以及该主机设备接入的vtep的ip地址。vtep设备通过bgp协议,将自身生成并保存的arpcache表的表项信息同步给其它vtep设备。在vtep设备上,通过查询arpcache表,可以知道其它主机分布在哪个vtep上以及该主机的ip地址,mac地址等信息。所述arpcache表的基本格式,可以如表1所示:ipmacvnivtepip_1mac_11000vtep_1ip_2mac_21000vtep_1ip_3mac_31000vtep_3表1其中,“ip”字段表示vtep上接入的主机设备的ip地址;“mac”字段表示所述主机设备的mac地址;“vni”字段表示所述主机设备所属的vxlan网络标识;“vtep”字段表示所述主机设备接入的vtep的ip地址。下面结合图1对表1做进一步说明:表1具体为leaf3上保存的arpcache表。其中,表1中包含了vm1-vm3的ip地址、mac地址、vni以及接入的vtep的ip地址。leaf3可以根据vm1、vm2和vm3接入的所述vtep的ip地址,确定所述vm3为接入自身的本地主机,而vm1和vm2为接入其它vtep设备的远端主机。所述arpcache表的基本格式,也可以如表2所示:ipmacvnivtepflagip_1mac_11000vtep_1remoteip_2mac_21000vtep_1remoteip_3mac_31000vtep_3local表2表2和表1共同的字段说明参见对于表1的说明,此处不再赘述。表2与表1的区别在于所述arpcache表中还包括“flag”字段。在表2中,所述“flag”表示标识信息,用于标识主机设备相对于本地vtep设备是本地主机还是远端主机,其中“remote”用于标识主机设备相对于本地vtep设备是远端主机,“local”用于标识主机设备相对于本地vtep设备是本地主机。结合图1对表2进行说明:表2具体为leaf3上保存的arpcache表。leaf3节点通过查找该arpcache表确定vm3对应的arpcache表项中,“flag”显示为“local”,而vm1和vm2对应的arpcache表项中,“flag”显示为“remote”,由此确定vm3为接入leaf3自身的本地主机,而vm1和vm2则为远端主机。当vm1由leaf1迁移至leaf3以后,leaf3从所述eth1接口接收到vm1发送的免费arp报文或rarp报文,获取所述vm1的mac地址。leaf3以所述vm1的mac地址为关键字,在leaf3保存的arpcache表中进行查找,根据所述arpcache表中记录的vm1接入的“vtep”或“flag”,可以确定该arpcache表中记录vm1接入其它的vtep设备,即非本地主机设备。本领域技术人员可以理解,表1和表2仅用于对arpcache表的形式进行示例性的说明,本申请实施例对此不作具体限定。下文中,本申请实施例中各vtep设备保存的arpcache表均以表2的形式为例进行说明。s203、所述第一vtep设备获取所述第一vm的第一ip地址。具体的,s202后,leaf3以所述第一mac地址为关键字,查找leaf3本地保存的arpcache表,命中保存有所述第一mac地址的arpcache表项,进而从命中的所述arpcache表项中获取所述第一ip地址。s204、所述第一vtep设备以所述第一ip地址为目的ip地址,生成并发送第一arp单播请求报文。当第一vtep设备从所述第一接口接收到所述第一vm发送的免费arp报文或rarp报文,获得所述第一mac地址。但是通过查找第一vtep设备保存的arpcache表发现在arpcache表中记录所述第一vm为接入其它vtep设备的远端主机。由此,第一设备通过查表获取所述第一ip地址,生成并发送第一arp单播请求报文。将该第一arp淡泊请求报文发送至所述第一接口,以探测是否能够收到第一vm发送的arp响应报文,以此来确定所述第一vm是否已经迁入。具体地,在s201中,leaf3确定所述vm1从eth1接口接入,但是通过查找arpcache表发现在arpcache表中记录所述vm1为接入vtep_1的远端主机。因此,leaf3在获取所述vm1的ip地址以后,以所述vm1的ip地址为目的ip地址生成arp单播请求报文,并将该arp单播请求报文发送到eth1接口上,探测是否能够收到vm1回应的arp响应报文。以此确认所述vm1是否发生迁移,即是否是接入自身的本地设备。s205、所述第一vtep设备收到所述第一vm发送的第一arp响应报文。具体的,leaf3发送所述arp单播请求报文,在指定时间内收到所述vm1发送的针对所述第一arp单播请求报文的第一arp响应报文,则表示所述vm1迁入。s206、所述第一vtep设备确定所述第一vm发生迁移。由此可见,根据本申请实施例提供的方法,当vm发生迁移后,vm的迁入设备仅需获取vm的mac地址,即可通过查找arpcache表获取该vm的ip地址,进一步通过arp学习,来确定vm是否发生迁移。使得vm迁移后,迁入设备不必受限于虚拟机发送免费arp报文来感知vm迁入,有效提高了对虚拟机配置的兼容性。可选的,所述方法200还可以包括s207:第一vtep设备根据所述arp单播请求报文或所述arp响应报文,生成所述第一vm的主机路由,并将所述主机路由同步给其它vtep设备。所述第一vtep设备通过发送所述第一arp单播请求报文或者通过接收到的所述vm发送的所述第一arp响应报文,生成所述第一vm的主机路由。在一个具体的实施方式中,所述第一vtep设备从所述第一接口发送所述第一arp单播请求报文或从所述第一接口接收到所述arp响应报文,第一vtep设备将学习到的arp表项转化为一条指向所述第一vm的主机路由,并通过路由协议将该第一vm的主机路由发布给其它的vtep设备。具体的,所述第一vtep设备通过所述第一arp单播请求报文或所述arp响应报文,获取所述第一vm的ip地址以及对应的物理接口,由此生成包含所述物理接口信息的路由表项,即所述第一vm的主机路由。当网络中设备想要访问该第一vm时,会根据最长匹配查找到该第一vm的主机路由,将流量发送到该第一vtep设备。所述第一vtep设备将所述主机路由同步给其它的vtep设备。可选的,所述第一vtep设备可以通过bgp报文发布所述主机路由。可选的,所述第一vtep设备也可以通过lsp报文发布所述主机路由。其他的vtep设备接收到该第一vtep设备发送的bgp报文或lsp报文时,将报文中携带的第一vm的主机路由在本地存储,并标识是由该第一vtep设备同步的主机路由。通过在vtep设备间同步各自接入的虚拟机的主机路由,从而各vtep设备获取所有对端vtep设备接入虚拟机的主机路由,能够加快网络路由收敛的速度。可选的,在s206以后,所述方法200还可以包括s208:所述第一vtep设备更新所述arpcache表,得到更新后的与所述第一vm对应的arpcache表项信息,并将所述更新后的与所述第一vm对应的arpcache表项信息同步给其它vtep设备。在一个具体的实施方式中,结合图1:leaf3确定所述vm1为本地主机后,更新本地保存的所述arpcache表,将与vm1的对应的arpcache表项信息进行更新,得到更新后的与所述vm对应的arpcache表项信息,并将所述更新后的与所述vm对应的arpcache表项信息同步给其它vtep设备。vm1迁入之前,leaf3上本地保存的arpcache表为表2时,确定vm1迁入后,leaf3将所述arpcache表更新,如表3所示:表3通过在vtep设备间同步arpcache表信息,从而各vtep设备获取所有对端vtep设备保存的arpcache表信息,进而获取所有对端vtep设备保存的接入虚拟机的路由信息,在虚拟机发生迁移时,通过查找arpcache表,能够快速,准确的感知虚拟机的迁移。本申请实施例对于s206-s208的执行顺序不作限定。例如:s206可以先于s207执行,也可以后于s207执行。同理,对于s207和s208的顺序也不作具体限定。图3示例性的示出了本申请实施例提供的一种确定虚拟机vm迁移的方法300。该方法300可以应用于如图1所示的vxlan网络100,但本申请实施例不限于此。s301、第二vtep设备接收第一vtep设备发送的与所述第一vm对应的arpcache表项信息。所述第二vtep设备,可以用于接入虚拟机vm。在一个具体的实施方式中,所述第二vtep设备,可以为图1所示的leaf1。所述第一vm为图1所示的vm1。所述第一vtep设备为图1所示的leaf3。vm1从leaf1迁移到leaf3后,leaf3感知到vm1的迁移以后,更新本地保存的arpcache表,得到更新后的与所述第一vm对应的arpcache表项信息,并将所述更新后的与所述第一vm对应的arpcache表项信息同步给其它vtep设备,例如,图1所示的leaf1和leaf2。arpcache表的相关说明参见方法200中的描述,此处不再赘述。s302、第二vtep设备确定所述arpcache表项信息中记录所述第一vm接入所述第一vtep设备。第二vtep设备从所述arpcache表项信息中确定所述第一vm接入的vtep的ip地址,进而确定所述第一vm接入第一vtep。具体的,结合图1,leaf1从所述arpcache表项信息中确定所述vm1接入的vtep的ip地址为vtep_3,进而确定所述arpcache表项信息中记录所述vm1接入leaf3。s303、第二vtep设备确定该第二vtep设备保存的arpcache表中记录所述第一vm为本地主机。所述第二vtep设备从接收到的所述arpcache表项信息中确定所述第一vm为接入到所述第一vtep设备的主机后,根据接收到的所述arpcache表项信息获取所述第一vm的第一mac地址或者第一ip地址,以该第一mac地址或者第一ip地址为关键字,查找第二vtep设备保存的arpcache表,命中所述第一vm的arpcache表项信息,从该arpcache表项信息中,根据所述第一vm接入的vtep的ip地址或者“flag”标识信息,确定该第二vtep设备保存的arpcache表中记录所述第一vm为本地主机。s304、第二vtep设备获取所述第一vm的所述第一ip地址,并以所述第一ip地址为目的ip地址,生成并发送第二arp单播请求报文。可选的,所述第二vtep设备从接收到的所述第一vtep设备发送的所述第一vm的arpcache表项信息中获取所述第一ip地址。可选的,所述第二vtep设备也可以从该第二vtep设备保存的arpcache表中获取所述第一ip地址。所述第二vtep设备获取到所述第一ip地址以后,以该第一ip地址为目的ip地址,生成第二arp单播请求报文,并将该第二arp单播请求报文发送到对应的ac侧接口,以探测能否接收到所述第一vm回应的第二arp响应报文。s305、第二vtep设备在预定时间内未收到所述第一vm发送的所述第二arp响应报文,则确定所述第一vm发生迁移。在一个具体的实施方式中,由于所述一vm已经由该第二vtep设备迁移到该第一vtep设备下,所以预定时间内,该第二vtep设备无法收到所述第一vm回应的第二arp响应报文,则确定所述第一vm已经迁出。通过本实施例提供的方法,vtep设备在接收到所有对端设备发送的arpcache表项信息后,触发vteip设备确定虚拟机是否发生迁移,从而能够快速,准确的感知虚拟机迁移。可选的,s305之后,所述方法300还包括s306:所述第二vtep设备在该第二vtep设备自身保存的arp表中删除与所述第一vm对应的arp表项。当第二vtep设备在预定时间内,未接收到所述第二arp响应报文,则在该第二vtep设备自身保存的arp表中删除与所述第一vm对应的arp表项,而不必等到所述arp表项老化时间到达后再进行老化。由此节省所述arp表项信息对所述arp表资源的占用。可选的,s305之后,所述方法300还包括s307:所述第二vtep设备撤销指向所述第二vtep设备的所述第一vm的主机路由,并向其他vtep设备发送控制信息,所述控制信息用于指示所述其他vtep设备撤销指向所述第二vtep设备的所述第一vm的的主机路由。在一个具体的实施方式中,所述控制信息为bgp更新消息,第二vtep设备确定接入的vm1已经迁出时,可以通过向其它vtep设备发送该bgp报文,携带所述第一vm的主机地址,用于撤销所述vm的主机路由。在另一个具体的实施方式中,所述控制信息还可以是路径计算模块通信协议(英文:pathcomputationelementprotocol,pcep)消息,通过在pcep消息中定义新的路由对象以及新的消息类型,用于撤销所述第一vm的主机路由。所述新的路由对象携带所述第一vm的主机地址,所述新的消息类型用于指示该pcep消息是用于撤销所述第一vm的主机路由。应理解,上述列举的控制信息的类型仅为示例性说明,不应对本申请构成任何限定。本申请对于撤销所述第一vm的主机路由所使用的的具体协议不做限定。由此,当vtep设备确认接入自身的主机设备发生迁移时,通过撤销迁出的虚拟机的主机路由,同时发送撤销该迁出的虚拟机的主机路由至其他vtep设备,从而加快路由收敛的速度。可选的,s305之后,所述方法300还可以包括s308:所述第二vtep设备利用所述第一vtep设备发送的arpcache表项信息更新所述第二vtep设备保存的arpcache表中与所述第一vm对应的arpcache表项。在一个具体的实施方式中,结合图1:leaf1确定vm1迁出之后,更新本地保存的arpcache表。vm1迁出之前,leaf1上本地保存的arpcache表,如表4所示:ipmacvnivtepflagip_1mac_11000vtep_1localip_2mac_21000vtep_1localip_3mac_31000vtep_3remote表4当leaf1确定vm1迁移到leaf3之后,更新本地保存的arpcache表,如表5所示:ipmacvnivtepflagip_1mac_11000vtep_3remoteip_2mac_21000vtep_1localip_3mac_31000vtep_3remote表5vtep设备根据获取到对端vtep设备发送的同步arpcache表信息后,更新自身保存的arpcache表信息,并且实时更新所有对端vtep设备保存的接入虚拟机的主机路由,在虚拟机发生迁移时,通过查找arpcache表,能够快速,准确的感知虚拟机的迁移,加速路由的收敛。需要说明的是,s306-s308的执行顺序不分先后,本申请实施例对此不作限定。以上,结合图1至图3详细说明了根据本申请实施例提供的确定虚拟机迁移的方法。以下,结合图4-图7详细说明根据本申请实施例提供的用于确定虚拟机迁移的装置和系统。图4是根据本申请一实施例的确定虚拟机迁移的装置400的示意图。该装置400可以是图1中的leaf1至leaf3中任一个节点设备,可以用于执行图2所示的方法。如图4所示,该装置400包括:处理模块401,发送模块402和接收模块403。该处理模块401用于从所述第一vtep设备的接入电路ac侧的第一接口获取所述第一vm的第一媒体接入控制mac地址。该处理模块401还用于以所述第一mac地址为关键字,查找该第一vtep设备保存的地址解析协议缓存arpcache表,并确定所述arpcache表记录所述第一vm接入第二vtep设备。该处理模块,进一步用于根据所述arpcache表获取所述第一vm的第一ip地址,并以所述第一ip地址为目的ip地址,生成第一arp单播请求报文。该发送模块402,用于发送所述第一arp单播请求报文。该接收模块403,用于从所述第一接口接收所述第一vm发送的针对所述第一arp单播请求报文的第一arp响应报文。响应于接收到所述第一arp响应报文,所述处理模块401,还用于确定所述第一vm发生迁移。由此可见,当vm发生迁移后,vm的迁入设备仅需获取vm的mac地址,即可确定vm发生迁移。使得vm迁移后,迁入设备不必受限于虚拟机发送免费arp报文来感知vm迁入,有效提高了对虚拟机配置的兼容性。可选的,所述处理模块401,还用于根据所述第一arp单播请求报文或所述第一arp响应报文,生成所述第一vm的主机路由,并将所述第一vm的主机路由同步给其它vtep设备。通过在vtep设备间同步各自接入的虚拟机的主机路由,从而各vtep设备获取所有对端vtep设备接入虚拟机的主机路由,能够加快网络路由收敛的速度。可选的,所述处理模块401,还用于在确定所述第一vm发生迁移后,根据所述第一vm迁移后接入的vtep的ip地址更新与所述第一vm对应的arpcache表项信息,并将所述arpcache表项信息同步给其它vtep设备。通过在vtep设备间同步arpcache表信息,从而各vtep设备获取所有对端vtep设备保存的arpcache表信息,进而获取所有对端vtep设备保存的接入虚拟机的路由信息,在虚拟机发生迁移时,通过查找arpcache表,能够快速,准确的感知虚拟机的迁移。可选的,所述所述处理模块,用于根据所述第一接口接收到的所述第一vm发送的反向地址解析协议rarp报文或免费arp报文,获取所述第一vm的所述第一mac地址。根据本申请实施例的装置400中的各模块和上述其它操作和/或功能分别为了实现图2中方法200的相应流程,为了简洁,此处不再赘述。图5是根据本申请实施例的确定虚拟机迁移的装置500的示意图。该装置500可以用于执行图2所示的方法。如图5所示,该装置500包括:接收模块501,处理模块502以及发送模块503。所述接收模块501用于接收第一vtep设备发送的与所述第一vm对应的地址解析协议缓存arpcache表项信息。所述处理模块502用于确定所述arpcache表项信息记录所述第一vm接入所述第一vtep设备,并确定所述第二vtep设备保存的arpcache表中记录所述第一vm为接入所述第二vtep设备的本地主机。所述处理模块502还用于获取所述第一vm的第一ip地址,并以所述第一ip地址为目的ip地址,生成第二arp单播请求报文。所述发送模块503用于发送所述第二arp单播请求报文。所述处理模块502还用于当所述接收模块501在预定时间内未接收到所述第一vm发送的、针对所述第二arp单播请求报文的第二arp响应报文时,确定所述第一vm发生迁移。由此可见,vtep设备在接收到所有对端设备发送的arpcache表项信息后,触发vteip设备确定虚拟机是否发生迁移,从而能够快速,准确的感知虚拟机迁移。可选的,所述处理模块502,还用于在确定所述第一vm发生迁移后,在所述第二vtep设备保存的arp表中删除与所述第一vm对应的arp表项。由此可见,当第二vtep设备在预定时间内,未接收到所述第二arp响应报文,则在该第二vtep设备自身保存的arp表中删除与所述第一vm对应的arp表项,而不必等到所述arp表项老化时间到达后再进行老化。由此节省所述arp表项信息对所述arp表资源的占用。可选的,所述处理模块502,还用于在确定所述第一vm发生迁移后,撤销指向所述第二vtep设备的所述第一vm的主机路由,并向其他vtep设备发送控制信息,所述控制信息用于指示所述其他vtep设备撤销指向所述第二vtep设备的所述第一vm的的主机路由。所述发送模块503还用于向所述其它vtep设备发送所述控制信息。由此,当vtep设备确认接入自身的主机设备发生迁移时,通过撤销迁出的虚拟机的主机路由,同时发送撤销该迁出的虚拟机的主机路由至其他vtep设备,从而加快路由收敛的速度。可选的,所述处理模块502,还用于在确定所述第一vm发生迁移后,利用所述第一vtep设备发送的所述arpcache表项信息更新所述第二vtep设备保存的arpcache表中与所述第一vm对应的arpcache表项。vtep设备根据获取到对端vtep设备发送的同步arpcache表信息后,更新自身保存的arpcache表信息,并且实时更新所有对端vtep设备保存的接入虚拟机的主机路由,在虚拟机发生迁移时,通过查找arpcache表,能够快速,准确的感知虚拟机的迁移,加速路由的收敛。根据本申请实施例的装置500中的各模块和上述其它操作和/或功能分别为了实现图3中方法300的相应流程,为了简洁,此处不再赘述。本申请上述实施例中提供的装置400和装置500,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或部分功能。图6是根据本申请实施例的确定虚拟机迁移的装置600的另一示意图。该装置600,能够用于执行图2中的方法200。如图6所示,该装置600包括:输入接口601、输出接口602、处理器603和存储器604。该输入接口601、输出接口602、处理器603和存储器604可以通过总线系统605相连。所述存储器604用于存储包括程序、指令或代码。所述处理器604,用于执行所述存储器604中的程序、指令或代码,以控制输入接口601接收信号、控制输出接口602发送信号以及完成s201-s208中的操作。图7是根据本申请一实施例的确定虚拟机迁移的装置700的另一示意图。该网络设备700能够用于执行图3中的方法300。如图7所示,该网络设备700包括:输入接口701、输出接口702、处理器703和存储器704。该输入接口701、输出接口702、处理器703和存储器704可以通过总线系统705相连。所述存储器704用于存储包括程序、指令或代码。所述处理器704,用于执行所述存储器704中的程序、指令或代码,以控制输入接口701接收信号、控制输出接口702发送信号以及完成s301-s308中的操作。应理解,在本申请实施例中,该处理器603和处理器703可以是中央处理模块(centralprocessingunit,简称为“cpu”),还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器604和存储器704可以包括只读存储器和随机存取存储器,并分别向处理器603和处理器703提供指令和数据。存储器604或存储器704的一部分还可以包括非易失性随机存取存储器。例如,存储器604或存储器704还可以存储设备类型的信息。该总线系统605和总线系统705除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统。在实现过程中,方法200和方法300的各步骤可以分别通过处理器603和处理器703中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的定位方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质分别位于存储器604和存储器704中,处理器603读取存储器604中的信息,处理器703读取存储器704中的信息,结合其硬件分别完成上述方法200和方法300的步骤。为避免重复,这里不再详细描述。需要说明的是,图4和图6所提供的装置,图5和图7所提供的装置,应用于图1所示的网络100中,实现确定虚拟机迁移的方法。一个具体的实施方式中,图4中的处理模块401可以用图6的处理器603实现,发送模块402可以由图6的输出接口602实现,接收模块403可以用由图6的输入接口601实现。同理,图5中的处理模块502用图7的处理器703实现,发送模块503可以由图7的输出接口702实现,接收模块501可以用由图7的输入接口701实现。本申请还提供了一种通信系统,包括图4对应的实施例所提供的装置以及图5对应的实施例所提供的装置。所述通信系统用于执行图2对应的实施例的方法200和图3对应的实施例的方法300。本申请还提供了一种通信系统,包括图5对应的实施例所提供的装置以及图7对应的实施例所提供的装置。所述通信系统用于执行图2对应的实施例的方法200和图3对应的实施例的方法300。应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件或它们的任意组合来实现。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。最后,需要说明的是:以上所述仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。显然,本领域技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页1 2 3 
    技术特征:

    1.一种确定虚拟机vm迁移的方法,其特征在于,所述方法包括:

    所述vm从第二设备迁移到第一设备后,所述第一设备通过本地接口获取所述vm的媒体接入控制mac地址;

    所述第一设备根据所述mac地址,向所述vm发送地址解析协议arp请求;

    接收所述vm发送的arp响应;

    确定所述vm发生迁移。

    2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第一设备将到达所述vm的路由通告给所述第二设备。

    3.根据权利要求1或2所述的方法,其特征在于,所述第一设备通过本地接口获取所述vm的mac地址,包括:

    所述第一设备根据从所述本地接口获取的报文,获取所述vm的mac地址。

    4.根据权利要求3所述的方法,其特征在于,所述报文为所述vm发送的免费arp报文或反向地址解析协议rarp报文。

    5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:

    所述第一设备保存所述mac地址和所述本地接口的对应关系。

    6.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:

    所述第一设备更新本地保存的apr表,以保存所述mac地址和所述本地接口的对应关系。

    7.一种确定虚拟机vm迁移的方法,其特征在于:由第二设备执行,所述方法包括:

    接收第一设备发送的到达所述vm的路由,所述vm的路由包括所述vm的mac地址;

    发送地址解析协议arp请求以确定所述vm是否发生迁移;

    响应于未接收到所述vm发送的、针对所述arp请求的响应,则确定所述vm发生迁移。

    8.根据要求要求7所述的方法,其特征在于,在发送所述arp请求之前,所述方法还包括:

    根据所述mac地址,确定所述第二设备包括所述vm接入到所述第二设备的记录。

    9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:

    在所述第二设备本地保存的arp表中删除与所述vm对应的arp表项。

    10.根据权利要求7或8所述的方法,其特征在于:所述方法还包括:

    更新所述第二设备本地保存的arp表中与所述vm对应的arp表项。

    11.根据权利要求7-10任一项所述的方法,其特征在于:所述方法还包括:

    撤销指向所述第二设备的所述vm的路由。

    12.一种第一设备,其特征在于,包括:

    存储器,存储有指令;

    处理器,执行所述指令,以使得所述第一设备执行权利要求1-6任一项所述的方法。

    13.一种第二设备,包括:

    存储器,存储有指令;

    处理器,执行所述指令,以使得所述第二设备执行权利要求7-11任一项所述的方法。

    14.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述指令在计算机上运行时,使得所述计算机执行权利要求1-11任一项所述的方法。

    15.一种通信系统,包括权利要求12所述的第一设备和权利要求13所述的第二设备。

    技术总结
    本申请实施例提供了一种确定虚拟机VM迁移的方法和装置。该方法包括:VM发生迁移后,迁入的设备通过本地接口获取VM的MAC地址,迁入的设备判断此前已经从迁出的设备学习到所述MAC地址,则确定该VM发生迁移。该方法进一步包括:迁入的设备向所述VM发出ARP请求,响应于收到VM的响应,进一步确认所述VM发生迁移。根据本申请实施例提供的方法,当VM发生迁移后,VM的迁入设备仅需获取VM的MAC地址,即可确定VM发生迁移。迁入设备不必受限于虚拟机发送免费ARP报文来感知VM迁入,有效提高了对虚拟机配置的兼容性。

    技术研发人员:高远;孙兴国;梁文辉
    受保护的技术使用者:华为技术有限公司
    技术研发日:2016.08.30
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23077.html

    最新回复(0)