当前位置: 首页 > news >正文

4.9 多协议标记交换MPLS

思维导图:

前言:

**4.9 多协议标记交换MPLS笔记**

1. **定义与背景**:
   - MPLS (多协议标记交换) 是一种由 IETF 开发的新协议。
   - “多协议”意味着 MPLS 的上层可以使用多种协议。
   - 该协议综合了多家公司的技术,如 Cisco 的 TAG Switching 和 Ipsilon 的 IP Switching。
   - 于2001年1月成为互联网建议标准。

2. **工作原理**:
   - MPLS 使用面向连接技术,使每个分组带有一个 "标记" (label)。
   - 分组到达交换机 (标记交换路由器) 时,通过标记检索分组转发表,提高了转发效率。

3. **与ATM的关系**:
   - MPLS 和 ATM 都采用面向连接的工作方式。
   - 一度人们认为 ATM 会是网络的未来,但高速 IP 路由器由于其价格低廉,占据了主导地位,导致 ATM 未成为主流。
   - MPLS 不是为了取代 IP,而是作为 IP 的增强技术在互联网中被广泛应用。

4. **MPLS 的特点**:
   - 支持面向连接的服务质量。
   - 支持流量工程,可以平衡网络负载。
   - 有效支持虚拟专用网 (VPN)。

5. **其他说明**:
   - MPLS 中的 "label" 通常被翻译为 "标记",尽管也有其他翻译如 "标签"。

这些笔记摘要了 MPLS 的关键内容,从定义、发展背景到主要特点和与其他技术的关系,为读者提供了一个清晰的框架来理解该主题。

4.9.1 MPLS的工作原理笔记

1. **传统IP网络问题**:
   - 分组在每个路由器都需查找路由表,按“最长前缀匹配”确定下一跳。
   - 大型网络路由表查找时间长,可导致缓存溢出、分组丢失和服务质量下降。

2. **MPLS解决方案**:
   - 在MPLS域入口,为IP数据报打上固定长度“标记”。
   - 根据标记用硬件转发IP数据报,速度加快。
   - 采用标记交换:不再上升到第三层,直接在第二层用硬件转发。

3. **MPLS域和LSR**:
   - MPLS域中所有路由器都支持MPLS技术,称为标记交换路由器LSR。
   - LSR同时具有标记交换和路由选择功能。

4. **MPLS基本工作过程**:
   - **标记分配与交换路径**:LSR使用标记分配协议LDP交换报文,确定与标记对应的标记交换路径LSP。例如路径A→B→C→D。
   - **打标记与转发**:IP数据报进入MPLS域时,入口结点打上标记并按转发表转发给下一个LSR。后续LSR都按标记转发。
   - **标记对换**:每个LSR在转发时,将入标记更换为出标记。
   - **标记移除**:IP数据报离开MPLS域时,出口结点移除标记,后续使用常规转发。

5. **分类**:
   - 分类指为IP数据报打标记的过程。
   - 三种分类:第三层(仅IP首部),第四层(加入TCP/UDP首部),第五层(考虑有效载荷)。

6. **显式路由选择与传统路由选择**:
   - MPLS采用显式路由选择,由入口LSR确定整个MPLS域内的转发路径。
   - 与常见的“每路由器逐跳选择”方式不同。

这些笔记摘要了MPLS的工作原理,从其与传统IP网络的区别、基本操作流程到重要概念,为读者提供了一个清晰的理解框架。

 我的理解:

我们可以用“机场快速通道”来类比MPLS的工作原理。

1. **标记(Label)的引入**:
   - 想象你进入一个国际机场,首先需要办理托运、安检等一系列手续。如果你是一个特定的VIP旅客,你会被赋予一个特别的徽章或贴纸。这就类似于MPLS中为数据报文加上的标记。

2. **硬件转发**:
   - 拥有VIP标记的你不再需要在每个检查点排队并按照常规流程办理,而是可以直接沿着专门为VIP设定的快速通道前进,类似于数据报文在MPLS域中的快速转发。

3. **标记交换(Label Swapping)**:
   - 当你从一个航站楼走到另一个航站楼时,可能需要更换你的VIP徽章或贴纸,因为在不同的航站楼中,标识VIP的方法可能不同。这就像MPLS中数据报文在每个路由器上更换标记。

4. **确定路径与LSP**:
   - 在机场内,有明确标示的路线图,指引VIP旅客应该如何快速通过机场各个环节。这与MPLS中预先设定的标记交换路径(LSP)相似。

