MPLS基本原理讲解

目录

MPLS基础概念

MPLS协议发展历程

MPLS网络结构

建立LSP的标签操作动作

MPLS标签分配和交换的体系结构

MPLS标签结构

MPLS报文转发

MPLS报文转发涉及的相关概念

MPLS报文转发的基本流程

MPLS报文转发的具体流程   

MPLS对TTL的处理


MPLS基础概念

MPLS(多协议标签交换协议),是一种应用于运营商IP骨干网的数据交换技术,采用短而定长的标签进行数据转发。

MPLS起源于IPv4网络,但目前其核心技术可通过扩展支持多种网络层协议,如IPv6、IPX(因特网包交换)、CLNP(无连接网络协议)等,在数据链路层上支持PPP、以太网、HDLC等多种协议

MPLS协议发展历程

20世纪90年代,互联网流量快速增长,基于CPU驱动的路由表数据转发模式在进行数据转发时占用了设备的CPU资源,转发效率低,成为网络数据转发的瓶颈,快速路由技术成为当时研究的热点,在各种方案中,IETF确定了MPLS协议作为标准的协议。

不过随着硬件技术的发展,路由查找速度和设备性能已经不是阻碍网络发展的瓶颈了,这使得MPLS在提高转发速度方面不再具备明显的优势。MPLS在设计时定位在TCP/UDP网路体系结构中的2.5层位置,即位于链路层和网络层之间,但是加上其“Multiprotocol”的设计理念,使得MPLS在VPN、TE(流量工程)、QoS等应用方面变得更加灵活

MPLS网络结构

路由器角色

LSR(Label Switch Router标签交换路由器)

MPLS网络中的路由器,进行MPLS标签交换和报文转发的网络设备

如果收到报文的二层协议字段为0x8847,则表示此报文为MPLS标签报文

LER---边界LSR(边缘路由器)

位于MPLS网络边缘,连接其它网络(如IP网络)的LSR,主要进行标签的分发和剥离

标签转发涉及的基本概念

LSP(Label Switched Path 标签交换路径)——具有方向性

  • IP报文在MPLS网络转发过程中所经过的路径就为LSP
  • LSP是从MPLS网络的入口到出口的一条单向路径
  • 在一条LSP上,沿着数据包转发的方向,相邻的LSR分别称为上游LSR和下游LSR,下游LSP为路由始发方向
  • 下游LSR给上游LSR分配标签(即标签分配方向与数据包转发方向相反,与路由发布的方向相同)

FEC(等价转发类)

  • 一般具有相同特征的报文为同一FEC,相同的FEC报文在MPLS网络中将获得相同的处理方式
  • 这个特征可以是报文的源IP地址、目的IP地址、源端口、目的端口、VPN实例、QoS策略等要素中的一个或者多个
  • 在MPLS网络中,常见的就是基于目的IP地址来划分FEC,并为其分配标签
  • 对于一条FEC来说,沿途所有设备都必须有此目的IP地址(并且前缀和掩码必须完全相同),才可以建立一条LSP(即不能随便做路由聚合的操作)

FEC与LSP的关系

同一FEC的报文走的是同一条LSP

可以理解为  相同特征的报文打上同一标记,同一标记的走同一条路径进行转发

建立LSP的两种标签类型

标签用来唯一标识一个FEC

入标签(In lable)  ——  本地自己产生

出标签(Out lable)——   由邻居分配(针对动态LSP)

FEC和出入标签之间的关系(同一台设备上)

相同FEC的入标签之间必须一致,出标签之间必须一致;但是出标签和入标签之间可以相同,也可以不同(因为入标签是由本地分配的,出标签是由下游节点分配的,之间没有唯一性要求)

不同FEC的入标签必须不同;不同FEC的出标签可以相同,也可以不同

下一跳和出入标签之间的关系

对于下一跳相同的不同路由,出标签必须不同(是同一下游节点为不同FEC下发的标签)

对于下一跳也不同的不同路由,出标签可以相同,也可以不同(是由不同下游节点为不同FEC下发的标签)

建立LSP的三种节点

一条LSP有且只有一个入节点和一个出节点,可以有0各或多个中间节点

需要先有LSP,才可以确定入节点、出节点等

入节点(Ingress)

LSP的入口LER称为入节点(打标签操作)

中间节点(Transit)

LSP的中间的LSR称为中间节点(进行标签交换和转发)

出节点(Egress)

LSP的出口LER称为入节点(剥离标签操作)

建立LSP的标签操作动作

 Push:标签压入, 可能会在Ingress或Transit节点上发生,在二层协议头和IP头部之间插入一个MPLS标签,或者是在现有标签栈顶再增加一个新的出标签(标签嵌套)

Swap:标签交换,会在Transit节点上发生,根据标签转发表查找下一跳,用下一跳分配的标签(出标签)交换MPLS报文中原有的栈顶标签

原有MPLS报文可以携带一层或多层标签,不过只会替换最外层标签

Pop:标签剥掉,在当报文离开MPLS域时,将MPLS报文的标签剥离掉,使得后续报文按照IP路由转发

会在倒数第二跳Transit节点(PHP特性-在LDP协议中有讲解)或者最后一跳Egress节点发生

MPLS标签分配和交换的体系结构

MPLS体系主要是由控制平面和转发平面构成

控制平面(产生和维护路由信息以及标签信息)

RIB(Routing Information Base):又称为路由表,由各种IP路由协议生成的表项,用于进行路由选择

LDP:一种动态标签分发协议,负责MPLS标签的分配、LFIB的建立,LSP的建立与拆除等工作

LIB(Label Information Base):由LDP协议生成的表项(每个LSR都会基于所收到的每个FEC的标签映射信息,建立LIB表项),用于管理标签信息,包含FEC网段、入标签、出标签等信息

LDP和LIB的关系就类似于IP路由协议和路由表RIB的关系

转发平面(负责普通IP报文的转发以及MPLS标签报文的转发)

FIB(Forwarding Information Base):用于指导IP报文转发,从RIB提取必要的路由信息生成;包含目的网段、出接口、下一跳IP地址、路由标记、路由优先级等信息

LFIB(Label Forwarding Information Base):用于指导MPLS报文转发,从LIB提取必要的信息生成;包含目的网段、出接口、下一跳、入标签、出标签等信息

MPLS标签结构

MPLS标签封装在数据链路层和网络层之间,总共32Bit

标签(Label)是一个短而定长的、只有本地意义的表示,用于唯一标识一个FEC

Label(20bit):标签值字段

       0~15:特殊标签

16~1023:    静态LSP和MPLS TE中静态CR-LSP共享的标签空间。

1024及以上:LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间。

Exp(3bit):标识MPLS报文的优先级,数值越小,优先级越低,当设备阻塞时,优先发送优先级高的报文;主要用于Qos场景

S(1bit):栈底标识,由于MPLS支持多层标签(即标签嵌套),当S值为1时表明为最底层标签,其它各层标签S值为0

TTL(8bit):和IP报文中的TTL(Time To Live)意义相同,用于限制MPLS报文的传输距离


MPLS报文转发

MPLS报文转发涉及的相关概念

Tunnel ID字段:32bit,就只是本地有效,需要在本地设备上唯一

NHLFE(Next Hop Label Forwarding Entry)

下一跳标签转发表项,存储转发MPLS报文的下一跳信息,用于指导MPLS报文转发

包含Tunnel ID、报文出接口、报文出标签、标签操作类型、报文下一跳等信息

ILM(Incoming Label Map)

入标签映射,将每个入标签都映射到NHLFE表项上(如果单个标签映射到多个NHLFE则表示此入标签为多路径)

包含Tunnel ID、入标签、入接口、标签操作类型等信息

主要用于接收带标签的报文并对其进行转发

在MPLS转发过程中,FIB、ILM和NHLFE表项之间是通过Tunnel ID关联的(每个厂商对于MPLS控制层面的做法不同,以上介绍的是华为)

例如锐捷不是使用Tunnel来区分是IP转发还是MPLS转发,而是专门通过FTN表来实现,收到IP报文时,如果发现此目的IP在FTN表中,则直接将IP报文在转发时封装标签

华为可以将LFIB再细化为ILM表、NHLFE表

锐捷可以将LFIB表再细化为ILM表、NHLFE表、FTN表

MPLS报文转发的基本流程

IP报文和MPLS报文的转发主要是依靠FIB表和LFIB表项的

当收到普通IP报文时,查找FIB表,如果Tunnel ID为0x0,则进行普通报文IP转发(通过FIB表转发)。如果Tunnel ID为非0x0,则进行MPLS转发(通过LFIB表)

当收到带标签的报文时,查找LFIB表,如果对应的标签为普通标签,则进行MPLS转发。如果对应的标签为特殊标签(例如标签3),则将标签弹出,进行IP转发

MPLS报文转发的具体流程   

将LFIB再细化为ILM表和NHLFE表,来讨论其转发流程

不同节点对标签不同的处理方式

Ingree入节点,执行Push动作。

  1. 查看FIB表,根据目的IP地址找到对应的Tunnel ID
  2. 根据FIB表的Tunnel ID找到对应的Nhlfe表项,得到出接口、下一跳、出标签和标签操作类型
  3. 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳

Transit中间节点,执行Swap动作。

  1. 根据MPLS的标签值查找对应的ILM表,得到对应入标签对应的Tunnel ID
  2. 根据Tunnel ID找到对应的Nhlfe表项,得到出接口、下一跳、出标签和标签操作类型
  3. 如果MPLS的标签值≥16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将封装好的MPLS报文通过LFIB表项发送给下一跳
  4. 如果标签值为3,则直接弹出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳

Egress出节点,执行Pop动作。

  1. 如果Egress收到IP报文,则根据FIB表转发
  2. 如果Egree收到MPLS报文,根据MPLS的标签值找到对应的ILM表,获得标签操作类型进行相应的标签操作,并处理TTL
  • 对MPLS报文进行标签操作结束后,如果标签中的栈底标识S=1,则表明该标签是栈底标签,直接进行IP转发
  • 对MPLS报文进行标签操作结束后,如果标签中的栈底标识S=0,则表明还有下一层标签,继续下一层标签转发 

MPLS对TTL的处理

两种模式,Uniform和Pope模式

Uniform模式:(缺省)

在入节点,IP TTL减1映射到MPLS TTL字段

此后报文在MPLS网络中按照标准的TTL处理方式处理

在出节点将MPLS TTL减1后映射到IP TTL字段

Pipe模式:

在入节点,IP TTL值减1,MPLS TTL字段为固定值(255)

此后报文在MPLS网络中按照标准的TTL处理方式处理。

在出节点会将IP TTL字段的值减1。

即IP分组经过MPLS网络时,无论经过多少跳,IP TTL只在入节点和出节点分别减1

注意事项

在MPLS VPN应用中,出于网络安全的考虑,需要隐藏MPLS骨干网络的结构,这种情况下,对于私网报文,Ingress上使用Pipe模式。

当TTL到达0时,TTL过期的节点向数据包的源地址发送ICMP超时;不过产生该ICMP信息的界定啊并不是直接向源发送ICMP超时信息,而是将不可送达的数据包的原始标签栈压入到ICMP数据包,并根据新压入标签栈的顶层标签转发该数据包

入节点系统视图:undo ttl propagate  配置ttl模式为Pipe

                             ttl propagate          配置ttl模式为propagate

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静下心来敲木鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值