基本概念
LDP
LDP是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。
LDP工作步骤
LSR之间建立LDP会话。
LSR之间基于LDP会话动态交换标签与FEC的映射信息,并根据标签信息建立LSP。
LDP会话
本地LDP会话:建立会话的LSR之间是直连
远程LDP会话:建立会话的LSR之间是直连或者不直连
LDP-ID
LDP ID的长度为48 bit,由32 bit的LSR ID与16 bit的标签空间标识符(Label Space ID)构成。
标签空间标识符:值为0,则表示基于设备的标签空间
值不为0,则表示基于接口的标签空间
LDP消息
消息类型 | 消息名称 | 传输层协议 | 作用 |
Discovery Message | Hello | UDP | LDP发现机制中宣告本LSR并发现邻居 |
Session Message | Initialization | TCP | 在LDP Session建立过程中协商参数 |
Keepalive | 监控LDP Session的TCP连接的完整性 | ||
Advertisement Message | Address | 宣告接口地址 | |
Address Withdraw | 撤消接口地址 | ||
Label Mapping | 宣告FEC/Label映射信息 | ||
Label Request | 请求FEC的标签映射 | ||
Label Abort Request | 终止未完成的Label Request Message | ||
Label Withdraw | 撤消FEC/Label映射 | ||
Label Release | 释放标签 | ||
Notification Message | Notification | 通知LDP Peer错误信息 |
LDP消息类型:
LDP报文封装
![](https://i-blog.csdnimg.cn/direct/a085cb27ba0440b0b6737945e5e4de72.png)
工作原理
LDP状态机
Non-Existent:TCP建立之前处于该状态;
Initialized:TCP建立完成处于该状态;
Opensent:主动端发送init报文处于该状态;
OpenRec:被动端接收到init报文处于该状态;
Operational:处于OpenRec状态下,接收到Keepalive报文,则进入到该状态,标明LDP会话建立成功。
会话建立过程
发现阶段和TCP建立
1.设备周期发送LDP链路Hello报文,实现LDP发现机制。//基本发现机制只能发现直连邻居,通过扩展发现机制发现非直连的邻居
2.Hello报文中携带传输地址,通过UDP(646)组播(224.0.0.2)发送
TCP建立
1.由传输地址大的发起TCP连接 //传输地址必须路由可达
会话建立与保持
1.主动方发送LDP初始化报文,协商建立LDP会话的参数;
2.协商成功发送keepalive报文
3.收到keepaliv,则进入operational状态,LDP会话建立成功,之后周期发送keepalive报文确认存活。
标签的发布与管理
内容 | 名称 | 默认 | 含义 |
标签发布方式 (Label Advertisement Mode) | 下游自主方式(Downstream Unsolicited,DU) | 是 | 对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发。 |
下游按需方式(Downstream on Demand,DoD) | 否 | 对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发。 | |
标签分配控制方式 (Label Distribution Control Mode) | 独立方式(Independent) | 否 | 本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签。 |
有序方式(Ordered) | 是 | 对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射。 | |
标签保持方式 (Label Retention Mode) | 自由方式(Liberal) | 是 | 对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。 |
保守方式(Conservative) | 否 | 对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。 |
PHP特性
PHP(Penultimate Hop Popping,次末跳弹出),如果激活了PHP特性,那么egress节点在为本地路由分配标签的时候,会分配一个特殊标签(3)隐式空标签
作用:减轻Egress路由器的压力
但在Qos的场景下,标签被弹出后,其中的优先级也会一并丢失。此时需要显式空标签机制,Egress节点向倒数第二跳分配特殊标签(0)显式空标签。
缺省情况下分配的是隐式空标签。
label advertise { explicit-null | implicit-null | non-null } //配置分配给倒数第二跳标签。
基本配置
R1
mpls lsr-id 1.1.1.1
mpls
#
mpls ldp
# interface GigabitEthernet0/0/0
ip address 10.0.12.1 255.255.255.0
mpls
mpls ldp
[Huawei-mpls] lsp-trigger { all | host | ip-prefix ip-prefix-name | none }
[Huawei-GigabitEthernet0/0/0] mpls ldp advertisement { dod | du }
[Huawei-mpls-ldp] label distribution control-mode { independent | ordered }