首页> 中国专利> 一种在LISP网络中的虚拟机迁移信息处理方法和装置

一种在LISP网络中的虚拟机迁移信息处理方法和装置

摘要

本发明公开了一种在LISP网络中的虚拟机迁移信息处理方法和装置。该方法包括:在线隧道路由器在检测到虚拟机迁移时,判断该在线隧道路由器是否是首先获知该虚拟机迁移的信息,在虚拟机迁移路由表中设置标识信息用于记录所述判断结果;所述在线隧道路由器接收上线通知消息,所述上线通知消息由其他隧道路由器在上线时发送;所述在线隧道路由器查询所述虚拟机迁移路由表,根据所述虚拟机迁移路由表中的标识信息筛选出首先获知的虚拟机迁移信息,将所述首先获知的虚拟机迁移信息携带在上线通知应答消息中,反馈所述上线通知应答消息。应用本发明实施例能够解决虚拟机迁移后,新上线xTR感知不到虚拟机迁移,从而导致的流量不通问题。

著录项

  • 公开/公告号CN104780102A

    专利类型发明专利

  • 公开/公告日2015-07-15

    原文格式PDF

  • 申请/专利权人 杭州华三通信技术有限公司;

    申请/专利号CN201510160177.2

  • 发明设计人 廖俊云;

    申请日2015-04-07

  • 分类号H04L12/741(20130101);H04L12/755(20130101);H04L12/46(20060101);

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人张玉波;宋志强

  • 地址 310052 浙江省杭州市滨江区长河路466号

  • 入库时间 2023-12-18 09:57:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-15

    授权

    授权

  • 2017-05-17

    著录事项变更 IPC(主分类):H04L12/741 变更前: 变更后: 申请日:20150407

    著录事项变更

  • 2015-08-26

    实质审查的生效 IPC(主分类):H04L12/741 申请日:20150407

    实质审查的生效

  • 2015-07-15

    公开

    公开

说明书

技术领域

本发明涉及通信技术领域,特别是涉及一种在LISP网络中的虚拟机迁移信 息处理方法和装置。

背景技术

位置标识分离协议(Locator Identity Separation Protocol,LISP)是一种位置和 标识分离的建网思想,LISP网络形成了两个独立的地址空间,即端点标识 (Endpoint Identifier,EID)空间和路由器位置(Routing Locator,RLOC)空间。 其中,EID为通信端点的主机地址,用于标识主机的身份。在LISP网络中,EID 可以独立于RLOC进行迁移;迁移过程中迁移主机的EID地址不变。RLOC为 LISP路由器的地址,可在现有Internet中路由转发。EID之间通信的报文根据 LISP的映射缓存(Map Cache)路由进行LISP封装,报文在RLOC之间的隧 道中进行转发。

xTR为入口隧道路由器(Ingress Tunnel Router,ITR)和出口隧道路由器 (Engress Tunnel Router,ETR)的统称,表示路由器具备ITR和/或ETR能力。 ITR对本数据中心EID空间匹配Map Cache路由表的数据报文进行LISP隧道 封装;ETR解封装LISP隧道封装的报文,发到本数据中心下的EID空间。映 射解析器(Map Reslover,MR)接收ITR发送的映射请求(Map Request),并 把该映射请求转发给映射服务器(Map Server),由MS回应映射应答(Map  Reply),或者由MS通知ETR回应Map Reply。

在LISP网络中,当发生虚拟机迁移的情况时,首先检测到虚拟机迁移事件 的xTR通过组播三次映射通知(map notify)消息通知本数据中心其他xTR所 述虚拟机迁移事件,因此,当在所述虚拟机迁移事件之后数据中心又有新上线 的xTR时,新上线的xTR将感知不到虚拟机迁移,从而导致流量不通。

发明内容

有鉴于此,本发明提出了一种在LISP网络中的虚拟机迁移信息处理方法和 装置,能够解决虚拟机迁移后,新上线xTR感知不到虚拟机迁移,从而导致的 流量不通问题。

本发明提出的技术方案是:

一种在LISP网络中的虚拟机迁移信息处理方法,该方法包括:

