MPLS相关知识
[TOC]
MPLS原理与配置
MPLS基础
MPLS概述
MPLS [多协议标签交换] 是一种高效的数据传输技术,主要用于运营商网络和企业专网
- MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务
- 通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发
MPLS术语
MPLS域 [MPLS Domain]:一系列连续的运行MPLS的网络设备构成了一个MPLS域
LSR [Label Switching Router,标签交换路由器]:支持MPLS的路由器
- 位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER [Label Edge Router]
- 区域内部的LSR称为核心LSR [Core LSR]
根据数据处理方式的不同对LSR分类:
- 入站LSR Ingress LSR:通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR
- 中转LSR Transit LSR:通常是将MPLS报文进行例如标签置换操作,并将报文继续在MPLS域中转发的LSR
- 出站LSR Egress LSR:通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR

FEC [Forwarding Equivalence Class,转发等价类] 是一组具有某些共性的数据流的集合,这些数据流在转发过程中被网络节点以相同方式处理
- 在MPLS网络中,FEC可以通过多种方式划分
- 数据属于哪一个LSP,由数据进入MPLS域时的Ingress LSR决定
- MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息
在传统的采用最长匹配算法的IP转发中,匹配到同一条路由的所有报文就是一个转发等价
LSP [Label Switched Path,标签交换路径] 是标签报文穿越MPLS网络到达目的地所走的路径
同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发
- 一条LSP包含一台入站LSR、一台出站LSR以及数量可变的中转LSR,LSP也可以看做是这些LSR的有序集合
- LSP需要在数据转发开始前建立完成,只有这样报文才能顺利穿越MPLS域
- LSP可通过静态和动态两种方式建立
- LSP是一个从起点到终点的单向路径,若需要双向数据互通,则需要在双方之间建立双向的LSP
MPLS标签
- IP报文进入MPLS域之前,会被入站LSR压入MPLS头部,形成一个MPLS标签报文
- 一个标签报文可以包含一个或多个MPLS标签
MPLS报文格式

当上层为MPLS标签栈时,以太网头部中的Type字段为0x8847,PPP头部中的Protocol字段为0x8281
MPLS报文字段解析:
- 标签 Label:用于携带标签值,长度20bit
- EXP [Experimental Use]:主要用于CoS Class of Service,长度3bit
- S [Bottom of Stack]:栈底位,用于指示该标签头部是否为最后一层标签,长度1bit
- 如果该字段为1,则表示当前标签头部为栈底
- 如果该字段为0,则表示当前标签头部之后依然还有其他标签头部
- TTL [Time To Live]:用于当网络出现环路时,防止标签报文被无限制转发,长度8bit
MPLS标签栈
MPLS支持一层或多层标签头部,这些标签头部的有序集合被称为 标签栈 [Label Stack]

标签空间:
标签是一个短而定长的、只具有本地意义的标识符,标签空间就是指标签的取值范围
只具有本地意义说明每一台LSR之间的标签空间是相互独立的,即每台路由器都可以使用完整的标签空间
标签值的范围及规划如下:
标签值 | 描述 |
---|---|
0~15 | 特殊标签值,0被定义为IPv4显式空标签 [IPv4 Explicit NULL Label] |
标签值3被定义为隐式空标签 [Implicit NULL Label] | |
16~1023 | 用于静态LSP、静态CR-LSP的共享标签空间 |
1024~1048575 | LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间 |
动态信令协议的标签空间不是共享的,而是独立且连续的,互不影响 |
MPLS标签的处理
LSR对标签的操作类型包括标签压入 [Push]、标签交换 [Swap]和标签弹出 [Pop]

