02-LDP配置
本章节下载: 02-LDP配置 (575.12 KB)
LDP(Label Distribution Protocol,标签分发协议)用来动态建立LSP。通过LDP,LSR可以把网络层的IP路由信息映射到MPLS的标签交换路径上。
LDP会话是指建立在TCP连接之上的LDP协议连接,用于在LSR之间交换FEC—标签映射(FEC-Label Mapping)。
LDP对等体是指相互之间存在LDP会话,并通过LDP会话交换FEC—标签映射关系的两个LSR。
标签空间是指标签的取值范围。有以下几种类型的标签空间:
· 每接口标签空间(per-interface label space):每个接口使用一个独立的标签空间。不同接口使用的标签空间中包括的标签值可以相同。
· 每平台标签空间(per-platform label space):整个LSR统一使用一个标签空间。
目前,设备上只支持每平台标签空间。
LDP ID(LDP Identifier,LDP标识符)用于标识特定LSR的标签空间,为一个六字节的数值,格式如下:
<LSR ID>:<标签空间序号>
其中,LSR ID占四字节;标签空间序号占两字节,取值为0时表示每平台标签空间,取值为非0值时表示某个接口使用的标签空间。
LDP协议运行在IPv4网络和运行在IPv6网络中使用相同格式的LDP ID,且要求全局唯一。
FEC(Forwarding Equivalence Class,转发等价类)是MPLS中的一个重要概念。MPLS将具有相同特征(目的地相同或具有相同服务等级等)的报文归为一类,称为FEC。属于相同FEC的报文在MPLS网络中将获得完全相同的处理。
LDP支持根据目的IP地址和PW(Pseudowire,伪线)划分FEC。本文只介绍根据目的IP地址划分FEC。
FEC—标签映射也称为FEC—标签绑定(FEC-Label Binding),是本地LSR设备上标签与FEC的对应关系。LDP通过Label Mapping消息将FEC—标签映射通告给对等体。
LDP协议主要使用四类消息:
· 发现(Discovery)消息:用于通告和维护网络中的LSR,例如Hello消息。
· 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,例如用来协商会话参数的Initialization消息和用于维护会话的Keepalive消息。
· 通告(Advertisement)消息:用于创建、改变和删除“FEC—标签”映射关系,例如用来通告标签映射的Label Mapping消息。
· 通知(Notification)消息:用于提供建议性信息的消息和差错通知,例如Notification消息。
为保证LDP消息的可靠发送,除了发现消息使用UDP传输外,LDP的会话消息、通告消息和通知消息都使用TCP传输。
LDP协议既可在IPv4网络或IPv6网络中运行,也可在IPv4和IPv6并存的网络中运行,LDP在IPv4和IPv6网络中的工作过程基本相同。
LDP工作过程主要包括对等体发现与维护、会话建立与维护、LSP建立三个阶段。
使能了LDP能力的LSR周期性地发送Hello消息,通告自己的存在。通过Hello消息,LSR可以自动发现它周围的LSR邻居,并与其建立Hello邻接关系。
LDP对等体发现机制分为两种:
· 基本发现机制:用于发现本地直连的LSR邻居,即通过链路层直接相连的LSR。在这种方式下,LSR周期性地向组播地址224.0.0.2(IPv4网络)或FF02:0:0:0:0:0:0:2(IPv6网络)发送LDP的Link Hello消息,以便链路层直接相连的LSR发现此LSR,在IPv4和IPv6共存的网络中,LSR会向直连LSR同时发送IPv4 Link Hello消息和IPv6 Link Hello消息,并与邻接LSR同时保持IPv4 Link Hello邻接关系和IPv6 Link Hello邻接关系。
· 扩展发现机制:可用于发现远端非直连的LSR邻居,即不通过链路层直接相连的LSR。这种方式下,LSR周期性地向指定的IP地址发送LDP的Targeted Hello消息,以便指定IP地址对应的LSR发现此LSR。如果指定的地址为IPv4地址,则发送IPv4 Targeted Hello消息;如果指定的地址为IPv6地址,则发送IPv6 Targeted Hello消息。
LSR可以与直连的邻居同时建立Link Hello和Targeted Hello两种邻接关系。
LDP对等体之间通过周期性地发送Hello消息来维护Hello邻接关系。如果Hello保持定时器超时时仍没有收到新的Hello消息,则删除Hello邻接关系。
通过交互Hello消息发现LSR邻居后,LSR开始与其建立会话。这一过程可分为两步:
(1) 建立传输层连接,即在LSR之间建立TCP连接,在IPv4和IPv6共存的网络中LSR会优先建立IPv6 TCP连接,如果建立IPv6 TCP连接失败,则会尝试建立IPv4 TCP连接;
(2) 通过交换会话初始化消息对LSR之间的会话进行初始化,协商会话中涉及的各种参数,如LDP版本、标签通告方式、Keepalive保持时间等。如果会话参数协商通过,则LSR之间成功建立LDP会话。
会话建立后,LDP对等体之间通过发送LDP PDU(LDP PDU中携带一个或多个LDP消息)来维护这个会话。如果在Keepalive报文发送时间间隔内,LDP对等体之间没有需要交互的信息,则LSR发送Keepalive消息给LDP对等体,以便维持LDP会话。如果Keepalive保持定时器超时时,没有收到任何LDP PDU,LSR将关闭TCP连接,结束LDP会话。
一个LDP会话上可能存在多个Hello邻接关系。当LDP会话上的最后一个Hello邻接关系被删除后,LSR将发送通知消息,结束该LDP会话。
相邻LSR之间只会建立一个LDP会话,但可在此会话中同时交互IPv4 FEC—标签映射和IPv6 FEC—标签映射。
LSR还可以通过发送Shutdown消息,通知它的LDP对等体结束LDP会话。
利用LDP动态建立LSP的过程如图1-1所示。LSR根据IP路由表项中的目的IP地址划分FEC,为不同的FEC分配不同的标签,并将FEC—标签映射通告给对端LSR;对端LSR根据接收到的FEC—标签映射及本地为该FEC分配的标签建立标签转发表项。从Ingress到Egress的所有LSR都为该FEC建立对应的标签转发表项后,就成功地建立了用于转发属于该FEC报文的LSP。
图1-1 动态LSP建立过程
如图1-2所示,根据建立了会话的一对LSR中哪个LSR负责发起标签映射过程,标签通告方式分为:
· DU(Downstream Unsolicited,下游自主方式):下游LSR主动将FEC—标签映射通告给上游LSR,无需等待上游LSR的标签请求。在DU方式中,下游LSR负责发起标签映射过程。
· DoD(Downstream On Demand,下游按需方式):上游LSR请求下游LSR为FEC分配标签,下游LSR收到请求后,才会将该FEC的FEC—标签映射通告给请求标签的上游LSR。在DoD方式中,上游LSR负责发起标签映射过程。
目前,设备只支持DU标签通告方式。
具有标签分发邻接关系的上游LSR和下游LSR之间必须使用相同的标签通告方式,否则LSP无法正常建立。
根据通告FEC—标签映射前是否要求收到下游的FEC—标签映射,标签分发控制方式分为独立标签分发控制方式(Independent)和有序标签分发控制方式(Ordered)。
· 独立标签分发控制方式:LSR可以在任意时间向与它连接的LSR通告FEC—标签映射。使用这种方式时,LSR可能会在收到下游LSR的FEC—标签映射之前就向上游通告了FEC—标签映射。如图1-3所示,如果标签通告方式是DU,则即使没有获得下游的FEC—标签映射,也会直接向上游LSR通告FEC—标签映射;如果标签通告方式是DoD,则接收到标签请求的LSR直接向它的上游LSR通告FEC—标签映射,不必等待来自它的下游的FEC—标签映射。
· 有序标签分发控制方式:LSR只有收到它的下游LSR为某个FEC通告的FEC—标签映射,或该LSR是此FEC的出口节点时,才会向它的上游LSR通告此FEC的FEC—标签映射。图1-2中的标签通告过程采用了有序标签控制方式:如果标签通告方式为DU,则LSR只有收到下游LSR通告的FEC—标签映射,才会向自己的上游LSR通告FEC—标签映射;如果标签通告方式为DoD,则下游LSR(Transit)收到上游LSR(Ingress)的标签请求后,继续向它的下游LSR(Egress)发送标签请求,Transit收到Egress通告的FEC—标签映射后,才会向Ingress通告FEC—标签映射。
根据LSR是否保持收到的、但暂时未使用的FEC—标签映射,标签保持方式分为:
· 自由标签保持方式(Liberal):对于从邻居LSR收到的标签映射,无论邻居LSR是不是指定FEC的下一跳都保留。这种方式的优点是LSR能够迅速适应网络拓扑变化,但是由于需要保留所有不能生成LSP的标签,浪费了内存等系统资源。
· 保守标签保持方式(Conservative):对于从邻居LSR收到的标签映射,只有当邻居LSR是指定FEC的下一跳时才保留。这种方式的优点是节省标签,但是对拓扑变化的响应较慢。
目前,设备只支持自由标签保持方式。
LDP GR(Graceful Restart,平滑重启)利用MPLS转发平面与控制平面分离的特点,在信令协议或控制平面出现异常时,保持标签转发表项,LSR依然根据该表项转发报文,从而保证数据转发不中断。
如图1-4所示,参与LDP GR过程的设备分为以下两种:
· GR restarter:GR重启的LSR,指由管理员手工触发或控制平面异常而重启协议的设备,它必须具备GR能力。
· GR helper:GR restarter的邻居LSR,与重启的GR restarter保持邻居关系,并协助其恢复重启前的转发状态。
设备既可以作为GR restarter,又可以作为GR helper,设备的角色由该设备在LDP GR过程中的作用决定。
图1-5 LDP GR工作过程示意图
如图1-5所示,LDP GR的工作过程为:
(1) LSR之间建立LDP会话时,LSR在发送的Initialization消息中携带FT(Fault Tolerance,容错)会话TLV,且L标记位置为1,标识它们支持LDP GR。
(2) GR restarter进行协议重启时,启动MPLS转发状态定时器,并将标签转发表项置为Stale状态。GR helper发现与GR restarter之间的LDP会话down后,将通过该LDP会话接收的FEC—标签映射置为Stale状态,并启动重连定时器。
(3) GR restarter协议重启后,重新建立与GR helper的LDP会话。如果在重连定时器超时前,没有建立LDP会话,则GR helper删除标记为Stale的FEC—标签映射及对应的标签转发表项。如果在重连定时器超时前,重新建立LDP会话,GR restarter将转发状态保持定时器的剩余时间作为恢复定时器时间值通告给GR helper。
(4) GR restarter和GR helper之间重新建立LDP会话后,GR helper启动LDP恢复定时器。
(5) GR restarter和GR helper在新建立的LDP会话上交互标签映射,更新标签转发表。GR restarter接收到标签映射后,与标签转发表进行比较:如果标签转发表中存在与标签映射一致的Stale表项,则删除该表项的Stale标记;否则,按照正常的LDP处理流程,添加新的标签转发表项。GR helper接收到标签映射后,与本地保存的FEC—标签映射进行比较:如果存在一致的标签映射,则删除该FEC—标签映射的Stale标记;否则,按照正常的LDP处理流程,添加新的FEC—标签映射及对应的标签转发表项。
(6) MPLS转发状态保持定时器超时后,GR restarter删除标记为Stale的标签转发表项。
(7) LDP恢复定时器超时后,GR helper删除标记为Stale的FEC—标签映射。
GR restarter在LDP会话协商时,将本地配置的GR重连超时时间和GR转发状态保持定时器的剩余时间发送给GR helper,GR helper分别将其作为重连定时器的值和LDP恢复定时器的值。
LDP NSR(Nonstop Routing,不间断路由)是一种通过在LDP协议主备进程之间备份必要的协议状态和数据(如LDP会话信息和LSP信息),使得LDP协议的主进程中断时,备份进程能够无缝地接管主进程的工作,从而确保对等体感知不到LDP协议中断,保证LDP会话保持Operational状态,并保证转发不会中断的技术。
导致LDP主进程中断的事件包括以下几种:
· LDP主进程重启
· LDP主进程所在的主控板发生故障
· LDP主进程所在的主控板进行ISSU(In-Service Software Upgrade,不中断业务升级)
· 进程分布优化为LDP进程决策出的位置不同于当前运行的位置而进行进程主备倒换
LDP协议的主进程和备进程运行在不同的主控板上,因此要运行LDP NSR功能,设备上必须有两个或两个以上的主控板。
LDP基于IGP最优路由建立LSP,LDP和IGP不同步可能导致MPLS流量转发中断。LDP和IGP不同步包括如下情况:
· 某条链路up后,IGP通告并使用了这条链路,而此时这条链路上LDP LSP尚未建立;
· 当LDP会话down时,IGP继续使用这条链路,而此时这条链路上的LDP LSP已经拆除;
· 标签分发控制方式为有序方式时,还没有收到下游设备通告的标签映射,尚未建立LDP LSP,IGP就已经使用该链路。
启用LDP IGP同步功能后,只有LDP在某条链路上收敛,IGP才会为这条链路通告正常的开销值,否则通告链路开销的最大值,使得这条链路在IGP拓扑中可见,但是在其它链路可用的情况下,IGP不会将该链路选为最优路由,从而确保设备收到MPLS报文时,不会因为最优路由上的LDP LSP没有建立而丢弃MPLS报文。
同时满足如下条件时,设备认为LDP在某条链路上已收敛:
· 在该链路上本地设备至少与一个对等体建立了LDP会话,且该LDP会话已进入operational状态。
· 在该链路上本地设备至少向一个对等体发送完标签映射。
缺省情况下,LDP在某条链路上收敛后立即通知IGP,以便IGP发布该链路的正常开销值。但是,在某些情况下,LDP收敛后立即通知IGP,可能会导致MPLS流量转发中断,例如:
· 对等体的标签分发控制方式为有序方式时,LDP会话进入operational状态后,设备需要等待下游的标签映射。如果尚未收到下游的标签映射就向IGP通知LDP收敛,则可能导致MPLS流量转发中断。
· 下游的标签映射比较多时,如果LDP收敛后立即通知IGP,则下游的标签映射可能尚未通告完成,导致MPLS流量转发中断。
在这些情况下,需要配置恰当的延迟通知时间,即LDP在某条链路上收敛后,等待延迟时间再通知IGP,以最大限度地缩短MPLS流量中断的时间。
LDP协议重启或倒换后,需要等待一段时间LDP才会收敛。如果在协议重启或倒换后,LDP立即将当前所有的LDP IGP同步状态通知给IGP,在LDP收敛后再更新这些状态,则可能会导致IGP频繁地根据不同的同步状态进行处理,增加了IGP的处理开销。
LDP协议重启或倒换后的延迟通知机制可以用来解决上述问题。该机制提供了LDP进程级别的延迟通知时间,即在LDP协议重启或倒换的情况下,等待LDP恢复到重启或倒换前的收敛状态后,再批量通知LDP IGP同步状态,以减少IGP的处理开销。如果到达指定的最大延迟时间时,仍未恢复之前的收敛状态,则立即向IGP批量通告当前的LDP IGP同步状态。