一、LDP 基本概念
LDP 邻接体 当一台 LSR 接收到对端发送过来的 Hello 消息,意味着可能存在 LDP 对等体,此时 LSR 会建立维护对端存在的 LDP 邻接体。
LDP 邻接体存在两种类型: 本地邻接体(Local Adjacency):链路 Hello 消息发现的邻接体叫做本地邻接体。 远端邻接体(Remote Adjacency):Target Hello 消息发现的邻接体叫做远端邻接体。
LDP 对等体 LDP 对等体是指相互之间存在 LDP 会话、使用 LDP 来交换标签消息的两个 LSR。 LDP 对等体通过它们之间的 LDP 会话获得对方的标签。
LDP 会话 LDP 会话用于 LSR 之间交换标签映射、释放等消息。
LDP 会话分为两种类型: 本地 LDP 会话(Local LDP Session):建立会话的两个 LSR 之间是直连的; 远端 LDP 会话(Remote LDP Session):建立会话的两个 LSR 之间可以是直连的,也可以是非直连的。
说明: LDP 通过邻接体来维护对等体的存在,对等体的类型取决于维护它的邻接体的类型。一个对等体可以由多个邻接体来维护,如果由本地邻接体和远端邻接体两者来维护,则对等体类型为本远共存对等体。只有存在对等体才能建立 LDP 会话。
本地 LDP 会话和远端 LDP 会话可以共存。
LDP 本远端会话共存,其本质是 LDP 的本地邻接体和远端邻接体可以同时绑定到同一个对等体上,也就是说该对等体同时由本地、远端两种邻接体来维持。
如图所示,当和本地邻接体相关的链路发生故障,导致该邻接体被删除时,只可能会改变该对等体的类型(对等体类型由维持对等体的邻接体的类型来决定,可以在本地、远端、本远共存之间进行切换),不会影响到对等体的存在和状态。
在链路发生故障或者故障恢复的过程中,对等体类型可能发生改变,和该对等体对应的会话类型也随之发生变化。但是,在整个过程中会话都不会被删除,也不会被置 Down,始终能够起作用。
LDP 本远端会话共存组网拓扑
本方案的典型应用场景是 L2VPN。如图所示, PE1 和 PE2 之间部署 L2VPN 业务,当 PE1 和 PE2之间的直连链路断开又恢复时的处理过程如下:
-
在直连的两台路由 PE1 和 PE2 上,分别使能 MPLS LDP,建立 PE1 和 PE2 之间的本地会话。 然后配置 PE1 和 PE2 互为远端对等体,建立 PE1 和 PE2 间的远端会话。此时 PE1 和 PE2 既是本地邻接体,又是远端邻接体, PE1 和 PE2 之间本远端会话共存。L2VPN 信令消息通过此会话传递。
-
PE1 和 PE2 之间的物理链路进入 Down 状态,导致 LDP 对等体的本地邻接体进入 Down 状态。PE1 和 PE2 之间的路由通过 P 可达,即远端邻接体依然处于 Up 状态,会话类型发生变化,成为远端会话,但会话依然处于 Up 状态, L2VPN 感知不到会话状态变化,不会主动拆除,这就避免了 L2VPN 断开邻居并重新恢复的过程,减少业务中断时间。
-
随后故障恢复, PE1 和 PE2 之间的链路进入 Up 状态,随后本地邻接体随之进入 Up 状态。会话类型发生变化,恢复为本远共存会话,会话依然处于 Up 状态, L2VPN 感知不到会话状态变化,不会主动拆除,这也减少了业务中断时间。
LDP 消息类型 LDP 协议主要使用四类消息: 发现(Discovery)消息:用于通告和维护网络中 LSR 的存在。 会话(Session)消息:用于建立、维护和终止 LDP 对等体之间的会话。 通告(Advertisement)消息:用于创建、改变和删除 FEC 的标签映射。 通知(Notification)消息:用于提供建议性的消息和差错通知。 为保证 LDP 消息的可靠发送,除了 Discovery 消息使用 UDP 传输外, LDP 的 Session 消息、Advertisement 消息和 Notification 消息都使用 TCP 传输。
标签空间 LDP 对等体之间分配标签的数值范围称为标签空间(Label Space),可以分为:
全局标签空间(Per-Platform Label Space):整个 LSR 使用一个标签空间。目前主要使用全局标签空间。
接口标签空间(Per-Interface Label Space):为 LSR 的每个接口指定一个标签空间
LDP 标识符 LDP 标识符(LDP Identifier)用于标识特定的 LSR 的标签空间。
LDP 标识符的格式为<LSR ID>:<Label space ID>,长度为六字节,其中: LSR ID:表示 LSR 标识符,占四字节。 Label space ID:表示标签空间标识符,占两字节。全局标签空间为“0”,接口标签空间为“非0”。 例如 LDP 标识符为 192.168.1.1:0,表示 LSR ID 为 192.168.1.1,标签空间为全局标签空间。
二、LDP 工作机制
LDP 协议规定了标签分发过程中的各种消息以及相关的处理过程。通过 LDP, LSR 可以把网络层的路由信息映射到数据链路层的交换路径上,进而建立起 LSP。
LDP 工作过程主要分为两个阶段:
- 发现邻居后, LSR 开始建立 LDP 会话;
- 会话建立后, LDP 通过发送标签请求和标签映射消息,在 LDP 对等体之间通告 FEC 和标签的绑定关系,从而建立 LSP。 RFC5036 分别定义了标签发布方式、标签分配控制方式和标签保持方式来决定 LSR 如何发布和管理标签。
LDP 会话 LDP 发现机制 LDP 发现机制用于 LSR 发现潜在的 LDP 对等体。
LDP 有两种发现机制:
**1、基本发现机制:**用于发现链路上直连的 LSR。 LSR 通过周期性的发送 LDP Hello 报文,实现 LDP 基本发现机制,建立本地 LDP 会话。
Hello 消息使用 UDP 报文,目的地址是组播地址,目的端口是 LDP 端口(646)。Hello 报文中携带 LDP Identifier 及一些其他消息(例如:hold time、 transport address)。如果 LSR 在特定接口接收到 LDP Hello 消息,表明该接口存在 LDP 对等体。
**2、扩展发现机制:**用于发现链路上非直连 LSR。 LSR 周期性的发送 Targeted Hello 消息到指定地址,实现 LDP 扩展发现机制,建立远端 LDP会话。 Targeted Hello 消息使用 UDP 报文,目的地址是指定地址,目的端口是 LDP 端口(646)。 Targeted Hello 消息同样携带 LDP Identifier 及一些其他信息(例如:hold time、transport address)。如果 LSR 在特定接口接收到 Targeted hello 消息,表明该接口存在 LDP 对等体。
LDP 会话建立过程 两台 LSR 之间交换 Hello 消息触发 LDP 会话的建立。
LDP 会话的建立过程如图所示:
1、两个 LSR 之间互相发送 Hello 消息。
- Hello 消息中携带传输地址,双方使用传输地址建立 LDP 会话。首先选择传输地址较大的一方作为主动方,发起建立 TCP 连接。如图所示, LSRA 作为主动方发起建立 TCP 连接,LSRB 作为被动方等待对方发起连接。
- TCP 连接建立成功后,由主动方 LSRA 发送初始化消息,协商建立 LDP 会话的相关参数,包括 LDP 协议版本、标签分发方式、 Keepalive 保持定时器的值、最大 PDU 长度和标签空间等。
- 被动方 LSRB 收到初始化消息后,如果不能接受相关参数,则发送 Notification 消息终止 LDP会话的建立;如果被动方 LSRB 能够接受相关参数,则发送初始化消息,包括 LDP 协议版本、标签分发方式、 Keepalive 保持定时器的值、最大 PDU 长度和标签空间等,同时发送Keepalive 消息给主动方 LSRA。
- 主动方 LSRA 收到初始化消息后,如果不能接受相关参数,则发送 Notification 消息给被动方 LSRB 终止 LDP 会话的建立;如果能够接受相关参数,则发送 Keepalive 消息给被动方LSRB。 当双方都收到对端的 Keepalive 消息后, LDP 会话建立成功。
标签的发布和管理 标签发布方式(Label Advertisement Mode) 在 MPLS 体系中,由下游 LSR 决定将标签分配给特定 FEC,再通知上游 LSR,即标签由下游指定,标签的分配按从下游到上游的方向分发。
如表,标签发布方式有两种方式。
具有标签分发邻接关系的上游 LSR 和下游 LSR 必须对使用的标签发布方式达成一致。
说明: 标签发布方式为 DU 时,系统默认支持 LDP 为所有 Peer 分标签,即每个节点都可以向所有的对等体发送标签映射消息,不再区分上下游关系。因为在只给上游 Peer 分标签情况下,发送标签映射消息的时候,要根据路由信息对会话的上下游关系进行确认。对于某一条路由,上游节点不向下游节点发送标签映射消息;如果发生路由变化,上下游关系倒换,新的下游需要重新给上游节点发送标签映射消息,收敛比较慢。
DU 和 DoD 方式
标签分配控制方式(Label Distribution Control Mode) 标签分配控制方式是指在 LSP 的建立过程中, LSR 分配标签时采用的处理方式。
如表,标签分配控制方式有两种方式。
标签保持方式(Label Retention Mode) 标签保持方式是指 LSR 对收到的、但目前暂时不需要的标签映射的处理方式。 LSR 收到的标签映射可能来自下一跳,也可能来自非下一跳。
如表,标签保持方式有两种方式。
目前设备支持如下组合方式: 下游自主方式(DU)+ 有序标签分配控制方式(Ordered)+ 自由标签保持方式(Liberal)。 下游按需方式(DoD)+ 有序标签分配控制方式(Ordered)+ 保守标签保持方式 (Conservative)。
三、LDP 标签过滤机制 一般情况下, LSR 对于标签映射消息的接收和发送没有限制,导致大量的 LSP 的建立。这对于性能较低的设备,会造成资源的大量消耗,设备将无法承受。配置 LDP Outbound 策略和 Inbound 策略,可以限制标签映射消息的发送和接收,减少 LSP 的数量,节省内存。
LDP Outbound 策略
LDP Outbound 策略可以用于过滤向对等体发送的标签映射消息,如果路由 FEC 没有通过任何Outbound 策略,则不允许建立 Transit LSP 或 Egress LSP。如果一组对等体或者全部对等体发送标签映射消息时,对 FEC 的限制范围是相同的,则可以对这一组或全部对等体应用相同的 Outbound策略。
LDP Outbound 策略只会过滤路由 FEC 的标签映射消息,不会过滤 L2VPN 的标签映射消息,同时支持指定路由 FEC 的范围。
LDP Outbound 策略还支持水平分割,即只向上游 LDP 对等体分配标签。 LSR 在向对等体发送路由 FEC 的标签映射消息前会查看本地是否配置了 Outbound 策略。 如果本地没有配置 Outbound 策略,则发送标签映射消息。 如果本地配置了 Outbound 策略,则根据策略中指定的路由 FEC 的范围来确定是否发送该路由 FEC 的标签映射消息。
LDP Inbound 策略
LDP Inbound 策略可以用于过滤从对等体接收的标签映射消息,如果路由 FEC 没有通过本地任何Inbound 策略,则不接收标签映射消息。如果一组对等体或者全部对等体接收标签映射消息时,对FEC 的限制范围是相同的,则可以对这一组或全部对等体应用相同的 Inbound 策略。LDP Inbound 策略只过滤路由 FEC 的标签映射消息,不会过滤 L2VPN 的标签映射消息,支持对非BGP 路由指定 FEC 范围。
LSR 在接收对等体发送的路由 FEC 的标签映射消息前会查看本地是否配置了 Inbound 策略。
如果本地没有配置 Inbound 策略,则接收标签映射消息。 如果本地配置了 Inbound 策略,则根据策略中指定的路由 FEC 的范围来确定是否接收该路由FEC 的标签映射消息。
在不接收标签映射消息的情况下: 如果本地和邻居建立的是 DU 会话,则建立 Liberal LSP,且此 Liberal LSP 不可以被 LDP FRR选作备份 LSP。 如果本地和邻居建立的是 DoD 会话,则发送 Release 消息拆除标签绑定。
说明: 已经被分配标签,但是没有建立成功的 LSP 叫做 Liberal LSP。
四、LDP 与静态路由联动 LDP 与静态路由联动主要用在存在主备 LSP 的 MPLS 组网中, LSR 之间依靠静态路由建立 LSP,当主链路的 LDP 会话故障(非链路故障导致)时,或者主链路故障后再恢复时,用来解决主备 LSP相互切换导致的流量丢失问题。 在 LSP 存在主备链路的组网中,如图所示, LSRA 和 LSRD 之间通过静态路由连通, LDP 在两端基于静态路由建立 LSP,正常情况下优选 LinkA。
图 LDP 与静态路由联动解决的 LSP 切换
主链路的 LDP 会话故障(非链路故障导致) LDP 会话正常建立的情况下, MPLS 流量使用 LinkA 转发。如果 LSRB 上的 LDP 被去使能或LDP 出现故障,导致 LSRA 和 LSRB 之间的 LDP 会话发生中断,但 LSRA 和 LSRB 之间的链路没有问题,静态路由是活跃的,而 LSP 切换到 LinkB,导致 LSRA 和 LSRD 之间的 MPLS流量中断。 如果在 LSRA 上使能 LDP 与静态路由联动后,当 LDP 会话 Down 时,静态路由自动切换到LinkB,使 LSP 切换到备份 LSP,保证流量不中断。
主链路故障后再恢复 当 LSRA 和 LSRB 之间的链路失效时, LSP 切换到 LinkB。随后 LSRA 和 LSRB 之间的链路恢复时, LSP 随静态路由切换到主链路。原来的 LSP 路径无法使用,新的 LSP 还没有建立时,在这个时间差内, LSRA 和 LSRD 之间的 MPLS 流量中断。 如果在 LSRA 上使能 LDP 与静态路由联动后,当 LDP 会话 Up 时,静态路由才开始活跃,保证流量不中断。
五、LDP 与 IGP 联动
产生背景 由于 LDP 的收敛速度依赖于 IGP 路由的收敛,即 LDP 的收敛速度比 IGP 的收敛速度慢,因此在MPLS 网络中有如下问题:
在存在主备链路的组网中,有两种情况:
-
当主链路发生故障时, IGP 路由和 LSP 均切换到备份链路上。但当主链路从故障中恢复时,由于 IGP 路由比 LDP 收敛速度快, IGP 会先于 LDP 切换回主链路,因此造成 LSP 流量丢失。
-
当主链路正常,但主链路节点间的 LDP 会话发生故障时, IGP 路由仍然使用主链路,而主链路的 LSP 被删除。同时,由于备份链路不存在 IGP 路由,故 LSP 无法在备份链路建立,导致 LSP 流量丢失。
当某节点发生主备倒换时, LDP 会话的建立可能晚于 IGP 的 GR 结束,从而 IGP 发布链路的最大开销值,导致路由振荡。
相关概念 LDP 与 IGP 联动的基本原理是:通过抑制 IGP 发布正常路由,来保证 LDP 与 IGP 联动完成收敛。 LDP 与 IGP 联动包括三个定时器: Hold-down timer:用于抑制 IGP 邻居建立的时长。 Hold-max-cost timer:用于控制通告接口链路的最大 cost 值的时长。 Delay timer:用以控制等待 LSP 建立的时间。
实现过程
图 LDP 与 IGP 联动需要解决的回切问题
当主备链路发生切换时, LDP 与 IGP 联动切换过程: 如图所示,不同场景下的 LDP 与 IGP 联动切换过程如下:
1. 主链路物理故障恢复 a. 链路故障恢复; b. LSR2 与 LSR3 之间建立 LDP 会话,同时 IGP 抑制邻居关系的建立并根据情况 启动 Hold-down timer;
c. 流量仍然会按照原来的 LSP 转发; d. LDP 会话建立后,交换标签消息,通告 IGP 启动同步; e. IGP 启动邻居关系建立, IGP 收敛到主链路上, LSP 重新建立并收敛到主链路上 (一般在毫秒级)。
2. 主链路 IGP 正常, LDP 会话故障 a. 主链路节点间 LDP 会话故障; b. LDP 通告 IGP 主链路会话故障, IGP 启动 Hold-max-cost 定时器,并在主链路发 布最大开销值; c. IGP 路由切换至备份链路; d. LSP 在备份链路重新建立并下发转发表项。
为防止 LDP 会话一直不能重新建立,可通过配置 Hold-max-cost 定时器为永久发布最 大开销值,使流量在主链路的 LDP 会话重新建立之前,一直都使用备份链路。
当系统发生主备倒换时, LDP 与 IGP 联动的具体过程如下:
- Restarter 端的 IGP 会先发布正常开销值,并启动内部定时器 Delay timer 等待 LDP 会话建立,然后再结束 GR。
- 如果 Delay timer 超时, LDP 会话依然没有建立, IGP 启动 Hold-max-cost 定时器,并发布接口链路的最大开销值。
- 当 LDP 会话重新建立或 Hold-max-cost 定时器超时时, IGP 恢复本地链路的正常开销值,更新路由。
- Helper 端一直保留路由和 LSP 不会被删除,所以当 LDP 会话进入 Down 状态时, LDP不会通知 IGP Session Down 事件, IGP 仍然发布链路的正常开销值,保证流量和 LSP不发生切换。
六、BFD for LSP 在 LSP 链路上建立双向转发检测 BFD(Bidirectional Forwarding Detection)会话,利用 BFD 检测机制快速检测 LSP 链路的故障,可以提供端到端的保护。 BFD 可以用来检测 MPLS LSP 转发路径上数据平面的故障,同时 BFD 的报文格式是固定的。使用BFD 检测单向 LSP 路径时,反向链路可以是 IP 链路、 LSP 或 TE 隧道。
实现机制 BFD 使用异步模式检测 LSP 的连通性,即 Ingress 和 Egress 之间相互周期性地发送 BFD 控制报文。 1、如果任何一端在检测时间内没有收到对端发来的 BFD 控制报文,就认为 LSP 状态为 Down,并向 LSP 管理模块上报 LSP Down 消息。
2、如果是链路在 Up 和 Down 之间频繁切换,则 BFD 上报 LSP 为 Down 后又上报对应的 LSP 为Up,实现了快速检测。 3、如果 Egress 向 Ingress 发送 BFD 控制报文的返回路径发生故障,则 BFD 会话 Down。
说明: BFD 是一个双向的检测机制,而 BFD for LSP 的检测是单向的。BFD for LSP 在 Ingress 通过 LSP发送 BFD 控制报文,而在 Egress 可以通过 IP 发送 BFD 控制报文。因此当 Ingress 收不到从 Egress通过返回路径发送的 BFD 控制报文时,不管是 LSP 本身故障,还是回来路径出现故障,应用程序 都认为是 LSP 故障。
BFD 会话的建立 检测 MPLS LSP 的连通性时, BFD 会话协商有两种方式: 静态配置 BFD 会话:通过手工配置 BFD 的本地标识符和远端标识符,由 BFD 本身的协商机制建立会话。 动态创建 BFD 会话:通过在 LSP Ping 报文中携带 BFD Discriminator TLV(Type Length Vaule)进行会话协商。
BFD 支持检测的 LSP 类型有: 静态 BFD for 静态 LSP 静态 BFD for LDP LSP 动态 BFD for LDP LSP
动态 BFD for LDP LSP 会话的建立过程如图所示。
- Ingress 在 LSP 上发送携带 Type 值为 15 的 TLV 回声请求报文。该报文中包含 Ingress 节点为这个 BFD 会话分配的本地标识符 LD。
- Egress 收到 Ingress 发送的回声请求报文,将该报文中携带的本地标识符作为自己的远端标识符 RD。
- Egress 向 Ingress 发送回声应答报文。该报文中携带 Egress 节点为这个 BFD 会话分配的本地标识符 LD。
- Ingress 收到 Egress 发送的回声应答报文,将该报文中携带的本地标识符作为自己的远端标识符 RD。
动态 BFD for LDP LSP 会话的建立过程
七、LDP FRR LDP FRR(Fast Reroute)为 MPLS 网络提供快速重路由功能,实现了链路备份。
LDP FRR 原理是通过 LDP 信令的 Liberal 标签保持方式,先获取 Liberal Label,为该标签申请转发表项资源,并将转发信息下发到转发平面作为主 LSP 的备用转发表项。当接口故障(接口自己感 知或者结合 BFD 检测)或者主 LSP 不通(结合 BFD 检测)时,可以快速的将流量切换至备份路径,从而实现了对主 LSP 的保护。
1、手动配置的 LDP FRR 需要使用命令来指定建立的备份 LSP 的出接口和下一跳。当 Liberal Label 的来源匹配指定的出接口和下一跳的时候,就能够建立备份 LSP 并下发转发表项。 2、LDP Auto FRR 依赖 IP FRR 的实现。只有 Liberal Label 的来源匹配存在的备份路由,即保留的 Liberal Label 来自备份路由出接口和下一跳,并且满足备份 LSP 触发策略,同时没有根据该备份路由手工配置的备份 LSP 存在的时候,才能够为之建立备份 LSP 并下发转发表项。LDP Auto FRR 策略默认是 32 位的备份路由触发 LDP 建立备份 LSP。在手工配置的 LDP FRR 和LDP Auto FRR 同时满足创建条件的时候,优先建立手工配置的 LDP FRR。
应用场景 图 LDP FRR 典型应用场景-三角型拓扑
如图所示,为 LDP FRR 的典型应用场景。LSRA 到 LSRB 的优选路由为 LSRA-LSRB,次优路由为 LSRA-LSRC-LSRB,因此 LSRA 上会建立一条 LSRA-LSRB 的主 LSP,并用 LSRA-LSRC-LSRB作为备份 LSP 保护该主 LSP。当 LSRA 收到 LSRC 发来的标签后,会和路由比较,因为 LSRA 到LSRB 的路由下一跳不是 LSRC,所以 LSRA 会把这个标签存为 Liberal Label,如果该 Liberal Label的来源对应的备份路由存在,就可以为该 Liberal Label 申请一个转发表项资源,创建备份 LSP 作为主 LSP 的备用转发表项,和主 LSP 一起下发到转发平面,这样主 LSP 就和这条备份 LSP 关联起来了。
接口感知接口故障、 BFD 感知接口故障、或者 BFD 感知主 LSP 不通等,都能触发 LDP FRR 切换。
当 LDP FRR 切换后,流量根据备用转发表项切换到备份路径上,至此 LDP FRR 生效。之后的变化过程是路由从 LSRA-LSRB 收敛到 LSRA-LSRC-LSRB,在新的路径(原来的备份路径)上根据路由新建 LSP,再把原来的主 LSP 删除,流量按照 LSRA-LSRC-LSRB 上新建的 LSP 进行转发。
图 LDP FRR 典型应用场景-口字型拓扑
LDP FRR 对三角形拓扑支持情况较好,但对口字型拓扑不一定能够完全支持。如图所示,如果 N1 到 D 的最优路由是 N1-N2-D(不可负载分担), S 就会收到来自 N1 的 Liberal 标签,并绑定 LDP FRR。S-D 之间的链路故障时,流量会切换到 S-N1-N2-D,不会形成环路。但如果 N1 到 D 的路由是 N1-N2-D 和 N1-S-D 负载分担, S 作为 N1 的下游邻居,不一定会收到来自 N1 的 Liberal 标签。并且,即使 S 有了该 Liberal 标签(LDP 为所有 peer 分标签),绑定了 LDP FRR,发生切换后流量到达 N1 后还很有可能会转发给 S,从而形成环路,直至 N1 到 D 的路由收敛为 N1-N2-D。
八、LDP GR LDP GR(Graceful Restart)是借助邻居设备(GR Helper)的帮助,实现主备倒换或协议重启的设备(Restarter)转发不中断。
在没有 GR 能力的情况下,发生主备倒换时,邻居会因为 LDP 会话进入 Down 状态而删除 LSP,产生业务流量短时间中断。对于以上情况,如果配置了 LDP GR 能力,可以保证意外主备倒换前后的标签保持一致,即保持了 MPLS 转发不中断。
具体过程如图所示:
- 主备倒换前, LDP 邻居在建立 LDP 会话时进行 GR 能力协商。
- GR Restarter 主备倒换后, GR Helper 检测到和 GR Restarter 的 LDP 会话失败时,启动 GR Reconnect 定时器,在该定时器超时前保留 GR Restarter 相关的转发表项并做 Stale 标记。
- GR Restarter 进行主备倒换后,会启动 Forwarding State Holding 定时器。该定时器超时前,GR Restarter 保留重启前的所有 MPLS 转发表项并做 Stale 标记,且对 GR Helper 发送 LDP初始化消息。若该定时器超时,则执行步骤 6。
- 在 GR Reconnect 定时器超时前, LDP 会话重新建立完成,则 GR Helper 删除该定时器并启动 Recovery Timer 定时器,继续保留标记为 Stale 的转发表项。
- 在 GR Helper 的 GR Recovery 定时器超时前,双方交换标签映射报文,恢复主备倒换前的标签绑定。定时器超时后, GR Helper 会删除所有仍然标记为 Stale 的 MPLS 转发表项。
- 结束 GR, GR Restarter 将删除所有仍然标记为 Stale 的 MPLS 转发表项。
LDP GR 实现原理
九、LDP NSR NSR(Non-Stop Routing)技术和 NSF(Non-Stop Forwarding)技术有本质的区别,是 NSF 技术的革新。在系统控制平面发生故障(软件故障或硬件故障)时, NSR 技术除了能够保证转发不中断,还能够保证控制平面的连接不中断,且邻居控制平面不感知。LDP 通过主备板同步来实现 NSR。首先,备板启动时,通过批量备份,达到主备板数据阶段性一致。然后,通过实时备份和主备板同时接收报文,达到主备板的实时数据同步。这样, NSR 就能够保证主备倒换后备板快速接管原主控板的业务,使邻居不感知本路由器故障。
LDP 实现了如下关键数据的主备实时同步: 1、LSP 转发表项 2、标签、交叉连接等关键资源 3、LDP 协议控制块
十、LDP 安全机制
LDP 报文 MD5 验证 MD5(Message-Digest Algorithm 5)是 RFC1321 定义的国际标准摘要密码算法。MD5 的典型应用是针对一段信息计算出对应的信息摘要,从而防止信息被篡改。MD5 信息摘要是通过不可逆的字符串变换算法产生的,结果唯一。因此,不管信息内容在传输过程中发生任何形式的改变,只要重新计算就会产生不同的信息摘要,接收端就可以由此判定收到的是一个不正确的报文。LDP MD5 应用其对同一信息段产生唯一摘要信息的特点来实现 LDP 报文防篡改校验,比一般意义上 TCP 校验和更为严格。
LDP MD5 验证是在 TCP 发出去之前进行的, LDP 会话消息在经 TCP 发出前,会在 TCP 头后面填充一个唯一的信息摘要再发出。而这个信息摘要就是把 TCP 头、 LDP 会话消息以及用户设置的密码一起作为原始信息,通过 MD5 算法计算出的。
当接收端收到这个 TCP 报文时,首先会取得报文的 TCP 头、信息摘要、 LDP 会话消息,并结合TCP 头、 LDP 会话消息以及本地保存的密码,利用 MD5 计算出信息摘要,然后与报文携带的信息摘要进行比较,从而检验报文是否被篡改过。
在用户设置密码时有明文和密文两种形式选择,这里的明文密文是对用户设置的密码在配置文件中的记录形式而言的。明文就是直接在配置文件中记录用户设置的字符串,密文就是在配置文件中记录经过特殊算法加密后的字符串。
但无论用户选择密码记录形态是明文还是密文形式,参与摘要计算时都是直接使用用户输入的字符串,也就是说私有加密算法计算出的密码并不会参与 MD5 摘要计算。由于明文和密文的转化算法各厂商私有,此种实现做到了私有算法对其他厂商设备透明。
LDP 报文 Keychain 验证 Keychain 是一种增强型加密算法,类似于 MD5, Keychain 也是针对同一段信息计算出对应的信息摘要,实现 LDP 报文防篡改校验。
Keychain 允许用户定义一组密码,形成一个密码串,并且分别为每个密码指定加解密算法(包括MD5, SHA-1 等)及密码使用的有效时间。在收发报文时,系统会按照用户的配置选出一个当前有效的密码,并按照与此密码相匹配的加密解密算法以及密码的有效时间,进行发送时加密和接收时解密报文。此外,系统可以依据密码使用的有效时间,自动完成有效密码的切换,避免了长时间不更改密码导致的密码易破解问题。
Keychain 的密码、所使用的加解密算法以及密码使用的有效时间可以单独配置,形成一个 Keychain配置节点,每个 Keychain 配置节点至少需要配置一个密码,并指定加解密算法。
LDP GTSM 通用 TTL 安全保护机制 GTSM(Generalized TTL Security Mechanism)是一种通过检查 IP 报文头中的 TTL 值是否在一个预先定义好的范围内来实现对 IP 业务进行保护的机制。
使用 GTSM 的两个前提: 1、设备之间正常报文的 TTL 值确定 2、报文的 TTL 值很难被修改
LDP GTSM 是 GTSM 在 LDP 方面的具体应用。
GTSM 通过判定报文的 TTL 值,确定报文是否有效,从而保护设备免受攻击。GTSM For LDP 即是对相邻或相近(基于只要跳数确定的原则)设备间的 LDP 消息报文应用此种机制,预先在各设备上设定好针对其他设备报文的有效范围,使能 GTSM,这样当相应设备之间应用 LDP 时,如果LDP 消息报文的 TTL 不符合之前设置的范围要求,就认为此报文为非法攻击报文予以丢弃,进而实现对上层协议的保护。
十一、LDP 跨域扩展 本特性可以使能 LDP 建立跨越多个 IGP 区域的 LDP LSP,提供穿越公网的隧道。
图LDP 跨域扩展组网拓扑
如图所示,存在 Area 10 和 Area 20 两个 IGP 区域。
在 Area 10 区域边缘的 LSRD 的路由表中,存在到 LSRB 和 LSRC 的两条主机路由。通常,为了避免路由数量多而引起的对资源的过多占用,在 LSRD 上可以通过 ISIS 路由协议将这两条路由聚合为 1.3.0.0/24 发送到 Area 20 区域,则 LSRA 的路由表中只有这条聚合后的路由,而没有 32 位的主机路由。然而,缺省情况下, LDP 在建立 LSP 的时候,会在路由表中查找与收到的标签映射消息中携带的 FEC 精确匹配的路由,对于图 1 中的情况, LSRA 的路由表项信息和 FEC 携带的路由信息如表所示。
对于聚合路由, LDP 只能建立 Liberal LSP,无法建立跨越 IGP 区域的 LDP LSP,以至于无法提供必要的骨干网隧道。
因此,在图的应用中,需要按照最长匹配方式查找路由建立 LSP。在 LSRA 的路由表中,已经存在聚合路由 1.3.0.0/24。当 LSRA 收到 Area 10 区域的标签映射消息时(例如携带的 FEC 为1.3.0.1/32),按照 RFC5283 使用最长匹配的查找方式, LSRA 能够找到聚合路由 1.3.0.0/24 的信息,把该路由的出接口和下一跳作为到 FEC 1.3.0.1/32 的出接口和下一跳。这样, LDP 就可以建立跨越IGP 区域的 LDP LSP 。
基本发现机制:用于发现链路上直连的 LSR。LSR 通过周期性的发送 LDP Hello 报文,实现 LDP 基本发现机制,建立本地 LDP 会话。