手动写静态MPLS的转发路径,不仅不方便管理,同时配置量也非常多,每台设备都需要去做配置。为了方便管理且去除繁琐的配置,就需要使用到LDP动态标签分发协议了。
标签分发协议LDP(Label Distribution Protocol)是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作。
LDP工作过程
分为两个大步骤:LDP会话建立、LDP LSP建立。
LDP协议主要使用四类消息:
- 发现(Discovery)消息:用于通告和维护网络中LSR的存在,如Hello消息。
- 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
- 通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射。
- 通知(Notification)消息:用于提供建议性的消息和差错通知。
为保证LDP消息的可靠发送,除了Discovery消息使用UDP(UDP 646)传输外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP(TCP 646)传输。
如何知道哪些内容是属于哪些消息类型呢?
一、LDP会话建立
1、会话类型
LDP会话用于LSR之间交换标签映射、释放等消息。
只有存在对等体才能建立LDP会话,LDP会话分为两种类型:
- 本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的。
- 远端LDP会话(Remote LDP Session):建立会话的两个LSR之间可以是直连的,也可以是非直连的。
本地LDP会话和远端LDP会话可以共存。
与BFD的本地与远端类似。
2、LDP发现机制
LDP发现机制用于LSR发现潜在的LDP对等体,它有两种发现机制:
-
基本发现机制:用于发现链路上直连的LSR。
LSR通过周期性地发送LDP 链路Hello消息(LDP Link Hello),实现LDP基本发现机制,建立本地LDP会话。
LDP链路Hello消息使用UDP报文,目的地址是组播地址
224.0.0.2
。如果LSR在特定接口接收到LDP链路Hello消息,表明该接口存在LDP对等体。
-
扩展发现机制:用于发现链路上非直连LSR。
LSR周期性地发送LDP 目标Hello消息(LDP Targeted Hello)到指定IP地址,实现LDP扩展发现机制,建立远端LDP会话。
LDP目标Hello消息使用UDP报文,目的地址是指定IP地址。如果LSR接收到LDP目标Hello消息,表明该LSR存在LDP对等体。
只要是通过扩展发现机制找到的LDP对等体,与其建立的会话称为远端LDP会话(哪怕对方与自己直连)。
3、LDP会话建立过程
LDP发现阶段
- 全局启用MPLS LDP功能后,特定接口也启用MPLS LDP功能后:
- 特定接口会周期性地发送UDP 646的LDP链路Hello报,目的地址是组播地址
224.0.0.2
。- 缺省情况下,链路Hello发送定时器的值是链路Hello保持定时器值的1/3,即5秒。
- 缺省情况下,链路Hello保持定时器的值是15秒。
- 当在特定接口接收到LDP链路Hello报文,表明该接口存在LDP邻居。
TCP建立阶段
-
Hello报文中携带传输地址,双方后续将使用传输地址建立LDP会话。
-
传输地址较大的一方作为主动方,主动发起建立TCP连接。
-
经过TCP三次握手之后,两者建立起TCP连接,即LDP会话建立完成。
LDP会话建立与保持
- TCP连接建立成功后,主动方R2(传输地址大的一方)发送LDP初始化报文,协商建立LDP会话的相关参数。
- LDP会话的相关参数包括LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等。
- 被动方R1收到初始化报文后,若接受R2的相关参数,则回应Keepalive报文作为确认,为了提高发送效率同时发送自己的初始化报文。
- R2收到R1的初始化报文后,若接受相关参数,则回复Keepalive报文给R1。
- 双方都收到对端的Keepalive报文后,会话建立成功。后续通过周期性发送的Keepalive报文保持会话。
- 发送定时器的值为Keepalive保持定时器值的1/3,即15秒。
- 缺省情况下,本地LDP会话的Keepalive保持定时器的值是45秒。
4、LDP邻居状态与会话状态
# 查看邻居状态
<R1>display mpls ldp peer
关于PeerID
,它指的是LDP的标识符。
LDP ID的长度为48bit,由32位的LSR ID与16位的标签空间标识符构成:
1.1.1.1:0
,LSRID:标签空间
标签空间标识一般存在两种形态:
- 值为0:基于设备的标签空间。
- 值非0:基于接口的标签空间
# 查看会话状态
<R1>display mpls ldp session
- LDP会话的状态:
- NonExistent:表示LDP会话的最初状态。在此状态双方互相发送Hello消息,在收到TCP连接建立成功事件的触发后变为Initialized状态。
- Initialized:表示LDP会话处于初始化状态。
- Open Sent:表示LDP会话进入初始化状态后,主动方给被动方发送了Initialized消息,并等待对方的回应。
- Open Recv:表示LDP会话进入初始化状态后,当双方都收到了对方发送的Keepalive消息后,LDP会话进入Operational状态。
- Operational:表示LDP会话建立成功。
如果LDP会话状态卡在NonExistent说明双方已经发送了Hello消息,但可能因为某些因素造成无法与对端建立TCP连接,从而一直停留在该阶段。
如:设备之间没有学习到对端的传输地址路由,因网络问题从而无法建立想TCP连接。
二、LDP LSP建立
LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系来建立LSP(标签转发路径),而标签的发布和管理由标签发布方式、标签分配控制方式和标签保持方式来决定。
1、标签发布方式
指LDP LSP建立过程中,LSR设备分配标签的方式是怎样的?由谁发布,如何发布?
- 下游自主 DU
- 下游Egress设备不管上游是否需要该路由标签,都主动向上游分配标签。
- 疑问:如何知道自己是下游设备呢?
- LDP会根据路由表中的路由下一跳判断自身是否为最后一跳设备从而知晓自己是否为下游设备(Egress LSR)
- 可通过定义入口点(Ingress设备)、出口点(Egress设备)来快速定位设备是否为下游设备;当设备处于转发路径的末端(Egress),是数据包最终离开网络的地方则该设备为下游设备。
- 下游按需 DOD
- 下游Egress设备不主动向上游分配标签,当上游需要的时候再向目标下游设备发送请求标签。
2、标签分配控制方式
指LDP LSP的建立过程中,LSR分配标签时采用的处理方式。已经知道了谁来发,怎么发,但标签值该如何分配呢?
标签分配控制方式有两种方式。
- 独立标签分配控制方式(Independent):本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签。
- 简称:设备自己分配个标签给某个已知的FEC,然后通告给上游。
- 有序标签分配控制方式(Ordered):对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射。
- 简称:要给FEC分配标签,要么自己是FEC最后下一跳,要么就是知道该FEC的下一跳如何走,且该下一跳已经分配有标签。
标签发布&标签分配控制组合
标签分配控制方式 | 下游自主方式DU(Downstream Unsolicited) | 下游按需方式DoD(Downstream on Demand) |
---|---|---|
独立标签分配控制方式(Independent) | DU + Independent:LSR(Transit)无需等待下游(Egress)的标签,就会直接向上游(Ingress)分发标签。 | DoD + Independent:发送标签请求的LSR(Ingress)的直连下游(Transit)会直接回应标签,而不必等待来自最终下游(Egress)的标签。 |
有序标签分配控制方式(Ordered) | DU + Ordered:LSR(Transit)只有收到下游(Egress)的标签映射消息,才会向上游(Ingress)分发标签。 | DoD + Ordered:发送标签请求的LSR(Ingress)的直连下游(Transit)只有收到最终下游(Egress)的标签映射消息,才会向上游(Ingress)分发标签。 |
3、标签保持方式
指LSR对收到的、但目前暂时不需要的标签映射的处理方式。
LSR收到的标签映射可能来自下一跳,也可能来自非下一跳。
两种标签保持方式
- 自由标签保持方式(Liberal)
- 从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。
- 保守标签保持方式(Conservative)
- 只有当邻居LSR是自己的下一跳时才保留。
两者的优势与劣势
当网络拓扑变化引起下一跳邻居改变时:
- 使用自由标签保持方式,LSR直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要占用更多的内存和标签空间。
- 使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省了内存和标签空间,但LSP的重建会比较慢。
保守标签保持方式通常与DoD(下游按需)方式一起,用于标签空间有限的LSR。
4、LDP LSP的建立过程
以下游自主发布方式、有序标签分配方式、自由标签保持方式为例:
- 缺省情况下,网络的路由改变时,如果有一个边缘节点(Egress)发现自己的路由表中出现了新的主机路由,并且这一路由不属于任何现有的FEC,则该边缘节点需要为这一路由建立一个新的FEC。
- 如果MPLS网络的Egress有可供分配的标签,则为FEC分配标签,并主动向上游发出标签映射消息,中包含分配的标签和绑定的FEC等信息。
- Transit收到标签映射消息后,判断标签映射的发送者(Egress)是否为该FEC的下一跳。若是,则在其标签转发表中增加相应的条目,然后主动向上游LSR发送对于指定FEC的标签映射消息。
- Ingress收到标签映射消息后,判断标签映射的发送者(Transit)是否为该FEC的下一跳。若是,则在标签转发表中增加相应的条目。这时,就完成了LSP的建立,接下来就可以对该FEC对应的数据报文进行标签转发。
5、标签方式配置命令
标签分布方式(接口视图)
int g0/0/0
mpls ldp advertisement dod/du
标签分配方式(MPLS-LDP视图)
mpls ldp
label distribution control-mode ordered/independent
标签保持方式(暂无单独修改命令)
Huawei AR100, AR120, AR150, AR160, AR200, AR300, AR1200, AR2200, AR3200, AR3600 产品文档
如果标签分配方式为DU,则标签保持模式为Liberal。
如果标签分配方式为DOD,则标签保持模式为Conservative。
查看配置结果
# 查看标签分配方式与保持方式
[Huawei]dis mpls ldp verbose LDP Global Information------------------------------------------------------------------------------Protocol Version : V1 Neighbor Liveness : 600 SecGraceful Restart : Off FT Reconnect Timer : 0 SecMTU Signaling : On Recovery Timer : 300 SecCapability-Announcement : Off Longest-match : OffP2MP Capability : Off LDP Instance Information------------------------------------------------------------------------------Instance ID : 0 VPN-Instance :Instance Status : Active LSR ID : 1.1.1.1Loop Detection : Off Path Vector Limit : 32* Label Distribution Mode : Ordered Label Retention Mode : LiberalInstance Deleting State : No Instance Reseting State : NoGraceful-Delete : Off Graceful-Delete Timer : 5 Sec------------------------------------------------------------------------------
# 查看接口标签分配方式
[Huaweidis mpls ldp interface g0/0/0LDP Interface Information---------------------------------------------------------------Interface Name : GigabitEthernet0/0/0LDP ID : 1.1.1.1:0 Transport Address : 1.1.1.1 Entity Status : Inactive Effective MTU : 1500Configured Hello Hold Timer : 15 SecNegotiated Hello Hold Timer : 15 SecConfigured Hello Send Timer : ---Configured Keepalive Hold Timer : 45 SecConfigured Keepalive Send Timer : ---Configured Delay Timer : 10 Sec
* Label Advertisement Mode : Downstream UnsolicitedHello Message Sent/Rcvd : 0/0 (Message Count)Entity Deletion Status : No---------------------------------------------------------------
查看缺省MPLS-LDP配置参数
display default-parameter mpls ldpLDP Default Values:----------------------------------------------------------Protocol version : V1Graceful restart : OffNeighbor liveness(sec) : 600FT reconnect timer(sec) : 0Recovery timer(sec) : 300MTU signaling : OnLabel retention mode : LiberalLabel distribution mode : OrderedLabel advertisement : DULocal hello-hold timer(sec) : 15Remote hello-hold timer(sec) : 45Keepalive-hold timer(sec) : 45Backoff timer init(sec) : 15Backoff timer max(sec) : 120IGP-Sync delay timer(sec) : 10Graceful delete : OffGraceful delete timer(sec) : 5Capability-announcement : Off----------------------------------------------------------
三、关于LDP的一些特性
PHP 次末跳弹出特性
- PHP(Penultimate Hop Popping,次末跳弹出)
- 默认已经激活了PHP特性,egress节点在为本地路由分配标签的时候,会分配一个特殊标签(3),该标签被称为隐式空标签(Implicit NULL Label)。
- 当LSR转发一个标签报文时,如果发现对应的出标签值为3,则LSR会将栈顶标签弹出,并将里面所封装的数据转发给下游LSR。
隐式空标签与显式空标签
- 隐式空标签的缺点:会丢失原先对MPLS所设置的QOS信息。
- 显式空标签的优点:不仅保留了QOS且不会增加路由负担。
- 默认情况下,Egress设备分配的是隐式空标签3。
# 可在MPLS视图下,执行命令进行修改
[AR1] mpls# 显式空标签
[AR1-mpls] label advertise explicit-null # 隐式空标签
[AR1-mpls] label advertise implicit-null# 正常分配标签,即分配的标签值不小于16
[AR1-mpls] label advertise non-null
汇总于:HCIA~HCIE个人笔记索引