在线隧道路由器在检测到虚拟机迁移时,判断该在线隧道路由器是否是首 先获知该虚拟机迁移的信息,在虚拟机迁移路由表中设置标识信息用于记录所 述判断结果;

所述在线隧道路由器接收上线通知消息,所述上线通知消息由其他隧道路 由器在上线时发送;

所述在线隧道路由器查询所述虚拟机迁移路由表,根据所述虚拟机迁移路 由表中的标识信息筛选出首先获知的虚拟机迁移信息,将所述首先获知的虚拟 机迁移信息携带在上线通知应答消息中,反馈所述上线通知应答消息。

一种在LISP网络中的虚拟机迁移信息处理装置,所述装置位于隧道路由器 中,包括虚拟机迁移路由表处理模块、接收模块和虚拟机迁移信息发布模块;

所述虚拟机迁移路由表处理模块,用于在所述隧道路由器在检测到虚拟机 迁移时,判断该隧道路由器是否是首先获知该虚拟机迁移的信息,在虚拟机迁 移路由表中设置标识信息用于记录所述判断结果;

所述接收模块,用于接收上线通知消息,所述上线通知消息由其他隧道路 由器在上线时发送;

所述虚拟机迁移信息发布模块,用于在所述接收模块接收到上线通知消息 时,查询虚拟机迁移路由表,根据所述虚拟机迁移路由表中的标识信息筛选出 首先获知的虚拟机迁移信息,将所述首先获知的虚拟机迁移信息携带在上线通 知应答消息中,反馈所述上线通知应答消息。

由上述技术方案可见,本发明实施例中,首先,在线隧道路由器在检测到 虚拟机迁移时,判断该在线隧道路由器是否是首先获知该虚拟机迁移的信息, 在虚拟机迁移路由表中设置标识信息用于记录所述判断结果,在线隧道路由器 通过对虚拟机迁移路由表的上述特殊处理,为后续发布虚拟机迁移信息做好准 备工作;然后,在线隧道路由器通过接收新上线的隧道路由器在上线时发送的 上线通知消息,来感知新上线的隧道路由器;最后,在线隧道路由器基于已经 进行过上述特殊处理的虚拟机迁移路由表,根据所述虚拟机迁移路由表中的标 识信息筛选出首先获知的虚拟机迁移信息,将所述首先获知的虚拟机迁移信息 携带在上线通知应答消息中,反馈上线通知应答消息,因此,所述新上线的隧 道路由器通过接收并解析所述上线通知应答消息,能够得到所述上线通知应答 消息中携带的虚拟机迁移信息,进而感知到虚拟机迁移,解决了虚拟机迁移后, 新上线xTR感知不到虚拟机迁移,从而导致流量不通的问题。

并且,由于在线的xTR对虚拟机迁移路由表进行了特殊的处理,并在反馈 虚拟机迁移信息时基于所述虚拟机迁移路由表对信息进行了筛选,因此,在线 xTR能够仅仅将自身首先获知的虚拟机迁移信息反馈给新上线的xTR,从而能 够避免各个在线xTR重复反馈相同的虚拟机迁移信息而造成资源浪费的问题。

附图说明

图1是在LISP网络中发生虚拟机迁移事件时的一种处理过程示意图。

图2是本发明实施例提供的在LISP网络中新上线的xTR处理虚拟机迁 移信息的流程图。

图3是本发明实施例提供的在LISP网络中在线xTR处理虚拟机迁移信 息的流程图。

图4是本发明实施例提供的路由器设备的硬件结构连接图。

图5是本发明实施例提供的虚拟机迁移信息处理装置的结构示意图。

具体实施方式

图1是在LISP网络中发生虚拟机迁移事件时的一种处理过程示意图。

如图1所示,当虚拟机VMB从数据中心1(DataCenter1,DC1)迁移 到数据中心2(DataCenter2,DC2)时,其处理过程包括如下步骤:

步骤101,虚拟机VMB从DC1迁移到DC2后,发送数据报文。

步骤102,DC2的xTR2接收到VMB的数据报文,因而检测到虚拟机 VMB迁入。

