计算机网络-MPLS转发原理

在上一篇关于 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.rhkb.cn/news/16948.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全 | SNI介绍及F5中的配置应用

关注:CodingTechWork SNI介绍 SNI(Server Name Indication)是 TLS/SSL 协议中的一个重要扩展,旨在解决同一 IP 地址上托管多个网站时,如何选择正确的 SSL/TLS 证书进行加密通信的问题。SNI 通过在 TLS 握手初期传递客…

ARM Cortex-M3/M4 权威指南 笔记【二】架构

一、架构 1.1 架构简介 Cortex-M3/M4 处理器都基于 ARMv7-M 架构。最初的 ARMv7-M 架构是随着 Cortex-M3 处理器一同引入的,而在 Cortex-M4 发布时,架构中又额外增加了新的指令和特性,改进后的架构有时也被称为 ARMV7E-M。要了解 ARM7-M 和…

LabVIEW软件需求开发文档参考

在项目开发的工作历程中,精准把握项目需求无疑是成功打造整个项目的首要关键步骤,同时也是一个至关重要且不可忽视的核心环节。明确且详尽的项目需求就如同建筑的基石,为后续的设计、开发、测试等一系列工作提供了坚实的支撑和清晰的指引。倘…

Linux内核实时机制x - 中断响应测试 Cyclictest分析1

Linux内核实时机制x - 中断响应测试Cyclitest 1 实时性测试工具 rt-test 1.1 源码下载 1.下载源码: ~/0-code/5.15$ git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git 正克隆到 rt-tests... remote: Enumerating objects: 5534, done. remot…

Unity 代码优化记录

文档 unity 代码优化分析:https://docs.unity3d.com/Manual/analysis.html Unity 修复性能问题:https://learn.unity.com/tutorial/fixing-performance-problems-2019-3?courseId5c87de35edbc2a091bdae346#604586d7edbc2a5b4345d249 实例 具体枚举转En…

Arcgis/GeoScene API for JavaScript 三维场景底图网格设为透明

项目场景: 有时候加载的地图服务白色区域会露底,导致在三维场景时,露出了三维网格,影响效果,自此,我们需要将三维场景的底图设为白色或透明。 问题描述 如图所示: 解决方案: 提示…

snort3.0-ubuntu18.04 64入侵检测安装与使用ailx10ailx10​​知乎知识会员

在日常生活中,很多人怀疑自己的手机、电脑被监控了,担心自己的隐私泄漏,实际上最佳的检测方式就是终端检测,也就是EDR,但是就是有那么多的人在网上大放厥词,说任何EDR杀毒软件都检测不到监控,毕…

AI语言模型的技术之争:DeepSeek与ChatGPT的架构与训练揭秘

云边有个稻草人-CSDN博客 目录 第一章:DeepSeek与ChatGPT的基础概述 1.1 DeepSeek简介 1.2 ChatGPT简介 第二章:模型架构对比 2.1 Transformer架构:核心相似性 2.2 模型规模与参数 第三章:训练方法与技术 3.1 预训练与微调…

AI赋能前端协作:效率提升与团队新动力

当前前端开发领域竞争激烈,项目交付周期紧迫,前端开发团队面临着诸多挑战。沟通成本高、代码规范不统一、开发效率低等问题,常常导致项目延期、质量下降,甚至团队士气低落。而AI代码生成器的出现,为解决这些问题带来了…

Django快速入门

1. 安装 在安装了python环境下,在命令行winr,录入 pip install django或者使用国内源下载 pip install -i https://pypi.douban.com/simple/ django安装完成后,在%python%/Scripts目录下会出现如下图的django-admin.exe的文件 以及django…

Windows可以永久暂停更新了

最终效果图: 第一步: winR组合键打开运行对话框,输入“regedit”,点击“确定”或回车: 第二步: 注册表定位到“\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings”,新建DWO…

在anaconda环境中构建flask项目的exe文件

一、创建并激活虚拟环境 conda create -n flask_env python3.9 # python版本根据项目需求安装 conda activate flask_env # 激活环境二、安装必要依赖 推荐使用conda,pip没尝试过,但是deepseek给出了命令 conda install flask …

C++ Primer 条件语句

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

微服务SpringCloud Alibaba组件nacos教程【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】

一.Nacos教程 文章目录 一.Nacos教程1.1 Nacos简介1.2 nacos基本使用直接下载打包服务源码方式启动 1.3 创建nacos客服端1.4 nacos集群配置1.5 nacos配置中心 1.1 Nacos简介 nacos是spring cloud alibaba生态中非常重要的一个组件,它有两个作用: 1:注册…

在 Navicat 17 中扩展 PostgreSQL 数据类型 - 范围类型

范围类型 PostgreSQL 是市场上最灵活的数据库之一,这已不是什么秘密。事实上,PostgreSQL 的可扩展性和丰富的功能集使 PostgreSQL 近期已超越 MySQL,成为最受开发人员推崇和最受欢迎的数据库系统。在这个使用 Navicat Premium 17 在 Postgre…

内容测试2

备注: 在7月10日记录之前遇到的问题及解决方法: 一:常见的访问问题: 403 Forbidden:(未有请求权限) 表示服务器理解请求但是拒绝执行它。这通常是由于服务器上的文件或资源没有正确的读、写或执行权限&…

安川伺服控制器MP系列优势特点及行业应用

在工业自动化领域,运动控制器的性能直接决定了设备的精度、效率和可靠性。作为全球领先的运动控制品牌,安川电机伺服控制器凭借其卓越的技术优势和广泛的应用场景,正在为智能制造注入强劲动力! MP3100:主板型运动控制…

kafka生产端之架构及工作原理

文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前,有可能需要经历拦截器(Interceptor)、序列化器(Serializer)和分区器(Partitioner)等一系列的作用,那么在此之后又会…

二、交换机的vlan子设备接入

一、交换机的vlan设置-CSDN博客 二、交换机的vlan子设备接入-CSDN博客 接上篇的文章,本文接入了子设备 网络结构如下: 用路由器A和POE交换机B代替第一篇中的笔记本电脑,路由器A和交换机B都关闭DHCP服务,并分别接入一个IPC&#…

DedeBIZ系统审计小结

之前简单审计过DedeBIZ系统,网上还没有对这个系统的漏洞有过详尽的分析,于是重新审计并总结文章,记录下自己审计的过程。 https://github.com/DedeBIZ/DedeV6/archive/refs/tags/6.2.10.zip 📌DedeBIZ 系统并非基于 MVC 框架&…