当前位置: 首页 > 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;让一个…...

GLPI安装总报错?这份CentOS 7下的“保姆级”排错指南请收好(附PHP模块、文件权限详解)

GLPI安装总报错&#xff1f;这份CentOS 7下的“保姆级”排错指南请收好&#xff08;附PHP模块、文件权限详解&#xff09; 在CentOS 7上部署GLPI时&#xff0c;即使按照教程一步步操作&#xff0c;也常常会遇到各种"坑"。本文将带你深入排查这些常见问题&#xff0c;…...

告别静态桌面!用LVGL给ESP32小屏幕玩出花:动态天气图标+可切换表盘实战

告别静态桌面&#xff01;用LVGL给ESP32小屏幕玩出花&#xff1a;动态天气图标可切换表盘实战 在嵌入式开发领域&#xff0c;ESP32凭借其出色的性能和丰富的功能&#xff0c;已成为物联网项目的首选平台之一。而当我们为这些项目添加用户界面时&#xff0c;LVGL&#xff08;Lig…...

5分钟掌握QtScrcpy:安卓设备键鼠映射与屏幕控制的终极解决方案

5分钟掌握QtScrcpy&#xff1a;安卓设备键鼠映射与屏幕控制的终极解决方案 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 你是否想在电脑上流畅操作安卓设备&#xff1f;QtScrcpy作…...

3分钟掌握ContextMenuManager多语言设置:打造个性化右键菜单体验

3分钟掌握ContextMenuManager多语言设置&#xff1a;打造个性化右键菜单体验 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager ContextMenuManager是一款功能强大的…...

Real Anime Z参数详解:为何禁用高步数?Turbo模型收敛机制解析

Real Anime Z参数详解&#xff1a;为何禁用高步数&#xff1f;Turbo模型收敛机制解析 1. Real Anime Z工具概述 Real Anime Z是一款基于阿里云通义Z-Image底座模型开发的高精度二次元图像生成工具。该工具通过Real Anime Z专属微调权重进行优化&#xff0c;专门针对真实系二次…...

独家逆向分析.NET 11 RC2 JIT增强日志:AI算子融合(Op Fusion)如何让ResNet-50推理吞吐提升5.2×?(附JITDump深度解读PDF)

第一章&#xff1a;.NET 11 RC2 JIT引擎在AI推理场景下的范式跃迁.NET 11 RC2 引入了重写后的 RyuJIT 后端&#xff0c;其核心增强聚焦于动态向量化、延迟绑定的硬件加速指令调度&#xff0c;以及针对张量计算密集型工作负载的即时编译策略重构。在 AI 推理场景中&#xff0c;这…...

别再手动改代码格式了!用IntelliJ IDEA的CheckStyle插件,5分钟搞定团队代码规范

告别代码风格混乱&#xff1a;IntelliJ IDEA CheckStyle插件实战指南 当团队协作开发时&#xff0c;代码风格不一致往往成为效率杀手。想象一下&#xff1a;每次代码评审都要花半小时讨论缩进和命名规范&#xff0c;合并分支时因为格式问题产生大量冲突&#xff0c;接手老项目时…...

别再轮询了!STM32CubeIDE实战:用DMA+ADC中断模式高效采集多路传感器数据(附避坑指南)

STM32CubeIDE高效数据采集实战&#xff1a;DMAADC中断模式深度解析与性能优化 在工业自动化和物联网设备开发中&#xff0c;多通道传感器数据采集是核心需求之一。传统轮询方式在实时性和系统效率方面存在明显瓶颈&#xff0c;而DMA结合ADC中断的模式能够显著提升性能。本文将深…...

静态IPvs动态IP代理:区别解析与多场景选型指南

随着平台风控机制不断升级&#xff0c;IP 地址已成为识别账号关联和异常行为的重要依据。无论是跨境电商、多账号运营、数据采集还是 AI 自动化任务&#xff0c;频繁更换或共享 IP 都可能触发平台检测&#xff0c;影响账号稳定性与安全性。因此&#xff0c;代理 IP 正逐渐成为多…...

从AHT20数据手册到串口显示:一步步拆解STM32 I2C读取温湿度的底层逻辑与数据转换

从AHT20数据手册到串口显示&#xff1a;一步步拆解STM32 I2C读取温湿度的底层逻辑与数据转换 在嵌入式开发中&#xff0c;能够"跑通"代码只是第一步&#xff0c;真正理解每个字节背后的物理意义才是进阶的关键。本文将带您深入AHT20温湿度传感器的数据手册&#xff0…...