步骤103,xTR2检测到VMB迁入后,会下发一条32位的VMB主机路 由,并向MS/MR注册迁入的VMB的32位主机路由10.17.1.65/32。

步骤103,xTR2发送组播map notify,通知其他xTR检测到虚拟机迁入, 该组播map notify会重传3次。

如图1所示,DC2中当前只有xTR2和xTR4,因此,xTR2向xTR4发 送3次map notify消息,通知xTR4检测到虚拟机VMB迁入。

步骤104,xTR3收到组播map notify,也感知到虚拟机VMB迁入DC2, 下发32位主机路由10.17.1.65/32;用于将流量通过xTR4转发到VMB。

步骤105,MS接受到xTR2注册的32位主机后,会发送Map Notify报 文通知xTR1虚拟机VMB已经迁出。xTR1感知到VMB迁出后,会下发一 条10.17.1.65/32位的NULL0路由。

步骤106,xTR3到虚拟机VMB的流量,一开始走老的路径发给xTR1。 xTR1匹配到10.17.1.65/32的NULL0路由,触发邀请映射请求(Solicit Map  Request,SMR)通知xTR3重新请求到达VMB的Map Cache表项。

步骤107,xTR3收到SMR后,向MS/MR发送Map Request报文,重 新请求到虚拟机VMB的Map Cache表项。

步骤108,MS/MR收到Map Request报文后,将Map Request报文转发 给具备ETR能力的xTR2。

步骤109,xTR2收到Map Request报文后,查询mape cache表项,根 据查询结果应答Map Reply报文。

步骤110,xTR3收到Map Reply后,生成到VMB新的Map Cache表项, 此后发给VMB的流量走新的路径,直接通过xTR2发送给迁入的虚拟机 VMB。

基于图1所示的流程,假设在xTR2检测到虚拟机VMB迁入之后,DC2 再上线一台xTR5,由于xTR2通知本DC2其他xTR检测到虚拟机迁移的组 播map notify报文只会重传3次,因此,在组播map notify重传完后,新上 线的xTR5收不到该报文。因此xTR5无法感知到虚拟机VMB的迁入。

当流量通过xTR5发往VMB时,xTR5上没有到VMB的路由,因此触 发重新学习Map Cache路由。MR/MS学习到的到达VMB的Map Cache路 由,有三个下一跳RLOC,分别是RLOC2(指向xTR2)、RLOC4(指向xTR4)、 RLOC5(指向xTR5)。存在多个等价下一跳时,会进行负载分担。如果到 达VMB的流量分担到RLOC2和RLOC4上,由于xTR2和xTR4均下发了 到VMB的迁入主机路由,因此能正常通信。如果流量分担RLOC5上,由 于RLOC5上没有到达VMB的迁入主机路由,并且VMB和xTR5的接口地 址不在同一网段,xTR5无法请求和学习不同网段的ARP,因此导致流量不 通。

类似地,如果DC2中的虚拟机VMC迁出,假设由xTR4收到MS关于 VMC迁出的单播Map Notify报文,则xTR4检测到虚拟机VMC迁出。xTR4 检测到虚拟机VMC迁出后,会发送组播Map Notify通知本数据中心其它 xTR虚拟机VMC迁出,该组播Map Notify报文也是重传3次。因此,在该 组播Map Notify重传结束后,如果DC2再新上线一台xTR5,xTR5也感知 不到VMC的迁出。当xTR3与VMC通信的流量,走老的路由发送到xTR5 时,匹配到直连路由,从而触发ARP学习,由于VMC已经从DC2迁出到 DC1了,显然无法学习VMC的ARP,因此也会导致流量不通,且始终无法 切换新的正确路径。

基于上述分析,本发明实施例提供了一种在LISP网络中的虚拟机迁移 信息处理方法,以解决虚拟机迁移后,新上线xTR感知不到虚拟机迁移, 从而导致的流量不通问题。

通过对图1所示处理过程进行分析发现,新上线的xTR无法感知到虚拟 机的迁入或者迁出是因为收不到组播Map Notify报文。为了使新上线xTR 能感知到虚拟机的迁移;需要解决下面几个问题:

问题1,如何让在线xTR感知到有新上线的xTR。