MPLS转发
MPLS转发概述
MPLS转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发
- 对于整个MPLS域,LSP是某一给定的FEC进入域和离开域的路径,可以看成是LSR的有序集合
- 对于单台LSR,需要建立标签转发表,用标签来标识FEC,并绑定相应的标签处理和转发等行为
补充说明:
- 同一个FEC,若进入MPLS域的Ingress LSR不同,转发时的LSP也不相同
- 同一个FEC,LSR的处理方式相同,不论这个FEC来自哪里
- LSR的转发动作决定了LSP,而标签转发表确定转发动作,所以建立标签转发表也可以理解为建立LSP
MPLS体系结构
MPLS的体系结构由控制平面 [Control Plane] 和转发平面 [Forwarding Plane] 组成

控制平面:控制平面是无连接的,主要功能是负责产生和维护路由信息以及标签信息
控制平面包括:
- IP路由协议
- 路由信息表 RIB [Routing Information Base]:由IP路由协议[IP Routing Protocol]、静态路由和直连路由共同生成,用于选择路由
- 标签分发协议 LDP
- 标签信息表 LIB [Label Information Base]:用于管理标签信息,LIB中的表项可由标签交换协议 [LDP、RSVP等协议]或静态配置生成。
转发平面:转发平面也称为数据平面,是面向连接的, 主要功能是负责普通IP报文的转发以及带MPLS标签报文的转发
转发平面包括:
- 转发信息表FIB [Forwarding Information Base]:从RIB提取必要的路由信息生成,负责普通IP报文的转发
- 标签转发信息表LFIB [Label Forwarding Information Base]:简称标签转发表,负责带MPLS标签报文的转发


- 当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中,否则该FEC的标签转发表项不生效
- LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理
LSP建立方式
MPLS需要为报文事先分配好标签,建立一条LSP,才能进行报文转发。LSP分为静态LSP和动态LSP两种
静态LSP
- 基本概念:
- 静态LSP是用户通过手工为各个FEC分配标签而建立的
- 静态LSP不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小
- 通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预
- 应用场景:适用于拓扑结构简单并且稳定的小型网络
- 标签分配原则:前一节点出标签的值等于下一个节点入标签的值
- 补充:由于静态LSP各节点上不能相互感知到整个LSP的情况,因此静态LSP是一个本地的概念
动态LSP
-
基本概念:
- 动态LSP通过标签发布协议动态建立
- 标签发布协议是MPLS的控制协议,负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作
-
常用标签发布协议:标签分发协议 [LDP]
- 全称:Label Distribution Protocol
- 定义:LDP是多协议标签交换MPLS的一种控制协议,负责转发等价类FEC的分类、标签的分配以及标签交换路径LSP的建立和维护等操作
- LDP规定了标签分发过程中的各种消息以及相关处理过程
- 应用场景:LDP广泛地应用在VPN服务上,具有组网、配置简单、支持基于路由动态建立LSP、支持大容量LSP等优点
-
其他标签发布协议:
- RSVP-TE:[Resource Reservation Protocol Traffic Engineering]
- 是对RSVP的扩展,用于建立基于约束的LSP
- 拥有普通LDP LSP没有的功能,如发布带宽预留请求、带宽约束、链路颜色和显式路径等
- MP-BGP:[Multiprotocol Border Gateway Protocol]
- MP-BGP是在BGP协议基础上扩展的协议
- MP-BGP支持为MPLS VPN业务中私网路由和跨域VPN的标签路由分配标签
- RSVP-TE:[Resource Reservation Protocol Traffic Engineering]
MPLS标签转发
LSR处理报文时主要根据FTN、 NHLFE和ILM
FTN [FEC-to-NHLFE] :当LSR收到IP报文并需要进行MPLS转发时使用,FTN只在Ingress存在
- FTN包括:Tunnel ID、FEC到NHLFE的映射信息
NHLFE 下一跳标签转发表项 [Next Hop Label Forwarding Entry]:LSR对报文 [MPLS或IP报文] 进行MPLS转发时使用,NHLFE在Ingress和Transit存在
- NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息
ILM 入标签映射 [Incoming Label Map] :用于指导MPLS报文的转发,ILM只在Transit和Egress存在
- ILM包括:Tunnel ID、入标签、入接口、标签操作类型等信息

