防止虚拟机vm迁移引起的流量中断的方法和设备的制造方法

文档序号:10626740阅读:365来源:国知局
防止虚拟机vm迁移引起的流量中断的方法和设备的制造方法
【专利摘要】本申请提供了防止虚拟机迁移引起的流量中断方法和设备。本发明中,当VM从本xTR迁出时,将本xTR在VM未迁出前连接该VM的接口所连接的其他VM的EID地址发送给VM新迁入的xTR,并通过所述接口发送以下免费ARP:源地址和目的地址为所述VM的EID地址,当VM新迁入至本xTR时,接收迁入VM在迁入前连接的xTR发送的EID地址和RLOC地址,比较接收的RLOC地址与本xTR的RLOC地址不一致,以接收的每一EID地址为源地址和目的地址发送免费ARP,这实现了迁移后的VM与未迁移前连接同一xTR接口的其他VM之间的流量中断。
【专利说明】
防止虚拟机VM迁移引起的流量中断的方法和设备
技术领域
[0001] 本申请涉及网络通信技术,特别涉及防止虚拟机(VM :Virtual Machine)迀移引 起的流量中断方法和设备。
【背景技术】
[0002] 位置和标识分离协议(LISP :Locator/Identity Separation Protocol)是一种位 置和标识分离的建网思想,形成以下两个独立的地址空间:
[0003] 路由位置(RL0C地址:Routing Locator),为LISP路由器的地址,在现有Internet 中路由转发,可全局路由且根据网络拓扑情况进行聚合;
[0004] 端点标识(EID地址:Endpoint Identifier),为通信端点的VM地址,拥有独立的 地址空间。在LISP网络中,EID地址可独立于RL0C地址进行迀移。
[0005] 图1示出了 LISP组网示意图。如图1所示,LISP组网主要包括:
[0006] 边缘设备(xTR),负责数据报文的封装和拆解;
[0007] 映射关系(Map)数据库(DB :DataBase):包含EID地址与RL0C地址的映射关系, 可以通过映射服务器(MS :Map Server)发布。
[0008] 在LISP组网中,出于对数据中心的安全运营、维护和管理的需要,有时需要对VM 进行迀移。但是,当VM跨网段迀移时,会引起该迀移的VM与原有可直接通信的其他VM之 间的流量中断。比如图1所示LISP组网中,VMA、VMB接入xTRA的同一接口(记为接口 A), VMA学习到VMB对应的ARP表项,VMB也学习到VMA对应的ARP表项,因为VMA、VMB均接入 xTRA的接口 A,则VMA学习的VMB对应的ARP表项能够保证VMA与VMB直接通信,无需经 过xTRA中转;同样,VMB学习的VMA对应的ARP表项也能够保证VMB与VMA直接通信,无 需经过xTRA中转。当VMB从网段比如10. 1. 1.0/24中的xTRA跨网段迀移至另一网段比如 111. 1. 0/24中的xTRB后,若VMA访问VMB,因为VMA之前学习的VMB对应的ARP表项还存 在,则VMA会按照之前学习的VMB对应的ARP表项发送报文,而VMA之前学习的VMB对应的 ARP表项是在VMB未迀移之前学习到的,当VMB迀移后,如果VMA还用VMB未迀移之前学习 的VMB对应的ARP表项,则VMA发送的报文是到达不了 VMB的,即出现了 VMA发向至VMB的 流量中断。同样,VMB访问VMA时,VMB因为还用VMB未迀移之前学习的VMA对应的ARP表 项,VMB发送的报文也是到达不了 VMA的,即出现了 VMB发向VMA的流量中断。

【发明内容】

