平滑重启gr的处理方法和设备的制造方法
【技术领域】
[0001] 本申请涉及网络通信技术,特别涉及平滑重启(GR :Graceful Restart)的处理方 法和设备。
【背景技术】
[0002] 虚拟可扩展局域网(VXLAN :Virtual extensible Local Area Network)的控制层 面运行中间系统至中间系统(ISIS 〖Intermediate System Intermediate System)协议,隧 道端点(VTEP :VXLAN Tunnel End Point)生成链路状态报文(LSP :Link-State Packet)并 通过隧道(Tunnel)同步给邻居,LSP报文包含VTEP本地虚拟机(VM:Virtual Machine)的 链路状态信息,VM的链路状态信息指VM的MAC、路由、所属的VXLAN标识(ID)等。
[0003] 每个VTEP本地可能存在大量VM,VTEP生成的LSP报文的最大长度受接口 MTU等 限制,所以当一个VTEP本地大量VM的链路状态信息的长度大于LSP报文的最大长度时,一 个LSP报文是不足以携带VTEP本地大量VM的链路状态信息,基于此,VTEP会生成多个LSP 报文分片,生成的LSP报文分片的最大长度小于或等于LSP报文的最大长度,VTEP将本地 大量VM的链路状态信息分散在LSP报文分片中,之后生成每一个LSP报文分片对应的LSP 报文并同步给对端VTEP。
[0004] 当VTEP发生GR时,VTEP会把本地所有VM的链路状态信息进行重组生成多个LSP 报文分片,这可能会出现在GR前后VTEP本地同一 VM的链路状态信息携带在序列号不同的 LSP报文分片中,而VTEP本地同一 VM的链路状态信息携带在不同序列号的LSP报文分片中 会引起隧道对端VTEP重新计算路由表项、出现流量短暂中断。
【发明内容】
[0005] 本申请提供了平滑重启GR的处理方法和设备,以防止GR过程中流量中断。
[0006] 本申请提供的技术方案包括:
[0007] -种平滑重启GR的处理方法,该方法应用于使能了 GR功能的设备,包括:
[0008] 协议重启后,获取本设备在协议重启之前发送给邻居的链路状态信息和所述链路 状态信息所处的LSP报文分片的序列号,将所述链路状态信息和所述链路状态信息所处的 LSP报文分片的序列号对应记录至本地;
[0009] 获取本地的链路状态信息;
[0010] 针对获取的每一链路状态信息,确定本地是否已记录该VM链路状态信息对应的 LSP报文分片的序列号,如果是,将该VM链路状态信息添加至对应的LSP报文分片中; [0011] 依据所述LSP报文分片生成对应的LSP报文并发送给所述邻居。
[0012] 一种防止平滑重启GR过程中流量中断的设备,该设备使能了 GR功能,包括:
[0013] 第一获取单元,用于协议重启后,获取本设备在协议重启之前发送给邻居的链路 状态信息和所述链路状态信息所处的LSP报文分片的序列号,将所述链路状态信息和所述 链路状态信息所处的LSP报文分片的序列号对应记录至本地;
[0014] 第二获取单元,用于获取本地的链路状态信息;
[0015] 报文分片单元,用于针对所述第二获取单元获取的每一链路状态信息,确定本地 是否已记录该VM链路状态信息对应的LSP报文分片的序列号,如果是,将该VM链路状态信 息添加至对应的LSP报文分片中;
[0016] 发送单元,用于依据所述LSP报文分片生成对应的LSP报文并发送给所述邻居。
[0017] 由以上技术方案可以看出,本发明中,能够保证VTEP本地同一链路状态信息比如 VM链路状态信息在协议重启前后所处的LSP报文分片序列号不变,避免了 VTEP的邻居因 VTEP本地同一 VM的链路状态信息携带在序列号不同的LSP报文分片中而引起的重新计算 路由表项、流量短暂中断等问题。
【附图说明】
[0018] 图1为本发明提供的方法流程图;
[0019] 图2为LSP报文分片结构示意图;
[0020] 图3为TLV格式示意图;
[0021] 图4为本发明提供的实施例示意图;
[0022] 图5为本发明提供的设备结构图。
【具体实施方式】
[0023] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对 本发明进行详细描述。
[0024] 下面对本发明提供的方法进行描述:
[0025] 参见图1,图1为本发明提供的方法流程图。该流程应用于使能了 GR功能的设备, 该设备具体实现时可有多种实现形式,比如VTEP、TRILL路由桥(Rbridge),EVI网络中ISIS 边缘设备(ED)等。这里,当设备使能了 GR功能,也就意味着设备可以在协议重启时执行 GR。这里的协议重启具体可为:主备倒换、进程重启等,本发明并不具体限定。
[0026] 如图1所示,该流程可包括以下步骤:
[0027] 步骤101,协议重启后,获取本设备在协议重启之前发送给邻居的链路状态信息和 链路状态信息所处的LSP报文分片的序列号,将确定的链路状态信息和LSP报文分片的序 列号对应记录至本地。
[0028] 这里的链路状态信息具体实现时可包括:设备本地各VM的链路状态信息比如 MAC、路由等,设备本地的ARP表项、设备本地支持的VLAN信息、VLAN信息所属的虚拟交换 接口(VSI :Virtual Switch Interface)等,本发明并不具体限定。
[0029] 为融合现有GR过程中的各个阶段,步骤101可为本发明对现有GR过程进行改进 额外增加的阶段,记为LSP稳定(STABLE)阶段。现有GR过程中包含很多个阶段,如LSDP 同步阶段、路由计算阶段、LSP报文产生阶段等,本发明额外增加的LSP STABLE阶段在时间 先后顺序上会介于现有GR过程中的LSDP同步阶段和路由计算阶段之间,但是,在具体实现 上,本发明额外增加的LSP STABLE阶段并不影响GR过程中原有的阶段,因此,本发明并不 再重点描述GR过程中原有的阶段。
[0030] 在LSDB同步阶段中,设备会向邻居发送请求报文以请求本设备在协议重启之前 发送给邻居的LSP报文,当邻居收到请求报文后,将设备在协议重启之前发送的LSP报文 再返回给设备,这里,设备在协议重启之前发送给邻居的LSP报文包含了链路状态信息和 链路状态信息所处的LSP报文分片的序列号。图2示出了 LSP报文的结构。链路状态信息 是携带在LSP报文的变长字段(Variable Length Fields)中,链路状态信息由类型-长 度-数值(TLV =Type-Length-Value)三元组组成,每一个TLV代表一个链路状态信息,TLV 的格式如图3所示,在图3中,T字段包含携带链路状态信息的类型值,L字段包含TLV的 长度,V字段包含链路状态信息。在图2所示的LSP报文结构中,链路状态信息所处的LSP 报文分片的序列号是包含在LSP报文的LSP标识(ID)字段中,这里,LSPID字段由系统号 (System ID)、伪节点号和LSP报文分片的分片序列号三部分组成,其中,System ID由MAC 地址表示。至于图2所示的LSP报文结构中的其他字段,在本发明不重点涉及,这里不再赘 述。
[0031] 基于图2、图3所示的LSP报文的结构,步骤101中获取本设备在协议重启之前发 送给邻居的链路状态信息和所述链路状态信息所处的LSP报文分片的序列号具体为:
[0032] 从邻居获取本设备在协议重启之前发送给邻居的LSP报文,
[0033] 从该LSP报文获取该LSP报文携带的链路状态信息和该链路状态信息所处的LSP 报文分片的序列号。这里,从邻居获取的LSP报文的数量可不止一个,当从邻居获取的LSP 报文的数量不止一个时,针对从邻居获取的每一 LSP报文,则从该LSP报文获取该LSP报文 携带的链路状态信息和该链路状态信息所处的LSP报文分片的序列号。
[0034] 至此,即实现了步骤101的操作。
[0035] 步骤102,获取本设备本地的链路状态信息。
[0036] 具体地,作为本发明的一个优选实施例,这里获取的链路状态信息可包括:
[0037] 从本设备内的MAC模块获取本设备本地各VM的MAC、以及本设备的MAC ;
[0038] 从本设备内的VLAN模块获取本地各VM所属的VLAN信息、以及本设备支持的VLAN 信息;
[0039] 从本设备内的ARP模块获取本地各个VM的ARP表项、以及远程各个VM的ARP表 项等;
[0040] 从本设备内的L2VPN模块获取本地各个VM所属的VLAN的VSI。
[0041] 如上所述,GR过程中包含路由计算阶段,在路由计算阶段中,设备需要学习本地的 链路状态信息,也即步骤102中的获取的链路状态信息,之后设备依据获取的链路状态信 息进行路由计算,这里路由计算的方式类似现有路由计算,不再赘述。
[0042] 在通常情况下,设备在协议重启之后获取的本地链路状态信息与协议重启之前获 取的本地