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

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 摘要 我们提出了STARFlow&#xff0c;一种基于归一化流的可扩展生成模型&#xff0c;它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流&#xff08;TARFlow&am…...