问题2,如何决定由哪些在线xTR将哪些虚拟机迁移信息通知给新上线 xTR。

下面结合图2和图3,对本发明实施例提供的在LISP网络中的虚拟机 迁移信息处理方法进行详细说明。

图2是本发明实施例提供的在LISP网络中新上线的xTR处理虚拟机迁 移信息的流程图。

如图2所示,该流程包括:

步骤201,xTR在上线时,发送上线通知消息。

本步骤中,xTR在上线时,发送上线通知消息,使得其他在线xTR能 够感知该新上线的xTR,并且,所述在线xTR在接收到所述上线通知消息 后,查询虚拟机迁移路由表,根据查询结果反馈上线通知应答消息。

步骤202,该新上线的xTR接收上线通知应答消息,解析所述上线通知 应答消息,得到所述上线通知应答消息中携带的虚拟机迁移信息。

由图2可见,本发明实施例通过由新上线的xTR向在线xTR发送上线 通知消息,使得在线xTR能够感知到新上线的xTR,从而解决了上述问题1。

新上线xTR如何知道向哪些xTR发送上线通知消息呢?一种方法是广 播所述上线通知消息,但是广播会导致该广播域内的所有xTR都收到该上 线通知消息,导致资源浪费。新上线xTR有本数据中心同组所有其它xTR 的RLOC地址,为了避免资源浪费,合理的方法是遍历这些本数据中心同组 的RLOC地址,向遍历到的每个RLOC地址对应的xTR单播发送该上线通 知消息。

具体地,xTR在上线时,遍历该xTR自身所在的数据中心中与该隧道 路由器同组的所有在线xTR,向遍历到的每个xTR单播发送上线通知消息, 以使得在线xTR感知到该新上线的xTR。

进一步地,为了避免由于消息丢失等原因导致通知失败,本发明实施例 可以设计重传机制,在上线通知消息发出后预设时长未收到相应的上线通知 应答消息时,重传所述上线通知消息。

在一种实施方式中,可以对Map Request报文和Map Reply报文进行扩 展,并对扩展后的Map Request报文和Map Reply报文的处理流程进行改进, 来实现图2所示的方法。

具体地,对Map Request报文和Map Reply报文的选项字段进行扩展, 扩展一个新的比特位用来表示该Map Request报文是xTR的上线通知消息, 该Map Reply报文应答报文为上线通知应答消息。该扩展比特位可以称为在 线(On Line,OL)位。新上线的xTR通过发送带OL比特位的Map Request 报文来通知本数据中心其它xTR有新xTR上线,在线xTR通过发送带OL 比特位的Map Reply报文应答所述上线通知消息。

在该实施方式中,为了防止带OL比特位的Map Request报文丢失,需 要设计一个重传机制。新上线xTR发送上线通知消息后,将Map Request 报文加入重传链表。如果没有收到带OL标记的MapReply应答报文,则每 隔预定时间(比如40秒)重传一次,如果收到应答报文则停止重传。

在线xTR在收到Map Request报文后,通过OL比特位判断该Map  Request报文为新xTR的上线通知消息。然后在线xTR对这种报文做特殊处 理:不去请求Map Cache表项,而是通过Map Reply报文来把虚拟机迁移的 信息通知给新上线xTR。

为了使Map Reply报文能携带虚拟机迁移信息,还需要对Map Reply报 文进行进一步的改动。

在一种实施方式中,在线xTR可以通过如下方式在Map Reply报文中携 带虚拟机迁移信息:在携带虚拟机迁入信息时,将Map Reply消息的Record 字段中预设比特位的取值设置为第一取值,在携带虚拟机迁出信息时,将所 述Record字段中预设比特位的取值设置为第二取值,将需要携带的发生虚 拟机迁移的主机的EID地址写入所述Record字段,在没有需要携带的虚拟 机迁移信息时,将所述Record字段中预设比特位的取值设置为第三取值。 比如,可以将Map Reply报文的Record字段中的预设比特位设置为迁移类 型标志(MoveFlag)位,在该MoveFlag位的取值为第一取值时表示虚拟机 迁入、为第二取值时表示虚拟机迁出、为第三取值时表示不存在虚拟机迁移 信息,比如,用值1表示迁入,值2表示迁出,值3表示没有迁移信息。其 中,所述MoveFlag位可以是Map Reply报文的Record字段中已有的保留位, 也可以是新扩展的保留位,比如,对Map Reply报文的Record保留位进行 扩展,得到MoveFlag位。

