CN113296869B - 一种虚拟机vm的迁移方法及装置 - Google Patents

一种虚拟机vm的迁移方法及装置 Download PDF

Info

Publication number
CN113296869B
CN113296869B CN202010112867.1A CN202010112867A CN113296869B CN 113296869 B CN113296869 B CN 113296869B CN 202010112867 A CN202010112867 A CN 202010112867A CN 113296869 B CN113296869 B CN 113296869B
Authority
CN
China
Prior art keywords
leaf node
route
address
node
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010112867.1A
Other languages
English (en)
Other versions
CN113296869A (zh
Inventor
黄香
孙春霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010112867.1A priority Critical patent/CN113296869B/zh
Priority to PCT/CN2020/137274 priority patent/WO2021169514A1/zh
Publication of CN113296869A publication Critical patent/CN113296869A/zh
Application granted granted Critical
Publication of CN113296869B publication Critical patent/CN113296869B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

本申请实施例涉及一种虚拟机VM的迁移方法,方法应用于EVPN中,EVPN包括第一叶节点、第二叶节点和VM,方法包括:第二叶节点确定VM由第一叶节点迁移到至第二叶节点;第二叶节点生成本地路由表项,本地路由表项包括第一目的IP地址和下一跳标识,其中,第一目的IP地址为VM的IP地址,下一跳标识用于指示第二叶节点;第二叶节点接收虚拟扩展局域网VXLAN报文,其中,VXLAN报文包括第一报文,第一报文的目的地是VM;第二叶节点根据本地路由表项,将第一报文转发至VM。本申请通过生成临时的本地路由,可以解决路由临时环路问题。

Description

一种虚拟机VM的迁移方法及装置
技术领域
本申请涉及虚拟网络领域,尤其涉及一种减少虚拟机VM迁移时路由占用内存的方法及其装置。
背景技术
在分布式的虚拟扩展局域网(virtual extensible local area network,VXLAN)以太虚拟私有网络(ethernet virtualprivate network,EVPN)的网络部署中,虚拟机(virtual machine,VM)的迁移时有发生。对于分布式的VXLAN EVPN组网部署,其组网中的路由反射器(route reflector,RR)上可能会存在大量的EVPN邻居,例如可以是400多个。然而整个分布式VXLAN EVPN组网的路由量是有限的,所以当EVPN邻居越多,则具体到每一位EVPN邻居则可以处理的路由量相对就比较少了。当网络中存在大量的VM上线或下线时,则会产生大量的EVPN路由用于叶节点添加或删除上线或下线的VM对应的路由表项。若此时存在VM的迁移,则极有可能因为路由拥塞,从而导致出现路由临时环路的问题,并导致VM迁移以后,其VM对应的业务无法及时得到恢复。
发明内容
本申请实施例提供了一种虚拟机VM的迁移方法,当VM发生迁移时通过发送地址解析报文,以便叶节点根据该报文生成临时的本地路由,当VM迁移完成后再将临时的本地路由删除,解决了由于路由拥塞导致的路由临时环路问题,同时由于生成的本地路由及时删除,节省了VLINK路由量同时还节省了设备的内存占用。
第一方面,提供了一种虚拟机VM的迁移方法,方法应用于EVPN中,EVPN包括第一叶节点、第二叶节点和VM,方法包括:第二叶节点确定VM由第一叶节点迁移至第二叶节点;第二叶节点生成本地路由表项,本地路由表项包括第一目的互联网协议(internetprotocol,IP)地址和下一跳标识,其中,第一目的IP地址为VM的IP地址,下一跳标识用于指示第二叶节点;第二叶节点接收虚拟扩展局域网VXLAN报文,VXLAN报文包括第二目的IP地址,第二目的IP地址为第二叶节点的VXLAN隧道端点VTEP地址;其中,VXLAN报文包括第一报文,第一报文的目的地是VM;第二叶节点根据本地路由表项,将第一报文转发至VM。本申请通过生成临时的本地路由,可以解决路由临时环路问题。
在一个可能的实施方式中,在第二叶节点确定VM由第一叶节点迁移至第二叶节点之前,方法还包括:第二叶节点接收VM发送的地址解析报文;第二叶节点将地址解析报文中的信息添加至地址解析表中;以及通过VXLAN隧道将地址解析报文发送至第一叶节点,以便第一叶节点根据地址解析报文发送撤销路由报文到第二叶节点。
在一个可能的实施方式中,第二叶节点确定VM由第一叶节点迁移至第二叶节点包括:当第二叶节点识别VM的出端口由隧道侧变为用户侧时,确定VM由第一叶节点迁移至第二叶节点,其中,第一叶节点为除第二叶节点以外的任意一个叶节点。
在一个可能的实施方式中,第二叶节点识别VM的出端口由隧道侧变为用户侧,包括:第二叶节点根据地址解析报文中的源IP查询路由表项,确定源IP对应的路由表项中出端口为VXLAN端口;第二叶节点识别VM的出端口由隧道侧变为用户侧。
在一个可能的实施方式中,地址解析报文包括VM的IP地址和媒体访问控制(mediaaccess control,MAC)地址。
在一个可能的实施方式中,地址解析报文为地址解析协议ARP报文或邻居发现协议ND报文。本申请可以在IPV4协议环境下进行,同时也可以在IPV6协议环境下进行。
在一个可能的实施方式中,在第二叶节点确定VM由第一叶节点迁移至第二叶节点之后,方法还包括:第二叶节点生成MAC/IP通告路由,并将MAC/IP通告路由转发至第一叶节点,以便更新第一叶节点的路由表项。
在一个可能的实施方式中,第二叶节点生成MAC/IP通告路由包括:生成MAC/IP通告路由,MAC/IP通告路由包括EVPN网络层可达性信息(network layer reachabilityinformation,NLRI);将EVPN NLRI中的序列值加一,其中序列值初始值为0。本申请通过对序列值进行加一,可以识别出哪些VM是迁移用户。
在一个可能的实施方式中,MAC/IP通告路由包括VM的MAC地址和IP地址。
在一个可能的实施方式中,在第二叶节点生成本地路由表项之后,方法还包括:第二叶节点接收到撤销路由报文后,删除第二叶节点中关于VM的路由表项。
在一个可能的实施方式中,方法还包括:第二叶节点接收到所有汇聚节点转发的撤销路由报文后,删除本地路由表项。本申请在VM迁移后删除临时的本地路由,节省了VLINK路由量同时还节省了设备的内存占用。
第二方面,提供了一种虚拟机VM的迁移装置,装置应用于EVPN中的第二叶节点,EVPN还包括第一叶节点和VM,装置包括:处理单元,用于确定VM由第一叶节点迁移至第二叶节点;处理单元还用于,生成本地路由表项,本地路由表项包括第一目的互联网协议IP地址和下一跳标识,其中,第一目的IP地址为VM的IP地址,下一跳标识用于指示第二叶节点;接收单元,用于接收虚拟扩展局域网VXLAN报文,VXLAN报文包括第二目的IP地址,第二目的IP地址为第二叶节点的VXLAN隧道端点VTEP地址;其中,VXLAN报文包括第一报文,第一报文的目的地是VM;发送单元,用于根据本地路由表项,将第一报文转发至VM。本申请通过生成临时的本地路由,可以解决路由临时环路问题。
在一个可能的实施方式中,接收单元还用于,接收VM发送的地址解析报文;处理单元还用于,将地址解析报文中的信息添加至地址解析表中;发送单元还用于,通过VXLAN隧道将地址解析报文发送至第一叶节点,以便第一叶节点根据地址解析报文发送撤销路由报文到第二叶节点。
在一个可能的实施方式中,处理单元还用于:当识别VM的出端口由隧道侧变为用户侧时,确定VM由第一叶节点迁移至第二叶节点,其中,第一叶节点为除第二叶节点以外的任意一个叶节点。
在一个可能的实施方式中,处理单元还用于:根据地址解析报文中的源IP查询路由表项,确定源IP对应的路由表项中出端口为VXLAN端口;识别VM的出端口由隧道侧变为用户侧。
在一个可能的实施方式中,接收单元还用于,接收撤销路由报文;处理单元还用于,删除本地路由表项。本申请在VM迁移后删除临时的本地路由,节省了VLINK路由量同时还节省了设备的内存占用。
在一个可能的实施方式中,地址解析报文包括VM的IP地址和MAC地址。
在一个可能的实施方式中,地址解析报文为地址解析协议ARP报文或邻居发现协议ND报文。本申请可以在IPV4协议环境下进行,同时也可以在IPV6协议环境下进行。
在一个可能的实施方式中,处理单元还用于,生成MAC/IP通告路由;发送单元还用于,并将MAC/IP通告路由转发至第一叶节点,以便更新第一叶节点的路由表项。
在一个可能的实施方式中,处理单元还用于:生成MAC/IP通告路由,MAC/IP通告路由包括EVPN网络层可达性信息NLRI;将EVPN NLRI中的序列值加一,其中序列值初始值为0。本申请通过对序列值进行加一,可以识别出哪些VM是迁移用户。
在一个可能的实施方式中,MAC/IP通告路由包括VM的MAC地址和IP地址。
在一个可能的实施方式中,接收单元还用于,接收撤销路由报文;处理单元还用于,根据接收到的撤销路由报文,删除第二叶节点中关于VM的路由表项。
在一个可能的实施方式中,处理单元还用于,在接收到所有汇聚节点转发的撤销路由报文后,删除本地路由表项。本申请在VM迁移后删除临时的本地路由,节省了VLINK路由量同时还节省了设备的内存占用。
第三方面,提供了一种虚拟机VM的迁移装置,装置应用于EVPN中的第二叶节点,EVPN还包括第一叶节点和VM,装置包括:处理器,用于与存储器耦合,以及读取并执行存储器中的指令;当处理器运行时执行指令,使得处理器还用于:确定VM由第一叶节点迁移至第二叶节点;生成本地路由表项,本地路由表项包括第一目的互联网协议IP地址和下一跳标识,其中,第一目的IP地址为VM的IP地址,下一跳标识用于指示第二叶节点;接收虚拟扩展局域网VXLAN报文,VXLAN报文包括第二目的IP地址,第二目的IP地址为第二叶节点的VXLAN隧道端点VTEP地址;其中,VXLAN报文包括第一报文,第一报文的目的地是VM;根据本地路由表项,将第一报文转发至VM。本申请通过生成临时的本地路由,可以解决路由临时环路问题。
在一个可能的实施方式中,处理器还用于:接收VM发送的地址解析报文;将地址解析报文中的信息添加至地址解析表中;以及通过VXLAN隧道将地址解析报文发送至第一叶节点,以便第一叶节点根据地址解析报文发送撤销路由报文到第二叶节点。
在一个可能的实施方式中,处理器还用于:当识别VM的出端口由隧道侧变为用户侧时,确定VM由第一叶节点迁移至第二叶节点,其中,第一叶节点为除第二叶节点以外的任意一个叶节点。
在一个可能的实施方式中,处理器还用于:根据地址解析报文中的源IP查询路由表项,确定源IP对应的路由表项中出端口为VXLAN端口;识别VM的出端口由隧道侧变为用户侧。
在一个可能的实施方式中,地址解析报文包括VM的IP地址和MAC地址。
在一个可能的实施方式中,地址解析报文为地址解析协议ARP报文或邻居发现协议ND报文。本申请可以在IPV4协议环境下进行,同时也可以在IPV6协议环境下进行。
在一个可能的实施方式中,处理器还用于:生成MAC/IP通告路由,并将MAC/IP通告路由转发至第一叶节点,以便更新第一叶节点的路由表项。
在一个可能的实施方式中,处理器还用于:生成MAC/IP通告路由,MAC/IP通告路由包括EVPN NLRI;并将EVPN NLRI中的序列值加一,其中序列值初始值为0。本申请通过对序列值进行加一,可以识别出哪些VM是迁移用户。
在一个可能的实施方式中,MAC/IP通告路由包括VM的MAC地址和IP地址。
在一个可能的实施方式中,处理器还用于:接收到转发的撤销路由报文后,删除第二叶节点中关于VM的路由表项。
在一个可能的实施方式中,处理器还用于:接收到所有汇聚节点转发的撤销路由报文后,删除本地路由表项。本申请在VM迁移后删除临时的本地路由,节省了VLINK路由量同时还节省了设备的内存占用。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,其特征在于,当指令在终端上运行时,使得终端执行第一方面任意一项的方法。
第五方面,提供了一种包含指令的计算机程序设备,当其在终端上运行时,使得终端执行第一方面中的任一项的方法。
本申请公开了一种VM的迁移方法,在VM发生迁移时主动给相连接的叶节点发送地址解析报文,使得叶节点生成临时的本地路由。当VM完成迁移后再将临时的本地路由删除。解决了VM迁移导致的路由临时环路问题,并且可以实现VLINK的所有功能,同时部署较为简单。通过生成临时的本地路由节省了VLINK路由量,当VM迁移完成后删除临时的本地路由还可节省设备的内存占用。
附图说明
图1为本申请实施例提供的一种VM迁移场景示意图;
图2为本申请实施例提供的一种VM迁移前网络结构示意图;
图3为本申请实施例提供的一种叶节点路由路径示意图;
图4为本申请实施例提供的一种VM迁移过程示意图;
图5为本申请实施例提供的一种生成本地路由示意图;
图6为本申请实施例提供的一种VM迁移过程中叶节点路由表示意图;
图7为本申请实施例提供的一种路由更新示意图;
图8为本申请实施例提供的另一种路由更新示意图;
图9为本申请实施例提供的另一种VM迁移过程中叶节点路由表示意图;
图10为本申请实施例提供的一种路由临时环路示意图;
图11为本申请实施例提供的一种本地路由应用场景示意图;
图12为本申请实施例提供的又一种路由更新示意图;
图13为本申请实施例提供的一种迁移完成后叶节点路由示意图;
图14为本申请实施例提供的一种VM迁移方法流程图;
图15为本申请实施例提供的另一种VM迁移方法流程图;
图16为本申请实施例提供的一种VM迁移架构示意图;
图17为本申请实施例提供的另一种VM迁移架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请可以应用在VXLAN网络中的VM虚拟迁移的场景。如图1所示的一种VM迁移场景示意图,可以看出,该场景中包括一种拓扑网络结构,该网络结构为两层网络结构,其中包括叶(leaf)节点以及汇聚(spine)节点。其中,leaf节点可以是如图1中包括的第一叶节点、第二叶节点和第三叶节点;以及,spine节点可以是图1中包括的第一汇聚节点、第二汇聚节点和第三汇聚节点。第一叶节点也可表述为leaf1节点,同理,第二叶节点也可表述为leaf2节点,第三叶节点也可表述为leaf3节点,第一汇聚节点也可表述为spine1节点,第二汇聚节点也可表述为spine2节点,第三汇聚节点也可表述为spine3节点。
首先需要在leaf节点与spine节点之间建边界网关协议(border gatewayprotocol,BGP)EVPN邻居,正如图1所示叶节点与汇聚节点之间的连线关系。例如spine1节点分别与leaf1节点、leaf2节点以及leaf3节点相连,也就说明在spine1节点上存在有三个EVPN邻居,三个EVPN邻居分别为leaf1节点、leaf2节点和leaf3节点。显然,spine2节点与spine3节点与spine1节点相类似,在此不再赘述。之后可以在多个leaf节点中的任意两个leaf节点之间建立转发层面的VXLAN隧道。其中,多个汇聚节点构成了叶—脊拓扑网络结构中的第一层网络结构,多个叶节点构成了叶—脊拓扑网络结构中的第二层网络结构。可以理解的是,虽然VXLAN隧道是转发层面的,但是叶节点通过VXLAN隧道发送数据报文的时候,仍然需要通过汇聚节点进行转发,只是由于数据报文与协议报文不同,无需过多考虑协议方面的问题,因此比通过汇聚节点进行协议层面的转发速度更快,也不存在协议层面进行路由转发时的路由拥塞问题。因此,可以将VXLAN隧道看作不同叶节点之间的直连隧道。本领域人员应当注意的是,通过VXLAN隧道可以直接转发数据报文,因此无论叶节点通过哪一个汇聚节点进行转发,均可以看做为同一个VXLAN隧道。
任意一个spine节点在该网络结构中均作为RR,主要用于进行路由反射。可以理解的是,若任意一个spine节点接收到的是协议报文,则根据路由协议进行路由转发;若任意一个spine节点接收到的是数据报文时,则可以直接将数据进行转发。
对于leaf1节点,其下挂有VM1。在一个例子中,例如银行具有多个客户,每个客户或每类客户可以对应一个VM。每个客户可能会具有多个业务,对于一个VM显然也关联了该客户或该类客户的一系列业务。当客户需要进行迁移时,同时也意味着需要将VM进行迁移。例如图1中将leaf1节点下挂的VM1迁移至leaf2节点,形成leaf2节点下挂的VM1’。对于迁移后的VM1’,其他leaf节点例如leaf3节点下挂的VM2,仍然可以通过leaf2与leaf3之间的VXLAN隧道进行互通。
每个RR上具有多个EVPN邻居,在一个例子中,假设每个RR上的EVPN邻居为400个邻居,每个RR每秒处理路由量为1兆(M)。当然可以理解的是,对于RR每秒处理路由量,可以根据spine节点每秒处理路由的数量决定,其受限于spine节点的硬件设备能力。同时,可以将每个RR每秒的处理路由量作为整个网络每秒最大处理路由量。若假设该网络每秒最大处理路由量为1M时,对于每个EVPN邻居可处理的最大路由量可能仅为2.56k左右。如果存在大量的VM不断上线、下线,显然若转发至某一个EVPN邻居的路由量远远超过2.56k时,对于该EVPN邻居来讲在一秒钟内是无法及时处理的,无法及时处理的路由则会造成路由拥塞。若此时又出现VM迁移的情况,例如VM1从leaf1节点迁移至leaf2节点,将会出现因路由拥塞而导致的路由临时环路问题。
本申请通过在分布式VXLAN EVPN网络中,在VM发生迁移时主动上报地址解析报文至与VM相连接的leaf节点,该leaf节点根据地址解析报文修改地址解析表,然后转发地址解析报文给其他leaf节点,同时生成本地路由以及EVPN NLRI。并且将生成的EVPN NLRI发送至spine节点,以便spine节点将EVPN NLRI转发至其他leaf节点并更新相应的路由表,解决了路由临时环路问题,并且也不会增加网络业务的部署复杂度。当VM完成迁移后对生成的本地路由进行及时的回收,保障了设备、网络中的路由量不被过多占用,并且减少了设备内存的使用率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细描述。
图2为本申请实施例提供的一种VM迁移前网络结构示意图。
如图2所示,本申请涉及到的网元可以包括VM、leaf节点以及spine节点。其中,VM可以表示为某个用户或者是某一类用户。不同的leaf节点之间可以通过VXLAN隧道相连接,leaf节点即VXLAN隧道两端的设备。spine节点可以对接收到的报文以及路由进行路由反射,其主要作为路由反射器。在一个例子中,spine节点接收的报文可以为VXLAN报文、MAC/IP通告路由等。spine节点与leaf节点之间可以建立BGP EVPN邻居。
在VM进行迁移之前,VM1下挂在第一叶节点上,即leaf1节点。所以对于leaf1节点的路由表来讲,并不存在关于VM1的主机路由,leaf1节点可以依赖ARP表项将接收到的数据转发至VM1。对于leaf2节点和leaf3节点的路由表,均存在VM1对应的主机路由。其中,VTEP的表现形式可以是地址形式。对于路由表中的每一条路由表项,可以包含目的IP地址、下一跳标识,以及出端口标识(图中未示出)。下一跳标识可以是目的leaf节点的VXLAN隧道端点(virtual extensible local area networktunnel endpoints,VTEP)。当然,图2中为方便示意,仅示出下一跳的leaf节点标识,例如“下一跳leaf1节点”,但可以理解的是,其完整含义为“下一跳leaf1节点的VTEP”或直接表示“下一跳a.b.c.d”,其中,a.b.c.d为leaf1节点的VTEP,a、b、c、d为0~255之间的任意正整数。对于leaf2节点和leaf3节点中VM1对应的主机路由可以均为3条路由。可以理解的是该路由数量由spine节点的数量决定。例如图3所示出的leaf2节点的3条路由。可以看出,由leaf2节点指向spine3节点,然后经spine3节点转发至leaf1节点,此路径为1条路由。同理,leaf2节点指向spine2节点的路径以及spine1节点的路径为另外两条路由。可以理解的是,leaf2节点指向任意一个spine节点的路径均可以看作是一条路由。因此,某一个leaf节点存在的路由数量与网络结构中spine节点的个数是相同的,可以通过spine节点的数量,确定某一个leaf节点内关于某一VM的路由数量。显然,在其他例子中若存5个spine节点,则某一个leaf节点内关于某一VM的路由数量就为5条。
可以理解的是,虽然leaf2节点和leaf3节点上都存在多条路由,但每次需要进行路由时,可根据实际的spine节点的拥塞情况或预设的路由选择方案,优选其中的1条路由生效即可。
当VM1由leaf1节点迁移至leaf2节点后,可以如图4示出的一种VM迁移过程示意图。
在一个实施例中,首先VM1由leaf1节点迁移至leaf2节点,即图中的①。可以用VM1’表示迁移后的VM1。可以理解的是,由于VM1’是迁移后的VM1,因此,VM1’与VM1的MAC地址以及IP地址是相同的,例如其IP地址可以同为10.1.1.1。当VM1迁移至leaf2节点之后,VM1’向leaf2节点发送地址解析报文,即图中的②。在一个例子中,地址解析报文可以是免费ARP报文或是免费ND报文。在另一个例子中,免费ARP报文或免费ND报文包括VM1’的MAC地址以及VM1’的IP地址。
可以理解的是若当前网络环境采用IPV4协议时,则可以选择发送免费ARP报文;若当前网络环境采用IPV6协议时,则选择发送免费ND报文。对于leaf2节点,则根据接收到的地址解析报文,将VM1’的MAC地址与IP地址之间的映射关系记录至地址解析表中。
接下来本申请将以网络环境采用IPV4协议进行描述,因此VM1’发送的是免费ARP报文。当然可以理解的是,若采用IPV6协议,则采用ND来代替ARP的相应功能即可。在一个例子中,地址解析表可以是leaf2节点的ARP表,ARP表中可以包含有多个ARP表项。由于地址解析报文为数据报文,并且各leaf节点之间存在转发层面上互通的二层VXLAN隧道。因此,在leaf2节点将VM1’的MAC地址与IP地址之间的映射关系记录至地址解析表的同时,还可以将接收到的地址解析报文通过VXLAN隧道直接转发至互联的leaf1节点以及leaf3节点,并刷新leaf1节点和leaf3节点上的地址解析表,即图中的③。由于leaf1节点上存在与VM1相关的ARP表项,因此leaf1节点在接收到VM1’的地址解析报文后,可以通过地址解析报文中的IP地址和MAC地址识别到与VM1相关的ARP表项,并将该ARP表项进行删除。对于leaf3节点,由于该节点上并不存在与VM1相关的ARP表项,因此leaf3节点接收到VM1’的地址解析报文后,可以将该报文直接丢弃掉。可以理解的是,若处于IPV6协议的网络环境中,则地址解析表为ND表,并且ND表中可以包含有多个ND表项,对应的leaf节点将根据接收到的地址解析报文更新地址解析表中与VM相关的ND表项。
当leaf1节点检测到指向VM1的ARP表项被删除后,可以生成撤销路由报文并发送至所有的spine节点,即图中的④。其中,撤销路由报文可以是BGP撤销(withdraw)报文。在一个例子中,leaf1节点可以通过边界路由器将生成的BGP withdraw报文发送至各个spine节点,用于通知其他leaf节点撤销指向leaf1节点VTEP的VM1主机路由。在另一个例子中,leaf1节点可以包括第一ARP控制器和第一BGP控制器,第一ARP控制器可以修改leaf1节点中ARP表的ARP表项,例如添加、修改或删除。第一ARP控制器可以在检测到与VM1相关的ARP表项被删除时通知第一BGP控制器,以便第一BGP控制器生成BGP withdraw报文并通过边界路由器发送至各个spine节点。
继续回到②,leaf2节点在接收到VM1’发送的地址解析报文后,会将VM1’的MAC地址与IP地址之间的映射关系记录至地址解析表中。之后,leaf2节点可以确定VM1’的出端口发生了变化。可以理解的是,地址解析表中的对应表项中,还可以包括端口号。显然,当leaf2节点将VM1’的MAC地址与IP地址之间的映射关系记录至地址解析表中之后,该条ARP表项中同时会记录VM1’对应的出端口的端口号,即“用户侧”。leaf2节点通过查询自身节点的路由表,可以发现路由表中记录的VM1的路由表项中,出端口标识为“VXLAN”,即表示为“隧道侧”。显然,路由表中VM1的出端口标识与ARP表中的端口号不一致,leaf2节点可以确定该VM1’为迁移用户。然后leaf2节点可以生成临时的本地路由,即图中的⑤。
如图5示出了一种生成本地路由示意图。leaf2节点可以包括第二ARP控制器和第二BGP控制器。第二ARP控制器根据接收到的免费ARP报文,将VM1’的MAC地址与IP地址之间的映射关系学习到用户侧的ARP表中。由图5中可以看出,第二ARP控制器中的ARP表中关于VM1’的表项,显示了出端口为端口号b,也就意味着VM1’的出端口指向用户侧。第二ARP控制器通知第二BGP控制器,第二BGP控制器根据VM1’的IP地址查询路由表,然后确定对应的VM1的路由表项中对应的出端口为“VXLAN”(图中未示出),意味着VM1’的出端口由VXLAN(隧道侧)变为端口号XX(用户侧)。第二BGP控制器判断出VM1’用户的出端口变化情况,确定VM1’为迁移用户。同时第二BGP控制器生成临时的本地路由。并保存在leaf2的路由表中。上述图5过程完成后,如图6所示的leaf2节点的路由表中,新增了一条临时的本地路由。由于本地路由的优先级远远高于远端路由,对于leaf2节点来讲,除路由到自身以外的其他路由均可以看作是远端路由。因此,该本地路由会被优先选择。同时,本领域技术人员应当注意的是,对于这类临时生成的本地路由,leaf节点需要控制其不被发布出去。
在一些例子中,假设此时其它leaf节点有数据需要发送至VM1’,该节点可以根据目的IP地址查询路由表,并根据对应的路由表项确定下一跳为leaf2的VTEP,并将需要发送的数据添加IP头进行VXLAN封装。可以理解的是添加的IP头即为leaf2的VTEP,并将封装好的VXLAN报文通过VXLAN端口发送至leaf2节点。leaf2节点在接收到VXLAN报文后可以解封装,并得到第一报文。第一报文还包括目的IP地址,即VM1’的IP地址。leaf2节点根据该目的IP地址查询路由表,确定该目的IP地址对应的优先级最高的路由为本地路由。leaf2节点便可以根据目的IP地址查询ARP表,并获取VM1’的MAC地址以及对应的端口号。然后,leaf2节点将除目的IP地址的有效载荷(payload)通过对应的端口号转发至VM1’,从而解决了临时路由环路问题。
当然在leaf2节点生成本地路由的同时,还可以根据VM1’发送的免费ARP报文生成MAC/IP通告路由(advertisement route)。通常情况下,还可以将MAC/IP advertisementroute称为类型(type)2路由。其中,MAC/IP advertisement route可以包括EVPN NLRI。EVPN NLRI可以包括VM1’的MAC地址以及VM1’的IP地址。在另一个例子中,leaf2节点还可以在该EVPN NLRI中添加扩展属性信息,例如表1示出的。
Figure BDA0002390612550000081
表1
由表1可以看出,该扩展属性信息可以包括类型字段(type)、子类型字段(sub-type)、标志字段(flags)、保留字段(reserved)以及序列号(sequence number)。其中,sequence number的初始值为0。通常情况下,当出现VM迁移的或者进行MAC迁移的时候,均会在EVPN NLRI中添加扩展属性信息,但是对于普通的MAC迁移,其sequence number的值通常不变,即一直保持初始值。然而当leaf2节点根据VM出端口的变化识别出是VM迁移时,则需要将sequence number的值进行“加一”,从而可以区分当前迁移是普通MAC迁移还是VM迁移。当然若是正常ARP用户上线或下线,则不会在EVPN路由中添加扩展属性信息,因此也不存在sequence number。
可以理解的是,在一个例子中,当leaf2节点确定VM1’为迁移用户之后,可以将sequence number的值累加1。换句话说,由于leaf2节点识别到了VM1’的出端口发生了变化,则意味着VM1’为迁移用户,因此需要将EVPN路由中扩展属性信息的sequence number数值进行“加一”,以表明VM1’为迁移用户。当然,在其他例子中还可以通过sequence number的数值了解到VM1’经历了多少次的迁移。例如,sequence number的数值为1,则表明VM1’为迁移用户且迁移了1次。又例如,sequence number的数值为5,则表明VM1’为迁移用户且迁移了5次。
例如图5示出的,第二BGP控制器还可以根据VM1’发送的免费ARP报文生成MAC/IPadvertisement route,并且在该MAC/IP advertisement route中添加扩展属性信息,并将扩展属性信息中的sequence number数值进行“加一”,用于标记VM1’为迁移用户。可以理解的是,生成临时的本地路由和根据VM1’发送的免费ARP报文生成MAC/IP advertisementroute并不存在先后顺序,可以先生成临时的本地路由,后生成MAC/IP advertisementroute;也可以先生成MAC/IP advertisement route,后生成临时的本地路由;当然还可以同时生成本地路由和MAC/IP advertisement route,本申请在此不作限定。当然,在一些情况下,若先生成MAC/IP advertisement route,后生成临时的本地路由,则leaf2节点可以通过识别到扩展属性信息中的sequence number的值不为0,从而生成临时的本地路由,即本地路由的下一跳为0.0.0.0,用于指向leaf2节点自身。
leaf2节点在生成MAC/IP advertisement route之后,还可以将生成的MAC/IPadvertisement route发送至少一个spine节点,以便至少一个spine节点将MAC/IPadvertisement route转发至各个leaf节点并更新leaf节点上的路由表。当然,为了提高leaf节点路由表的更新效率,leaf2节点可以将生成的MAC/IP advertisement route发送至每一个spine节点。当leaf节点接收到任意一个spine节点转发的MAC/IP advertisementroute后,则可以根据MAC/IP advertisement route中的信息,将VM1’的MAC地址和IP地址更新至该leaf节点的路由表中。例如图7中的leaf1由于本身并不存在VM1’对应的主机路由,因此leaf1节点中的路由表将新增VM1’对应的主机路由;对于leaf3节点由于本身存在VM1’迁移前的主机路由,因此leaf3节点中的路由表为将VM1’对应的旧的主机路由更新为新的主机路由,例如图8示出的。对于leaf1节点和leaf3节点,在更新后均存在VM1’对应的主机路由,下一跳均是leaf2节点的VTEP。例如图9中的leaf1节点的路由表,显示更新后关于VM1’的表项,下一跳为2.2.2.2(leaf2节点的VTEP);以及leaf3节点的路由表,显示更新后关于VM1’的表项,下一跳为2.2.2.2(leaf2节点的VTEP)。
在一个例子中,假设leaf2节点并未生成临时的本地路由,因此则会产生路由临时闭环问题,例如图10示出。例如VM1的IP地址为10.1.1.1,当VM1由leaf1节点迁移至leaf2节点后,leaf1节点路由表中目标IP地址为10.1.1.1的一个表项,下一跳为leaf2节点的VTEP(2.2.2.2);leaf3节点的路由表中目标IP地址为10.1.1.1的一个表项,下一跳也为leaf2节点的VTEP(2.2.2.2)。但是由于spine节点存在路由拥塞的情况,使得leaf2节点的路由表并没有得到及时的修改,仍然可以查询到目标IP地址为10.1.1.1的表项,且下一跳为leaf1节点的VTEP(1.1.1.1)。显然这将形成一个环路,即在leaf1节点和leaf2节点之间形成一个闭环,使得发送的数据将会一直在该环路中转发下去,无法送到目的IP,从而造成极大的网络资源浪费。若出现5分钟以及更长时间的路由环路,将会导致VM迁移后,该VM所涉及到的一些业务无法及时恢复的问题。
在另一个例子中,由于本申请中的leaf2节点上生成了临时的本地路由,其场景可以由图11示出的。图11为本申请实施例提供的一种本地路由应用场景示意图。
如图11所示,在一个例子中,假设leaf1节点的VTEP为1.1.1.1、leaf2节点的VTEP为2.2.2.2、leaf3节点的VTEP为3.3.3.3、VM1’的IP地址为10.1.1.1以及VM2的IP地址为20.1.1.1。若此时,由于spine节点上存在路由拥塞,因此leaf1节点发送的撤销路由报文迟迟没有被spine节点转发至leaf2节点。此时若leaf3节点下挂的VM2(20.1.1.1)想要访问迁移后的VM1’用户(10.1.1.1)。则可以在leaf3节点上查询路由表,获取目的IP地址为10.1.1.1的路由表项。通过查询leaf3节点的路由表可以确定目的IP地址为10.1.1.1的路由表项,下一跳指向了leaf2的VTEP(2.2.2.2)。之后leaf3节点将VM2用户的业务流量进行VXLAN封装。其中,封装后VXLAN报文IP头的目的IP为leaf2节点的VTEP(2.2.2.2)、源IP为leaf3节点的VTEP(3.3.3.3)。VXLAN报文由leaf3节点发送至leaf2节点后,leaf2节点将接收到的VXLAN报文解封装,并获取VM2用户的传输的业务流量。leaf2节点根据业务流量中目的IP(10.1.1.1)继续查询路由表,以获取去往VM1’的路由路径。由于本申请生成了本地路由,因此通过查询路由表可以确定目的IP为10.1.1.1且优先级最高的路由,为临时的本地路由,即下一跳指示为0.0.0.0。显然,若不生成本地路由,则将导致leaf2节点上查询到目的IP为10.1.1.1且优先级最高的路由,下一跳一定指向leaf1节点的VTEP(1.1.1.1)。然而leaf1节点上目的IP为10.1.1.1且优先级最高的路由,下一跳则指向leaf2节点的VTEP(2.2.2.2),从而导致产生路由环路问题。显然本申请可以避免由于个别spine节点或RR上撤销路由报文迟迟没有发送至leaf节点,从而导致的路由环路问题。
在一些方案中,例如可以通过叠加使用地址解析协议(addressresolutionprotocol,ARP)虚拟链路(virtual link,VLINK)路由,即在VM1从leaf1节点迁移至leaf2节点后,将会发送免费ARP/邻居发现协议(neighbor discovery protocol,ND)。其中,免费APR/ND用于VM向leaf节点告知自身IP地址以及MAC地址。leaf2节点则可以根据接收到的免费APR/ND,在虚拟私有网络(virtual private network,VPN)中的实例路由表中生成一条本地优选路由。但是,该方案中无法区分ARP/ND用户是普通上线的用户或是VM迁移的用户,因此只要有ARP/ND就会生成对应的VLINK路由。同时生成的VLINK路由是永久存在的,无法在VM用户迁移完成后进行相应撤销或删除。对于永久生成的VLINK路由,将会一直占用设备上的路由表以及设备内存。在部署VLINK路由后,会大量增加网络中5类路由的数量。对于当前各个leaf节点,绝大多数的leaf节点的路由数量已经趋近于可运行范围内的最大路由数量,甚至一部分leaf节点的路由数量已经到达了瓶颈,对于这部分leaf节点,随着虚拟化技术的不断发展,VM的占比将会不断增加,因此路由量也会随着VM的增加一并成倍增长。这将会导致设备以及网络中的路由量变得越来越多,占用设备内存。不仅不利于缓解网络拥塞状况,甚至反而会使网络拥塞状况加剧。
而在另外一些方案中,若通过增加路由策略来过滤掉上述发布的VLINK路由,则又会增加业务部署的复杂度。
因此,在一个实施例中,若spine节点出现了拥塞的情况下,当spine节点的拥塞解除后,即RR拥塞解除,对于leaf2节点则会收到所有RR反射的撤销路由报文。当然,在其他实施例中,spine节点也可能不存在拥塞,则leaf2节点将会在leaf1节点发送撤销路由报文后,立即收到所有RR反射的撤销路由报文。leaf2节点每接收到一个RR反射的撤销路由报文,则删除本地路由表中目的IP地址为VM1的对应路径路由表项。在一些例子中,leaf2节点可以在接收到任意一个RR反射的撤销路由报文后,删除临时本地路由。当然,在另一些例子中,还可以当leaf2节点检测到所有目的IP地址为VM1次优先级路由表项均删除撤销后,则删除上述⑤中生成的目的IP地址为VM1’下一跳为0.0.0.0的本地路由。从而避免由于目的IP地址为VM1次优先级路由表项并未完全删除,导致再次出现路由临时环路问题。
在一个例子中,可以参考图12示意的一种路由表变化过程示意图,可以看出,图12的a中leaf2节点中的路由表包括有原始的3条指向目的IP地址为VM1的路由表项以及临时的本地路由。当leaf2节点接收到spine1节点转发的路由撤销报文后,则删除spine1节点对应的目的IP地址为VM1的路由表项,例如图12中b示出的路由表。当然接收到spine节点转发路由撤销报文的顺序是随机的,并不一定是按照spine节点的顺序。例如,在接收到spine1节点转发的路由撤销报文后,可以接收spine3节点转发的路由撤销报文。然后leaf2节点删除spine3节点对应的目的IP地址为VM1的路由表项,例如图12中c示出的路由表。最后leaf2节点接收到spine2节点转发的路由撤销报文,并删除spine2节点对应的目的IP地址为VM1的路由表项,例如图12中d示出的路由表。此时,由于目的IP地址为VM1的次优先级路由表项全都删除后,同时将临时的本地路由也进行删除。
当leaf2节点将临时生成的本地路由删除后,意味着VM1迁移已经完毕。此时的网络路由情况如图13示出的。与图2相比,图13中当VM1的迁移全部完成后,此时leaf1节点的路由表和leaf3节点的路由表中存在目的IP地址为VM1’的路由表项,且路由数量为3条。可以理解的是路由数量的确定方式与图2描述类似,在此不再赘述。对于leaf2节点的路由表,则不存在目的IP地址为VM1’的路由表项,而是可以依赖ARP将数据直接转发至VM1’。
可以理解的是,本申请根据发送免费ARP/ND的迁移用户的迁移属性,生成一条优先级最高的本地路由,该临时本地路由只有在VM迁移阶段存在,而在VM迁移后则可以自动删除。
本申请通过在VM迁移后主动给相连接的叶节点发送地址解析报文,使得叶节点根据地址解析报文修改地址解析表,同时生成EVPN NLRI以及临时的本地路由,再将EVPNNLRI发送至汇聚节点,以便汇聚节点将EVPN NLRI转发至其它叶节点并更新其它叶节点的路由表。当与迁移后VM相连的叶节点接收到所有汇聚节点转发的撤销路由报文后,删除临时的本地路由。解决了VM迁移导致的路由临时环路问题,并且可以实现VLINK的所有功能,同时部署较为简单。通过生成临时的本地路由节省了VLINK路由量,同时还节省了设备的内存占用。
如图14示出的,本申请提供了一种VM迁移方法流程图,第一叶节点下挂有VM,其中,第一叶节点与第二叶节点之间具有VXLAN隧道,该方法可以包括以下步骤:
S1401,VM由第一叶节点迁移至第二叶节点。
S1402,迁移后的VM发送地址解析报文至第二叶节点。
在一个例子中,地址解析报文可以是ARP报文或ND报文。在另一个例子中,地址解析报文可以包括VM的IP地址以及MAC地址。当然该地址解析报文中还可以包括其他数据,例如校验位、加密信息等,本申请在此不做限定。
S1403,第二叶节点通过VXLAN隧道将地址解析报文发送至第一叶节点。
在一个例子中,当还存在其它叶节点时,第二叶节点同样通过与其它叶节点连接的VXLAN隧道,将地址解析报文发送至其它叶节点。
S1404,第一叶节点根据地址解析报文删除地址解析表中VM的表项,并生成撤销路由报文。
在一个例子中,撤销路由报文可以是BGP withdraw报文。在另一个例子中,若其它叶节点接收到地址解析报文后可以丢弃。
S1405,第一叶节点将撤销路由报文发送到每个汇聚节点。
在1402之后,还可以执行以下方法:
S1406,第二叶节点根据地址解析报文修改第二叶节点的地址解析表。
在一个例子中,第二叶节点根据地址解析报文将地址解析报文中的信息添加至第二叶节点的地址解析表中。第二叶节点根据地址解析报文中的源IP查询路由表项,确定源IP对应的路由表项中出端口为VXLAN端口。第二叶节点识别VM的出端口由隧道侧修改为用户侧,确定VM由第一叶节点迁移至第二叶节点,其中,第一叶节点为除第二叶节点以外的任意一个叶节点。
S1407,第二叶节点生成本地路由。
在一个例子中,第二叶节点生成本地路由表项,本地路由表项包括第一目的IP地址和下一跳标识。其中,第一目的IP地址为VM的IP地址,下一跳标识用于指示第二叶节点。
可以理解的是,S1403与S1406并不存在严格的执行先后顺序,即可以先执行S1403后执行S1406,也可以后执行S1403先执行S1406,当然还可以同时执行S1403和S1406。
在1406之后,还可以执行以下方法:
S1408,第二叶节点生成MAC/IP通告路由,并将MAC/IP通告路由发送到至少一个汇聚节点,以使至少一个汇聚节点将MAC/IP通告路由转发至第一叶节点并更新第一路由表。
在一个例子中,第二叶节点生成MAC/IP通告路由,MAC/IP通告路由包括EVPNNLRI。在EVPN NLRI中添加扩展属性信息,并将扩展属性信息中的序列值累加一,其中序列值的初始值为0。
在另一个例子中,第二叶节点可以将MAC/IP通告路由发送到任意一个汇聚节点。使得当其它叶节点接收到任意一个汇聚节点转发的MAC/IP通告路由,都可以更新自身的路由表。可以理解的是,第一路由表为第一叶节点中的路由表。在另一个例子中,为了提高更新路由表的效率,第二叶节点还可以将MAC/IP通告路由发送到每个汇聚节点。具体可参考图7和图8描述,在此不再赘述。
可以理解的是,S1407与S1408并不存在严格的执行先后顺序,即可以先执行S1407后执行S1408,也可以后执行S1407先执行S1408,当然还可以同时执行S1407和S1408。
图15为本申请实施例提供的另一种VM迁移方法流程图。
当然在S1405之后,该方法还可以包括以下步骤:
S1501,第二叶节点接收至少一个汇聚节点转发的撤销路由报文,并删除对应的路由。
在一个例子中,第二叶节点依次接收各个汇聚节点转发的撤销路由报文,并根据撤销路由报文,删除相应路径的路由。
S1503,第二叶节点删除临时的本地路由。
在一个例子中,当第二叶节点中除临时的本地路由以外,其它次优先级的路由全部删除后,则可以认为当前VM已经完成了迁移。此时可以删除临时的本地路由。
当然可以理解的是,在S1501之后以及S1503之前,为了避免由于目的IP地址为VM1次优先级路由表项并未完全删除,导致再次出现路由临时环路问题,还可以执行S1502。
S1502,确定第二叶节点中除本地路由外,其他路由是否全部删除。
在一个例子中,若第二叶节点中除临时的本地路由以外,其它次优先级的路由全部删除后,可以执行S1503;否则,重复执行S1501,直至其它次优先级的路由全部删除为止。
图16为本申请实施例提供的一种VM迁移装置示意图。
如图16所示,提供了一种VM迁移装置1600,该装置1600可以包括处理单元1601,用于确定VM由第一叶节点迁移至第二叶节点;处理单元1601还用于,生成本地路由表项,本地路由表项包括第一目的互联网协议IP地址和下一跳标识,其中,第一目的IP地址为VM的IP地址,下一跳标识用于指示第二叶节点;接收单元1602,用于接收虚拟扩展局域网VXLAN报文,VXLAN报文包括第二目的IP地址,第二目的IP地址为第二叶节点的VXLAN隧道端点VTEP地址;其中,VXLAN报文包括第一报文,第一报文的目的地是VM;发送单元1603,用于根据本地路由表项,将第一报文转发至VM。本申请通过生成临时的本地路由,可以解决路由临时环路问题。
在一个可能的实施方式中,接收单元1602还用于,接收VM发送的地址解析报文;处理单元1601还用于,将地址解析报文中的信息添加至地址解析表中;发送单元1603还用于,通过VXLAN隧道将地址解析报文发送至第一叶节点,以便第一叶节点根据地址解析报文发送撤销路由报文到第二叶节点。
在一个可能的实施方式中,处理单元1601还用于:当识别VM的出端口由隧道侧变为用户侧时,确定VM由第一叶节点迁移至第二叶节点,其中,第一叶节点为除第二叶节点以外的任意一个叶节点。
在一个可能的实施方式中,处理单元1601还用于:根据地址解析报文中的源IP查询路由表项,确定源IP对应的路由表项中出端口为VXLAN端口;识别VM的出端口由隧道侧变为用户侧。
在一个可能的实施方式中,接收单元1602还用于,接收撤销路由报文;处理单元1601还用于,删除本地路由表项。本申请在VM迁移后删除临时的本地路由,节省了VLINK路由量同时还节省了设备的内存占用。
在一个可能的实施方式中,地址解析报文包括VM的IP地址和MAC地址。
在一个可能的实施方式中,地址解析报文为地址解析协议ARP报文或邻居发现协议ND报文。本申请可以在IPV4协议环境下进行,同时也可以在IPV6协议环境下进行。
在一个可能的实施方式中,处理单元1601还用于,生成MAC/IP通告路由;发送单元1603还用于,并将MAC/IP通告路由转发至第一叶节点,以便更新第一叶节点的路由表项。
在一个可能的实施方式中,处理单元1601还用于:生成MAC/IP通告路由,MAC/IP通告路由包括EVPN网络层可达性信息NLRI;将EVPN NLRI中的序列值加一,其中序列值初始值为0。本申请通过对序列值进行加一,可以识别出哪些VM是迁移用户。
在一个可能的实施方式中,MAC/IP通告路由包括VM的MAC地址和IP地址。
在一个可能的实施方式中,接收单元1602还用于,接收撤销路由报文;处理单元1601还用于,根据接收到的撤销路由报文,删除第二叶节点中关于VM的路由表项。
在一个可能的实施方式中,处理单元1601还用于,在接收到所有汇聚节点转发的撤销路由报文后,删除本地路由表项。本申请在VM迁移后删除临时的本地路由,节省了VLINK路由量同时还节省了设备的内存占用。
图17为本申请实施例提供的另一种VM迁移装置示意图。
如图17所示,提供了另一种VM迁移装置1700,该装置1700可以包括处理器1701、存储器1702、通信接口1703以及总线1704。装置1700中的处理器1701、存储器1702、通信接口1703可以通过总线1704建立通信连接。通信接口1703用于与发送和接收外部信息。
处理器1701可以为中央处理器(central processing unit,CPU)。
存储器1702可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1702也可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,硬盘(harddisk drive,HDD)或固态硬盘(solid state drive,SSD);存储器1702还可以包括上述种类的存储器的组合。
处理器1701,用于与存储器1702耦合,以及读取并执行存储器1702中的指令;当处理器1701运行时执行指令,使得处理器1701还用于:确定VM由第一叶节点迁移至第二叶节点;生成本地路由表项,本地路由表项包括第一目的互联网协议IP地址和下一跳标识,其中,第一目的IP地址为VM的IP地址,下一跳标识用于指示第二叶节点;接收虚拟扩展局域网VXLAN报文,VXLAN报文包括第二目的IP地址,第二目的IP地址为第二叶节点的VXLAN隧道端点VTEP地址;其中,VXLAN报文包括第一报文,第一报文的目的地是VM;根据本地路由表项,将第一报文转发至VM。本申请通过生成临时的本地路由,可以解决路由临时环路问题。
在一个可能的实施方式中,处理器1701还用于:接收VM发送的地址解析报文;将地址解析报文中的信息添加至地址解析表中;以及通过VXLAN隧道将地址解析报文发送至第一叶节点,以便第一叶节点根据地址解析报文发送撤销路由报文到第二叶节点。
在一个可能的实施方式中,处理器1701还用于:当识别VM的出端口由隧道侧变为用户侧时,确定VM由第一叶节点迁移至第二叶节点,其中,第一叶节点为除第二叶节点以外的任意一个叶节点。
在一个可能的实施方式中,处理器1701还用于:根据地址解析报文中的源IP查询路由表项,确定源IP对应的路由表项中出端口为VXLAN端口;识别VM的出端口由隧道侧变为用户侧。
在一个可能的实施方式中,地址解析报文包括VM的IP地址和MAC地址。
在一个可能的实施方式中,地址解析报文为地址解析协议ARP报文或邻居发现协议ND报文。本申请可以在IPV4协议环境下进行,同时也可以在IPV6协议环境下进行。
在一个可能的实施方式中,处理器1701还用于:生成MAC/IP通告路由,并将MAC/IP通告路由转发至第一叶节点,以便更新第一叶节点的路由表项。
在一个可能的实施方式中,处理器1701还用于:生成MAC/IP通告路由,MAC/IP通告路由包括EVPN NLRI;并将EVPN NLRI中的序列值加一,其中序列值初始值为0。本申请通过对序列值进行加一,可以识别出哪些VM是迁移用户。
在一个可能的实施方式中,MAC/IP通告路由包括VM的MAC地址和IP地址。
在一个可能的实施方式中,处理器1701还用于:接收到转发的撤销路由报文后,删除第二叶节点中关于VM的路由表项。
在一个可能的实施方式中,处理器1701还用于:接收到所有汇聚节点转发的撤销路由报文后,删除本地路由表项。本申请在VM迁移后删除临时的本地路由,节省了VLINK路由量同时还节省了设备的内存占用。
本申请公开的一种VM的迁移装置,在VM迁移后主动给相连接的叶节点发送地址解析报文,使得叶节点根据地址解析报文修改地址解析表,同时生成EVPN路由以及临时的本地路由,再将EVPN路由发送至汇聚节点,以便汇聚节点将EVPN路由转发至其它叶节点并更新其它叶节点的路由表。当与迁移后VM相连的叶节点接收到所有汇聚节点转发的撤销路由报文后,删除临时的本地路由。解决了VM迁移导致的路由临时环路问题,并且可以实现VLINK的所有功能,同时部署较为简单。通过生成临时的本地路由节省了VLINK路由量,同时还节省了设备的内存占用。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetic tape),软盘(英文:floppy disk),光盘(英文:optical disc)及其任意组合。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (22)

