计算机网络-MPLS转发原理

news/2025/2/15 4:39:23/

在上一篇关于 MPLS 基础的文章中,我们了解了 MPLS 的基本概念、术语以及它在网络中的重要性。今天,我们将深入探讨 MPLS 转发的原理与流程,帮助大家更好地理解 MPLS 是如何在实际网络中工作的。

一、MPLS 转发概述

MPLS 转发的本质是将数据归到对应的 FEC(Forwarding Equivalence Class,转发等价类),并按照提前建立好的 LSP(Label Switched Path,标签交换路径)进行转发

  • 对于整个 MPLS 域,LSP 是某一给定的 FEC 进入域和离开域的路径,可以看作是 LSR(Label Switching Router,标签交换路由器)的有序集合。
  • 对于单台 LSR,需要建立标签转发表,用标签来标识 FEC,并绑定相应的标签处理和转发等行为。

MPLS转发概述

  • 同一个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 转发信息表和标签转发信息表。

MPLS 体系结构

大致可以理解为高速公路和车辆的关系,控制平面负责搭建公路,转发依靠车辆运输。控制平面是无连接的,主要功能是负责产生和维护路由信息以及标签信息。转发平面也称为数据平面,是面向连接的, 主要功能是负责普通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 正确的处理。

LSP建立原则

对某一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

动态 LSP:通过标签发布协议动态建立。常用标签发布协议是 LDP(Label Distribution Protocol),它负责 FEC 的分类、标签的分发以及 LSP 的建立和维护等一系列操作。LDP 广泛应用于 VPN 服务上,具有组网、配置简单、支持基于路由动态建立 LSP、支持大容量 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 的处理

Ingress LSR
当 IP 报文进入 MPLS 域时,Ingress LSR 会进行以下操作:

  1. 查看 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 报文发送给下一跳。

在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 的处理

Transit LSR 的处理

当 MPLS 报文在 MPLS 域转发时,Transit LSR 会进行以下操作:

  1. 根据 MPLS 的标签值查看对应的 ILM 表,得到 Tunnel ID。
  2. 根据 ILM 表的 Tunnel ID 找到对应的 NHLFE 表项。
  3. 查看 NHLFE 表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为 Swap,则交换标签。

大致就是根据前期定义的FEC手动从入接口的Z标签,然后通过Tunnel ID查找标签转发表,知道了从出接口转发,然后打上Y标签进行转发。

4.3 Egress LSR 的处理

Egress LSR 的处理

S栈底位

当 MPLS 报文需要离开 MPLS 域时,Egress LSR 会进行以下操作:

  1. 根据 ILM 查询到该标签对应的操作为 Pop,说明需要剥离该标签。
  2. 根据当前标签头部的下一层报文头部进行下一步处理。如果 S=1,表明该标签是栈底标签,直接进行 IP 转发;如果 S=0,表明还有下一层标签,根据下一层标签进行处理。

4.4 MPLS 详细转发过程

MPLS 详细转发过程

MPLS 转发过程涉及多个步骤,包括 Ingress LSR 的标签压入、Transit LSR 的标签交换和 Egress LSR 的标签弹出。通过这些步骤,MPLS 报文能够在 MPLS 域内高效地转发,并最终到达目的地。

总结:MPLS 转发是 MPLS 技术的核心,它通过标签的压入、交换和弹出,实现了数据的快速转发。MPLS 的体系结构由控制平面转发平面组成,控制平面负责路由和标签信息的维护,转发平面负责数据的转发。通过静态或动态方式建立 LSP,MPLS 网络能够高效地处理和转发数据报文。


http://www.ppmy.cn/news/1572151.html

相关文章

DeepSeek时代:百度们亟需“深度求索”

文:互联网江湖 作者:刘致呈 眼看着梁文峰被捧上中国AI神坛,科技巨头们的心情一定是复杂的。 就像大刘笔下的《三体》中,当三百年后的人类太空舰队,面对水滴探测器时是五味杂陈的。 当科技大佬们纷纷断言,…

Kotlin 扩展函数与内联函数

Kotlin扩展函数 Kotlin 的扩展函数是 Kotlin 中非常强大且实用的功能。它允许你为现有的类添加新的方法,而不需要修改其源代码。这意味着你可以在已有的类上“扩展”新的功能,使用起来就像是原本就存在这些方法一样。 扩展函数的基本语法 fun 类名.方…

一区IEEE Trans|特征模态分解FMD,一维数据分解新方法-matlab免费代码

引言 本期介绍一款小众、最新、性能强大的一维数据分解方法,特征模态分解Feature Mode Decomposition,FMD),2023年发表在中科院1区top sci期刊IEEE Transactions on Industrial Electronics (简称IEEE TIE)&#xff0…

Git的常用命令及常见问题处理方法

目录 一、介绍二、常用 Git 命令1. 配置用户信息2. 初始化仓库3. 克隆远程仓库4. 查看状态5. 添加文件到暂存区6. 提交更改7. 查看提交历史8. 查看文件差异9. 查看分支10. 切换分支11. 合并分支12. 处理冲突13. 远程操作14. 标签管理15. 撤销操作 三、常见问题处理方法1. 无法推…

排序算法大合集

排序算法大合集 翻了翻很久以前写的算法报告,现在整理一下。 由难度从简单到难排序。 桶排序、冒泡排序、选择排序、快速排序。 最简单粗暴——桶排序 (一)桶排序原理 桶排序,是一个目前速度最快的一种排序 基本思想是将无序列数依次装进一个按元素名命名数组中 最后…

【Linux】【网络】IO多路复用 select、poll、epoll

【Linux】【网络】IO多路复用 select、poll、epoll IO 多路复用 进程或线程同时监控多个文件描述符,查看描述符上是否有事件发生,从而提高资源利用率和系统吞吐量。 1. select int select(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *exc…

【JavaScript爬虫记录】记录一下使用JavaScript爬取m4s流视频过程(内含ffmpeg合并)

前言 前段时间发现了一个很喜欢的视频,可惜网站不让下载,简单看了一下视频是被切片成m4s格式的流文件,初步想法是将所有的流文件下载下来然后使用ffmpeg合并成一个完整的mp4,于是写了一段脚本来实现一下,电脑没有配python环境,所以使用JavaScript实现,合并功能需要安装ffmpeg,…

算法-整理图书,反转链表数据返回

力扣题目:LCR 123. 图书整理 I - 力扣(LeetCode) 书店店员有一张链表形式的书单,每个节点代表一本书,节点中的值表示书的编号。为更方便整理书架,店员需要将书单倒过来排列,就可以从最后一本书…