MPLS

稚 发布于 2024-08-26 41 次阅读


MPLS

基本概念

MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务,通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发

MPLS域:一系列MPLS路由器组成的集合。


LSR:标签交换路由器,即运行MPLS的路由器 边缘MPLS路由器被称为LER

  • 入站LSR(Ingress LSR):通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR。

  • 中转LSR(Transit LSR):通常是将MPLS报文进行例如标签置换操作,并将报文继续在MPLS域中转发的LSR。

  • 出站LSR(Egress LSR):通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR。

LSP:标签交换路径 是标签报文穿越MPLS网络到达目的地所走的路径

  • 一条LSP包含一台入站LSR、一台出站LSR以及数量可变的中转LSR,因此LSP也可以看做是这些LSR的有序集合。
  • LSP需要在数据转发开始前建立完成,只有这样报文才能顺利穿越MPLS域。
  • LSP可通过静态和动态两种方式建立。
  • 需要注意的是,LSP是一个从“起点”到“终点”的单向路径,若需要双向数据互通,则需要在双方之间建立双向的LSP

数据属于哪一个LSP,由数据进入MPLS域时的Ingress LSR(入栈LSR)决定

FEC: 转发等价类 类似于目的地址 对于相同的转发等价类在转发过程中被网络节点以相同方式处理

FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分

  • 在传统的采用最长匹配算法的IP转发中,匹配到同一条路由的所有报文就是一个转发等价类。

  • 在MPLS中,关于FEC最常见的例子是:目的IP地址匹配同一条IP路由的报文被认为属于同一个FEC。

标签

标签 :IP报文进入MPLS域之前,会被入站LSR压入MPLS头部(又叫MPLS标签),形成一个MPLS标签报文。一个标签报文可以包含一个或多个MPLS标签。


最靠近二层头部的标签是栈顶标签,标签中的S字段为0。

最靠近IP头部的标签是栈底标签,标签中的S字段为1

标签空间:标签是一个短而定长的、只具有本地意义的标识符

标签值 描述
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转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发

LSP建立

当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中

LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理

LSP转发

Tunnel ID:为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效。在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的



即 在ingress上先查看FTN(FIB表)如果 tunnel ID不为0x0 则查找NHLFE 来进行转发
在Transit LSR上 查找ILM表然后查找NHLFE表项 查看动作 进行标签交换和转发
如果为Egress LSR路由器 查找ILM表发现行为pop直接剥离标签

静态配置

基础配置

首先配置IGP互通

# AR1
interface GigabitEthernet0/0/0
 ip address 10.0.12.1 255.255.255.0
ospf 1 
 area 0.0.0.0 
  network 10.0.12.0 0.0.0.255 

# AR2
interface GigabitEthernet0/0/0
 ip address 10.0.12.2 255.255.255.0 
interface GigabitEthernet0/0/1
 ip address 10.0.23.2 255.255.255.0 
ospf 1 
 area 0.0.0.0 
  network 10.0.12.0 0.0.0.255 
  network 10.0.23.0 0.0.0.255

# AR3
interface GigabitEthernet0/0/0
 ip address 10.0.34.3 255.255.255.0 
interface GigabitEthernet0/0/1
 ip address 10.0.23.3 255.255.255.0
ospf 1 
 area 0.0.0.0 
  network 10.0.23.0 0.0.0.255 
  network 10.0.34.0 0.0.0.255 

# AR4
interface GigabitEthernet0/0/0
 ip address 10.0.34.4 255.255.255.0 
interface GigabitEthernet0/0/1
 ip address 10.0.45.4 255.255.255.0 
ospf 1 
 area 0.0.0.0 
  network 10.0.34.0 0.0.0.255 
  network 10.0.45.0 0.0.0.255

# AR5
interface GigabitEthernet0/0/1
 ip address 10.0.45.5 255.255.255.0 
ospf 1 
 area 0.0.0.0 
  network 10.0.45.0 0.0.0.255 

MPLS配置

  1. 指明mpls LSR-id
  2. 在MPLS域内所有路由器开启MPLS
  3. 标签交换的接口也开启mpls
# AR2
mpls lsr-id 2.2.2.2
mpls
interface GigabitEthernet0/0/1
 mpls

# Ar3
mpls lsr-id 3.3.3.3
mpls
interface GigabitEthernet0/0/0
 mpls
