锐捷 | MPLS优雅重启

锐捷 | MPLS优雅重启

_

一、MPLS GR基本概念

1. MPLS GR概述

MPLS GR(Graceful Restart,优雅重启)是保障协议重启期间业务不中断的容错技术。当LDP协议重启时,设备保留原有转发表项,数据转发正常执行,以此提升MPLS业务的运行可靠性。MPLS GR主要分为LDP GR、L3VPN GR和L2VPN GR三种类型。

  • LDP GR:依靠邻居设备协同,使设备在LDP协议重启或主备切换场景下,维持转发业务不中断。

  • L2VPN/L3VPN GR:分别对应二层、三层VPN业务的优雅重启,当设备控制平面发生故障时,转发平面仍然可以正常转发VPN流量,有效保障VPN业务稳定运行。

开启LDP GR功能后,设备出现协议重启或手工进行主备切换时,会保留原有的MPLS转发表项,继续依据表项转发报文,实现流量零中断,并保障切换前后转发状态一致。

  • LDP邻居存活时间:只有充当GR-Helper设备才会使用该参数,设备会通过对比本地“neighbor-liveness-time”与LDP会话重连时间,取最小值启动邻居启动计时器,定时器超时前持续保留标记为“陈旧的”的转发表项。

  • LDP会话重连时间:在GR过程中,充当GR-Restarter和GR-Helper角色都会使用LDP会话重连时间。

  • LDP会话恢复时间:只有充当GR-Helper角色时,才会使用LDP会话恢复时间。GR-Helper角色会比较自身配置的“recovery-time”和收到的LDP角色恢复时间的大小,选取最小值来启动恢复定时器,并在恢复定时器超时前保留“陈旧的”表项。

2. GR能力设备

根据GR的能力,分为GR-Capable设备、GR-Aware设备和GR-Unaware设备。

2.1 GR-Capable设备

具备GR能力的设备又称GR-Capable设备,这类设备一般采用1+1硬件冗余架构,配置主、备双管理板。当主备管理板发生切换时,设备会及时向邻居节点发送相关通告,同时保留原有转发表项。切换完成后,设备可重新构建路由表,全程不会引发路由振荡,报文转发路径也保持不变,最终实现整网数据转发不中断。

2.2 GR-Aware设备

GR-Aware设备具有GR感知能力,这类设备不一定配置双管理板。当邻居设备执行优雅重启时,它可以主动识别该状态,并配合邻居完成整个GR流程。

2.3 GR-Unaware设备

GR-Unaware设备不具备GR感知能力,既无法识别邻居设备的优雅重启行为,也不能为邻居提供相关协助。这类设备通常是系统软件本身不支持GR功能,或是手动关闭该特性的网络设备。

3. GR角色设备

设备重启场景下,可以根据其在GR流程中的角色,划分为GR重启设备(GR-Restarter)与GR协助设备(GR-Helper)两类:

  • GR重启设备:由管理员手动操作或系统故障引发重启的设备,该设备必须具备GR功能。

  • GR协助设备:GR重启设备的直连邻居设备,设备等级需要达到GR感知标准,支持GR-Capable或GR-Aware两种类型。

4. MPLS GR

LDP GR结合IGP GR可实现普通MPLS不间断转发,LDP GR结合BGP GR可实现L3VPN不间断转发。扩展型LDP GR与基础LDP GR原理一致,仅备份的MPLS转发表项存在差异。

要建立一个具备GR能力的LDP会话,要求会话两端设备均支持并启用LDP GR,否则仅能建立普通LDP会话。LDP会话主动方若开启LDP GR,会在Initialization报文中携带FT Session TLV。被动方收到该报文后,可以根据自身配置决定是否在回应的Initialization报文中携带FT Session TLV,以此协商GR会话:

  • 如果被动方在Initialization消息中未携带FT Session TLV,则会建立一个普通、不支持GR能力的LDP会话;

  • 如果被动方接收到的Initialization消息中未携带FT Session TLV,无论它是否在发送Initialization消息中携带FT Session FT,建立的都是一个普通、不支持GR能力的LDP会话。