补充:
- Tunnel ID:为了给使用隧道的上层应用提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效
- 在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的
Ingress LSR的处理
当IP报文进入MPLS域时:
- Ingress LSR查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0
- 如果Tunnel ID值为0x0,则进入正常的IP转发流程
- 如果Tunnel ID值不为0x0,则进入MPLS转发流程
- 根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来
- 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型
- 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳
Transit LSR的处理
在Transit LSR,通过查询ILM表和NHLFE表指导MPLS报文的转发
当MPLS报文在MPLS域转发时:
- Transit LSR根据MPLS的标签值查看对应的ILM表,得到Tunnel ID
- 根据ILM表的Tunnel ID找到对应的NHLFE表项
- 查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Swap,则交换标签
Egress LSR的处理
当MPLS报文需要离开MPLS域时:
- Egress根据ILM查询到该标签对应的操作为Pop,说明需要剥离该标签
- 根据当前标签头部的下一层报文头部进行下一步处理
静态LSP配置
MPLS基本配置命令
1. 配置LSR ID
[Huawei] mpls lsr-id lsr-id
- mpls lsr-id命令用来配置LSR的ID
- LSR ID用来在网络中唯一标识一个LSR。LSR没有缺省的LSR ID,必须手工配置
- 为了提高网络的可靠性,推荐使用LSR某个Loopback接口的地址作为LSR ID并在配置前对网络中所有LSR的LSR ID进行统一规划
2. 使能MPLS
[Huawei] mpls #mpls命令用来使能本节点的全局MPLS能力,并进入MPLS视图
[Huawei-GigabitEthernet0/0/0] mpls
在接口视图下,使能当前接口的MPLS功能。需先使能全局MPLS能力后才能执行接口下的MPLS使能命令
静态LSP配置命令
1. Ingress LSR配置
[Huawei] static-lsp ingress lsp-name destination ip-address { mask-length | mask } { nexthop next-hop-address | outgoing-interface interface-type interface-number } * out-label out-label
static-lsp ingress命令用来为入口节点配置静态LSP
- 推荐采用指定next-hop的方式配置静态LSP,确保本地路由表中存在与指定目的IP地址精确匹配的路由项,包括目的IP地址和下一跳IP地址
- 如果LSP出接口为以太网类型,必须配置nexthop next-hop-address参数以保证LSP的正常转发
- out-label的取值范围为16~1048575
2. Transit LSR配置
[Huawei] static-lsp transit lsp-name [ incoming-interface interface-type interface-number ] in-label in-label { nexthop next-hop-address | outgoing-interface interface-type interface-number }* out-label out-label
static-lsp transit命令用来为中间转发节点配置静态LSP
- 下一跳和出接口的配置规则和Ingress LSR保持一致
- out-label占用的是下游LSR的标签空间,而下游空间采用的标签分发方式不确定,所以out-label的标签空间为16~1048575
- in-label占用的是当前LSR的标签空间,采用静态LSP时,标签空间为16~1023
3. Egress LSR配置
[Huawei] static-lsp egress lsp-name [ incoming-interface interface-type interface-number ] in-label in-label
static-lsp egress命令用来在出口节点配置静态LSP
4. 查看静态LSP配置
[Huawei] display mpls static-lsp [ lsp-name ] [ { include | exclude } ip-address mask-length ] [ verbose ]
LDP原理与配置
LDP基本概念
LDP 标签分发协议 [Label Distribution Protocol] 是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作
- LDP规定了标签分发过程中的各种消息以及相关处理过程
LDP的工作过程主要分为两部分:
- LSR之间建立LDP会话
- LSR之间基于LDP会话动态交换标签与FEC的映射信息,并根据标签信息建立LSP
LSR之间交互标签绑定消息之前必须建立LDP会话。LDP会话可以分为:
- 本地LDP会话 [Local LDP Session] :建立会话的两个LSR之间是直连的
- 远程LDP会话 [Remote LDP Session]:建立会话的两个LSR之间可以是直连的,也可以是非直连的
两台LSR之间交互Hello消息之后,即建立起邻接体 [Adjacency]关系
在邻接体关系的基础上,两台LSR之间交互LDP会话消息,建立起LDP会话,两台设备之间形成LDP对等体关系