新上线的xTR收到该带OL位的Map Reply报文后,通过解析Map Reply 报文,得到虚拟机迁移信息。具体地,新上线的xTR收到该带OL位的Map  Reply报文后,解析所述Map Reply消息得到所述Map Reply消息的预设比 特位的取值,在所述预设比特位为第一取值时表示虚拟机迁入、为第二取值 时表示虚拟机迁出、为第三取值时表示不存在虚拟机迁移信息,在所述预设 比特位为第一取值或第二取值时,将解析得到的Record字段中的EID地址 确定为发生虚拟机迁移的主机的EID地址。新上线的xTR根据得到的虚拟 机迁移信息,进行相应的迁入、迁出处理。

图3是本发明实施例提供的在LISP网络中在线xTR处理虚拟机迁移信 息的流程图。

如图3所示,该流程包括:

步骤301,在线隧道路由器在检测到虚拟机迁移时,判断该在线隧道路 由器是否是首先获知该虚拟机迁移的信息,在虚拟机迁移路由表中设置标识 信息用于记录所述判断结果。

本步骤中,在线隧道路由器对虚拟机迁移路由表进行特殊处理,从而为 后续反馈虚拟机迁移信息做准备。

步骤302,所述在线隧道路由器接收上线通知消息,所述上线通知消息 由其他隧道路由器在上线时发送。

本步骤中,在线隧道路由器通过所述上行通知消息,能够感知到新上线 的隧道路由器。

步骤303,所述在线隧道路由器查询所述虚拟机迁移路由表,根据所述 虚拟机迁移路由表中的标识信息筛选出首先获知的虚拟机迁移信息,将所述 首先获知的虚拟机迁移信息携带在上线通知应答消息中,反馈所述上线通知 应答消息。

本步骤中,在线隧道路由器基于预先经过特殊处理的虚拟机迁移路由 表,筛选出首先获知的虚拟机迁移信息并反馈给新上线的隧道路由器。

可见,新上线的隧道路由器通过接收各个在线隧道路由器反馈的虚拟机 迁移信息,不仅能够获得全部的虚拟机迁移信息,而且,各个在线隧道路由 器反馈的虚拟机迁移信息相互不重复,也能够避免资源浪费。

关于上述问题2,由于新上线xTR会遍历本数据中心的与该新上线xTR 同组的所有在线xTR发送带OL比特的Map Request报文,因此,一种方式 是所有收到该上线通知消息的xTR都将自己的虚拟机迁移信息发给新上线 的xTR,显然这种方式会造成大量的浪费。为了避免这种情况,本发明实施 例提供了一种对执行反馈迁移信息的xTR进行选择、以及对反馈的迁移信 息选择的方法,即选择由哪些在线xTR来发送哪些迁移信息。

具体地,在本发明实施例中,在线xTR在收到上线通知消息后,查询虚 拟机迁移路由表,判断虚拟机迁移路由表中的虚拟机迁移信息是否是由该隧 道路由器首先获知,如果是,将该条首先获知的虚拟机迁移信息携带在上线 通知应答消息中,否则,在上线通知应答消息不携带该条虚拟机迁移信息, 其中,xTR在检测到虚拟机迁移信息时,判断该xTR是否是第一个检测到 该条虚拟机迁移信息,并在虚拟机迁移路由表中记录判断结果。换言之,在 线xTR仅在存在第一个由该xTR得知的虚拟机迁移信息时,才反馈上线通 知应答消息,并且,在上线通知应答消息中仅携带由该xTR第一个得知的 虚拟机迁移信息,从而避免大量的xTR重复反馈携带相同虚拟机迁移信息 的上线通知应答消息,避免了资源浪费。

关于具体如何判断xTR是否是第一个检测到某条虚拟机迁移信息,本发 明实施例提出:

对于虚拟机迁入信息,当xTR通过虚拟机的报文检测到所述虚拟机迁入 时,确定该xTR是第一个检测到该虚拟机迁入,因此该xTR在下发的该虚 拟机的迁入路由信息中携带首先获知的标志信息,当xTR通过组播通知例 如组播Map Notify消息检测到虚拟机迁入时,确定该xTR不是第一个检测 到该虚拟机迁入,因此该xTR在下发的该虚拟机的迁入路由信息中不携带 首先获知的标志信息。

对于虚拟机迁出信息,当xTR通过单播通知消息例如单播Map Notify 消息检测到虚拟机迁出信息时,确定该xTR是第一个检测到该虚拟机迁出, 因此在该xTR下发的该虚拟机的迁出路由信息中携带首先获知的标志信息, 当xTR通过组播通知消息例如组播Map Notify消息检测到虚拟机迁出信息 时,确定该xTR不是第一个检测到该虚拟机迁出,因此该xTR在下发的该 虚拟机的迁出路由信息中不携带首先获知的标志信息。

作为一种实施方式,在线隧道路由器可以在所述隧道路由器通过虚拟机 的报文检测到虚拟机迁入时,将所述虚拟机的迁入路由信息中的所述预设标 志位的取值设置为第一值,在所述隧道路由器通过组播通知消息检测到虚拟 机迁入时,将所述虚拟机的迁入路由信息中的所述预设标志位的取值设置为 第二值,在所述隧道路由器通过单播通知消息检测到虚拟机迁出时,将所述 虚拟机的迁出路由信息中的所述预设标志位的取值设置为第一值,在所述隧 道路由器通过组播通知消息检测到虚拟机迁出时,将所述虚拟机的迁出路由 信息中的所述预设标志位的取值设置为第二值。

下面结合图1来详细描述这个选择过程:

如图1所示,虚拟机VMB从DC1迁移到DC2,如果迁入数据报文是发 给xTR2的,那么xTR2检测到虚拟机VMB的迁入,然后由xTR2发送组播 Map Notify来通知本数据中心的其它xTR虚拟机VMB迁入。本发明实施例 在xTR下发VMB的迁入路由时,进行特殊处理:通过虚拟机VMB的报文 检测到VMB迁入的xTR2在下发迁入主机路由时,记录一个特殊标记First 表示是首次检测到迁入,其它xTR是通过组播MapNotify检测到迁入的, 此时下发的迁入主机路由不带First标记。

当有虚拟机从数据中心迁出时,MS会向该数据中心中最后注册的xTR 发送单播Map Notify通知虚拟机迁出事件,然后由该最后注册的xTR通过 组播Map Notify将该虚拟机迁出事件通知该数据中心其他xTR。

比如,虚拟机VMC从DC2迁移到DC1,假设最后向MS注册DC2的 EID空间、即最后向MS注册10.18.1.0/24EID前缀的是xTR4。当虚拟机 VMC迁出后,MS会向xTR4发送单播Map Notify通知VMC迁出。然后xTR4 向本数据中心的其它xTR发送组播Map Notify通知VMC迁出。

与前面VMB的迁入处理类似,收到单播Map Notify检测到迁出的xTR4 下发的迁出NULL0路由带First标记;收到组播Map Notify迁出的xTR下 发迁出NULL0路由不带First标记。

新上线的xTR5在上线后,遍历本数据中心的与该新上线的xTR5同组 的RLOC空间向所有本数据中心所有同组的xTR发送带OL比特的Map  Request报文。xTR2收到该带OL比特的Map Request报文后,遍历迁移路 由表,发现VMB的迁入主机路由带First标记,因此将VMB的EID地址填 入Map Reply报文中,并置上OL标记,同时将MoveFag的值置1表示迁入。 xTR2上VMC的迁出路由不带First标记,因此不打包到Map Reply报文中。 同理,xTR4收到带OL比特的Map Request报文后,只将置上First标记的 VMC迁出NULL0路由打包到Map Reply报文中,Move Flag值置位2,表 示VMC迁出。新上线的xTR5收到这两个Map Reply报文后,完成VMB 的迁入和VMC的迁出处理。从而解决了新上线xTR无法感知到虚拟机迁移 而导致的断流问题。