1.一种虚拟机VM的迁移方法,所述方法应用于以太虚拟私有网络EVPN中,所述EVPN包括第一叶节点、第二叶节点和VM,其特征在于,所述方法包括:
所述第二叶节点确定所述VM由所述第一叶节点迁移至所述第二叶节点;
所述第二叶节点生成本地路由表项,所述本地路由表项包括第一目的互联网协议IP地址和下一跳标识,其中,所述第一目的IP地址为所述VM的IP地址,所述下一跳标识用于指示所述第二叶节点;
所述第二叶节点接收虚拟扩展局域网VXLAN报文,所述VXLAN报文包括第二目的IP地址,所述第二目的IP地址为所述第二叶节点的VXLAN隧道端点VTEP地址;其中,所述VXLAN报文包括第一报文,所述第一报文的目的地是所述VM;
所述第二叶节点根据所述本地路由表项,将所述第一报文转发至所述VM。
2.如权利要求1所述的方法,其特征在于,在所述第二叶节点确定所述VM由所述第一叶节点迁移至所述第二叶节点之前,所述方法还包括:
所述第二叶节点接收所述VM发送的地址解析报文;
所述第二叶节点将所述地址解析报文中的信息添加至地址解析表中;以及通过VXLAN隧道将所述地址解析报文发送至所述第一叶节点,以便所述第一叶节点根据所述地址解析报文发送撤销路由报文到所述第二叶节点。
3.如权利要求2所述的方法,其特征在于,第二叶节点确定所述VM由所述第一叶节点迁移至所述第二叶节点包括:
当所述第二叶节点识别所述VM的出端口由隧道侧变为用户侧时,确定所述VM由所述第一叶节点迁移至所述第二叶节点,其中,所述第一叶节点为除所述第二叶节点以外的任意一个叶节点。
4.如权利要求3所述的方法,其特征在于,所述第二叶节点识别所述VM的出端口由隧道侧变为用户侧,包括:
所述第二叶节点根据所述地址解析报文中的源IP查询路由表项,确定所述源IP对应的路由表项中出端口为VXLAN端口;
所述第二叶节点识别所述VM的出端口由隧道侧变为用户侧。
5.如权利要求2所述的方法,其特征在于,所述方法还包括:
所述第二叶节点接收到所述撤销路由报文后,删除所述本地路由表项。
6.如权利要求2所述的方法,其特征在于,所述地址解析报文为地址解析协议ARP报文或邻居发现协议ND报文。
7.如权利要求1所述的方法,其特征在于,在所述第二叶节点确定所述VM由所述第一叶节点迁移至所述第二叶节点之后,所述方法还包括:
所述第二叶节点生成MAC/IP通告路由,并将所述MAC/IP通告路由转发至所述第一叶节点,以便更新所述第一叶节点的路由表项。
8.如权利要求7所述的方法,其特征在于,所述第二叶节点生成MAC/IP通告路由包括:
生成MAC/IP通告路由,所述MAC/IP通告路由包括EVPN网络层可达性信息NLRI;
将所述EVPN NLRI中的序列值加一,其中所述序列值初始值为0。
9.如权利要求7所述的方法,其特征在于,所述MAC/IP通告路由包括所述VM的MAC地址和IP地址。
10.如权利要求2所述的方法,其特征在于,在所述第二叶节点生成所述本地路由表项之后,所述方法还包括:
所述第二叶节点接收到所述撤销路由报文后,删除所述第二叶节点中关于所述VM的路由表项。
11.一种虚拟机VM的迁移装置,所述装置应用于以太虚拟私有网络EVPN中的第二叶节点,所述EVPN还包括第一叶节点和VM,其特征在于,所述装置包括:
处理单元,用于确定所述VM由所述第一叶节点迁移至所述第二叶节点;
所述处理单元还用于,生成本地路由表项,所述本地路由表项包括第一目的互联网协议IP地址和下一跳标识,其中,所述第一目的IP地址为所述VM的IP地址,所述下一跳标识用于指示所述第二叶节点;
接收单元,用于接收虚拟扩展局域网VXLAN报文,所述VXLAN报文包括第二目的IP地址,所述第二目的IP地址为所述第二叶节点的VXLAN隧道端点VTEP地址;其中,所述VXLAN报文包括第一报文,所述第一报文的目的地是所述VM;
发送单元,用于根据所述本地路由表项,将所述第一报文转发至所述VM。
12.如权利要求11所述的迁移装置,其特征在于,所述接收单元还用于,接收所述VM发送的地址解析报文;
所述处理单元还用于,将所述地址解析报文中的信息添加至地址解析表中;
所述发送单元还用于,通过VXLAN隧道将所述地址解析报文发送至所述第一叶节点,以便所述第一叶节点根据所述地址解析报文发送撤销路由报文到所述第二叶节点。
13.如权利要求12所述的迁移装置,其特征在于,所述处理单元还用于:
当识别所述VM的出端口由隧道侧变为用户侧时,确定所述VM由所述第一叶节点迁移至所述第二叶节点,其中,所述第一叶节点为除所述第二叶节点以外的任意一个叶节点。
14.如权利要求13所述的迁移装置,其特征在于,所述处理单元还用于:
根据所述地址解析报文中的源IP查询路由表项,确定所述源IP对应的路由表项中出端口为VXLAN端口;
识别所述VM的出端口由隧道侧变为用户侧。
15.如权利要求12所述的迁移装置,其特征在于,所述接收单元还用于,接收所述撤销路由报文;
所述处理单元还用于,删除所述本地路由表项。
16.如权利要求12所述的迁移装置,其特征在于,所述地址解析报文为地址解析协议ARP报文或邻居发现协议ND报文。
17.如权利要求11所述的迁移装置,其特征在于,所述处理单元还用于,生成MAC/IP通告路由;
所述发送单元还用于,并将所述MAC/IP通告路由转发至所述第一叶节点,以便更新所述第一叶节点的路由表项。
18.如权利要求17所述的迁移装置,其特征在于,所述处理单元还用于:
生成MAC/IP通告路由,所述MAC/IP通告路由包括EVPN网络层可达性信息NLRI;
将所述EVPN NLRI中的序列值加一,其中所述序列值初始值为0。
19.如权利要求17所述的迁移装置,其特征在于,所述MAC/IP通告路由包括所述VM的MAC地址和IP地址。
20.如权利要求12所述的迁移装置,其特征在于,所述接收单元还用于,接收所述撤销路由报文;
所述处理单元还用于,根据接收到的所述撤销路由报文,删除所述第二叶节点中关于所述VM的路由表项。
21.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令在终端上运行时,使得所述终端执行如权利要求1-10任意一项所述的方法。
22.一种包含指令的计算机程序设备,当其在终端上运行时,使得所述终端执行如权利要求1-10中的任一项所述的方法。
CN202010112867.1A 2020-02-24 2020-02-24 一种虚拟机vm的迁移方法及装置 Active CN113296869B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010112867.1A CN113296869B (zh) 2020-02-24 2020-02-24 一种虚拟机vm的迁移方法及装置
PCT/CN2020/137274 WO2021169514A1 (zh) 2020-02-24 2020-12-17 一种虚拟机vm的迁移方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010112867.1A CN113296869B (zh) 2020-02-24 2020-02-24 一种虚拟机vm的迁移方法及装置