[0009] 本申请提供了防止虚拟机迀移引起的流量中断方法和设备,以实现迀移后的VM 与未迀移前连接同一 xTR接口的其他VM之间的流量中断。
[0010] 本申请提供的技术方案包括:
[0011] -种防止虚拟机VM迀移引起的流量中断方法,该方法应用于边缘设备xTR,该方 法包括:
[0012] 确定虚拟机VM从本xTR迀出时,检查本xTR在VM迀出前连接该VM的接口是否还 连接其他VM,如果是,通过所述接口发送以下免费ARP :源地址和目的地址为所述VM的端点 标识EID地址,并将所述其他VM的EID地址、以及本xTR的路由位置RLOC地址发送给其他 xTR,所述其他xTR为所述VM从本xTR迀出后新迀入的xTR ;
[0013] 确定VM新迀入至本xTR时,接收VM在迀入至本xTR前连接的xTR发送的EID地 址和RL0C地址,比较接收的RL0C地址与本xTR的RL0C地址不一致时,以接收的每一 EID 地址为源地址和目的地址发送免费ARP。
[0014] 一种防止虚拟机VM迀移引起的流量中断设备,该设备应用于边缘设备xTR,包括:
[0015] 迀出处理单元,用于确定虚拟机VM从本xTR迀出时,检查本xTR在VM迀出前连接 该VM的接口是否还连接其他VM,如果是,通过所述接口发送以下免费ARP :源地址和目的 地址为所述VM的端点标识EID地址,并将所述其他VM的EID地址、以及本xTR的路由位置 RL0C地址发送给其他xTR,所述其他xTR为所述VM从本xTR迀出后新迀入的xTR ;
[0016] 迀入处理单元,用于确定VM新迀入至本xTR时,接收VM在迀入至本xTR前连接的 xTR发送的EID地址和RL0C地址,比较接收的RL0C地址与本xTR的RL0C地址不一致时,以 接收的每一 EID地址为源地址和目的地址发送免费ARP。
[0017] 由以上技术方案可以看出,本发明中,当VM从本xTR迀出时,将本xTR在VM未迀 出前连接该VM的接口所连接的其他VM的EID地址发送给VM新迀入的xTR,并通过所述接 口发送以下免费ARP :源地址和目的地址为所述VM的EID地址,能够保证该接口连接的其 他未迀移的VM访问该迀出的VM时不会出现流量中断;
[0018] 进一步地,当VM新迀入至本xTR时,以接收的每一 EID地址为源地址和目的地址 发送免费ARP,能够保证迀入的VM访问在未迀移之前连接同一 xTR接口的其他未迀移的VM 时不会出现流量中断。
【附图说明】
[0019] 图1为LISP组网示意图;
[0020] 图2为本发明提供的方法流程图;
[0021] 图3为本发明实施例提供的方法流程图;
[0022] 图4为本发明实施例提供的map-notify报文示意图;
[0023] 图5为本发明提供的设备结构示意图;
[0024] 图6为本发明提供的设备硬件结构示意图。
【具体实施方式】
[0025] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对 本发明进行详细描述。
[0026] 参见图2,图2为本发明提供的方法流程图。如图2所示,该流程应用于LISP组网 中的xTR,可包括以下步骤:
[0027] 步骤201,确定VM从本xTR迀出时,检查本xTR在VM迀出前连接该VM的接口是否 还连接其他VM,如果是,通过所述接口发送以下免费ARP :源地址和目的地址为所述VM的端 点标识EID地址,并将所述其他VM的EID地址、以及本xTR的路由位置RL0C地址发送给其 他xTR,所述其他xTR为所述VM从本xTR迀出后新迀入的xTR。
[0028] 具体地,在本步骤201中,xTR发送的免费ARP的源MAC地址为本xTR的MAC地 址。这里,如果本xTR是由多台设备虚拟出的虚拟路由冗余协议(VRRP:Virtual Router Redundancy Protocol)备份组中的设备,则本xTR的MAC地址就为xTR所在VRRP备份组的 虚MAC地址。而如果本xTR是单一的一台设备,并不属于VRRP备份组,则本xTR的MAC地 址就为本xTR发送免费ARP的接口的MAC地址。
[0029] 如步骤201描述,当xTR检查出本xTR在VM迀出前连接该迀出VM的接口还连接了 其他VM,xTR会通过连接该迀出VM的接口发送源地址和目的地址同为迀出VM的EID地址 的免费ARP后,其他VM(xTR上连接该迀出VM的接口所连接的其他VM)就会收到免费ARP, 当其他VM收到免费ARP后,就会依赖于收到免费ARP的接口、以及免费ARP携带的源地址、 源MAC地址更新原有的与该源地址对应的ARP表项。
[0030] 比如图1所示的LISP组网中,在VMB未迀出之前,VMA、VMB接入xTRA的同一接 口(记为接口 A),当xTRA确定出VMB从本xTRA迀出后,xTRA会通过接口 A发送以下免费 ARP :源地址和目的地址同为VMB的EID地址、源MAC地址为xTRA的MAC地址;VMA接收到 xTRA发送的免费ARP后,会依赖于收到免费ARP的接口、以及免费ARP携带的源地址即VMB 的EID地址、源MAC地址更新已有的与该源地址即VMB的EID地址对应的ARP表项。比如, 因为VMA、VMB接入xTRA的同一接口即接口 A,则在VMB迀出之前,VMA上已有的与VMB的 EID地址对应的ARP表项就包含:VMB的MAC地址、VMB的EID地址、出接口为VMA直连VMB 的接口;当VMB从xTRA迀出之后,VMA接收到xTRA发送的免费ARP,就会依赖于收到免费 ARP的接口、以及免费ARP携带的源地址即VMB的EID地址、源MAC地址将已有的与该源地 址即VMB的EID地址对应的ARP表项更新为以下ARP表项:免费ARP的源MAC地址即xTRA 的MAC地址、VMB的EID地址、出接口为VMA接收免费ARP的接口。这样,VMA访问VMB时就 会依赖于更新后的VMB对应的ARP表项进行访问,并非按照VMB迀出之前已学习的VMB对 应的ARP表项进行访问,防止了 VMA访问VMB的流量中断。
[0031] 步骤202,确定VM新迀入至本xTR时,接收VM在迀入至本xTR前连接的xTR发送 的EID地址和RL0C地址,比较接收的RL0C地址与本xTR的RL0C地址不一致时,以接收的 每一 EID地址为源地址和目的地址发送免费ARP。
[0032] 本步骤202中,xTR发送的免费ARP的源MAC地址为本xTR的MAC地址。如上所 述,如果本xTR是由多台设备虚拟出的VRRP备份组中的设备,则本xTR的MAC地址就为xTR 所在VRRP备份组的虚MAC地址。而如果本xTR是单一的一台设备,并不属于VRRP备份组, 则本xTR的MAC地址就为本xTR发送免费ARP的接口的MAC地址。
[0033] 优选地,本步骤202中,在以接收的每一 EID地址为源地址和目的地址发送免费 ARP时可通过本xTR连接新迀入的VM的接口发送。这能够避免免费ARP在LISP网络中大 量洪泛。
[0034] 如上面步骤201描述,xTR接收的EID地址具体为:与迀入VM (迀入至本xTR的VM) 在迀入之前连接同一 xTR接口的其他VM的EID地址,如此,当xTR以接收的每一 EID地址 作为源地址和目的地址发送免费ARP后,迀入VM就会收到该免费ARP,当收到免费ARP后, 就会依赖于收到免费ARP的接口、以及免费ARP携带的源地址、源MAC地址更新原有的与该 源地址对应的ARP表项。
[0035] 仍以图1所示的LISP组网中,在VMB未从xTRA迀出并新迀入到xTRB之前,VMA、 VMB接入xTRA的同一接口(记为接口 A),当VMB从xTRA迀出并新迀入到xTRB后,按照步 骤201,xTRA将VMA的EID地址和本xTRA的RLOC地址发送给xTRB,当xTRB接收到xTRA发 送的VMA的EID地址和xTRA的RLOC地址,比较接收的xTRA的RLOC地址与本xTRB的RLOC 地址不一致,则会通过连接VMB的接口(记为接口 B)发送以下免费ARP :源地址和目的地 址同为VMA的EID地址、源MAC地址为xTRB的MAC地址;VMB接收到xTRB发送的免费ARP 后,会依赖于收到免费ARP的接口、以及免费ARP携带的源地址即VMA的EID地址、源MAC 地址更新已有的与该源地址即VMA的EID地址对应的ARP表项。比如,因为VMA、VMB接入 xTRA的同一接口即接口 A,则在VMB从xTRA迀出之前,VMB上已有的与VMA的EID地址对 应的ARP表项就包含:VMA的MAC地址、VMA的EID地址、出接口为VMB直连VMA的接口;当 VMB从xTRA迀出并新迀入到xTRB后,VMB接收到xTRB发送的免费ARP,就会依赖于收到免 费ARP的接口、以及免费ARP携带的源地址即VMA的EID地址、源MAC地址将已有的与该 源地址即VMA的EID地址对应的ARP表项更新为以下ARP表项:免费ARP的源MAC地址即 xTRB的MAC地址、VMA的EID地址、出接口为VMB接收免费ARP的接口。这样,后续VMB访 问VMA时就会依赖于更新后的VMA对应的ARP表项进行访问,并非按照VMB迀出之前已学 习的VMA对应的ARP表项进行访问,防止了 VMB访问VMA的流量中断。
[0036] 综上可以看出,通过图2所示流程,最终能够保证连接同一 xTR接口的所有VM不 会因为有VM迀移而导致相互之间的流量中断。
[0037] 下面通过图3所示的实施例流程对图2所示流成进行描述。
[0038] 参见图3,图3为本发明提供的实施例流程图。如图3所示,该实施例流成可包括 以下步骤:
[0039] 步骤301,LISP组网中的每一 xTR将本地接口、以及本地接口连接的VM的EID地 址对应记录。
[0040] 本步骤301是xTR在动态发现有新VM接入时执行的,该动态发现VM的方式类似 现有动态发现VM的方式,这里不再展开描述。
[0041] 为便于描述,以下将xTR在本地记录的接口、以及接口连接的VM的EID地址称为 接口 -EID地址记录。
[0042] 步骤302, xTRl收到连接的VM1发送的报文。
[0043] 这里,xTRl为LISP组网中任一 xTR,只是为了描述方便,并非具体限定某一台xTR。 还有,VM1可为LISP组网中xTRl当前连接的任一 VM,也只是为了描述方便,并非具体限定 某一台VM。
[0044] VM1在访问其他一 VM时,如果发现本地不存在该VM的EID地址对应的ARP表项, 则会发送ARP报文,而如果发现本地存在该VM的EID地址对应的ARP表项,则会发送数据 报文。基于此,xTRl收到的报文可为ARP报文,或者为数据报文。这里,ARP报文,或者为数 据报文的源地址为VM1的EID地址。
[0045] 步骤303, xTRl从本地接口 -EID地址记录中检查本地是否已记录了该接收的报文 的源地址即VM1的EID地址,如果是,则按照现有报文收发方式处理接收的报文,如果否,确 定本xTRl新迀入VM1,将本xTR连接VM1的接口、以及VM1的EID地址对应记录至本地接 口 -EID地址记录,并发送注册报文给MS,之后执行步骤304。
[0046] 这里,xTRl发送的注册报文携带了 xTRl的RL0C地址和VM1的EID地址。
[0047] 具体地,本步骤303中,xTRl依据收到报文的接口从本地接口 -EID地址记录中查 找该接口对应的EID地址是否有接收的报文的源地址即VM1的EID地址,如果是,则说明 VM1不是新迀入的,按照现有报文收发方式处理接收的报文;而如果否,确定本xTRl新迀入 VM1,则向MS发送注册报文,以将VM1的EID地址注册至MS。
[0048] 步骤304, MS接收xTRl发送的注册报文,从本地映射关系数据库中查询到注册报 文携带的EID地址所映射的RL0C地址为xTR2的RL0C地址,不与注册报文携带的xTRl的 RL0C地址一致,则向xTR2发送映射关系通知(map-notify)报文。
[0049] 这里,map-notify报文中携带了 xTRl的RL0C地址和VM1的EID地址。
[0050] 优选地,为了便于区分MS发送的map-notify报文和下述步骤308中xTR2发送的 map-notify报文,这里可对现有map-notify报文进行改进,具体是:
[0051] 当下述步骤308中xTR2发送map-notify报文时,在该map-notify报文中增加第 一标志位,用于表示map-notify报文是xTR发送的。
[0052] 当MS发送map-notify报文时,在该map-notify报文中增加第二标志位,用于表 示map-notify报文是MS发送的,
[0053] 图4以第一标志位为A,第二标志位为S为例示出了 map-notify报文的格式。
[0054] 基于上面描述,本步骤304中MS发送的map-notify报文中携带第二标志位。
[0055] 步骤305, xTR2接收到map-notify报文,依据map-notify报文携带的第二标志 位确定map-notify报文是MS发送的,从本地接口 -EID地址记录中查询到map-notify报 文携带的VM1的EID地址,并通过比较发现本xTR2的RL0C地址与map-notify报文携带的 xTRl的RL0C地址不一致,则确定VM1从本xTR2迀出至xTRl。
[0056] 这里,步骤305可以作为上述步骤201中确定VM从本xTR迀出的一个优选实施例。
[0057] 步骤306, xTR2从本地接口 -EID地址记录中查找到本xTR2连接VM1的接口为接 口 1,从本地接口 -EID地址记录中检查接口 1是否还对应除VM1的EID地址之外的其他EID 地址,如果否,从本地接口 -EID地址记录中删除VM1的EID地址与接口 1之间的对应记录, 结束当前流程,如果是,执行步骤307。
[0058] 这里,步骤306可以作为上述步骤201中检查本xTR在VM迀出前连接VM的接口 是否还连接其他VM的一个优选实施例。
[0059] 步骤307, xTR2通过接口 1发送以下免费ARP :源地址和目的地址同为VM1的EID 地址、源MAC地址为xTR2的MAC地址,从本地接口 -EID地址记录中删除VM1的EID地址与 接口 1之间的对应记录,并执行步骤308。
[0060] 本步骤307中,当xTR2通过接口 1发送免费ARP后,连接接口 1的其他VM就会收 到免费ARP,当其他VM收到免费ARP后,就会依赖于收到免费ARP的接口、以及免费ARP携 带的源地址、源MAC地址更新原有的与该源地址对应的ARP表项。
[0061] 比如,假如在VM1从xTR2迀出之前,VM1、VM2同接入至xTR2的接口 1,当xTR2确 定出VM1从本xTR2迀出至xTRl后,xTR2会通过接口 1发送以下免费ARP :源地址和目的地 址同为VM1的EID地址、源MAC地址为xTR2的MAC地址;VM2接收到xTR2发送的免费ARP 后,会依赖于收到免费ARP的接口、以及免费ARP携带的源地址即VM1的EID地址、源MAC 地址更新已有的与该源地址即VM1的EID地址对应的ARP表项。比如,在VM 1从xTR2迀 出之前,因为VM 1、VM 2接入xTR2的同一接口 2, VM 2上已学习的与VM2的EID地址对应 的ARP表项就包含:VM1的MAC地址、VM1的EID地址、出接口为xTR2直连VM1的接口,当 VM1从xTR2迀出至xTRl之后,xTR2通过接口 1发送以下免费ARP :源地址和目的地址同为 VM1的EID地址、源MAC地址为xTR2的MAC地址;VM2接收到xTR2发送的免费ARP,就会依 赖于收到免费ARP的接口、以及免费ARP携带的源地址即VM1的EID地址、源MAC地址将 已有的与该源地址即VM1的EID地址对应的ARP表项更新为以下ARP表项:免费ARP的源 MAC地址即xTR2的MAC地址、VM1的EID地址、出接口为VM2接收免费ARP的接口。这样, 后续VM2访问VM1时就会依赖于更新后的VM1的EID地址对应的ARP表项进行访问,因为 更新后的VM1对应的ARP表项的出接口为VM2接收免费ARP的接口,这能够保证VM2访问 VM1的报文会经由xTR2中转经过LISP网络转发至VM1,并非按照VM1迀出之前已有的VM1 对应的ARP表项(用于VM2直接访问VM1)进行访问,防止了 VM 2访问VM1的流量中断。
[0062] 步骤308, xTR2将接口 1连接的其他VM的EID地址、以及本xTR2的RL0C地址组织 在一个新的map-notify报文中,发送给在步骤305接收的map-notify报文所携带的xTRl 的RL0C地址。
[0063] 需要说明的是,步骤307和步骤308并没有固定的时间先后顺序,其只是出于 方便描述的目的。如上所述,为了区分MS发送的map-notify报文,本步骤308发送的 map-notify报文中携带第一标志位,用于表示map-notify报文是xTR发送的。
[0064] 本步骤308可以作为上述步骤201中将其他VM的EID地址、以及本xTR的RL0C 地址发送给其他xTR的一个优选实施例。
[0065] 步骤309,xTRl接收到map-notify报文,识别map-notify报文携带的第一标志 位,比较所述map-notify报文携带的xTR2的RL0C地址与本xTRl的RL0C地址,如果不一 致,确定VM1从xTR2新迀入至本xTRl,通过本xTRl上连接VM1的接口发送如下免费ARP : 源地址和目的地址为所述map-notify报文携带的每一 EID地址、源MAC地址为本xTRl的 MAC地址。
[0066] 本步骤309是xTRl在上述步骤303中通过检查发现本地接口 -EID地址记录中不 存在VM1的EID地址的前提下执行的。如步骤303, xTRl发送注册报文给MS,则正常情况 下,xTRl应该收到MS发送的用于回应注册报文的map-notify报文,但执行到本步骤309 时,尽管xTRl收到map-notify报文,但是,该收到的map-notify报文携带第一标志位,用 于表示是xTR发送的,并非是MS发送的,如此,xTRl收到携带第一标志位的map-notify报 文后,会比较所述map-notify报文携带的xTR2的RL0C地址与本xTRl的RL0C地址,通过 比较发现不一致,则确定VM1是从xTR2 (依据map-notify报文携带的xTR2的RL0C地址确 定的)迀出并迀入至本xTRl的,并非是直接接入至本xTRl的,基于此,xTRl通过本xTRl 连接VM1的接口发送如下免费ARP :源地址和目的地址为所述map-notify报文携带的每一 EID地址、源MAC地址为本xTRl的MAC地址。优选地,步骤309是上述步骤202的一个实施 例。
[0067] 如上述步骤308描述,xTR2发送给xTRl的map-notify报文携带的EID地址为: 与VM1在从xTR2迀出前连接xTR2上同一接口的其他VM的EID地址,如此,当xTRl接收到 xTR2发送的map-notify报文,并以map-notify报文携带的每一 EID地址分别作为源地址 和目的地址发送免费ARP后,迀移至本xTRl的VM1肯定会收到该免费ARP,当VM1收到免 费ARP后,就会依赖于收到免费ARP的接口、以及免费ARP携带的源地址、源MAC地址更新 原有的与该源地址对应的ARP表项。
[0068] 接着上面的举例:假如在VM 1未从xTR2迀出之前,VM 1、VM 2接入至xTR2的接 口 1,当xTR2确定出VM1从本xTR2迀出至xTRl后,按照步骤308的描述,xTR2将接口 1连 接的VM2的EID地址、以及本xTR2的RL0C地址组织在一个新的map-notify报文中,发送 给xTRl的RL0C地址。基于此,执行到步骤309时,xTRl接收到xTR2发送的map-notify报 文,识别map-notify报文携带的第一标志位、且比较出所述map-notify报文携带的xTR2 的RL0C地址与本xTRl的RL0C地址不一致时,通过本xTRl上连接VM1的接口发送如下免 费ARP :源地址和目的地址为所述map-notify报文携带的VM2的EID地址、源MAC地址为本 xTRl的MAC地址。如此,当VM1接收到xTRl发送的免费ARP后,会依赖于收到免费ARP的 接口、以及免费ARP携带的源地址即VM2的EID地址、源MAC地址更新已有的与该源地址即 VM2的EID地址对应的ARP表项。比如,在VM1从xTR2迀出之前,因为VM 1、VM 2接入xTR2 的同一接口 1,则VM1上已学习的与VM2的EID地址对应的ARP表项就包含:VM2的MAC地 址、VM2的EID地址、出接口为VM1直连VM2的接口,当VM1从xTR2迀出并迀入至xTRl后, VM1接收到xTRl发送的免费ARP,就会依赖于收到免费ARP的接口、以及免费ARP携带的源 地址即VM2的EID地址、源MAC地址将已有的与该源地址即VM2的EID地址对应的ARP表 项更新为以下ARP表项:免费ARP的源MAC地址即xTRl的MAC地址、VM2的EID地址、出接 口为VM1接收免费ARP的接口。这样,后续VM1访问VM2时就会依赖于更新后的VM2的EID 地址对应的ARP表项进行访问,因为更新后的VM2对应的ARP表项的出接口为VM1接收免费 ARP的接口,这能够保证VM1访问VM2的报文会经由xTRl中转经过LISP网络转发至VM2, 并非按照VM1迀出之前已有的VM2对应的ARP表项(用于VM1直接访问VM2进行访问,防 止了 VM1访问VM2的流量中断。
[0069] 至此,完成图3所示的流程。
[0070] 下面通过一个实施例对图3所示流程进行描述:
[0071] 该实施例仍以图1所示LISP组网为例,如图1所示LISP组网存在XTRA和XTRB, xTRA上的RL0C地址为1. 1. 1. l,xTRB上的RL0C地址为2. 2. 2. 2。在图1中,VMA的EID地 址为10. 1. 1. 65、VMB的EID地址为10. 1. 1. 66, VMA、VMB接入xTRA的同一接口(记为接口 A),基于图3所示流程的步骤301,在初始,xTRA本地的接口 -EID地址记录中记录了接口 A 对应VMA的EID地址和VMB的EID地址,如下表所示。
[0072]
[0073] VMA学习到VMB的EID地址即10. 1. 1. 66对应的ARP表项包括:10. 1. 1. 66、VMB 的MAC地址、出接口为VMA直连VMB的接口。该ARP表项用于VMA直接与VMB通信,不经过 xTRl中转。
[0074] VMB学习到VMA的EID地址即10. 1. 1. 65对应的ARP表项包括:10. 1. 1. 65、VMA 的MAC地址、出接口为VMB直连VMA的接口。该ARP表项用于VMB直接与VMA通信,不经过 xTRl中转。
[0075] 当VMB从xTRA迀移至xTRB时,VMB的EID地址和MAC地址不变;
[0076] VMB在访问其他一 VM时,如果发现本地不存在该VM的EID地址对应的ARP表项, 则会发送ARP报文,而如果发现本地存在该VM的EID地址对应的ARP表项,则会发送数据 报文。但不管VMB发送的报文是ARP报文还是数据报文,该报文的源地址为VMB的EID地 址。
[0077] xTRB接收到VMB发送的报文时,从本地接口 -EID地址记录中检查本地是否已记 录了该接收的报文的源地址即VMB的EID地址,如果否,向MS发送注册报文,并在本地接 口 -EID地址记录中增加本xTRB连接VMB的接口和VMB的EID地址的对应记录。注册报文 携带的EID地址为VMB的EID地址10. 1. 1. 66, RL0C地址为xTR2的RL0C地址2. 2. 2. 2 ;
[0078] MS接收到xTRB发送的注册报文后,发现注册报文携带的EID地址10. 1. 1. 66映 射的RL0C地址为1. 1. 1. 1,与注册报文携带的RL0C地址2. 2. 2. 2不一致,则向RL0C地 址1. 1. 1. 1发送map-notify报文,map-notify报文带第二标志位S,且携带EID地址 10. 1. 1. 66 和 RL0C 地址 2. 2. 2. 2 ;
[0079] RL0C地址1. 1. 1. 1对应的xTRA接收到map-notify报文,发现map-notify报文携 带第二标志位S,则确定map-notify报文是MS发送的,从本地接口 -EID地址记录中查询 到map-notify报文携带的EID地址10. 1. 1. 66,并比较map-notify报文携带的RL0C地址 2. 2. 2. 2和本xTRl的RL0C地址1. 1. 1. 1,发现两者不一致,则认为EID地址为10. 1. 1. 66 的VMB从本xTRA迀移至RL0C地址为2. 2. 2. 2的xTRB。
[0080] xTRA从本地接口 -EID地址记录中查询到EID地址10. 1. 1. 66对应的接口为接口 A,则检查接口 A除了对应EID地址10. 1. 1. 66之外还对应EID地址10. 1. 1. 65,通过接口 A 发送免费ARP,免费ARP的源地址和目的地址是EID地址10. 1. 1. 66,源MAC地址是xTRl的 MAC地址;并把EID地址10. 1. 1. 65和本xTRA的RL0C地址1. 1. 1. 1组织在新的map-notify 报文(带第一标志位)发送给RL0C地址2. 2. 2. 2,并从本地接口 -EID地址记录中删除接口 A与VMB的EID地址之间的对应记录。
[0081] 当连接在接口 A的VMA收到xTRA发送的免费ARP后,更新本地存在的与免费ARP 的源地址EID地址10. 1. 1. 66对应的ARP表项,这样,后续VMA访问EID地址10. 1. 1. 66 时,按照更新后的ARP表项访问;该更新后的EID地址10. 1. 1. 66对应的ARP表项的出接口 为VMA接收免费ARP的接口,这能够保证VMA访问EID地址10. 1. 1. 66的报文会经由xTRA 中转经过LISP网络转发至EID地址10. 1. 1. 66,并非按照VMB迀移之前已有的EID地址 10. 1. 1. 66对应的ARP表项(用于VMA直接访问EID地址10. 1. 1. 66)进行访问,防止了 VMA 访问EID地址10. 1. 1. 66的流量中断。
[0082] 当xTRB收到xTRA发送的map-notify报文后,识别map-notify报文携带的第一标 志位,比较所述map-notify报文携带的RL0C地址1. 1. 1. 1,与本xTRB的RL0C地址2. 2. 2. 2 不一致,确定VMB从RL0C地址为1. 1. 1. 1的xTRA迀移至本xTRB,则通过连接VMB的接口 B 发送免费ARP,免费ARP的源地址和目的地址是map-notify报文的EID地址10. 1. 1. 1. 65, 源MAC地址是xTRB的MAC ;VMB收到xTRB发送的免费ARP后,更新本地存在的与免费ARP的 源地址EID地址10. 1. 1. 65对应的ARP表项,这样,后续VMB访问EID地址10. 1. 1. 65时,按 照更新后的ARP表项访问;该更新后的EID地址10. 1. 1.65对应的ARP表项的出接口为VMB 接收免费ARP的接口,这能够保证VMB访问EID地址10. 1. 1. 65的报文会经由xTRB中转经 过LISP网络转发至EID地址10. 1. 1.65,并非按照VMB迀移之前已有的EID地址10. 1. 1.65 对应的ARP表项(用于VMB直接访问EID地址10. 1. 1. 65)进行访问,防止了 VMB访问EID 地址10. 1. 1.65的流量中断。
[0083] 以上对本发明提供的方法进行了描述。下面对本发明提供的设备进行描述:
[0084] 参见图5,图5为本发明提供的设备结构图。该设备应用于xTR,包括:
[0085] 迀出处理单元,用于确定虚拟机VM从本xTR迀出时,检查本xTR在VM迀出前连接 该VM的接口是否还连接其他VM,如果是,通过所述接口发送以下免费ARP :源地址和目的 地址为所述VM的端点标识EID地址,并将所述其他VM的EID地址、以及本xTR的路由位置 RL0C地址发送给其他xTR,所述其他xTR为所述VM从本xTR迀出后新迀入的xTR ;
[0086] 迀入处理单元,用于确定VM新迀入至本xTR时,接收VM在迀入至本xTR前连接的 xTR发送的EID地址和RL0C地址,比较接收的RL0C地址与本xTR的RL0C地址不一致,以接 收的每一 EID地址为源地址和目的地址发送免费ARP。
[0087] 优选地,该设备进一步包括:
[0088] 存储单元,用于将本xTR的接口、以及该接口连接的VM的EID地址对应记录;
[0089] 所述迀出处理单元检查本xTR在VM迀出前连接VM的接口是否还连接其他VM包 括:
[0090] 从所述存储单元中查找到从本xTR迀出的VM的EID地址对应的接口;
[0091] 从所述存储单元中检查该找到的接口除了对应以下EID地址之外是否还对应其 他VM的EID地址:从本xTR迀出的VM的EID地址;
[0092] 如果是,确定所述接口连接其他VM,如果否,确定所述接口未连接其他VM。
[0093] 优选地,迀出处理单元在将其他VM的EID地址、以及本xTR的RL0C地址发送给其 他xTR之后,或者在确定所述接口未连接其他VM之后,进一步从所述存储单元中删除所述 接口与从本xTR迀出的VM的EID地址之间的对应记录。
[0094] 优选地,所述迀出处理单元将其他VM的EID地址、以及本xTR的RL0C地址发送给 其他xTR包括:
[0095] 将其他VM的EID地址、以及本xTR的RL0C地址组织在一个map-notify报文中, 发送给其他xTR,所述map-notify报文中携带第一标志位,用于表示所述map-notify报文 是由xTR发送。
[0096] 优选地,所述迀入处理单元接收VM在迀入至本xTR前连接的xTR发送的EID地址 和RL0C地址,比较接收的RL0C地址与本xTR的RL0C地址不一致,以接收的每一 EID地址 为源地址和目的地址发送免费ARP包括:
[0097] 接收 map-notify 报文;
[0098] 识别所述map-notify报文中携带第一标志位,贝lj比较所述map-notify报文携带 的RL0C地址与本xTR的RL0C地址是否一致,如果不一致,则通过连接新迀入至本xTR的VM 的接口分别发送以下免费ARP :源MAC地址为本xTR的MAC地址、源地址和目的地址为所述 map-notify报文携带的每一 EID地址。
[0099] 优选地,所述迀入处理单元确定VM新迀入至本xTR时,进一步识别连接新迀入至 本xTR的VM的接口,将识别出的接口、以及新迀入至本xTR的VM的EID地址对应记录。
[0100] 至此,完成本发明提供的设备描述。
[0101] 本发明还提供了对应图5所示设备的硬件结构。参见图6,图6为本发明提供的设 备硬件结构图。如图6所示,该设备可包括:
[0102] 接口,存储器,CPU;
[0103] 其中,存储器,用于存放所述迀出处理单元的运行程序,以及所述迀入处理单元的 运行程序;
[0104] CPU,用于控制所述迀出处理单元的运行程序,以及所述迀入处理单元的运行程 序;
[0105] 其中,所述迀出处理单元的运行程序包括上述迀出处理单元执行的各个操作;所 述迀入处理单元的运行程序包括上述迀入处理单元执行的各个操作。
[0106] 优选地,如图6所示,存储器进一步包括:
[0107] 存储单元,用于存放XTR的接口、以及该接口连接的VM的EID地址对应记录,以供 所述迀出处理单元依据存储单元运行包含以下程序时:检查本xTR在VM迀出前连接VM的 接口是否还连接其他VM,具体如上面描述的所述迀出处理单元检查本xTR在VM迀出前连接 VM的接口是否还连接其他VM的具体操作。
[0108] 至此,完成本发明提供的设备硬件结构描述。
[0109] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1. 一种防止虚拟机VM迀移引起的流量中断方法,其特征在于,该方法应用于边缘设备 xTR,该方法包括: 确定虚拟机VM从本xTR迀出时,检查本xTR在VM迀出前连接该VM的接口是否还连接 其他VM,如果是,通过所述接口发送以下免费ARP :源地址和目的地址为所述VM的端点标识 EID地址,并将所述其他VM的EID地址、以及本xTR的路由位置RLOC地址发送给其他xTR, 所述其他xTR为所述VM从本xTR迀出后新迀入的xTR ; 确定VM新迀入至本xTR时,接收VM在迀入至本xTR前连接的xTR发送的EID地址和 RLOC地址,比较接收的RLOC地址与本xTR的RLOC地址不一致时,以接收的每一 EID地址为 源地址和目的地址发送免费ARP。2. 根据权利要求1所述的方法,其特征在于,该方法之前进一步包括: 将本xTR的接口、以及该接口连接的VM的EID地址对应记录; 所述检查本xTR在VM迀出前连接VM的接口是否还连接其他VM包括: 从所述记录中查找到从本xTR迀出的VM的EID地址对应的接口; 从所述记录中检查该找到的接口除了对应以下EID地址之外是否还对应其他VM的EID 地址:从本xTR迀出的VM的EID地址; 如果是,确定所述接口连接其他VM,如果否,确定所述接口未连接其他VM。3. 根据权利要求2所述的方法,其特征在于,在将其他VM的EID地址、以及本xTR的 RLOC地址发送给其他xTR之后,或者在确定所述接口未连接其他VM之后,进一步包括: 从所述记录中删除所述接口与从本xTR迀出的VM的EID地址之间的对应记录。4. 根据权利要求1所述的方法,其特征在于,所述将其他VM的EID地址、以及本xTR的 RLOC地址发送给其他xTR包括: 将其他VM的EID地址、以及本xTR的RLOC地址组织在一个map-notify报文中,发送 给其他xTR,所述map-notify报文中携带第一标志位,用于表示所述map-notify报文是由 xTR发送。5. 根据权利要求4所述的方法,其特征在于,所述接收VM在迀入至本xTR前连接的xTR 发送的EID地址和RLOC地址,比较接收的RLOC地址与本xTR的RLOC地址不一致时,以接 收的每一 EID地址为源地址和目的地址发送免费ARP包括: 接收map-notify报文; 识别所述map-notify报文中携带第一标志位,则比较所述map-notify报文携带的 RLOC地址与本xTR的RLOC地址是否一致,如果不一致,则通过连接新迀入至本xTR的VM 的接口分别发送以下免费ARP :源MAC地址为本xTR的MAC地址、源地址和目的地址为所述 map-notify报文携带的每一 EID地址。6. 根据权利要求1所述的方法,其特征在于,确定VM新迀入至本xTR时,进一步包括: 识别连接新迀入至本xTR的VM的接口; 将识别出的接口、以及新迀入至本xTR的VM的EID地址对应记录。7. -种防止虚拟机VM迀移引起的流量中断设备,其特征在于,该设备应用于边缘设备 xTR,包括: 迀出处理单元,用于确定虚拟机VM从本xTR迀出时,检查本xTR在VM迀出前连接该VM 的接口是否还连接其他VM,如果是,通过所述接口发送以下免费ARP :源地址和目的地址为 所述VM的端点标识EID地址,并将所述其他VM的EID地址、以及本xTR的路由位置RLOC 地址发送给其他xTR,所述其他xTR为所述VM从本xTR迀出后新迀入的xTR ; 迀入处理单元,用于确定VM新迀入至本xTR时,接收VM在迀入至本xTR前连接的xTR 发送的EID地址和RLOC地址,比较接收的RLOC地址与本xTR的RLOC地址不一致时,以接 收的每一 EID地址为源地址和目的地址发送免费ARP。8. 根据权利要求7所述的设备,其特征在于,该设备进一步包括: 存储单元,用于将本xTR的接口、以及该接口连接的VM的EID地址对应记录; 所述迀出处理单元检查本xTR在VM迀出前连接VM的接口是否还连接其他VM包括: 从所述存储单元中查找到从本xTR迀出的VM的EID地址对应的接口; 从所述存储单元中检查该找到的接口除了对应以下EID地址之外是否还对应其他VM 的EID地址:从本xTR迀出的VM的EID地址; 如果是,确定所述接口连接其他VM,如果否,确定所述接口未连接其他VM。9. 根据权利要求8所述的设备,其特征在于,迀出处理单元在将其他VM的EID地址、以 及本xTR的RLOC地址发送给其他xTR之后,或者在确定所述接口未连接其他VM之后,进一 步从所述存储单元中删除所述接口与从本xTR迀出的VM的EID地址之间的对应记录。10. 根据权利要求7所述的设备,其特征在于,所述迀出处理单元将其他VM的EID地 址、以及本xTR的RLOC地址发送给其他xTR包括: 将其他VM的EID地址、以及本xTR的RLOC地址组织在一个map-notify报文中,发送 给其他xTR,所述map-notify报文中携带第一标志位,用于表示所述map-notify报文是由 xTR发送。11. 根据权利要求10所述的设备,其特征在于,所述迀入处理单元接收VM在迀入至本 xTR前连接的xTR发送的EID地址和RLOC地址,比较接收的RLOC地址与本xTR的RLOC地 址不一致时,以接收的每一 EID地址为源地址和目的地址发送免费ARP包括: 接收map-notify报文; 识别所述map-notify报文中携带第一标志位,则比较所述map-notify报文携带的 RLOC地址与本xTR的RLOC地址是否一致,如果不一致,则通过连接新迀入至本xTR的VM 的接口分别发送以下免费ARP :源MAC地址为本xTR的MAC地址、源地址和目的地址为所述 map-notify报文携带的每一 EID地址。12. 根据权利要求7所述的设备,其特征在于,所述迀入处理单元确定VM新迀入至本 xTR时,进一步识别连接新迀入至本xTR的VM的接口,将识别出的接口、以及新迀入至本 xTR的VM的EID地址对应记录。
【文档编号】H04L12/741GK105991440SQ201510074016
【公开日】2016年10月5日
【申请日】2015年2月12日
【发明人】林长望
【申请人】杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1