每一台运行了LDP的LSR除了必须配置LSR ID,还必须拥有LDP ID
- LDP ID的长度为48bit,由32bit的LSR ID与16bit的**标签空间标识符 [Label Space ID] **构成
- LDP ID以LSR ID : 标签空间标识的形式呈现
- 标签空间标识一般存在两种形态:
- 值为0:表示基于设备的标签空间
- 值非0:表示基于接口的标签空间
LDP消息
LDP消息可分为四大类型:发现消息 [Discovery Message],会话消息 [Session Message],通告消息 [Advertisement Message] 和通知消息 [Notification Message]
- 发现消息:用来宣告和维护网络中一个LSR的存在,如Hello报文
- 会话消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization报文、KeepAlive报文
- 通告消息:用来生成、改变和删除FEC的标签映射
- 通知消息:用来宣告告警和错误信息
LDP消息承载在UDP或TCP之上,端口号均为646
- 发现消息用来发现邻居,承载在UDP报文上
- 其他消息的传递要求可靠而有序,所以LDP使用TCP建立会话,会话、通告和通知消息都基于TCP传递

LDP报文封装
LDP协议报文包括了LDP头部和LDP消息两部分
- LDP头部中携带了LDP版本、报文长度等信息
- LDP消息中携带了消息类型、消息长度等信息

-
LDP头部长度为10Byte,包括Version,PDU Length和LDP Identifier三部分
- Version占用2Byte,表示LDP版本号,当前版本号为1
- PDU Length占用2Byte,以字节为单位表示除了Version和PDU Length以外的其他部分的总长度
- LDP Identifier,即LDP ID,长度6Byte,其中前4Byte用来唯一标识一个LSR,后2Byte用来表示LSR的标签空间
-
LDP消息包含五个部分。
-
U占用1个bit,为Unknown Message bit
- 当LSR收到一个无法识别的消息时,该消息的U=0时,LSR会返回给该消息的生成者一个通告,当U=1时,忽略该无法识别的消息,不发送通告给生成者
-
Message Length占用2个bytes,以字节为单位表示Message ID、Mandatory Parameters和Optional Parameters的总长度
-
Message ID占用32个bit,用来标识一个消息
-
Mandatory Parameters和Optional Parameters分别为可变长的该消息的必须的参数和可选的参数
-
Message Type表示具体的消息类型,目前LDP定义的常用的消息有Notification,Hello,Initialization,KeepAlive,Address,Address Withdraw,Label Mapping,Label Request,Label Abort Request,Label Withdraw,Label Release
-
LDP工作原理
LDP会话状态机
LDP Session协商过程可以通过状态机来描述,LDP使用5种状态描述LDP会话状态机,分别是Non-Existent,Initialized,OpenRec,OpenSent,Operational
- Non-Existent状态:该状态为LDP Session最初的状态,在此状态双方发送HELLO消息,选举主动方,在收到TCP连接建立成功事件的触发后变为Initialized状态
- Initialized状态:该状态下分为主动方和被动方两种情况
- 主动方将主动发送Initialization消息,转OpenSent 状态,等待回应的Initialization消息
- 被动方在此状态等待主动方发给自己的Initialization消息,如果收到的Initialization消息的参数可以接受,则发送Initialization和KeepAlive转向OpenRec状态
- 主动方和被动方在此状态下收到任何非Initialization消息或等待超时时,都会转向Non-Existent状态
- OpenSent 状态:此状态为主动方发送Initialization消息后的状态,在此状态等待被动方回答Initialization消息和KeepAlive消息
- 如果收到的Initialization消息中的参数可以接受则转向OpenRec状态
- 如果参数不能接受或Initialization消息超时则断开TCP连接转向Non-Existent状态
- OpenRec状态:
- 此状态不管主动方还是被动方都是发出KeepAlive后的状态,在等待对方回应KeepAlive,只要收到KeepAlive消息就转向Operational状态
- 如果收到其它消息或KeepAlive超时则转向Non-Existent状态
- Operational状态:该状态是LDP Session成功建立的标志,在此状态下可以发送和接收所有其它的LDP消息
- 在此状态如果KeepAlive超时或收到致命错误的Notification消息或者自己主动发送Shutdown消息主动结束会话,都会转向Non-Existent状态
LDP状态切换信息可以通过指令debug mpls ldp session看到

