在上一篇关于 MPLS 基础的文章中,我们了解了 MPLS 的基本概念、术语以及它在网络中的重要性。今天,我们将深入探讨 MPLS 转发的原理与流程,帮助大家更好地理解 MPLS 是如何在实际网络中工作的。
一、MPLS 转发概述
MPLS 转发的本质是将数据归到对应的 FEC(Forwarding Equivalence Class,转发等价类),并按照提前建立好的 LSP(Label Switched Path,标签交换路径)进行转发。
- 对于整个 MPLS 域,LSP 是某一给定的 FEC 进入域和离开域的路径,可以看作是 LSR(Label Switching Router,标签交换路由器)的有序集合。
- 对于单台 LSR,需要建立标签转发表,用标签来标识 FEC,并绑定相应的标签处理和转发等行为。
- 同一个FEC,若进入MPLS域的Ingress LSR(入站LSR)不同,转发时的LSP也不相同。
- 同一个FEC,LSR的处理方式相同,不论这个FEC来自哪里(进入设备的接口)。
- LSR的转发动作决定了LSP,而标签转发表确定转发动作,所以建立标签转发表也可以理解为建立LSP。
- 如图所示,因为有着相同的目的地,所以这三份数据属于同一个转发等价类FEC1。同时由于入站LSR不同,这些数据将分别在LSP1、LSP2和LSP3上被转发。因为标签仅具有本地意义,所以每台LSR上给同一FEC分配的标签,可以相同,也可以不同。
简单理解就是对于去往目的网络4.4.4.4,MPLS域内的LSR都有明确的路径规划,也就是FEC或者说LSP。
二、MPLS 体系结构
MPLS 的体系结构由控制平面(Control Plane) 和转发平面(Forwarding Plane) 组成。
- 控制平面:负责产生和维护路由信息以及标签信息。它包括 IP 路由协议和路由信息表,标签分发协议和标签信息表。
- 转发平面:也称数据平面(Data Plane),负责普通 IP 报文的转发以及带 MPLS 标签报文的转发。它包括 IP 转发信息表和标签转发信息表。
大致可以理解为高速公路和车辆的关系,控制平面负责搭建公路,转发依靠车辆运输。控制平面是无连接的,主要功能是负责产生和维护路由信息以及标签信息。转发平面也称为数据平面,是面向连接的, 主要功能是负责普通IP报文的转发以及带MPLS标签报文的转发。
控制平面与转发平面的交互:
在 MPLS 网络中,控制平面和转发平面通过路由信息和标签信息进行交互。IP 路由协议在 LSR 之间交互路由信息,形成路由信息表(RIB)。标签分发协议(LDP)在 LSR 之间交互标签信息,形成标签信息表(LIB)。转发平面根据控制平面提供的信息,建立转发信息表(FIB) 和标签转发信息表(LFIB),从而实现数据的快速转发。
就是进来的报文先交由控制平面进行计算得出路由信息和标签信息,然后将结果交给转发平面从哪个接口转发,打上标签进行处理。
三、LSP 建立原则
3.1 LSP 建立原则
当网络层协议为 IP 协议时,FEC 所对应的路由必须存在于 LSR 的 IP 路由表中,否则该 FEC 的标签转发表项不生效。LSR 用标签标识指定 FEC,所以该 FEC 的数据被发送至 LSR 时,必须携带正确的标签,才能被 LSR 正确的处理。
对某一FEC,设备上存在进(In)标签和出(Out)标签,分别表示该FEC的数据接收时和发送时所携带的标签。
以R2转发到4.4.4.0/24的数据为例,R1为R2的上游(Upstream)LSR,R3为R2的下游(Downstream)LSR。为确保标签报文能被正确的处理和转发,那么R1发给R2的报文所携带的标签与R2上绑定到4.4.4.0/24的相同,即R1的出标签等于R2的入标签。 同理,R2关于4.4.4.0/24这条FEC的出标签必须等于R3的入标签。
简单来说就是标签必须是相对应,有进有出,然后在入栈LSR或者出栈LSR是没有进或者出标签,弹出标签转换为普通IP报文。
3.2 LSP 建立方式
MPLS 需要为报文事先分配好标签,建立一条 LSP,才能进行报文转发。LSP 分为静态 LSP 和动态 LSP 两种。
静态 LSP:用户通过手工为各个 FEC 分配标签而建立的。静态 LSP 不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小。但通过静态方式建立的 LSP 不能根据网络拓扑变化动态调整,需要管理员干预。适用于拓扑结构简单并且稳定的小型网络。
动态 LSP:通过标签发布协议动态建立。常用标签发布协议是 LDP(Label Distribution Protocol),它负责 FEC 的分类、标签的分发以及 LSP 的建立和维护等一系列操作。LDP 广泛应用于 VPN 服务上,具有组网、配置简单、支持基于路由动态建立 LSP、支持大容量 LSP 等优点。
类似静态路由和动态路由的意思,静态需要手工维护,动态可以自动生成和动态维护。由于静态LSP各节点上不能相互感知到整个LSP的情况,因此静态LSP是一个本地的概念。除了LDP还有其它的一些标签分发协议如:RSVP-TE、MP-BGP。
四、MPLS 标签转发流程
LSR 处理报文时主要根据** FTN(FEC-to-NHLFE)** 、NHLFE(Next Hop Label Forwarding Entry)下一跳标签转发表项和** ILM(Incoming Label Map)入标签映射**。
- FTN:当 LSR 收到 IP 报文并需要进行 MPLS 转发时使用,FTN 只在 Ingress LSR 存在。FTN 包括 Tunnel ID、FEC 到 NHLFE 的映射信息。
- NHLFE:LSR 对报文(MPLS 或 IP 报文)进行 MPLS 转发时使用,NHLFE 在 Ingress 和 Transit LSR 存在。 NHLFE 包括 Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。
- ILM:用于指导 MPLS 报文的转发(MPLS 或 IP 转发),ILM 只在 Transit 和 Egress LSR 存在。 ILM 包括 Tunnel ID、入标签、入接口、标签操作类型等信息。
下面再详细说明对应的转发过程,概念有点绕口。
4.1 Ingress LSR 的处理
当 IP 报文进入 MPLS 域时,Ingress LSR 会进行以下操作:
- 查看 FIB 表,检查目的 IP 地址对应的 Tunnel ID 值是否为 0x0(如果 Tunnel ID 值为 0x0,则进入正常的 IP 转发流程)。
- 如果 Tunnel ID 值不为 0x0,根据 FIB 表的 Tunnel ID 找到对应的 NHLFE 表项,将 FIB 表项和 NHLFE 表项关联起来。
- 查看 NHLFE 表项,可以得到出接口、下一跳、出标签和标签操作类型。
- 在 IP 报文中压入出标签,同时处理 TTL,然后将封装好的 MPLS 报文发送给下一跳。
在Ingress LSR,通过查询FIB表(得到FTN信息)和NHLFE表指导报文的转发。
当IP报文进入MPLS域时,首先查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0。
- 如果Tunnel ID值为0x0,则进入正常的IP转发流程。
- 如果Tunnel ID值不为0x0,则进入MPLS转发流程。
至于这里为什么tunnel id不为0x0,就要提到我们前面将的,FEC必须是预先配置好,不管是手动静态LSP还是动态LDP,就是说路径已经提前规划好了,然后到达目的地址3.3.3.3在FIB转发表的Tunnel ID就是0x11了,这是前提。
4.2 Transit LSR 的处理
当 MPLS 报文在 MPLS 域转发时,Transit LSR 会进行以下操作:
- 根据 MPLS 的标签值查看对应的 ILM 表,得到 Tunnel ID。
- 根据 ILM 表的 Tunnel ID 找到对应的 NHLFE 表项。
- 查看 NHLFE 表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为 Swap,则交换标签。
大致就是根据前期定义的FEC手动从入接口的Z标签,然后通过Tunnel ID查找标签转发表,知道了从出接口转发,然后打上Y标签进行转发。
4.3 Egress LSR 的处理
当 MPLS 报文需要离开 MPLS 域时,Egress LSR 会进行以下操作:
- 根据 ILM 查询到该标签对应的操作为 Pop,说明需要剥离该标签。
- 根据当前标签头部的下一层报文头部进行下一步处理。如果 S=1,表明该标签是栈底标签,直接进行 IP 转发;如果 S=0,表明还有下一层标签,根据下一层标签进行处理。
4.4 MPLS 详细转发过程
MPLS 转发过程涉及多个步骤,包括 Ingress LSR 的标签压入、Transit LSR 的标签交换和 Egress LSR 的标签弹出。通过这些步骤,MPLS 报文能够在 MPLS 域内高效地转发,并最终到达目的地。
总结:MPLS 转发是 MPLS 技术的核心,它通过标签的压入、交换和弹出,实现了数据的快速转发。MPLS 的体系结构由控制平面和转发平面组成,控制平面负责路由和标签信息的维护,转发平面负责数据的转发。通过静态或动态方式建立 LSP,MPLS 网络能够高效地处理和转发数据报文。