锐捷 | MPLS基础原理与静态LSP配置

锐捷 | MPLS基础原理与静态LSP配置

_

一、MPLS基本概念

1. MPLS诞生背景

早期三层设备在数据转发过程中,使用基于CPU驱动的TCAM表项(路由表)进行模糊查询(逐位将目的IP地址与路由表中的各个路由前缀进行匹配),这种数据转发有两个缺点:

  • 占用设备的CPU资源

  • 查询过程比较慢

为了提高三层设备的数据转发效率,Cisco最早提出了MPLS技术,MPLS在数据转发过程中,有以下特点:

  • 基于标签转发表转发数据,标签转发表与二层设备的CAM(MAC地址表)类似

  • 基于硬件ASIC芯片驱动,进行精确匹配

一个骨干网络连接着多个用户网络,这些用户使用的都是私网网段,为了让这些用户可以相互访问,需要在骨干路由器上学习用户网段信息,但是因为用户使用的网段可能重复从而导致的地址冲突、路由条目过多以及用户隐私泄露等问题。可见传统路由转发无法帮助用户直接访问彼此私网地址,需要一个新技术代替路由转发。MPLS并不是一种业务或应用,实际上是一种隧道技术,这种技术不仅支持多种高层协议和业务,而且在一定程度上可以保证信息传输的安全性。

传统的路由转发:Routing&L3 Switching的转发原理

  • 利用路由协议生成路由表

  • 根据目的IP地址进行转发

2. 转发设备LSR

在MPLS网络中,采用标签交换转发报文的路由器称为LSR(Label Switch Router),LSR会为路由表中的每条IGP路由产生一个标签,并通告给其它相邻路由器。

LSR分为内部LSR和边界LSR

  • 内部LSR:所有接口可进行标签转发,是MPLS域的内部设备

  • 边界LSR:分为入站LSR【Ingress】和出站LSR【Egress】,部分接口进行标签转发,同时连接IP网络和MPLS网络,是MPLS域和IP域的边界设备

3. 转发路径LSP

属于同一个FEC的报文在MPLS网络中经过的转发路径称为LSP(Label Switch Path,标签交换路径)。LSP是从MPLS网络的入口到出口的一条单向路径。LSP是报文在穿越MPLS网络或部分MPLS网络时的路径,为了满足通信节点之间的双向通信,往往需要建立双向的LSP。

在一条LSP上,沿着数据包转发方向,相邻的LSR分别称为上游LSR和下游LSR。LSP的建立过程就是将FEC和标签进行绑定,并将这种绑定通告给相邻LSR,以便在LSR上建立标签转发表的过程。LSP可以通过手工配置的方式静态建立,也可以利用标签发布协议动态建立。

LSP的入口LSR被称为Ingress LSR(入站LSR),位于LSP中间的LSR被称为中间LSR(Transit LSR)。LSP的出口LSR被称为Egress LSR(出站LSR)。Ingress LSR及Egress LSR都是LER。手工配置的方式建立静态LSP,建立静态LSP需要用户在报文转发路径中的各个LSR上手工配置为FEC分配的标签。

[Tricks] 手工分配标签需要遵循的原则。

上游LSR出标签值=下游LSR入标签值
  • 静态LSP沿途的各个LSR不能相互感知到整个LSP的情况,静态LSP是一个本地的概念

  • 静态LSP不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小,适用拓扑结构简单且稳定的小型网络

  • 利用标签发布协议(LDP)建立动态LSP,标签发布协议是MPLS的信令协议,负责划分FEC、分配标签、通告标签,建立并维护LSP。

4. MPLS静态LSP

要实现MPLS的基本转发功能,可以通过静态配置LSP而不使用标签分发协议。静态LSP是指在MPLS网络的每一跳设备上通过手工静态配置出入标签、下一跳等信息生成标签转发表的方式建立MPLS LSP。因为静态配置LSP不需要LDP协议,因此也就不需要依赖IPv4路由。即便网络中没有任何IPv4路由,只要物理网络可达,静态配置的LSP也可以生效。

4.1 静态LSP的建立过程

  1. 在入口LER对FEC建立静态FTN表项(包含目的网段对应的出标签、LSP的下一跳或者到达下一跳的出接口),把FEC和标签进行绑定。入口LER收到一个IP数据包后,根据报文的目的地址,使用最长匹配查找FTN表下一跳。如果找到,为报文添加FEC对应的出标签,将IP流量导入LSP,并把报文转发给指定的下一跳或通过出接口进行转发。

  2. 在中间LSR上配置静态ILM转发表项(包含入标签对应的出标签、LSP的下一跳或者到达下一跳的出接口),把入标签映射到出标签上。中间LSR收到一个带标签的数据包后,会在ILM表中根据报文携带的标签值查找下一跳。如果找到,则将报文中的标签替换为该标签对应的出标签,并将报文转发给指定的下一跳或通过出接口进行转发。如果在倒数第二跳LSR做PHP(即LSR的ILM出标签为隐式空标签3),则会在倒数第二跳LSR处将标签弹出再进行转发。

  3. 对于倒数第二跳LSR出标签未配置为0或3的情况,出口LER还需要配置静态ILM表项。此时出口LER接收到的报文仍带有标签值,需要根据ILM表项弹出标签,再对报文进行下一层转发处理。如果在倒数第二跳LSR配置出标签值为0或3,则出口LER接收到的是普通IP报文,可以直接进行转发。

二、MPLS静态LSP配置案例

案例拓扑

案例需求

  • LER1、LSR、LER2上配置OSPF路由协议,进程号为1,归属Area 0,通告直连接口及Loopback0接口

  • LER1和LER2上分别配置静态FTN,LSR上配置静态ILM,建立双向静态LSP

  • 倒数第二跳LSR作PHP,设置ILM表项出标签为隐式空标签3

[Step1] LER1上配置OSPF路由协议。

LER1(config)#router ospf 1
LER1(config-router)#router-id 1.1.1.1
Change router-id and update OSPF process! [yes/no]:yes    
LER1(config-router)#network 12.1.1.0 0.0.0.255 area 0
LER1(config-router)#network 192.168.10.0 0.0.0.255 area 0
LER1(config-router)#exit

[Step2] LSR上配置OSPF路由协议。

LSR(config)#router ospf 1
LSR(config-router)#router-id 2.2.2.2
Change router-id and update OSPF process! [yes/no]:yes
LSR(config-router)#network 12.1.1.0 0.0.0.255 area 0
LSR(config-router)#network 23.1.1.0 0.0.0.255 area 0
LSR(config-router)#exit

[Step3] LER2上配置OSPF路由协议。

LER2(config)#router ospf 1
LER2(config-router)#router-id 3.3.3.3
Change router-id and update OSPF process! [yes/no]:yes
LER2(config-router)#network 23.1.1.0 0.0.0.255 area 0
LER2(config-router)#network 192.168.20.0 0.0.0.255 area 0
LER2(config-router)#exit

[Step4] LER1上全局开启MPLS转发功能,开启互联接口的标签交换能力。

LER1(config)#mpls ip 
LER1(config)#interface g0/0
LER1(config-if-GigabitEthernet 0/0)#label-switching 
LER1(config-if-GigabitEthernet 0/0)#exit

[Step5] LSR上全局开启MPLS转发功能,开启互联接口的标签交换能力。

LSR(config)#mpls ip
LSR(config)#interface range g0/0-1
LSR(config-if-range)#label-switching 
LSR(config-if-range)#exit

[Step6] LER2上全局开启MPLS转发功能,开启互联接口的标签交换能力。

LER2(config)#mpls ip
LER2(config)#interface g0/0
LER2(config-if-GigabitEthernet 0/0)#label-switching 
LER2(config-if-GigabitEthernet 0/0)#exit

[Step7] 正向入口LER1上配置FTN,匹配目的网段为192.168.20.0/24,出标签设置为100,出接口为GigabitEthernet 0/1,下一跳地址为12.1.1.2。

LER1(config)#mpls static ftn 192.168.20.0/24 out-label 100 nexthop GigabitEthernet 0/1 12.1.1.2

[Step8] 中间节点LSR配置静态ILM,因为LSP是单向的,因此需要配置两条。

LSR(config)#mpls static ilm in-label 100 forward-action swap-label 3 nexthop gigabitEthernet 0/1 23.1.1.3 fec 192.168.20.0/24
LSR(config)#mpls static ilm in-label 200 forward-action swap-label 3 nexthop gigabitEthernet 0/0 12.1.1.1 fec 192.168.10.0/24
  • 第一条对应的LSP方向为LER1-->LSR-->LER2,匹配入标签为100的MPLS报文,执行标签交换,交换为标签3,从G0/1接口转发到下一跳23.1.1.3,绑定FEC网段192.168.20.0/24。

  • 第二条对应的LSP方向为LER2-->LSR-->LER1,匹配入标签为200的MPLS报文,执行标签交换,交换为标签3,从G0/0接口转发到下一跳12.1.1.1,绑定FEC网段192.168.10.0/24。

[Step9] 反向入口LER2上配置FTN,匹配目的网段为192.168.10.0/24,出标签设置为200,出接口为GigabitEthernet 0/0,下一跳地址为23.1.1.2。

LER2(config)#mpls static ftn 192.168.10.0/24 out-label 200 nexthop GigabitEthernet 0/0 23.1.1.2

[Step10] 验证:查看设备LER1的MPLS表项信息,能够看到存在一条表项,标签处理动作为压入标签(PUSH),目的网段为192.168.20.0/24,且出标签为100。

LER1#show mpls forwarding-table 

[Step11] 验证:查看设备LSR的MPLS表项信息,能够看到存在两条表项,标签处理动作为弹出标签(POP),目的网段分别为192.168.10.0/24和192.168.20.0/24。

LSR#show mpls forwarding-table 

[Step12] 验证:查看设备LER2的MPLS表项信息,能够看到存在一条表项,标签处理动作为压入标签(PUSH),目的网段为192.168.10.0/24,且出标签为200。

LER2#show mpls forwarding-table

麒麟服务器操作系统部署Kubernetes 1.32集群 2026-04-25
锐捷 | 基于直连接口建立LDP邻居案例配置 2026-05-09

评论区