LDP会话建立流程
发现阶段:
设备通过周期性地发送LDP链路Hello报文 [LDP Link Hello],实现LDP基本发现机制
- LDP链路Hello报文使用UDP报文,目的地址是组播地址224.0.0.2
- 如果LSR在特定接口接收到LDP链路Hello报文,表明该接口存在LDP邻接体
TCP连接建立阶段:
两台LSR之间在建立LDP会话之前,需要先建立TCP连接,以便进行LDP协议报文的交换
- Hello报文中携带传输地址,双方后续将使用传输地址建立LDP会话
- 设备的传输地址被包含在LDP Hello报文中,LSR通过Hello报文知晓邻居的传输地址
- 传输地址较大的一方作为主动方,主动发起建立TCP连接
- 经过TCP三次握手之后,两者建立起TCP连接
- 补充:
- 在使用Hello报文发现邻居并且知道了对方的传输地址后,邻居之间就会开始尝试TCP三次握手,并且交互LDP的初始化报文、标签映射报文等,这些报文都使用双方的传输地址作为源、目的IP地址
- LSR必须拥有到达邻居的传输地址的路由
- 缺省情况下,公网的LDP传输地址等于设备的LSR ID,私网的传输地址等于接口的主IP地址

会话建立与保持
- TCP连接建立成功后,主动方发送LDP初始化报文,协商建立LDP会话的相关参数
- LDP会话的相关参数包括LDP协议版本、标签分发方式、KeepAlive保持定时器的值、最大PDU长度和标签空间等
- 被动方收到初始化报文后,若接受主动方的相关参数,则回应KeepAlive报文作为确认,为了提高发送效率同时发送自己的初始化报文
- 主动方收到被动方的初始化报文后,若接受相关参数,则回复KeepAlive报文给被动方
- 双方都收到对端的KeepAlive报文后,会话建立成功。后续通过周期性发送的KeepAlive报文保持会话

LDP邻居状态
<R1> display mpls ldp peer
LDP Peer Information in Public network
A '*' before a peer means the peer is being deleted.
------------------------------------------------------------------------------
PeerID TransportAddress DiscoverySource
------------------------------------------------------------------------------
2.2.2.2:0 2.2.2.2 GigabitEthernet0/0/0
------------------------------------------------------------------------------
TOTAL: 1 Peer(s) Found.
- PeerID:LDP邻居的LDP ID,上文的2.2.2.2:0,其中2.2.2.2代表的是邻居节点的LSR ID,0代表的是标签空间是基于平台的
- TransportAddress:LDP邻居的传输地址,2.2.2.2代表邻居用来建立TCP连接的IP地址
LDP会话状态
<R1> display mpls ldp session
LDP Session(s) in Public Network
Codes: LAM(Label Advertisement Mode), SsnAge Unit(DDDD:HH:MM)
A '*' before a session means the session is being deleted.
------------------------------------------------------------------------------
PeerID Status LAM SsnRole SsnAge KASent/Rcv
------------------------------------------------------------------------------
2.2.2.2:0 Operational DU Passive 0000:00:33 133/133
------------------------------------------------------------------------------
TOTAL: 1 session(s) Found.
- Status:LDP会话的状态
- LAM:标签发布模式:标签发布模式有DU和DoD两种模式,此例中采用的是DU模式
- SsnRole:LSR在LDP会话中的角色,Active表示建立LDP会话的主动方;Passive表示建立LDP会话的被动方
LDP标签分发
标签的发布和管理
- 在MPLS网络中,下游LSR决定标签和FEC的绑定关系,并将这种绑定关系发布给上游LSR
- LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系来建立LSP
- 标签的发布和管理由标签发布方式、标签分配控制方式和标签保持方式来决定

