前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

MPLS

原创
作者头像
Nujil
发布2023-04-14 11:29:56
2230
发布2023-04-14 11:29:56
举报
文章被收录于专栏:CNotesCNotes

Why MPLS?

在20世纪90年代中期,随着IP网络的快速发展,Internet数据量急剧增长。由于当时的硬件技术存在限制,基于最长匹配算法的IP技术必须使用软件方法查找路由,转发性能低下,所以IP的转发性能成为当时限制网络发展的瓶颈。在这种背景下,IETF提出了MPLS协议。MPLS最初的目的就是为了提升IP网络中路由设备的转发速率。

IP路由与MPLS转发方式对比

与传统的IP路由方式相比,MPLS通过以下两种方式提升转发速率:

  • 将查找庞大的IP路由表转化为简洁的标签交换,显著减少指导报文转发的时间。
  • 当报文进入MPLS区域之后,只需在位于边缘的入、出节点解析IP报文头,封装或解封装标签,而在中间的所有节点上都无需解析IP报文头,只进行标签交换,进一步节约了转发报文的处理时间。

后来,随着ASIC(Application Specific Integrated Circuit,专用集成电路)技术的迅速发展,IP路由表查找逐步改用硬件方法,处理速度大大提高,这使得MPLS在提高IP网络转发速率方面不再具备明显的优势。

但是,MPLS的标签转发本质上是一种隧道技术,它还支持封装多层标签,并且MPLS天然兼容多种网络层和链路层协议,因此,MPLS非常适合在各种VPN业务中充当公网隧道。此外,由于MPLS的报文转发依靠一条固定的标签交换路径,所以MPLS是一种面向连接的转发技术,这使得MPLS在流量工程(Traffic Engineering,TE)、QoS等领域也有着广泛的应用。

MPLS的基本概念

FEC

MPLS是一种分类转发技术,它将具有相同转发处理方式的数据分组归为一类,称为FEC(Forwarding Equivalence Class,转发等价类)。MPLS对相同FEC的数据分组采取完全相同的处理方式。

FEC的划分方式非常灵活,可以是源地址、目的地址、源端口、目的端口、协议种类、业务类型等要素的任意组合。例如,在采用最长匹配算法的IP路由转发中,去往同一个目的地址的所有报文就是一个FEC。

MPLS标签

MPLS标签是一个简短且长度固定的标识符,它只具有本地意义,用于唯一标识一个分组所属的FEC。在某些情况下(例如,进行负载分担)对应一个FEC可能会有多个MPLS标签,但是在一台设备上,一个MPLS标签只能代表一个FEC。

MPLS标签长度为4个字节,封装结构如下图所示。

MPLS标签共有4个域:

  • Label:20bit,标签值域。
  • Exp:3bit,用于扩展。现在通常用做CoS(Class of Service,服务分类)。
  • BoS:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。BoS值为1时表明为最底层标签。
  • TTL:8bit,和IP分组中的TTL(Time To Live)意义相同。

MPLS标签封装在链路层和网络层之间,它在报文分组中的封装位置如下图所示。MPLS标签能够被任意的链路层协议所支持。

MPLS标签栈(Label stack)也称为MPLS多层标签,是指MPLS标签的排序集合,如下图所示。靠近二层首部的标签称为栈顶标签或外层标签;靠近IP首部的标签称为栈底标签,或内层标签。MPLS标签栈按后进先出(Last In First Out)方式组织标签,从栈顶开始处理标签。

标签操作

MPLS标签的基本操作包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作,是标签转发信息表的组成部分。

MPLS标签的基本操作详解如下:

  • Push:指当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
  • Swap:当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
  • Pop:当报文离开MPLS域时,将MPLS报文的标签去掉;或者MPLS倒数第二跳的节点处去掉栈顶标签,减少标签栈中的标签数目。

在最后一跳的节点上,MPLS标签实际已没有使用价值。这种情况下,可以利用PHP(Penultimate Hop Popping,倒数第二跳弹出)特性,在倒数第二跳的节点上就将标签弹出,这样最后一跳的节点可直接进行IP转发或者下一层标签转发,从而减少最后一跳的处理负担。

PHP特性是通过分配特殊的标签值3来实现的。标签值3表示隐式空标签(implicit-null),这个值不会出现在标签栈中。当倒数第二跳节点发现自己被分配了标签值3时,它并不用这个值替代栈顶原来的标签,而是直接执行Pop操作,使最后一跳节点直接进行IP转发或下一层标签转发。

基本术语

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

在MPLS域内承担标签产生,转发和移除任务的路由器。其共有3种类型:

  • 入站LSR:可以认为是一个MPLS域的边界设备,这台设备的功能是接受还没有被打上标签的报文,在报文的前端打上标签后再将标签送出去。
  • 链路LSR:可以认为是一个MPLS域内设备,其位于入站LSR与出站LSR之间,主要功能是将接收到的标签报文交换和发送出去到下一个LSR。
  • 出站LSR:可以认为是一个MPLS域的边界设备,功能与入站LSR相反,其在接受到带标签的报文后将其标签移除后发送到MPLS域外。