5. **退出MPLS域**:
   - 当你最终到达登机口,准备登机时,你的VIP标记可能会被移除,你将与其他所有旅客一样登机。这与数据报文在离开MPLS域时去除标记的过程相似。

6. **显式路由选择**:
   - 这就像机场为VIP旅客提供的专用路线,不同于常规旅客的路径,整个过程都已预先规划好,不需要在每个环节重新决策。

所以,MPLS就像是网络中的“VIP快速通道”,能够更高效地处理数据流,并确保数据报文快速、稳定地到达目的地。

**MPLS转发等价类FEC**

**定义**:
- **FEC (Forwarding Equivalence Class)**:一组被路由器以相同方式处理的IP数据报集合。这种相同的方式处理可以是:同样的接口转发、相同的下一跳地址、相同的服务类别、相同的丢弃优先级等。

**FEC的例子**:
1. 与特定IP地址前缀匹配的目的IP数据报(类似于普通的IP路由器)。
2. 所有源地址和目的地址都相同的IP数据报。
3. 满足某种服务质量需求的IP数据报。

**特性**:
- FEC的划分非常灵活,完全取决于网络管理员的需求和判断。
- 一个入口节点不是给每一个IP数据报都分配一个独特的标记,而是给同一FEC的IP数据报分配相同的标记。
- FEC与标记之间是一对一的关系。

**FEC在负载平衡中的应用**(参考图4-62):
- 传统路由选择方法可能导致某条路径过载,如A→B→C。
- 使用MPLS和FEC,可以通过定义多种FEC来实现负载平衡。
  - 例如,A可以为来自H₁目的地为H₃的数据定义FEC,并选择路径H₁→A→B→C→H₃;
  - 而为来自H₂目的地为H₄的数据定义另一个FEC,并选择路径H₂→A→D→E→C→H₄。
- 这样的策略使得网络负载更均衡,称为流量工程(Traffic Engineering)或通信量工程。

**其他**:
- 『标记对换』与『标记交换』在MPLS上下文中的使用注意。虽然MPLS的LS表示“标记交换”,实际功能是“标记对换”。

【图4-62解读】:
- 传统路由可能导致A→B→C路径过载。
- 通过使用MPLS和自定义FEC,可以使负载更均衡,例如通过路径H₁→A→B→C→H₃和H₂→A→D→E→C→H₄。

 我的理解:

我们可以用一个"火车站调度"的比喻来解释。

---

想象一下,IP数据报是一列列火车,而我们的网络就是一套复杂的铁路系统。每列火车都有自己的起点和目的地,需要在这个铁路系统上找到一条适当的路径。在普通的路由方式中,所有火车都会被调度到最短或最快的路径,比如从A站到C站只经过B站。这就像一个繁忙的火车站,所有的火车都尝试走最快的线路,结果造成了这条线路的拥堵。

而**FEC**就像是火车站的调度员,他们可以为火车分配特定的轨道。比如,从H₁出发去H₃的火车可能被分配到A-B-C这条线路,而从H₂出发去H₄的火车可能被分配到A-D-E-C这条线路。这样,火车的流量就被合理地分散开,使得整个铁路系统运行得更加平稳和高效。

**标记**可以看作火车上挂的标志或者车票,告诉火车应该走哪条线路。同一种FEC的火车都有相同的标志或车票,因此它们都会走相同的路径。

这种方法,也就是为火车(或IP数据报)分配特定的轨道(或路径),使得火车流量更均匀地分布在整个铁路系统上,就叫做“流量工程”或“通信量工程”。

---

笔记:MPLS首部的位置与格式

  1. 邮递标签的需要

    • 通常,我们发送的邮件只需要一个地址标签。但有时,为了特殊处理或更高效的投递,我们可能需要加上一个额外的标签。
    • 同样,IP数据报在传输时需要一种特殊的“标签”,即MPLS标记。但是,像IPv4这样的标准邮递方式并没有为这种特殊标签预留空间。因此,我们需要一个方法将其加入。
  2. 标签的位置

    • 假设你的邮件是放在一个信封里的。在你的信和信封之间,你加上了这个特殊的邮递标签。
    • 同样地,MPLS首部就像这个特殊标签,位于数据报和以太网帧之间,确切地说,它位于第二层和第三层之间。
  3. 标签的识别

    • 为了让邮递员知道这是一个特殊的包裹,这个邮递标签有一个特定的标记或颜色。
    • 对于MPLS,当帧携带MPLS标记时,以太网的类型字段会有特定的值,使接收方知道这是一个带有MPLS标记的帧。
  4. 标签的细节

    • 这个邮递标签上有几个重要的字段或部分,如特殊处理要求、优先级和有效期等。
    • MPLS首部有四个字段:标记值、试验、栈S和生存时间TTL。其中,标记值就像一个特定的编号,指明如何处理这个数据报。生存时间TTL像邮递标签上的有效期,确保邮件不会在邮局里不断地被传递,而无法被投递。

 

 多协议标记交换 (MPLS) 总结

