MPLS相关知识


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标签报文的转发
#### LSP建立原则
  • 当网络层协议为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的标签路由分配标签

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转发流程
      1. 根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来
      2. 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型
      3. 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳
Transit LSR的处理

在Transit LSR,通过查询ILM表和NHLFE表指导MPLS报文的转发

当MPLS报文在MPLS域转发时:

  1. Transit LSR根据MPLS的标签值查看对应的ILM表,得到Tunnel ID
  2. 根据ILM表的Tunnel ID找到对应的NHLFE表项
  3. 查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Swap,则交换标签
Egress LSR的处理

当MPLS报文需要离开MPLS域时:

  1. Egress根据ILM查询到该标签对应的操作为Pop,说明需要剥离该标签
  2. 根据当前标签头部的下一层报文头部进行下一步处理

静态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的工作过程主要分为两部分

  1. LSR之间建立LDP会话
  2. 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 ParametersOptional 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地址
会话建立与保持
  1. TCP连接建立成功后,主动方发送LDP初始化报文,协商建立LDP会话的相关参数
  2. LDP会话的相关参数包括LDP协议版本、标签分发方式、KeepAlive保持定时器的值、最大PDU长度和标签空间等
  3. 被动方收到初始化报文后,若接受主动方的相关参数,则回应KeepAlive报文作为确认,为了提高发送效率同时发送自己的初始化报文
  4. 主动方收到被动方的初始化报文后,若接受相关参数,则回复KeepAlive报文给被动方
  5. 双方都收到对端的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通告标签绑定信息

DoD+独立模式
标签分配控制方式 - 有序模式

有序 [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的操作小结

  1. LSR首先通过运行IGP协议来构建路由表、FIB表
  2. LDP根据相应的模式,为路由表中的路由前缀分配标签
  3. LDP根据相应的模式,将自己为路由前缀分配的标签,通过LDP标签映射报文通告给LDP邻居
  4. LSR将自己为路由前缀分配的标签,以及LDP邻居为该路由前缀通告的标签存储起来,并与出接口、下一跳地址等信息形成关联
  5. 当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

文章作者: 十二惊惶
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 十二惊惶 !
  目录