MPLS根据数据的转发方向确定上、下游关系。标签报文从上游LSR发出,被下游LSR接收并处理
标签发布方式 - DU模式
对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发,LSR会主动将自己为FEC捆绑的标签通告给上游邻居,无需邻居先发起请求再通告
- 标签分配:LSR从本地标签空间中取出一个标签与FEC绑定
- 标签分发:LSR将标签与FEC的绑定关系通知给上游LSR
- 标签发布方式为DU时,系统默认支持LDP为所有对等体分标签,即每个节点都可以向所有的对等体发布标签映射关系,不再区分上下游关系。在只给上游对等体分标签情况下,发送标签映射消息的时候,要根据路由信息对会话的上下游关系进行确认。
标签发布方式 - DoD模式
对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发,即只有上游邻居向自己请求标签映射时,LSR才会通告标签映射给该邻居
一般情况下,对特定FEC的访问需求会触发标签请求消息
标签分配控制方式 - 独立模式
独立 [Independent] 模式:本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签
标签分配控制方式需要与标签发布方式结合使用:
在使用DU作为标签分发方式的情况下,如图所示,R2和R3对192.168.4.0/24这条FEC,可以在上游LSR无请求,且自身没有收到下游LSR的标签绑定信息的情况下,主动向上游LSR通告标签绑定信息

采用DoD作为标签发布方式时,如图所示,R2和R3对192.168.4.0/24这条FEC,只要收到上游LSR的标签请求消息,可以在自身没有收到下游LSR的标签绑定信息的情况下,向上游LSR通告标签绑定信息

标签分配控制方式 - 有序模式
有序 [Ordered] 模式:对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射
标签保留 - 自由模式
自由 [Liberal] 模式:
- LSR收到的标签映射可能来自下一跳,也可能来自非下一跳
- 对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留
当基于IP网络部署MPLS时,LSR根据IP路由表判断接收到的标签映射是否来自下一跳
- Liberal方式的优点在于路由发生变化时能够快速建立新的LSP进行数据转发,因为Liberal方式保留所有标签
- Liberal方式的缺点是需要分发和维护不必要的标签映射
标签保留 - 保守模式
保守 [Conservative] 模式:对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留
- Conservative方式的优点在于只需保留和维护用于转发数据的标签,以达到节约标签的目的
- 当使用DU标签分发方式时,LSR可能从多个LDP邻居收到到同一网段的标签映射消息,如果采用Conservative保持方式,则只保留下一跳发来的标签,丢弃非下一跳发来的标签
- 当使用DoD标签分发方式时, LSR根据路由信息只向它的下一跳请求标签
- 当网络拓扑变化引起下一跳邻居改变时:
- 使用自由标签保持方式,LSR可以直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要更多的内存和标签空间
- 使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省内存和标签空间,但LSP重建会比较慢
- 保守标签保持方式通常与DoD方式一起,用于标签空间有限的LSR
PHP [Penultimate Hop Popping,次末跳弹出]
- 如果激活了PHP特性,那么egress节点在为本地路由分配标签的时候,会分配一个特殊标签—3,该标签被称为隐式空标签(Implicit NULL Label)
- 当LSR转发一个标签报文时,如果发现对应的出标签值为3,则LSR会将栈顶标签弹出,并将里面所封装的数据转发给下游LSR
隐式空标签
缺省情况下,Egress节点向倒数第二跳分配 [隐式空标签 implicit-null],即特殊标签3
- 但在部署QoS的场景下,标签被弹出后,其中的优先级也会一并丢失

