MPLS 概念
MPLS 是一种在 IP 骨干网上利用标签来指导数据报文高速转发的协议,由 IETF (Internet Engineering Task Force,因特网工程服务组)提出。相对于传统的 IP 路由方式,MPLS 提供了一种新的网络交换方式,它将 IP 地址映射为简短且长度固定、只具有本地意义的标签,以标签交换替代 IP 查表,从而显著提升转发效率。同时,MPLS 的标签机制可以在 IP 网络中构筑一条逻辑上的隧道,而且 MPLS 兼容不同的网络层和链路层协议,因此,MPLS 可以很好的为各种 L2VPN、L3VPN 以及 EVPN 业务提供公网隧道服务。
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 特征
MPLS 基本概念
FEC
MPLS 是一种分类转发技术,它将具有相同转发处理方式的数据分组归为一类,称为 FEC(Forwarding Equivalence Class,转发等价类)。MPLS 对相同 FEC 的数据分组采取完全相同的处理方式。
FEC 的划分方式非常灵活,可以是源地址、目的地址、源端口、目的端口、协议种类、业务类型等要素的任意组合。例如,在采用最长匹配算法的 IP 路由转发中,去往同一个目的地址的所有报文就是一个 FEC。
MPLS 标签
MPLS 标签是一个简短且长度固定的标识符,它只具有本地意义,用于唯一标识一个分组所属的 FEC。在某些情况下(例如,进行负载分担)对应一个 FEC 可能会有多个 MPLS 标签,但是在一台设备上,一个 MPLS 标签只能代表一个 FEC。
MPLS 标签长度为 4 个字节,封装结构如下图所示。
MPLS 标签封装结构
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 标签的封装位置
MPLS 标签栈(Label stack)也称为 MPLS 多层标签,是指 MPLS 标签的排序集合,如下图所示。靠近二层首部的标签称为栈顶标签或外层标签;靠近 IP 首部的标签称为栈底标签,或内层标签。MPLS 标签栈按后进先出(Last In First Out)方式组织标签,从栈顶开始处理标签。
MPLS 标签栈
标签操作
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 转发或下一层标签转发。
LSP
LSP(Label Switched Path,标签交换路径)是指属于同一 FEC 的报文(即封装了 MPLS 标签的报文)在 MPLS 域内转发所经过的路径,如下图所示。
LSP 示意图
LSP 是一条从入口到出口的单向通道,包含以下角色:
- LSP 的起始节点称为入节点(Ingress),一条 LSP 只能有一个 Ingress。Ingress 的主要功能是给 IP 报文压入一个新的 MPLS 标签,将其封装成 MPLS 报文。
- 位于 LSP 中间的节点称为中间节点(Transit),一条 LSP 可能有 0 个或多个 Transit。Transit 的主要功能是查找标签转发信息表,通过标签交换完成 MPLS 报文的转发。
- LSP 的末尾节点称为出节点(Egress),一条 LSP 只能有一个 Egress。Egress 的主要功能是弹出标签,恢复成原来的报文进行相应的转发。
MPLS 网络结构
MPLS 网络的典型结构如下图所示。
MPLS 网络结构示意图
MPLS 网络主要包含以下要素:
- 支持 MPLS 功能的网络设备称为 LSR(Label Switching Router,标签交换路由器),它是 MPLS 网络的基本组成单元。由一系列连续的 LSR 构成的网络区域称为 MPLS 域。
- MPLS 域内部的 LSR 称为 Core LSR,如果一个 LSR 的相邻节点都运行 MPLS,则该 LSR 就是 Core LSR。
- 位于 MPLS 域边缘、连接其它网络的 LSR 称为 LER(Label Edge Router,标签边缘路由器),如果一个 LSR 有一个或多个不运行 MPLS 的相邻节点,那么该 LSR 就是 LER。
在 MPLS 网络中,任何两个 LER 之间都可以建立 LSP,用来转发进入 MPLS 域的报文,中间可途径若干个 Core LSR。因此,一条 LSP 的 Ingress 和 Egress 都是 LER,而 Transit 是 Core LSR。
MPLS 价值
MPLS 在当前的 IP 网络中得到了广泛的应用,其主要价值体现在以下几方面:
- MPLS 完全兼容 IP 网络,相当于在 IP 网络的基础上进行改进,建设成本低,易于推广。
- MPLS 的控制平面和转发平面是分开的,在控制平面依靠 IP 路由来建立 LSP,MPLS 可以借用 IP 路由的各种灵活性、可靠性机制;在转发平面通过 LSP 来传输报文,是面向连接的,MPLS 可以有效的实施流量工程和 QoS。
- MPLS 是一种与链路层协议无关的技术,它同时支持帧中继、ATM、PPP 和 SDH 等协议,保证了多种网络的互通,兼容性非常好。
- MPLS 网络支持层次化的拓扑结构,适合在 IP 骨干网中部署。
- MPLS 标签栈在理论上可支持标签的无限嵌套,正好契合了 VPN 业务对公、私网标签多层封装的要求,因此 MPLS 为 VPN 业务的蓬勃发展提供了强有力的支持。
MPLS 工作过程
简单来说,MPLS 的工作就是将进入 MPLS 域的报文正确地转发到目的地。MPLS 的工作可以概括为两个过程:建立 LSP、报文通过 LSP 转发。
MPLS 建立 LSP
MPLS 是一种依靠标签交换来指导转发的技术,因此,LSP 的建立过程实际上就是沿途 LSR 为特定 FEC 确定标签的过程。
MPLS 标签由下游分配,按照从下游到上游的方向进行分发。如下图所示,下游 LSR 根据 IP 路由的目的地址进行 FEC 划分,并将标签分配给对应指定目的地址的 FEC,再将标签发送给上游 LSR,触发上游 LSR 建立标签转发信息表,最终使一系列 LSR 形成一条 LSP。
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。
报文通过 LSP 转发的示意图
MPLS VPN
MPLS VPN 是指利用 MPLS 在 IP 骨干网络上构建 VPN 的技术。VPN 的实质就是在公网上像私有专用网一样传输业务数据,这就需要在公网上建立一条隧道,让数据报文通过隧道直达目的地,从而达到私有专用网络的效果。概括地讲,MPLS VPN 就是采用 MPLS 建立的 LSP 作为公网隧道来传输私网业务数据的。
MPLS VPN 的基本模型主要由以下三种角色构成:
- CE(Customer Edge):用户网络边缘设备,有接口直接与服务提供商 SP(Service Provider)网络相连,用户的 VPN 站点(Site)通过 CE 连接到 SP 网络。CE 可以是网络设备,也可以是一台主机。通常情况下,CE “感知” 不到 VPN 的存在,也不需要支持 MPLS。
- PE(Provider Edge):是服务提供商网络的边缘设备,与 CE 直接相连。在 MPLS 网络中,PE 设备作为 LSR,对 MPLS 和 VPN 的所有处理都发生在 PE 上,对 PE 性能要求较高。
- P(Provider):服务提供商网络中的骨干设备,不与 CE 直接相连。在 MPLS 网络中,P 设备作为 LSR,只需要处理 MPLS,不维护 VPN 信息。
MPLS VPN 的基本模型
MPLS VPN 充分利用了 MPLS 的技术优势,是目前应用最广泛的 VPN 技术。从用户角度来看,MPLS VPN 具有如下价值:
- 一个 MPLS 标签对应一个指定业务的数据流(特定 FEC),非常有利于不同用户业务的隔离。
- MPLS 可以提供流量工程和 QoS 能力,用户可以借助 MPLS 最大限度地优化 VPN 网络的资源配置。
- MPLS VPN 还能提供灵活的策略控制,满足不同用户的特殊要求,快速实现增值服务。
via: huawei