5. LDP GR建立过程

LDP的建立过程如下图所示:

  1. LSR1通过Initialization消息中携带FT Session TLV可选参数,告知对端自身支持LDP GR功能。

  2. LSR2接收到携带FT Session TLV的Initialization消息,且自身也支持LDP GR,在回应的Initialization消息同样携带FT Session TLV。

LSR1接收到LSR2的Initialization消息后,一个具有GR能力的LDP会话建立完成。

  1. LSR1和LSR2交换地址消息和标签映射消息,正常转发业务数据。

  2. 此时LSR1设备的LDP进程发生重启,设备不会清空已有的MPLS转发表,而是给这些表项设置“陈旧的”标记,同时启动MPLS Forwarding State Holding Timer(转发状态保持定时器)。

  3. LSR2发现与LSR1的GR LDP会话中断,同样保留相关转发表项并标记为“陈旧的”。同时比较自身Liveness Timer(启动保活定时器)和收到的FT Session TLV中FT Reconnect Timeout(重连超时时间),取二者中最小的值启动Liveness Timer定时器,在Liveness Timer定时器超时前保留这些携带“陈旧的”标记的转发表。

  4. LSR1重新和LSR2建立LDP会话,将Initialization消息中FT Session TLV的Recovery Timer值设置为MPLS Forwarding State Holding Timer剩余时长。

  5. LSR2收到LSR1发送携带FT Session TLV的Initialization消息,检查Recovery Time不为0,于是继续保留“陈旧的”转发表项,并停止Liveness Timer定时器计数。同时比较自身配置的Recovery Time和收到的FT Session TLV的Recovery Timer值大小,去最小值启动 Recovery Timer定时器,在Recovery Timer定时器超时前持续保留“陈旧的”转发项。

  6. LSR1和LSR2重新交换地址消息和标签映射消息,根据交换信息删除或保留MPLS转发表项的“陈旧的“标志。

  7. 整个GR流程结束,LSR1和LSR2删除各自携带“陈旧的”标志的MPLS转发项。

6. 配置限制

LDP邻居存活时间为Helper等待Restarter重启并重新建立会话的时间,如果Restarter重启需要较长时间,可以适当增加LDP邻居存活时间。LDP会话重连时间为Restarter保持转发表项不变更的时间。如果本设备配置的业务和MPLS表项较多,发生故障时与邻居重新建立连接需要较长的时间。为了保证邻居能够等待本设备完成重启,需要调整本设备的“reconnection-time”以及邻居设备的LDP邻居存活时间。在典型的L3VPN场景下,时间大约为每100个VPN业务增加1分钟。

LDP会话恢复时间为Helper和Restarter重新建立会话后,Helper协助Restarter恢复表项的时间。当MPLS表项比较多,需要较长时间恢复,因此需要适当延长LDP会话恢复时间。开启LDP协议的GR功能不会影响LDP会话,不会造成LDP会话重启等异常行为。GR过程中发生拓扑变更,例如删除GR前使用的LSR ID对应的IP地址、链路变更等,可能会导致GR失效引发断流。

以下必须重启LDP会话的场景:

  • 新配置的LDP协议GR功能变更,必须重启LDP会话才会生效,之前建立的会话不受影响;

  • 新配置的LDP邻居存活时间,必须重启LDP会话才会生效;

  • 新配置的LDP会话重连时间,必须重启LDP会话才会生效;

  • 新配置的LDP会话恢复时间,必须重启LDP会话才会生效;

二、OSPF GR和LDP GR配置案例

案例拓扑

案例需求

  • 路由器R1和R2间部署OSPF路由协议,同时宣告Loopback0地址;

  • 路由器R1和R2上启用MPLS转发功能,LDP会话基于Loopback0地址建立;

  • 开启OSPF GR和LDP GR功能,配置LDP GR协议相关参数;

  • 重启LDP会话,使配置生效。

1. IGP与LDP协议配置

[Step1] R1上的OSPF路由配置。

R1(config)#router ospf 1
R1(config-router)#router-id 1.1.1.1
Change router-id and update OSPF process! [yes/no]:yes
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R1(config-router)#network 12.1.1.0 0.0.0.255 area 0
R1(config-router)#exit