**重点:**

1. **标记和标记交换**:MPLS的核心是给数据包打标签并在网络中交换这些标签,以高效地路由数据包。
2. **转发等价类 (FEC)**:相同处理方式的IP数据报的集合。一旦一个数据包被分配到一个FEC,它就被赋予一个标签,此后在MPLS网络中,数据包的路由基于这个标签而非其原始IP头。
3. **性能优化**:MPLS允许流量工程和QoS(服务质量)优化,从而实现更高效和可靠的网络性能。
4. **层次结构**:MPLS操作在第2层(数据链路层)和第3层(网络层)之间,这意味着它可以在多种物理网络上工作。

**难点:**

1. **配置和管理**:由于MPLS提供了高度的灵活性,配置和管理可能会复杂,尤其是在大型网络中。
2. **理解标签堆栈**:在某些情况下,MPLS标签可以堆叠在一起,这需要对MPLS有深入的理解。
3. **流量工程**:虽然MPLS支持流量工程,但要正确和有效地实现它可能需要深入的网络知识和实践经验。

**易错点:**

1. **误解标签操作**:可能会混淆MPLS标签和常规IP路由。重要的是要记住,一旦数据包进入MPLS网络,它是基于其标签而不是IP头进行路由的。
2. **配置错误**:由于MPLS的灵活性,配置错误可能导致数据包路由不当,或网络性能下降。
3. **标签资源管理**:不当地管理和分配MPLS标签可能会浪费网络资源。

通过对MPLS的深入理解和实践,网络工程师可以避免这些常见的误区并充分利用其提供的优势。

相关文章:

4.9 多协议标记交换MPLS

思维导图: 前言: **4.9 多协议标记交换MPLS笔记** 1. **定义与背景**: - MPLS (多协议标记交换) 是一种由 IETF 开发的新协议。 - “多协议”意味着 MPLS 的上层可以使用多种协议。 - 该协议综合了多家公司的技术,如 C…...

【经历】在职8个月->丰富且珍贵

在职8个月->丰富且珍贵 2021-3~2021-11:面试进入一家做400电话的公司,我进入公司时,加上我只有四个人(老板、人事、业务),开发只有我,所以:产品~设计~前端~后端~测试~上线~维护~培训,只有我自…...

使用GH(命令行)在本地提出Github上的issue、PR,合并PR

使用GH(命令行)在本地提出Github上的issue、PR,合并PR 前言 Github上的一些操作使用Git命令是无法完成的,因此正常流程就是在网页端进行。等一下,你让程序员用网页进行?果然,有命令行工具可以…...

@Scheduled定时器

Scheduled定时器 一、基本使用二、参数说明fixedDelayfixedRateinitialDelaycron 三、cron 表达式参数说明实用性的案例 四、Scheduled注意事项五、配置文件1、fixedDelay2、fixedRate3、cron 一、基本使用 Scheduled // 由Spring定义,用于将方法设置为调度任务。…...

Xshell+screen解决ssh连接 服务器掉线的问题