下面参照图1,说明采用本发明实施例对图1所示的迁移事件进行处理 的详细处理过程:

首先,新上线xTR遍历本数据中心与该新上线xTR同组的所有已存在 xTR的RLOC地址,发送带OL比特位的Map Request报文作为上线通知消 息。同时,将该报文以RLOC地址为Key加入重传链表,等待应答报文。

xTR2收到该带OL比特的Map Request报文后,并不去请求Map Cache 路由,而是遍历自己的虚拟机迁移路由表,发现VMB的迁入主机路由带First 标记,因此将VMB的EID地址填入Map Reply报文Record的EID字段中, 且置上OL比特,MoveFlag值设置为1表示迁入。xTR2上VMC的迁出路 由不带First标记,因此不打包到Map Reply报文中。然后,xTR2将该带 OL比特的Map Reply报文单播发给xTR5。

xTR5收到xTR2发送的带OL比特的Map Reply报文,解析该Map Reply 报文得知收到上线通知应答报文,因此先从重传链表摘除到xTR2的用作上 线通知消息的Map Requset报文。然后,xTR2提取Map Reply中VMB的 EID地址和MoveFlag的取值,判断VMB迁入。xTR5检测到VMB迁入后, 下发迁入主机路由;但是不发送组播Map Notify去通知本数据中心的其它 xTR。新上线的xTR在下发虚拟机迁入路由时不发送组播Map Notify去通 知本数据中心的其它xTR,这是因为,其它xTR此时已经有VMB的迁入信 息。

xTR4收到上线通知消息后,并不去请求Map Cache路由,而是遍历自 己的虚拟机迁移路由表。xTR4发现VMC的迁出NULL0路由置上了First 标记,因此将VMC的EID地址填入Map Reply报文的Record EID字段,且 置上OL比特,MoveFlag值设置为2表示迁出。xTR4上VMB的迁入路由 不带First标记,因此不打包到Map Reply中。然后,xTR4将该带OL比特 的Map Reply报文单播给xTR5。

xTR5收到xTR4发送的带OL比特的Map Reply报文,表示收到上线通 知应答报文,因此先从重传链表摘除发送到xTR4的Map Request报文。然 后,xTR5提取Map Reply报文的Record字段中VMC的EID地址,并提取 MoveFlag的取值,判断出VMC迁出。xTR5检测到VMC迁出后,下发迁 出NULL0路由,但是不发送组播Map Notify去通知本数据中心的其它xTR。 新上线的xTR在下发虚拟机迁出路由时不发送组播Map Notify去通知本数 据中心的其它xTR,这是因为,其它xTR已经有VMC的迁出信息。

如果数据中心还有其它与该新上线的xTR5同组的xTR,比如xTR6, 假设xTR6上的虚拟机迁移路由都不带First标记,则xTR6直接反馈带OL 比特的Map Reply报文,且Record的EID地址填为0等预设值,MoveFlag 填3表示没有迁移信息。

xTR5收到xTR6的带OL比特的Map Reply报文,表示收到上线通知应 答报文,因此先从重传链表摘除发送到xTR6的上线通知消息即Map Request 报文。然后读取MoveFlag标识,发现MoveFlag取值为3,表示没有迁移信 息,直接结束处理。

如果新上线的xTR5在向本数据中心有某个在线xTR发送带OL比特的 Map Request报文预定时长(比如40秒)后,还没有收到该在线xTR反馈 的带OL比特的Map Reply报文,则xTR5在重传定时器超时后,会重新向 该在线xTR发送带OL的Map Requset报文作为上线通知消息。

可见本发明实施例提供了一套有效的交互机制,能稳定高效地完成迁移 信息交互,使新上线xTR能正确地获取到虚拟机迁移信息,从而解决了新 上线xTR感知不到虚拟机迁移信息,导致到达已迁移的虚拟机的流量不通 的问题。

针对上述方法,本发明实施例还公开了一种路由器设备,该路由器设备 中包括的虚拟机迁移信息处理装置。

