MPLS原理

传统IP路由转发

传统的IP转发采用的是逐条转发。数据报文经过每一台路由器,都要被解封装查看报文网络层信息,然后根据路由最长匹配原则查找路由表指导报文转发。各路由器从夫进行解封装查找路由表和再封装的过程,所以转发性能低。

传统IP路由转发的特点:

  • 所有路由器需要知道全网的路由
  • IP头部不定长,处理效率低
  • 传统IP转发时面向无连接的,无法提供较好的端到端QoS保证

   

MPLS基本概念

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

MPLS标签交换替代IP转发。标签是一个短而定长的,只具有本地意义的标识符

   

MPLS术语

MPLS域(MPLS Domain):一系列连续的运行MPLS的网络设备构成了一个MPLS域

LSR(Label Switching Router,标签交换路由器):支持MPLS的路由器(实际上也指支持MPLS的交换机或其他网络设备)

LER:位于MPLS域边缘,连接其他网络的LSR称为边沿路由器LER(Label Edge Router)

Core LSR:区域内部的LSR称为核心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可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分
  • 数据属于哪一个LSP,由数据进入MPLS域时的Ingress LSR决定
  • MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息

LSP(Label Switched Path,标签交换路径):是标签报文穿越MPLS网络到达目的地所走的路径

  • 一条LSP包含一台入站LSR、一台出站LSR以及数量可变的中转LSR,因此LSP也可以看做是这些LSR的有序集合
  • LSP需要在数据转发开始前建立完成,只有这样报文才能顺利穿越MPLS域
  • LSP可通过静态和动态两种方式建立

   

MPLS标签

IP报文进入MPLS域之前,会被入站LSR压入MPLS头部(又叫MPLS标签),形成一个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)

当标签中存在多个标签时,这些标签的顺序是非常讲究的

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

当上层为MPLS标签栈时,以太网头部中的Type字段为0x8847,PPP头部中的Protocol字段为0x8281

标签空间

标签是一个短而定长的、只具有本地意义的标识符。只具有本地意义说明每一台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):IP报文进入MPLS域时,MPLS边界设备在报文二层头部和IP头部之间插入一个新标签;MPLS中间设备也可根据需要,在标签栈顶增加一个新的标签

  • 标签交换(Swap):当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签

  • 标签弹出(Pop):当报文离开MPLS域,将MPLS报文的标签去掉

   

MPLS转发

MPLS转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发

  • 对于整个MPLS域,LSP是某一给定的FEC进入域或离开域的路径,可以看成是LSR的有序集合
  • 对于单台LSR,需要建立标签转发表,用标签来表示FEC,并绑定相应的标签处理和转发等行为

如图,因为有着相同的目的地,所以这三分数据属于同一个转发等价类FEC1。同时由于入站LSR不同,这些数据将分布在LSP1、LSP2和LSP3上被转发。因为标签仅具有本地意义,所以每台LSR上给同一FEC分配的标签可以相同,也可以不同。

  • 同一个FEC,若进入MPLS域的Ingress LSR(入站LSR)不同,转发时的LSP也不相同
  • 同一个FEC,LSR的处理方式相同,不论这个FEC来自哪里(进入设备的接口)
  • LSR的转发动作决定了LSP,而标签转发表确定转发动作,所以建立标签转发表也可以理解为建立LSP

MPLS体系结构

MPLS的体系结构由控制平面(Control Plane)和转发平面(Forwarding Plane)组成

  • 控制平面
    • 作用:负责产生和维护路由信息以及标签信息
    • 控制平面包括:
      • 路由信息表RIB(Routing Information Base):由IP路由协议、静态路由和直连路由共同生成,用于选择路由
      • 标签信息表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是用户通过手工为各个FEC分配标签而建立的
      • 静态LSP不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小
      • 通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预
    • 应用场景
      • 适用于拓扑机构简单并且稳定的小型网络
    • 标签分配规则
      • 前一节点出标签的值等于下一个节点入标签的值
  • 动态LSP
    • 基本概念
      • 动态LSP通过标签发布协议动态建立
      • 标签发布协议是MPLS的控制协议(也可称为信令协议),负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作
    • 常用标签发布协议:标签分发协议(LDP)
      • 全称:Label Distribution Protocol
      • 定义:LDP是多协议标签交换MPLS的一种控制协议,负责转发等价类FEC的分类、标签的分配以及标签交换路径LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程
      • 应用场景:LDP广泛地应用在VPN服务上,具有组网、配置简单、支持基于路由动态建立LSP、支持大容量LSP等优点

MPLS标签转发

LSR处理报文时主要根据FTN、NHLFE和ILM

Tunnel ID:为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配一个ID,也称为Tunnel ID。

  • 该Tunnel ID的长度为32比特,只是本地有效
  • 在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的

Ingress LSR的处理

   

当IP报文进入MPLS域时:

  1. Ingress LSR查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0(如果Tunnel ID值为0x0,则进入正常的IP转发流程)
  2. 如果Tunnel ID值不为0x0,根据FIB表的Tunnel ID找到对应NHLFE表项,将FIB表项和NHLFE表项关联起来
  3. 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型
  4. 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳

Transit LSR的处理

当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. 根据当前标签头部的下一层报文头部进行下一步处理

MPLS的详细转发过程

   

posted @ 2022-09-01 15:09  hongliang888  阅读(723)  评论(0编辑  收藏  举报