MPLS基本原理讲解

MPLS基础概念

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

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

MPLS协议发展历程

20世纪90年代,互联网流量快速增长,由于路由器采用最长匹配算法逐跳转发数据包,转发效率低,成为网络数据转发的瓶颈,快速路由技术成为当时研究的热点,在各种方案中,IETF确定了MPLS协议作为标准的协议。

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

MPLS网络结构

路由器角色

LSR(标签交换路由器)

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

LER(边缘路由器)

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

标签转发涉及的基本概念

LSP(标签交换路径)

IP报文在MPLS网路转发过程中所经过的路径

FEC(等价转发类)

一般具有相同特征的报文为同一FEC

这个特征可以是报文的源IP地址、目的IP地址、源端口、目的端口、VPN实例、QoS策略等要素中的一个或者多个(在MPLS网络中,常见的就是匹配相同路由的所有报文属于一条FEC)

对于一条FEC来说,沿途所有设备都必须具有相同的路由(前缀和掩码必须完全相同),才可以建立一条LSP(即不能随便做路由聚合的操作)

FEC与LSP的关系

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

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

建立LSP的两种标签

标签用来唯一标识一个FEC

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

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

相同FEC的入标签必须一致,出标签必须一致

不同FEC的入标签必须不同

不同FEC的出标签可以相同,也可以不同

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

对于同一条FEC,出标签和入标签可以相同,也可以不同(入标签是由本地分配的,出标签是由下游节点分配的,之间没有唯一性要求)

建立LSP的三种节点

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

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

入节点(Ingress)

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

中间节点(Transit)

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

出节点(Egress)

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

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

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

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

RIB(Routing Information Base):由各种IP路由协议生成,用于进行路由选择

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

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

转发平面(负责普通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报文的优先级,数值越小,优先级越低,当设别阻塞时,优先发送优先级高的报文

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

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


MPLS报文转发

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

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

NHLFE:下一跳标签转发表项,用于指导MPLS报文转发,包含Tunnel ID、出接口、出标签、标签操作类型等信息

ILM:入标签映射,入标签到下一跳标签转发表项的映射,包含Tunnel ID、入标签、入接口、标签操作类型等信息

在MPLS转发过程中,FIB、ILM和NHLFE表现是通过Tunnel ID关联的

可以将LFIB再细化为ILM表和NHLFE表

标签操作动作

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

Swap:标签交换,会在Transit节点上发生,通过ILM、Nhife表项查找下一台哦

用下一跳分配的标签交换MPLS报文中原有的栈顶标签。原有MPLS报文可以携带一层或多层标签,不过只会替换最外层标签

Pop:标签剥掉,会在倒数第二跳Transit节点(PHP特性-在LDP协议中有讲解)或者Egress节点发生。MPLS报文离开MPLS域时剥离标签,使得后续报文按照IP路由转发。

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表,获得标签操作类型

       如果标签中的栈底标识S=1,则表明该标签是栈底标签,直接进行IP转发

       如果标签中的栈底标识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字段为固定值

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

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

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

注意事项

在MPLS VPN应用中,

出于网络安全的考虑,需要隐藏MPLS骨干网络的结构,

这种情况下,对于私网报文,Ingress上使用Pipe模式。

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

                             ttl propagate          配置ttl模式为propagate

  • 52
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

马立杰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值