一、LDP基本概念
(一)LDP 概述
LDP是MPLS的一种控制协议,用以告知其他LSR本设备上的标签绑定信息,从而实现报文的正确转发。
(二) LDP 的过程
(1)LDP 会话
LSR之间交互标签绑定消息之前必须建立LDP会话。
① 本地LDP会话
本地LDP会话建立要求建立会话的两个LSR直连。
② 远程LDP会话
建立会话的两个LSR之间可以直连、也可以非直连。
(2)LDP邻接体
两台LSR之间交换Hello报文后建立LDP邻接体关系。
(3)LDP对等体
在邻接体关系的基础上,两台LSR交互LDP会话消息,建立起LDP会话,此时两者形成了LDP对等体关系。
(三)LDP ID
LDP ID长度为48bit,由32bit的LSR ID与16 bit的标签空间标识符构成。LDP ID以“LSR ID:标签空间标识”的形式呈现。例如2.2.2.2:0
(1)LSR ID
必须本地存在且可达(为与其他设备建立邻居关系),是LSR的标识。
(2)空间标识符
标识标签空间是基于设备还是接口。值为0,则表示基于设备的标签空间;值为1,则表示基于接口的标签空间。
(四)LDP 消息
运行LDP协议的LSR之间通过交换LDP消息来实现邻居发现、会话建立与维护以及标签管理等功能。
(1)Discovery message
用于宣告LSR并发现邻居。
(2)Session Message
用于在建立过程中协商参数。
(3)Advertisement Message
用于在LDP会话建立后存在,监控完整性、宣告撤销接口地址、FEC/Label映射、释放标签等。
(4)Notification
用于通告LDP Peer中的错误信息。
---------------------------------------------------------------------------------------------------------------------------------
注:其中Discovery message 基于UDP,Session Message、Advertisement Message与Notification基于TCP。
---------------------------------------------------------------------------------------------------------------------------------
(五)LDP报文封装
LDP协议报文包括了LDP头部和LDP消息两部分。
(1)LDP头部
LDP头部中携带了LDP版本、报文长度等信息;
(2)LDP消息
LDP消息中携带了消息类型、消息长度等信息。
二、LDP工作原理
(一)LDP会话建立
(1)发现阶段TCP连接建立
设备通过周期性地发送LDP链路Hello报文实现LDP邻居的发现;该Hello报文使用UDP,组播地址为224.0.0.2,若LSR在特定接口收到LDP链路Hello报文,则表明该接口存在LDP邻接体。
(2)TCP连接的建立
Hello报文中携带传输地址,双方后续将用传输地址建立LDP会话。传输地址较大的一方作为主动方,主动发起建立TCP连接;经过三次握手之后,两者建立起TCP连接。
(3)会话建立与保持
TCP连接建立成功后,主动方(传输地址大的一方),发送LDP初始化报文,协商建立相关参数。被动方若接受相关参数,则回应KeepAlive报文确认,同时发送自己的初始化报文;双方都受到对应的KeepAlive报文后,会话建立成功;周期性发送该报文以保持会话。
(二)LDP标签分发
(1)标签的发布和管理
① 标签发布方式
DU模式:下游主动;
Dod模式:下游按需。
② 标签分配控制方式
独立自主模式:有路由即分配标签;
有序控制模式:必须下游给标签后才会分配标签。
③ 标签保留
自由模式:只要发就留下;
保守模式:只保留最优。
---------------------------------------------------------------------------------------------------------------------------------
注:为提高LDP转发效率,一般采用下游主动+独立自主+自由模式的发布和管理。
---------------------------------------------------------------------------------------------------------------------------------
(2)上游和下游
MPLS根据数据的转发方向确定上下游关系。标签报文从上游LSR发出,下游LSR接收并处理。
(3)PHP特性(次末跳弹出)
若激活PHP,那么在为本地路由分配标签时,会分配一个特殊标签—3号标签(隐式空标签);但是在Qos场景下,由于标签被弹出,最后一段没有优先级,会导致数据包不优先转发。
① 显式空标签
转发标签报文时,若标签封装为0,则不会将标签头部弹出,标签头部中的Qos信息得以保存,Egress LSR(出)在收到带0标签的报文的时候,直接弹出标签,不用去查找ILM表项。
② 隐式空标签
当出标签为3时,隐含的意思为弹出该标签,每个路由器会为自己的直连路由分配3号标签。
(三)LDP工作过程
(1)标签分发
① Egress LSR
Egress LSR 将主动为到达其直连网段的路由分配标签,并主动通过LDP协议报文将标签映射通告给其LDP对等体。
② Transit LSR
当Transit LSR 收到来自Egress LSR 的标签映射通告时,由于该通告来自其下游LDP,Transit LSR 将自己为该路由分配标签,并将标签映射通告给LDP 邻居。
③ Ingress LSR
Ingress LSR 收到来自LDP邻居通告的路由标签映射后,将这两个标签都存储起来,但是其使用哪个路由标签映射取决于自身的路由表中到达目的网段的下一跳的LSR所传递的标签。
(2)标签转发
① Egress LSR(入)
Egress LSR(入)在标签转发时,对接收的IP报文执行Push压入操作,并进行标签转发。
② Transit LSR
Transit LSR在标签转发时,对接收的IP报文执行Swap交换标签操作,并进行标签转发。
③ Egress LSR(出)
Egress LSR(出)在标签转发时,对接收的IP报文执行Pop弹出操作,并进行IP转发。
三、LDP基本配置
[Huawei]mpls lsr-id xxx.xxx.xxx.xxx[Huawei]mpls[Huawei]mpls ldp[Huawei]intface GigabitEthernet0/0/0 [Huawei-GigabitEthernet0/0/0]mpls[Huawei-GigabitEthernet0/0/0]mpls ldp