Publications (2)

Publication Number Publication Date
CN113296869A CN113296869A (zh) 2021-08-24
CN113296869B true CN113296869B (zh) 2023-01-13

Family

ID=77317943

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010112867.1A Active CN113296869B (zh) 2020-02-24 2020-02-24 一种虚拟机vm的迁移方法及装置

Country Status (2)

Country Link
CN (1) CN113296869B (zh)
WO (1) WO2021169514A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230132016A1 (en) * 2021-10-21 2023-04-27 Arista Networks, Inc. Host routing with virtual machine mobility
CN113992583B (zh) * 2021-10-26 2023-03-21 新华三信息安全技术有限公司 一种表项维护方法及装置
CN116319354B (zh) * 2023-01-30 2023-11-28 杭州优云科技有限公司 基于云实例迁移的网络拓扑更新方法
CN116248595B (zh) * 2023-03-15 2024-02-02 安超云软件有限公司 一种云内网与物理网通信的方法、装置、设备以及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783815A (zh) * 2016-08-30 2018-03-09 华为技术有限公司 一种确定虚拟机迁移的方法和装置
CN109189549A (zh) * 2018-08-01 2019-01-11 新华三技术有限公司 虚拟机迁移方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017168204A1 (en) * 2016-03-28 2017-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Ecmp multicast over existing mpls implementations
US10673736B2 (en) * 2017-04-25 2020-06-02 Cisco Technology, Inc. Traffic reduction in data center fabrics
CN107547349B (zh) * 2017-07-31 2021-02-05 新华三技术有限公司 一种虚拟机迁移的方法及装置
CN108418740B (zh) * 2018-02-28 2020-09-08 新华三技术有限公司 报文处理方法及装置
CN108777663B (zh) * 2018-05-31 2021-02-09 新华三技术有限公司 一种路由信息的同步方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783815A (zh) * 2016-08-30 2018-03-09 华为技术有限公司 一种确定虚拟机迁移的方法和装置
CN109189549A (zh) * 2018-08-01 2019-01-11 新华三技术有限公司 虚拟机迁移方法及装置