interface GigabitEthernet0/0/1
 mpls

# AR4
mpls lsr-id 4.4.4.4
mpls
interface GigabitEthernet0/0/0
 mpls
  1. 配置静态LSR
# Ar2
static-lsp ingress 1to5 destination 10.0.45.0 24 nexthop 10.0.23.3 out-label 23
# Ar3
static-lsp transit 1to5 incoming-interface GigabitEthernet0/0/1 in-label 23 next
hop 10.0.34.4 out-label 34
# Ar4
static-lsp egress 1to5 incoming-interface GigabitEthernet0/0/0 in-label 34

只配置单向 此时icmp请求request带有标签报文

回程时无匹配lsr走ip路由通信

MPLS LDP原理

LSR之间可以运行LDP来告知其他LSR本设备上的标签绑定信息,从而实现标签报文的正确转发

LDP是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作

LDP的工作过程主要分为两部分:

  • LSR之间建立LDP会话。

  • LSR之间基于LDP会话动态交换标签与FEC的映射信息,并根据标签信息建立LSP。

建立会话

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以“LSR ID : 标签空间标识”的形式呈现。例如2.2.2.2:0
标签空间标识一般存在两种形态:

值为0:表示基于设备(或基于平台)的标签空间;

值非0:表示基于接口的标签空间。


LDP协议报文包括了LDP头部和LDP消息两部分。

LDP头部中携带了LDP版本、报文长度等信息;

LDP消息中携带了消息类型、消息长度等信息

发现LDP邻接体 hello(UDP) ----Non-Existent

TCP邻接 ---Initialized

参数协商 Initialization/Keepalive(TCP) ---OpenSent/OpenRec/Operational

标签分发

上游与下游

MPLS根据数据的转发方向确定上、下游关系 。标签报文从上游LSR发出,被下游LSR接收并处理 即数据传输方向源为上游

标签发布方式

DU 下游自主方式 (默认)

  1. LSR从本地标签空间中取出一个标签与FEC绑定
  2. LSR将标签与FEC的绑定关系通知给上游LSR
    标签发布方式为DU时,系统默认支持LDP为所有对等体分标签,即每个节点都可以向所有的对等体发布标签映射关系,不再区分上下游关系

DOD 下游按需方式

只有上游邻居向自己请求标签映射时,LSR才会通告标签映射给该邻居。

标签分配控制方式

标签分配控制方式需要与标签发布方式结合使用

Independent 独立模式(默认)

Ordered 有序模式

标签保留

Liberal 自由模式(默认)

Conservative 保守模式

Conservative方式的优点在于只需保留和维护用于转发数据的标签,以达到节约标签的目的

•当网络拓扑变化引起下一跳邻居改变时:

▫使用自由标签保持方式,LSR可以直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要更多的内存和标签空间。

▫使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省了内存和标签空间,但LSP的重建会比较慢。

▫保守标签保持方式通常与DoD方式一起,用于标签空间有限的LSR。

PHP

隐式空标签

PHP(Penultimate Hop Popping,次末跳弹出),如果激活了PHP特性,那么egress节点在为本地路由分配标签的时候,会分配一个特殊标签(3),该标签被称为隐式空标签(Implicit NULL Label)。
当LSR转发一个标签报文时,如果发现对应的出标签值为3,则LSR会将栈顶标签弹出,并将里面所封装的数据转发给下游LSR。

显示空标签

LDP工作原理

缺省情况下,根据32位的主机IP路由触发LDP建立LSP。可以通过手工配置触发非32位路由的LSP建立。

  • Egress LSR将主动为到达该网段的路由分配标签,如1041,并主动通过LDP协议报文将标签映射通告给LDP对等体。
  • Transit LSR当它从Egress LSR收到关于目的网络的标签映射通告时,由于该通告来自下游LDP邻居,因此这将触发它自己为该路由分配标签1021,并将标签映射通告给LDP邻居。
  • Ingress LSR收到LDP邻居过来的路由的标签映射后将这两个标签都存储起来。然后根据单播路由表使用最优标签来到达目的网络
    当Ingress LSR收到发往目的网络的IP报文时,首先在其FIB表中查询该目的IP地址,它发现所匹配的表项的Tunnel ID为非0,因此继续在NHLFE中查询该Tunnel ID,然后意识到需要将对该IP报文压入标签并进行标签转发

配置