Linux screen命令解决SSH远程服务器训练代码断开连接后运行中断_linux screen ssh-CSDN博客 Linux命令之screen命令_linux screen_恒悦sunsite的博客-CSDN博客 使用教程: 这里粗略介绍一下 (1)xshell xftp(xshell点这个&#…...

coding_v3

面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 数组/字符串 1.LC88【合并两个有序数组】 def solve(nums1, m, nums2, n):p1, p2 m-1, n-1tail m n -1while p1 > 0 or p2 > 0:if p1 -1:nums1[tail] nums2[p2]p2…...

Elasticsearch:什么是余弦相似度?

余弦相似度是数据科学、文本分析和机器学习领域的基本概念。 如果你想知道什么是余弦相似度或者它如何在现实世界的应用程序中使用,那么你来对地方了。 本指南旨在让你深入了解相似性是什么、其数学基础、优点及其在不同领域的各种应用。读完本指南后,你…...

【每日一题Day352】LC1726同积元组 | 哈希表+排列组合

同积元组【LC1726】 给你一个由 不同 正整数组成的数组 nums ,请你返回满足 a * b c * d 的元组 (a, b, c, d) 的数量。其中 a、b、c 和 d 都是 nums 中的元素,且 a ! b ! c ! d 。 思路 求出所有二元组的积及其出现次数,假设某个积出现的次…...

react中在js文件里定义的变量,如何在less文件里去使用该变量

在 React 中,如果在 JS 文件中定义了变量,可以使用 CSS Modules 的方式将变量导出到 LESS 文件中。 以下是示例代码: // index.js import React from react; import styles from ./styles.module.less;const color red;function App() {re…...

TIA博途中通过SCATTER指令实现将字节BYTE拆分成单个位的具体方法示例

TIA博途中通过SCATTER指令实现将字节BYTE拆分成单个位的具体方法示例 例如: 我们想判断某个字节中各个位的状态是1还是0 ,如何实现呢? 这里介绍通过SCATTER指令拆分字节的方法,仅供大家参考。 首先,我们先了解以下SCATTER指令的基本功能和使用方法: 如下图所示,在基本指…...

网络协议--ARP:地址解析协议

4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址。数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的。一个网络如以太网可以同时被不同的网络层使用。例如&#…...

pdf导出实例(itestpdf)

依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency>工具类 package or…...

关于CW32单片机pack包安装 KEIL IAR

CW32 系列微控制器软件开发工具入门 芯片包 1. 下载芯片包 官方下载链接&#xff1a;武汉鑫源半导体 2. 安装芯片包 双击芯片包.pack文件 支持 CW32F 系列的 IDE 支持 CW32F 系列的工具链&#xff1a; • • EWARM v7.70 或更高版本 MDK-ARM v5.17 或更高版本 2.1 EW…...

memcpy内存拷贝函数

目录 一、memcpy内存拷贝函数 注意事项 二、memcpy与strcpy对比 三、模拟实现memcpy函数 四、memcpy函数不能进行两块存在内存重叠的空间的内存拷贝 五、改进my_memcpy函数 一、memcpy内存拷贝函数 头文件&#xff1a;string.h 函数原型&#xff1a;void* memcpy(void* …...

数组模拟堆

文章目录 QuestionIdeasCode Question 维护一个集合&#xff0c;初始时集合为空&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个数 x &#xff1b; PM&#xff0c;输出当前集合中的最小值&#xff1b; DM&#xff0c;删除当前集合中的最小值&#xff08;数…...

【深度学习基础知识(一):卷积神经网络CNN基础知识】

深度学习基础知识 深度学习基础知识&#xff08;一&#xff09;&#xff1a;卷积神经网络CNN基础知识 卷积神经网络CNN基础知识 0、目录 1. CNN卷积神经网络的特点 2. 卷积操作基础知识 2.1 卷积操作的概念2.2 卷积操作的种类2.3 卷积操作后特征图谱大小计算公式 3. 池化操…...

Git使用入门

一、Git简介 Git 是一个开源的分布式版本控制系统。 Git版本控制的功能为保存不同版本的代码&#xff0c;保存代码的地方叫做仓库。 每个仓库中有多个分支&#xff0c;每个分支上又有很多节点&#xff0c;每个节点代表一个版本&#xff0c;不同的分支可以进行合并&#xff0…...

电机矢量控制算法和例程

电机矢量控制算法是一种高级的电机控制方法&#xff0c;它通过将电机转子空间矢量转换到旋转坐标系中&#xff0c;并在该坐标系中进行控制来实现对电机的精确控制。下面是对电机矢量控制算法的详细解释&#xff1a; 坐标系变换&#xff1a;电机矢量控制首先将电机转子空间矢量变…...

std::string_view概念原理及应用

概念 使用const string&作为参数是先使用字符串字面量编译器会创建一个临时字符串对象然后创建std::string。 或者一个函数提供char*和const string&参数的两个版本函数&#xff0c;不是优雅的解决方案。 于是需要一个只使用内存不维护内存的类。 原理 在visual s…...

lodash库_.chunk、_.pick、_.omit、_.cloneDeep、_.debounce方法

lodash 模块化、高性能的 JavaScript 实用工具库。官方文档&#xff1a;https://www.lodashjs.com 1.对数组进行分组 _.chunk(array, [size1]) 使用场景&#xff0c;如移动端页面一行能放5个元素&#xff0c;总共7条数据&#xff0c;将一维数组转为二维数组&#xff0c;让一个…...

Linux 0.11 源码探秘:为什么现代Linux抛弃了TSS进程切换?

Linux进程切换机制演进&#xff1a;从TSS到现代堆栈设计的深度解析 引言&#xff1a;一段被遗忘的内核设计史 1991年诞生的Linux 0.11版本采用了一种如今看来颇为"古典"的进程切换方式——基于TSS&#xff08;Task State Segment&#xff09;的硬件辅助切换。这种设计…...

MyBatis SQL日志打印不出来?手把手教你排查Log4j2配置文件路径与优先级问题

MyBatis SQL日志打印失效&#xff1f;全方位排查Log4j2配置疑难杂症 刚接手一个遗留项目&#xff0c;明明在pom.xml里引入了log4j2依赖&#xff0c;MyBatis的SQL日志却像人间蒸发了一样。这场景是不是很熟悉&#xff1f;别急着怀疑人生&#xff0c;今天我们就用"刑侦思维&…...

ComfyUI-Impact-Pack终极指南:掌握AI图像精细化处理的5大核心技巧

ComfyUI-Impact-Pack终极指南&#xff1a;掌握AI图像精细化处理的5大核心技巧 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址…...

告别旧版Ubuntu!在Ubuntu 24.04 LTS上为i.MX6ULL开发板编译U-Boot 2022.04(含设备树)

在Ubuntu 24.04 LTS上为i.MX6ULL开发板构建U-Boot 2022.04全流程指南 当现代开发环境遇上经典嵌入式硬件&#xff0c;总会碰撞出意想不到的火花。最近在为一款基于NXP i.MX6ULL处理器的工业控制设备升级固件时&#xff0c;我遇到了一个典型困境&#xff1a;客户要求使用最新的U…...

告别黑框!手把手教你用UEFI HII给固件写个图形化配置界面(附完整代码)

从命令行到图形化&#xff1a;UEFI HII实战开发指南 在固件开发领域&#xff0c;命令行界面&#xff08;CLI&#xff09;长期以来是配置系统参数的主要方式。但随着用户对友好交互体验的需求增长&#xff0c;图形化配置界面已成为现代固件的标配。UEFI Human Interface Infrast…...

从修改《植物大战僵尸》存档到理解内存修改原理:我的逆向工程入门第一课

从《植物大战僵尸》存档修改到计算机内存探秘&#xff1a;逆向工程的第一块敲门砖 记得第一次打开《植物大战僵尸》的存档文件时&#xff0c;那些密密麻麻的十六进制代码像天书一样令人困惑。但就在那个下午&#xff0c;当我成功将游戏金币修改成五位数时&#xff0c;突然理解了…...

别再只画线了!PCB布局布线中这些细节才是决定板子好坏的关键

PCB设计进阶&#xff1a;从功能实现到工艺美学的关键细节 在电子设计领域&#xff0c;PCB布局布线早已超越了简单的电气连接功能。当工程师们讨论一块优秀电路板的标准时&#xff0c;常常会提到三个维度&#xff1a;电气性能的可靠性、生产制造的便利性&#xff0c;以及令人愉悦…...

RS485通信冲突?手把手教你用C语言实现一个简单的“软件仲裁”驱动库

RS485通信冲突的软件仲裁解决方案&#xff1a;从原理到C语言实现 在工业自动化、智能楼宇等场景中&#xff0c;RS485总线因其抗干扰能力强、传输距离远等优势被广泛应用。但当多个设备同时尝试发送数据时&#xff0c;总线冲突问题便成为工程师们头疼的难题。与CAN总线不同&…...

反序列化漏洞详解(第一期):从基础认知到原理拆解

反序列化漏洞详解&#xff08;第一期&#xff09;&#xff1a;从基础认知到原理拆解 摘要&#xff1a;反序列化漏洞是Web安全领域中危害极高、隐蔽性极强的漏洞类型之一&#xff0c;也是渗透测试、安全运维中的核心重点&#xff0c;log4j2、fastjson等知名应用的漏洞中都不乏它…...

STM32F4+FreeRTOS以太网实战:DP83848驱动配置避坑指南(附完整代码)

STM32F4FreeRTOS以太网实战&#xff1a;DP83848驱动配置避坑指南&#xff08;附完整代码&#xff09; 在工业物联网设备开发中&#xff0c;稳定可靠的以太网通信往往是核心需求之一。STM32F4系列凭借其出色的性能和丰富的外设资源&#xff0c;成为许多开发者的首选平台。而DP8…...