图4是本发明实施例提供的路由器设备的硬件结构连接图。

如图4所示,该路由器设备包括处理器、网络接口、内存和非易失性存 储器,且上述各硬件通过总线连接,其中:

非易失性存储器,用于存储指令代码;所述指令代码被处理器执行时完 成的操作主要为内存中的虚拟机迁移信息处理装置完成的功能。

处理器,用于与非易失性存储器通信,读取和执行非易失性存储器中存 储的所述指令代码,完成上述的虚拟机迁移信息处理装置完成的功能。

内存,当非易失性存储器中的所述指令代码被执行时完成的操作主要为 内存中的虚拟机迁移信息处理装置完成的功能。

从软件层面而言,应用于路由器设备的虚拟机迁移信息处理装置如图5 所示。

图5是本发明实施例提供的虚拟机迁移信息处理装置的结构示意图。图 5中所示装置位于隧道路由器中。

如图5所示,该装置包括虚拟机迁移路由表处理模块501、接收模块502 和虚拟机迁移信息发布模块503。

虚拟机迁移路由表处理模块501,用于在所述隧道路由器在检测到虚拟机 迁移时,判断该隧道路由器是否是首先获知该虚拟机迁移的信息,在虚拟机迁 移路由表中设置标识信息用于记录所述判断结果。

接收模块502,用于接收上线通知消息,所述上线通知消息由其他隧道路 由器在上线时发送。

虚拟机迁移信息发布模块503,用于在所述接收模块接收到上线通知消 息时,查询虚拟机迁移路由表,根据所述虚拟机迁移路由表中的标识信息筛 选出首先获知的虚拟机迁移信息,将所述首先获知的虚拟机迁移信息携带在 上线通知应答消息中,反馈所述上线通知应答消息。

虚拟机迁移路由表处理模块501,可以用于在所述隧道路由器通过虚拟 机的报文检测到虚拟机迁入时,在所述虚拟机的迁入路由信息中设置首先获 知的标识信息,在所述隧道路由器通过单播通知消息检测到虚拟机迁出时, 在所述虚拟机的迁出路由信息中设置首先获知的标识信息。

虚拟机迁移路由表处理模块501,可以用于在所述隧道路由器通过虚拟 机的报文检测到虚拟机迁入时,将所述虚拟机的迁入路由信息中的所述预设 标志位的取值设置为第一值,在所述隧道路由器通过组播通知消息检测到虚 拟机迁入时,将所述虚拟机的迁入路由信息中的所述预设标志位的取值设置 为第二值,在所述隧道路由器通过单播通知消息检测到虚拟机迁出时,将所 述虚拟机的迁出路由信息中的所述预设标志位的取值设置为第一值,在所述 隧道路由器通过组播通知消息检测到虚拟机迁出时,将所述虚拟机的迁出路 由信息中的所述预设标志位的取值设置为第二值。

其中,所述上线通知消息可以包括Map request消息,所述Map request 消息中携带有第一字段,所述第一字段用于指示所述Map request消息为上 线通知消息;所述上线通知应答消息可以包括Map Reply消息,所述Map  Reply消息中携带有第二字段,所述第二字段用于指示所述Map Reply消息 为上线通知应答消息。

虚拟机迁移信息发布模块501,可以用于在携带虚拟机迁入信息时,将 Map Reply消息的Record字段中预设比特位的取值设置为第一取值,在携带 虚拟机迁出信息时,将所述Record字段中预设比特位的取值设置为第二取 值,将需要携带的发生虚拟机迁移的主机的EID地址写入所述Record字段, 在没有需要携带的虚拟机迁移信息时,将所述Record字段中预设比特位的 取值设置为第三取值。

该装置还可以包括上线通知模块。

所述上线通知模块,用于在所述隧道路由器上线时,遍历该隧道路由器 所在的数据中心中与该隧道路由器同组的其他所有隧道路由器,向遍历到的 每个隧道路由器单播发送上线通知消息,在上线通知消息发出后预设时长未 收到接收所述上线通知消息的隧道路由器反馈的上线通知应答消息时,重传 所述上线通知消息。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本 发明保护的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号