2.负责分发标签的协议

  • 标记分发协议(Tagging Distribution Protocol,TDP):是思科专有的标记分发协议。
  • 标签分发协议(Label Distribution Protocol,LDP):是IETF开发的用于标签分发的协议

3.LSR维护的三张表

  • FIB表:即CEF表。
  • LIB表(标签信息库): LSR把自己本地生成的标签和相邻的LSR发过来的标签(远程标签),无论标签是否有用,都会将标签信息保存在这一张标签表中。
  • LFIB(标签转发信息库): LSR会把所在MPLS域内真正在用的标签(真正在用的标签是指LSR会从路由条目信息中的多个标签中选择一个最优的使用,选择方法是通过IGP路由表中的下一跳信息来决定使用对应下一跳设备发来的标签)全部都放在LFIB表里。

4.标签交换路径(label switching path,LSP):

指的是在MPLS域内,一个数据报文从源头到目的地所需要经过的具体路径,在该路径中所传输的数据报文是要被多次修改标签的。LSP是LSR在MPLS网络中转发标签数据后产生的,是标签报文穿越MPLS网络的路径。

LSP是一条从入口到出口的单向通道,包含以下角色:

  • LSP的起始节点称为入节点(Ingress),一条LSP只能有一个Ingress。Ingress的主要功能是给IP报文压入一个新的MPLS标签,将其封装成MPLS报文。
  • 位于LSP中间的节点称为中间节点(Transit),一条LSP可能有0个或多个Transit。Transit的主要功能是查找标签转发信息表,通过标签交换完成MPLS报文的转发。
  • LSP的末尾节点称为出节点(Egress),一条LSP只能有一个Egress。Egress的主要功能是弹出标签,恢复成原来的报文进行相应的转发。

MPLS是如何建立LSP的?

MPLS是一种依靠标签交换来指导转发的技术,因此,LSP的建立过程实际上就是沿途LSR为特定FEC确定标签的过程。

MPLS标签由下游分配,按照从下游到上游的方向进行分发。如下图所示,下游LSR根据IP路由的目的地址进行FEC划分,并将标签分配给对应指定目的地址的FEC,再将标签发送给上游LSR,触发上游LSR建立标签转发信息表,最终使一系列LSR形成一条LSP。

LSP按建立方式可以分为静态LSP和动态LSP两种:

  • 静态LSP是管理员通过手工为各个FEC分配标签而建立的LSP。手工分配标签需要遵循的原则是:上游LSR出方向的标签的值等于下游LSR入方向的标签值。
  • 动态LSP是各LSR通过标签发布协议动态的生成和发布标签而建立的LSP,下游LSR向上游LSR发送标签时需要依赖IP路由。MPLS支持多种标签发布协议,例如:LDP(Label Distribution Protocol)、RSVP-TE(Resource Reservation Protocol Traffic Engineering)和MP-BGP(Multiprotocol Border Gateway Protocol)。

报文是如何通过LSP转发的?

以支持PHP特性的LSP为例,MPLS报文在该LSP中的基本转发过程描述如下:

  • Ingress收到目的地址为192.168.1.1/24的IP报文,压入标签Y(Push),封装为MPLS报文并继续转发。
  • Transit收到该MPLS报文,进行标签交换(Swap),将标签Y换成标签X。
  • 倒数第二跳的Transit收到该MPLS报文,因为Egress分给它的标签值为3,所以进行PHP操作,弹出标签X并继续将IP报文转发给Egress。
  • Egress节点收到该IP报文,将其转发给目的地192.168.1.1/24。

MPLS控制层面(Control Plane):

主要是来控制三层路由信息(比如EIGRP,OSPF,BGP等)和标签(比如TDP,LDP,BGP等)。

MPLS数据层面(DATA Plane):

主要是以标签为基准来进行数据转发。MPLS两个层面的具体工作流程可以通过图2.2来详细说明:

部分参考自: https://info.support.huawei.com/info-finder/encyclopedia/zh/MPLS.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Why MPLS?
  • IP路由与MPLS转发方式对比
  • MPLS的基本概念
    • FEC
      • MPLS标签
        • MPLS标签共有4个域:
        • 标签操作
        • 基本术语
          • 1.LSR (Label Switch Router):标签交换路由器:
            • 2.负责分发标签的协议
              • 3.LSR维护的三张表
                • 4.标签交换路径(label switching path,LSP):
                • MPLS是如何建立LSP的?
                • 报文是如何通过LSP转发的?
                  • MPLS控制层面(Control Plane):
                    • MPLS数据层面(DATA Plane):
                    相关产品与服务
                    VPN 连接
                    VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档