Also Published As

Publication number Publication date
WO2021169514A1 (zh) 2021-09-02
CN113296869A (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
US11095558B2 (en) ASIC for routing a packet
CN113296869B (zh) 一种虚拟机vm的迁移方法及装置
US11411770B2 (en) Virtual port channel bounce in overlay network
US20210036951A1 (en) Segment routing with fast reroute for container networking
EP3231160B1 (en) Stateful load balancing in a stateless network
US10880124B2 (en) Offload controller control of programmable switch
WO2021089052A1 (zh) 报文传输方法、代理节点及存储介质
CN113261242B (zh) 通信系统和由通信系统实现的方法
US10855584B2 (en) Client-equipment-peering virtual route controller
EP2974234A1 (en) Generating a host route
US10848457B2 (en) Method and system for cross-zone network traffic between different zones using virtual network identifiers and virtual layer-2 broadcast domains
JP2014230057A (ja) 管理プログラム、管理装置、およびネットワークシステム
CN112868214B (zh) 分组内的协调负载转移oam记录
US11012412B2 (en) Method and system for network traffic steering towards a service device
US10855733B2 (en) Method and system for inspecting unicast network traffic between end points residing within a same zone
US11895025B2 (en) Method and system for propagating network traffic flows between end points based on service and priority policies
US20190215191A1 (en) Deployment Of Virtual Extensible Local Area Network
CN112751769A (zh) 发送报文的方法、装置及系统
US10749789B2 (en) Method and system for inspecting broadcast network traffic between end points residing within a same zone
WO2024001701A1 (zh) 数据处理方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant