多协议标签交换(MPLS)

目录

1.MPLS的工作原理

2.转发等价类(FEC)

3.MPLS首部的位置与格式

4.新一代MPLS


1.MPLS的工作原理

在传统的IP 网络中,分组每到达一个路由器,都必须查找转发表,并按照“最长前缀匹配”的原则找到下一跳的 IP 地址(请注意,前缀的长度是不确定的)。当网络很大时,查找含有大量项目的转发表要花费很多的时间。在出现突发性的通信量时,往往还会使缓存溢出,这就会引起分组丢失、传输时延增大和服务质量下降。

MPLS的一个重要特点就是在 MPLS 域的入口处,给每一个 IP 数据报打上固定长度“标签”,然后对打上标签的 IP数据报用硬件进行转发,这就使得 IP 数据报转发的过程大地加快了“。采用硬件技术对打上标签的 IP 数据报进行转发就称为标签交换。“交换”也表示在转发时不再上升到第三层查找转发表,而是根据标签在第二层(链路层)用硬件进行转发。MPLS可使用多种链路层协议,如 PPP、以太网、ATM 以及中继等。如图是MPLS协议的基本原理的示意图。

MPLS域(MPLS domain)是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持MPLS技术的标签交换路由器LSR(Label Switching Router)。LSR同时具有标签交换和路由选择这两种功能,标签交换功能是为了快速转发,但在这之前 LSR 需要使用路由选择功能构造转发表。

(1) MPLS域中的各LSR使用专门的标签分配协议LDP(Label Distribution Protocol)交换报文,并找出和特定标签相对应的路径,即标签交换路径LSP(Label Switched Path)。例如在图中的路径A一B一C一D。各 LSR 根据这些路径构造出转发表。这个过程和路由器构造自己的路由表相似。同时应注意的是,MPLS是面向连接的,因为在标签交换路径LSP 上的第一个 LSR 就根据 IP 数据报的初始标签确定了整个的标签交换路径,就像一条虚连接一样。

(2) 当一个IP数据报进入到MPLS 域时,MPLS入口节点(ingress node)就给它打上标签(这实际上是插入一个 MPLS 首部),并按照转发表把它转发给下一个LSR。以后的所有 LSR都按照标签进行转发。
给IP数据报打标签的过程叫作分类。严格的第三层(网络层)分类只使用了IP首部中的字段,如源IP 地址和目的P 地址等。大多数运营商实现了第四层(运输层)分类(除了要检查IP首部外,运输层还要检查TCP或UDP首部中的协议端口号),而有些运营商则实现了第五层(应用层)分类(更进一步地检查数据报的内部并考虑其有效载荷)。

(3) 由于在全网内统一分配全局标签数值是非常困难的,因此一个标签仅仅在两个标签交换路由器 LSR之间才有意义。分组每经过一个LSR,LSR 就要做两件事:一是转发,二是更换新的标签,即把入标签更换成为出标签。这就叫作标签对换(label swapping)”。做这两件事所需的数据都已清楚地写在转发表中。例如,图中的标签交换路由器B从入接口0收到一个入标签为3的IP 数据报,查找了如下的转发表:

标签交换路由器B就知道应当把该IP 数据报从出接口1转发出去,同时把标签对换为1,当IP 数据报进入下一个 LSR 时,这时的入标签就是刚才得到的出标签。因此,标签交换路由器C接着在转发该IP数据报时,又把入标签1对换为出标签2。

(4) 当IP数据报离开MPLS 域时,MPLS出口节点(egress node)就把 MPLS的标签去除,把IP数据报交付非MPLS的主机或路由器,以后就按照普通的转发方法进行转发。

MPLS 的路由选择和互联网中通常使用的“每一个路由器逐路进行路由选择”有着很大的区别。MPLS使用的是显式路由选择(explicit routing),其特点县“由入口LSR确定进入MPLS域以后的转发路径”。

2.转发等价类(FEC)

“转发等价类”就是路由器按照同样方式对待的 IP 数据报的集合。这里“按照同样方式对待”表示从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。

FEC的例子是:
(I)目的IP 地址与某一个特定 IP 地址的前缀匹配的 IP 数据报(这就相当于普通的IP路由器):
(2)所有源地址与目的地址都相同的IP 数据报;
(3)具有某种服务质量需求的IP数据报。
总之,划分 FEC 的方法不受什么限制,这都由网络管理员来控制,因此非常灵活。入口节点并不是给每一个 IP数据报指派一个不同的标签,而是将属于同样 FEC的 IP 数据报都指派同样的标签。FEC 和标签是一一对应的关系。
如图给出一个把FEC用于负载均衡的例子。其中的主机H1和H2分别向H3和H4发送大量数据。路由器A和C是数据传输必须经过的。但传统的路由选择协议只能选择最短路径A—B—C,这就可能导致这段最短路径过载。

 下面的图表示在MPLS的情况下,入口节点A可设置两种FEC:“源地址为H1而目的地址为H3”和“源地址为H2而目的地址为H4”把前一种FEC 的路径设置为H1-->A-->B---C-->H3;,而后一种的路径设置为 H2-->A-->D-->E-->C-->H4。这样可使网络的负载较为均衡。网络管理员采用自定义的 FEC 就可以更好地管理网络的资源。这种均衡网络负载的做法也称为流量工程TE(Traffic Engineering) 或通信量工程。

3.MPLS首部的位置与格式

MPLS并不要求下层的网络都使用面向连接的技术。因此一对 MPLS路由器之间的物连接,既可以由一个专用电路组成,如 OC-48 线路,也可以使用像以太网这样的网络。但这些网络并不提供打标签的手段,而 IPv4 数据报首部也没有多余的位置存放MPLS标签,这就需要使用一种封装技术:在把 IP 数据报封装成以太网之前,先要插入一个 MPLS首部。从层次的角度看,MPLS 首部就处在第二层和第三层之间。

在把MPLS首部的 IP 数据报封装成以太网帧时,以太网的类型字段在单播的情况下设置为8847_{16}(下标 16 表示这是十六进制的数字),而在多播的情况下为8848_{16}。这样,接收方可以用帧的类型来判决这个帧是携带了 MPLS 标签还是一个常规的IP 数据报。

图中给出了MPLS首部的格式。可见“给IP数据报打上标签”其实就是在以太网的帧首部和IP数据报的首部之间插入一个4 字节的 MPLS首部。具体的标签就在“标签值”这个字段中。

MPLS首部共包括以下四个字段:
(1)标签值 占20位。由于一个 MPLS 标签占 20 位,因此从理论上讲,在设置MPLS时可以使用标签的所有 20位,因而可以同时容纳高达2^{20}个流(即1048576个流)但是,实际上几乎没有哪个 MPLS 实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。

(2)试验        占3位,目前保留用于试验。

(3)S        占1位,S(Stack)表示栈,在有“标签栈”时使用。

(4)生存时间TTL        占8位,用来防止MPLS 分组在MPLS 域中兜圈子。

4.新一代MPLS

MPLS问世后就在互联网中得到了大量的部署。虽然MPLS能够更快地转发分组,但其有关的控制协议 (如 LDP)却比较复杂,其扩展性差,运行维护也较困难。协议 LDP 也无法做到基于时延或带宽等要求的流量调度。为了根据需要灵活地选择流量的转发路径,就还需要再使用资源预留协议 RSVP。但RSVP的信令非常复杂,每个节点都要维护一个庞大的链路信息数据库。此外,RSVP 不支持等价多路径路由选择 ECMP(Equal-Cost Multipath Routing),而只会选择一条最优路径进行转发。对于RSVP可以看:

http://t.csdnimg.cn/xkChx

为了解决上述问题,一种保留了 MPLS 的主要特点,但更加简单的新的源路由选择协议出现了。这就是段路由选择协议(Segment Routing),简称为 SR。但不少人都使用“段由协议”这样更加简单的名称。在 SR 中,“段(segment)”就是标签,也就是转发指令的一种标识符。SR的工作原理仍然是基于标签交换的,不过现在不需要使用协议 LDP,因此简化了设备运行的协议数量。SR 由源节点为发送的报文指定路径,并将路径转换成有序的列表(Segment List),即 MPLS 标签栈,它被封装在分组首部。网络中的其他节点就执行首部中的指令(即标签) 进行转发。
整个网络设有控制器,也就是 SDN 控制器。控制器收集并掌握全网的括扑信息和链路状态信息,计算出分组应传送的整个路径。控制器负责给分组分配 SR 标签,这些标签指明了分组从源点到终点的路径。当分组到达某个网络节点时,节点就根据分组演带的标签转发到下一个节点。

对于SDN可以看看:

http://t.csdnimg.cn/fU3xs

现在SR还向IPv6演进,这就是SRv6。它直接利用IPv6字段作为标签寻址。而前面介绍的在MPLS基础上的SR则称为SR-MPLS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/278797.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【无标题】《巴黎图书馆》,又发现一本书