显式空标签
显式空标签机制,Egress节点向倒数第二跳分配特殊标签0
R3在转发标签报文时,若出标签封装为0,则不会将标签头部弹出,标签头部中的QoS信息得以保存。R4在收到带0标签的报文的时候,直接弹出标签,不用去查找ILM表项
缺省情况下,Egress分配的是隐式空标签
在MPLS中,运行LDP协议的LSR的操作小结
- LSR首先通过运行IGP协议来构建路由表、FIB表
- LDP根据相应的模式,为路由表中的路由前缀分配标签
- LDP根据相应的模式,将自己为路由前缀分配的标签,通过LDP标签映射报文通告给LDP邻居
- LSR将自己为路由前缀分配的标签,以及LDP邻居为该路由前缀通告的标签存储起来,并与出接口、下一跳地址等信息形成关联
- 当LSR转发到达目的网络的标签报文时,所使用的出站标签总是下游LDP邻居所通告的标签,此处所指的下游邻居,是设备的路由表中到达该目的网络的下一跳设备
LDP基本配置
1. 使能LDP
[Huawei] mpls ldp
- mpls ldp命令用来使能本节点的LDP能力,并进入LDP视图
[Huawei-GigabitEthernet0/0/0] mpls ldp
- 在接口视图下,使能当前接口的LDP功能。需先使能全局LDP能力后才能执行接口下的LDP使能命令
2. 配置LDP远端会话
[Huawei] mpls ldp remote-peer remote-peer-name
- mpls ldp remote-peer命令用来创建远端对等体并进入远端对等体视图
[Huawei-mpls-ldp-remote-PeerName] remote-ip ip-address
- remote-ip命令用来配置LDP远端对等体的IP地址
3. 配置触发LSP的策略
[Huawei-mpls] lsp-trigger { all | host | ip-prefix ip-prefix-name | none }
- lsp-trigger命令用来指定哪些静态路由及IGP路由会触发LDP LSP的建立,缺省情况下,根据32位地址的IP路由触发LDP建立LSP
参数 | 参数说明 |
---|---|
all | 所有静态路由和IGP路由项触发建立LSP |
host | 32位地址的主机IP路由触发建立LSP |
ip-prefix ip-prefix-name | 根据IP地址前缀列表触发建立LSP |
none | 不触发建立LSP |
注:配置ALL参数后,所有静态路由及IGP路由会触发LDP建立LSP,会导致LSP数量庞大,占用过多的标签资源,以及整网LSP收敛速度变慢。故一般情况下不推荐配置此参数
4. 配置LDP标签发布模式
[Huawei-GigabitEthernet0/0/0] mpls ldp advertisement { dod | du }
缺省情况下,标签发布模式为下游自主标签分发 [Downstream Unsolicited]
- 如果标签分配方式为DU,则标签保持模式为Liberal
- 如果标签分配方式为DOD,则标签保持模式为Conservative
5. 配置LDP标签分配控制方式
[Huawei-mpls-ldp] label distribution control-mode { independent | ordered }
缺省情况下,LDP标签分配控制方式为有序标签分配控制 [Ordered]
6. 配置PHP特性
[Huawei-mpls] label advertise { explicit-null | implicit-null | non-null }
缺省情况下,出节点向倒数第二跳分配 隐式空标签 implicit-null
参数 | 参数说明 | 取值 |
---|---|---|
explicit-null | 不支持PHP特性,出节点向倒数第二跳分配显式空标签 | 显式空标签的值为0 |
implicit-null | 支持PHP特性,出节点向倒数第二跳分配隐式空标签 | 隐式空标签的值为3 |
non-null | 不支持PHP特性,出节点向倒数第二跳正常分配标签 | 分配的标签值不小于16 |