[Step2] R2上的OSPF路由配置。

R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2
Change router-id and update OSPF process! [yes/no]:yes
R2(config-router)#network 2.2.2.2 0.0.0.0 area 0
R2(config-router)#network 12.1.1.0 0.0.0.255 area 0
R2(config-router)#exit

[Step3] R1上全局开启MPLS转发功能和LDP标签分发协议,开启互联接口的标签交换能力和LDP协议。

// 全局开启MPLS转发功能
R1(config)#mpls ip
// 全局开启LDP标签分发协议
R1(config)#mpls router ldp 
// 指定LDP的Router-ID,使用force强制属性使其立即生效
R1(config-mpls-router)#ldp router-id interface loopback 0 force 
R1(config-mpls-router)#exit
// 接口下开启LDP协议
R1(config)#interface gigabitEthernet 0/0
R1(config-if-GigabitEthernet 0/0)#mpls ip
// 缺省情况下,三层接口只能识别IP数据包,需要开启接口的标签交换功能
R1(config-if-GigabitEthernet 0/0)#label-switching 
R1(config-if-GigabitEthernet 0/0)#exit

[Step4] R2上全局开启MPLS转发功能和LDP标签分发协议,开启互联接口的标签交换能力和LDP协议。

R2(config)#mpls ip 
R2(config)#mpls router ldp 
R2(config-mpls-router)#ldp router-id interface loopback 0 force 
R2(config-mpls-router)#exit
R2(config)#interface gigabitEthernet 0/0
R2(config-if-GigabitEthernet 0/0)#mpls ip
R2(config-if-GigabitEthernet 0/0)#label-switching 
R2(config-if-GigabitEthernet 0/0)#exit

[Step5] 验证:R2上查看LDP邻居信息,能够正常与R1建立邻居。缺省情况下,设备开启LDP协议后自动开启LDP GR功能。

R2#show mpls ldp neighbor

2. OSPF GR和LDP GR配置

[Step1] R1上开启OSPF GR和LDP GR功能,配置LDP GR协议相关参数。

R1(config)#router ospf 1
// 开启OSPF GR功能
R1(config-router)#graceful-restart
R1(config-router)#exit
R1(config)#mpls router ldp 
// 开启LDP GR功能
R1(config-mpls-router)#graceful-restart 
// 配置LDP会话重连时间
R1(config-mpls-router)#graceful-restart timer reconnect 300
// 配置LDP邻居存活时间
R1(config-mpls-router)#graceful-restart timer neighbor-liveness 120
// 配置LDP会话恢复时间
R1(config-mpls-router)#graceful-restart timer recovery 120
R1(config-mpls-router)#exit

[Step2] R2上开启OSPF GR和LDP GR功能,配置LDP GR协议相关参数。

R2(config)#router ospf 1
R2(config-router)#graceful-restart
R2(config-router)#exit
R2(config)#mpls router ldp
R2(config-mpls-router)#graceful-restart
R2(config-mpls-router)#graceful-restart timer reconnect 300
R2(config-mpls-router)#graceful-restart timer neighbor-liveness 120
R2(config-mpls-router)#graceful-restart timer recovery 120
R2(config-mpls-router)#exit

[Step3] R1上重启LDP会话,使配置生效。

R1#clear mpls ldp neighbor all *

[Step4] 验证:R1上查看当前具有GR能力的LDP会话,此时能够看到存在一条2.2.2.2的记录。这是因为刚刚我们重启了LDP会话,当前正处于GR恢复阶段,设备仍然会保留该邻居对应的陈旧转发表项,需要等到会话恢复。

R1#show mpls ldp graceful-restart

[Step5] 验证:等待120秒会话恢复后,此时会弹出日志,表示LDP GR会话已完成优雅重启流程。重新在R1上查看当前具有GR能力的LDP会话,此时2.2.2.2记录已经消失。

R1#show mpls ldp graceful-restart

锐捷 | IP路由递归引流至LDP LSP 2026-05-28

评论区