我喜愛看的书(https://img-blog.csdnimg.cn/8cd84d33e6724f09a46831f75abe6464.jpg)在这里插入图片描述

【机器学习前置知识】Beta分布

Beta分布与二项分布的关系 Beta分布与二项分布密切相关,由二项分布扩展而来,它是用来描述一个连续型随机变量出现的概率的概率密度分布,表示为 X X X~ B e t a ( a , b ) Beta(a,b) Beta(a,b) , a 、 b a、b a、b 是形状参数。Beta分布本质上也是一个概率密度函数,只是这…

根据文法求对应的语言

技巧:最后得到的是终结符组成的闭包 例题: 文法G[S]: S-->AB A-->aAb|ab B-->Bc|,求对应的语言 ①S-->(aAb|ab)(Bc|) ②我们可以观察到,无论A-->aAb还是A-->ab,都一定会同时出现ab,…

Windows上ModbusTCP模拟Master与Slave工具的使用

场景 Modbus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用: Modebus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用_modbus poll激活-CSDN博客 数据对接协议为Modbus TCP,本地开发需要使…

java接口自动化系列(12):集成allure报告

本系列汇总&#xff0c;请查看这里&#xff1a;https://www.cnblogs.com/uncleyong/p/15867903.html pom添加依赖、属性、插件 依赖 <!-- https://mvnrepository.com/artifact/io.qameta.allure/allure-testng --><dependency><groupId>io.qameta.allure&l…

城市分站优化系统源码:提升百度关键排名 附带完整的搭建教程

城市分站优化已成为企业网络营销的重要手段&#xff0c;今天来给大家分享一款城市分站优化系统源码。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.多城市分站管理&#xff1a;该系统支持多个城市分站的管理&#xff0c;用户可以根据业务需求&#xff0c;…

nrm的保姆级使用教程

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

第3课 获取并播放音频流

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具&#xff0c;其源码有太多值得研究的地方。但对于大多数初学者而言&#xff0c;如何快速利用相关的API写出自己想要的东西才是迫切需要…

轮廓检测与处理

轮廓检测 先将图像转换成二值 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图 ret, thresh cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 变为二值&#xff0c;大于127置为255&#xff0c;小于100置为0.使用cv2.findContours(thresh, cv2.RETR_TREE, cv2.…

一些深度学习训练过程可视化以及绘图工具

常见的可视化方法 深度学习训练过程的可视化是一个重要的环节&#xff0c;它可以帮助研究人员和工程师更好地理解和调整他们的模型。常见的可视化方法包括&#xff1a; 损失和准确率曲线&#xff1a; 这是最常见的可视化类型&#xff0c;通常在训练过程中绘制损失函数和准确率…

基于JAVA+SSM+VUE的前后端分离的大学竞赛管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着互联网技术的快速…

malloc、calloc、realloc、free函数的使用及注意事项

malloc函数 malloc函数的返回值为void*类型 内存管理函数操作的内存是在堆区空间 malloc函数使用示例 free(p)相当于值传递&#xff0c;不能改变p本身。 free只是释放了空间&#xff0c;释放后p依然指向原地址&#xff0c;故需要手动置NULL。 calloc函数 calloc可以指定开辟n个…

uniapp路由

1、路由登记 uni-app页面路由为框架统一管理&#xff0c;开发者需要在pages.json里配置每个路由页面的路径及页面样式。 类似小程序在 app.json 中配置页面路由一样。 所以 uni-app 的路由用法与 Vue Router 不同&#xff0c;如仍希望采用 Vue Router 方式管理路由&#xff0c;…

CodeWhisperer:编码世界中的声音启迪者

人烟 导语&#xff1a; 在数字化时代&#xff0c;编码已经成为了一种不可或缺的技能。而 CodeWhisperer&#xff08;编码世界中的声音启迪者&#xff09;则以其卓越的技术和深厚的知识为人们带来了独特的启发和指导。本文将介绍 CodeWhisperer 的背景和成就&#xff0c;探讨他是…

力扣算法-Day15

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以…

【软件工程】走近演化过程模型:软件开发的不断进化之路

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 演化过程模型&#xff08;Evolutionary Model&#xff09; 介绍&#xff1a; 解释&#xff1a; 优缺点&#x…

UE4开发BIM程序 的 流程

某机构BIM设计研究中心主任马晓龙&#xff0c;他对编程颇有研究。今天他会用通俗易懂的语言来讲解基于游戏引擎UE4的BIM技术可视化应用。对于想要自己开发程序的设计师一定要读一下&#xff01; 1&#xff09;关于UE4——UE4是什么&#xff1f; 可以简单的理解为&#xff0c;一…

raid 学习

一、服务器硬件 cpu 、 主板 、内存、硬盘、网卡、电源、raid卡、风扇、远程管理卡 二、硬盘尺寸 目前生产环境中主流的两种类型硬盘 3.5寸 和 2.5寸 硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器&#xff0c;但是3.5寸没法转换成2.5寸 1.如何在服务器上…

【Unity入门】热更新框架之xLua

目录 一、xLua概述1.1xLua简介1.2xLua安装 二、Lua文件加载2.1执行字符串2.2加载Lua文件2.3自定义loader 三、xLua文件配置3.1打标签3.2静态列表3.3动态列表 四、Lua与C#交互4.1 C#访问Lua4.1.1 获取一个全局基本数据类型4.1.2 访问一个全局的table4.1.3 访问一个全局的functio…

天擎终端安全管理系统clientinfobymid存在SQL注入漏洞

产品简介 奇安信天擎终端安全管理系统是面向政企单位推出的一体化终端安全产品解决方案。该产品集防病毒、终端安全管控、终端准入、终端审计、外设管控、EDR等功能于一体&#xff0c;兼容不同操作系统和计算平台&#xff0c;帮助客户实现平台一体化、功能一体化、数据一体化的…