MPLS协议介绍

news2024/11/18 9:28:27

MPLS介绍

1.MPLS协议概述

MPLS根据自己的标签交换,需要给数据包先写上自己的标签,然后设备才能查看标签之后就转发,此标签是需要在原有的数据包的基础上加进去的,并没有将以前的包头删除,MPLS的标签加在了第二层帧的帧头之后,但又在第三层数据包的包头之前,而MPLS不管是什么协议的数据包,不管以前的包头是什么,都能够在包中加入对自己有利的标签,所以称MPLS交换为多协议标签交换.

2.MPLS的优势

  • 1.因为IP在路由当中,总是根据目的地址在路由表中查找目标网段,并且逐条匹配最优路径,速度慢。
  • 2.MPLS只根据数据包顶部标签来查找并转发,速度快。

由于现在设备采用ASIC(专用集成电路)交换,所以速度并不慢,而MPLS借签了帧中继交换方式,在数据包每经过一台设备时,都要重新封装,所以MPLS在速度上,并不是优势。 但MPLS可以给数据包加上标签,以做流量控制,这是优势。MPLS还可以承载各种协议,如IPv4,IPv6, 以太网,HDLC,PPP,以及其它第二层帧。

3.MPLS标签

一个标签由32个bit组成前20为标签值,范围从0到2的20次方减一,即1048575。 其中前16bit不能随便定义,有特定含义,从21到23bit共3位试验用(EXP),用于QOS;第24比特是栈底Bos位,值为0,如果是栈底,就为1,标签栈中,标签数量没有限制;从25到32共8个bit是TTL.

 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|-------------1-20(label)---------------|-exp-|B|-----TTL-------|

4.MPLS标签栈

MPLS路由器对数据包可能添加一个标签,也可能添加多个标签,这些标签集合起来叫做标签栈,第一个为顶部标签,最后一个为底部标签,中间数量可以无限,底部标签BOS总是1,否则就是0。而在数据包传输过程中,设备只根据第一个顶部标签来决定怎么转发。

5.MPLS设备类型

mpls_lsr_type.png
mpls_lsp_type

  • 入站LSR:接收没有标签的数据包,打上标签并发出
  • 出站LSR:接收带有标签的数据包,移除标签,并发出,出站和入站LSR都是边缘LSR,所以它们同时连接了IP网络和MPLS网络。
  • 链路中LSR:接收到带标签的数据包,对其进行操作,然后按正确的接口交换出去,所以链路中的LSR只进行标签转发。

6.LSR操作过程

  • 提取,即从标签栈的顶部移除一个或多个标签,移除全部标签是出站LSR必须做的。
  • 添加,向报文添加标签,如果没有标签,就加新的,入站LSR必须做的。
  • 交换,收到一个有标签的报文,用新的标签交换到顶部,再发出,是链路中的LSR做的。

7.标签交换路径LSP

LSP指的就是一个源到最终目的需要经过的路径,而在路径中,是要被修改多次标签。。LSP是LSR在MPLS网络中转发标签数据后的产生的,是标签报文穿越MPLS网络的路径。

8.转发等价类(FEC)

FEC可以认为是同一条路由,或者说是到达目标主机的路径是相同的,或者说是相同转发路径的数据流。同一个FEC,所有标签都相同,并不是拥有相同标签的报文都是同一个FEC,可能EXP值不同。报文属于哪个FEC,由入站LSR决定。

9.MPLS标签交换过程

mpls_lsp.png
mpls_lsp

10.标签分发协议

  • 标签分发协议(LDP) LDP是IETF开发,功能广泛
  • 资源预留协议(RSVP)RSVP只用在MPLS TE中

IOS中,LDP不会为BGP的IPv4前缀捆绑标签。标签的选择都是根据IGP最优路径。 标签也可以不是LDP分发,比如TE中,由RSVP分发,在MPLS VPN中,由BGP分发。

11.标签分发模式

  • 1.标签分发模式
    是用来定义标签该什么时候发给邻居,分为两种方式:
    (1)下游被动DOD模式:是LSR请求下游(路由表的下一跳)为某条路由分发标签。
    (2)下游主动UD模式:标签是邻居会主动发过来的。

在DOD中,LSR会向路由条目的下一跳请求标签,所以LIB只显示一个远程标签。在UD中,因为可能有多个邻居发送标签过来,所以一条路由可以看到多个标签。

  • 2.标签保持模式
    用来定义LSR在将标签保存时,该保存多久,分两种方式:
    (1)自由的标签保持模式(LLR):LSR将所有的标签存放在LIB中,然后使用的放到LFIB中,不使用的也保存在LIB中,当路由变化时,马上从LIB中找到新的。
    (2)保守的标签保持模式(CLR):LSR将用到的标签放入LFIB之后,不会在LIB中保存任何标签。
  • 3.LSP控制模式
    定义LSR什么时候应该为一条路由创建标签,创建出的这个标签就是自己的本地标签,发给邻居之后,邻居就称其为远程标签。分两种创建方式:
    (1)独立于LSP的控制模式:LSR可以独立于其它LSR创建本地标签,称为独立模式,路由器在路由表中发现一个路由,就马上为该路由创建一个标签。
    (2)非独立于LSP的控制模式:LSR只有意识到它是某FEC的出站LSR时,或者从下一跳收到某路由的标签时,才会为路由条目创建本地标签,然后发给邻居作为远程标签,邻居收到后,然后又会再创建了发给它的邻居。

12.MPLS负载均衡

在IPv4存在多条相同metric出口时,标签的出站也会对应多个接口,出站的标签可以是相同的,也可以不同的;如果下一跳是同台设备,肯定相同,是不同设备会不同,也就独立分配。 当LSR中某条路由有多个下一跳,如果是有标签的和无标签的,无标签的不走,是考虑到MPLS VPN中数据会丢包,因为在MPLS VPN网络中,P路由器是没有两边私有网络的IP路由的,所以无法路由,最终造成丢包。

13.MPLS未知标签

IOS是默认采用丢弃行为,如果找不到标签也传,也不能保证别人能传不丢弃,所以就自己开始丢弃。

14.MPLS保留标签

范围是0-15,有特殊作用,0是显式空(null),3是隐式空,1是路由器报警标签,14是OAM报警,其它还没定义。

14.1 隐式空3标签

边缘路由器PE是同时连接了MPLS网络和IP网络,因此,一个数据包在MPLS网络中传输到PE路由器的时候,PE路由器的工作是:结束标签交换过程,从而转入IP网络。PE路由器第一步开始根据数据包的标签去查找LFIB表,通过查找LFIB之后发现已经不再是标签交换了,第二步就马上转入查IP路由表,最终在IP路由表里查到了结果,从IP网络中发出去。PE路由器既然最后不可能使用标签交换,而要使用IP交换的,又何必去查了LFIB表才知道结果呢。正常情况下,PE路由器是告诉上一跳正常的标签,上一跳将这个标签变成远程标签,但现在,PE路由器就不应该告诉上一跳正常的标签,它告诉的是隐式空(标签号为3)标签,所以收到标签为3的LSR,就不会在数据包发给下一跳时打上标签。
这种终点使用隐式空标签来告诉上一跳不要打标签的行为叫倒数第二跳移除(PHP)行为,所以一台收到隐式空标签的LSR,相应出口就不再是一个远程标签,而应该在outgoing显示为pop。这种上一跳标签移除称为标签弹出。

14.2 显示空标签

显示空的功能是在隐式空的基础上的,IPv4标签号为0,IPv6为2。

因为标签中EXP用于QOS,前一跳移除后,这些信息也没了,可能希望保留,所以是上一跳将标签变为0,来告诉终点不用为0查找LFIB,只看EXP,所以只关心QOS效果,这样也省事。 路由器报警标签1,只是需要特别注意,并且软件转发。

15.MPLS TTL行为

在数据包从IP网络进入MPLS网络时,IP刚进来,以前的TTL是多少,PE减1后,写到标签的TTL位,在出MPLS网络时,PE再看标签中的TTL是多少,肯定比IP原来的TTL值小,减1后写回去,如果TTL值比IP原来的TTL值还大,就不正常,就不写了。
标签到标签,添加和交换等操作,也是减1后再复制,中间P路由器只修改顶部标签中的TTL,顶部以下的标签是不动的。

如果遇见一个数据包TTL值为0,普通的MPLS网络就是沿原来的LSP回去,只有是IPv4和IPv6才会,其它的丢弃。 MPLS VPN中TTL没有后,是由终点PE或CE发回的,因为P没有源主机的路由,所以无法发送超时ICMP。

16.MPLS MTU

正常情况下MTU就是第三层数据和包头的最大尺寸,这时无需分段就能传输。但是MPLS的标签是在二层帧头之后的,所以二层帧头将标签的大小和三层包的内容累加到一起作为数据封装的,如果加上MPLS头之后超过了接口MTU,MPLS的标签数据是会被分段后传输的,如果不想被分段,就得更新MTU的大小。

一般MPLS数据包加最多两个标签,一个标签4字节,所以只要改成比正常MTU多8字节即可。

17.MPLS最大接收单元(MRU)

MPLS默认超过MTU的数据包是和IP数据包一样要分段传输的,分段就是LSR移除标签,对IP数据分好相应大小后,再将原来的标签加到每个包,如果IP包头设置了不分段(DF),LSR就丢掉报文,然后返回一个需要分段的ICMP(不分段位设置为类型3,代码4),然后沿来的LSP发回去。

18.MTU路径发现

查看从源到目的的最小MTU,就是类似窗口的机制,数据包试着发出去,如果被丢了,就减小后再发,如果再丢就再减再发,直到能正常发到目的地为止。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据仓库规范建设指南

数据仓库规范建设指南 1.数仓公共开发规范 1.1 层次调用规范 稳定业务按照标准的数据流向进行开发,即ODS-> DWD-> DWS-> APP。 非稳定业务或探索性需求,可以遵循ODS-> DWD->APP或者ODS-> DWD-> DWM-> APP 两个模型数据流。 …

国际物流概述:国际物流的流程是什么?

国际运输有很多参与者:航运公司、预订代理、国际货运代理和报关行;本文主要介绍托运人、收货人、国际货运代理和航运公司这四大LCL运输的参与者。从托运人到收货人的货物运输有五个物理流程和两个单证流程,每次装运都需要进行。每个流程都有相关的费用,必…

windows系统安装opencv2.4.12及bug解决

目录前言一、opencv2.4.12安装二、BUG修复1、问题解决:找不到MSVCR100.dll,无法继续执行代码2、问题解决:无法定位程序输入点******于动态链接库opencv_highgui2412.lib上前言 最近在学习CUDA,对照cuda by example一书的例子对照实验&#x…

深入理解Linux网络技术内幕(一)——基础介绍

文章目录前言简介基础术语常见的编码模式内存缓存缓存和hash表引用计数垃圾收集函数指针和虚拟函数表(VFT)goto语句向量(数组)定义条件指示指令(#ifdef及其系列指令)条件检查的编译期间最优化互斥主机和网络之间的字节次序转换捕获…

C#学习记录——软件工程师必备素养与技能

『聪明是一种天赋,而善良是一种选择。』—— 网络 1、软件工程师的基本素养 2、个人素质必修课程 3、项目开发流程 具备了良好的个人素质和基础的编程知识,作为一名优秀的开发人员,还应熟悉一个软件项目怎么开展工作,这就是项目…

木字楠后台管理系统开发(1):SpringBoot项目初始化并引入基础文件

🎶 文章简介:木字楠后台管理系统(1):SpringBoot项目初始化并引入基础文件 💡 创作目的:为了带大家完整的体验木字楠后台管理系统模版的开发流程 ☀️ 今日天气:天气☁️很好。太阳晒在身上暖暖的 &#x1f…

ChatGPT到底是个啥?它会让我们失业么?

谈起AI届,几家大公司是无论如何都不能不提及的,谷歌的GoogleX与DeepMind (下围棋那个)、Meta的FAIR (Resnet提出者恺明所就职的)、OpenAI (搞大模型的领先公司,代表作是GPT,对标谷歌的Bert)、亚马逊 (中国AI研究生的实际导师李沐大…

正厚干货 软件测试用例设计方法之一_等价类划分

今天开始我们学习关于软件测试用例的设计方法。其中较为常用的是等价类划分发,那么我们就从等价类划分开始吧。一、等价类划分的介绍1.定义 把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一…

数据处理技巧(9):MATLAB将多个矩阵放在同一行显示,并写入txt文件

MATLAB将多个矩阵放在同一行显示,并写入txt文件生成效果要打印的矩阵代码思路记录程序运行时间写入文档MATLAB程序生成效果相关链接记得点个赞再走~~~生成效果 将9个矩阵显示在MATLAB命令行窗口中,一行有3个矩阵,一列显示3个矩阵&#xff0c…

[附源码]JAVA毕业设计网上拍卖系统(系统+LW)

[附源码]JAVA毕业设计网上拍卖系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

166.JWT简介与Django中使用JWT

1. JWT 1.1 JWT概述 基于django-rest-framework的登陆认证方式常用的大体可分为四种: BasicAuthentication:账号密码登陆验证SessionAuthentication:基于session机制会话验证TokenAuthentication: 基于令牌的验证JSONWebTokenAuthenticatio…

Python中使用国内源头下载依赖

有关更多的Python 开发内容,可访问:《 Python Flask开发指南》 Python开发中对于项目的依赖通常是用pip install命令进行下载,默认官网下载源为国外网络,会经常出现下载超时的问题。那么如何修改下载源使得我们能快速下载资源,如下介绍两种方式设置国内下载源。 国内下载源…

西湖大学张岳老师NLP课程笔记1 Introduction

西湖大学张岳老师NLP课程笔记1 Introduction 参考资料 B站链接课程主页 《Natural Language Processing: A Machine Learning Perspective 》 csdn大佬笔记 https://blog.csdn.net/qq_45645521/category_11685799.html 文章目录西湖大学张岳老师NLP课程笔记1 Introduction1.…

常用工具:介绍一款免费开源录屏工具-captura

网上能搜到的大部分录屏工具表面打着免费的旗号,实际上下载之后不是有水印就是限制分辨率和时长,介绍一款免费无水印的开源录屏截屏工具captura。 准备工作 要使用这个工具,必须事先在电脑上安装ffmpeg工具包,安装方式见&#x…

DRV8870/A4950/AT8870(3.6A单通道刷式直流电机驱动IC)

描述 AT8870是一款刷式直流电机驱动器,适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制H桥驱动器,该驱动器由四个N-MOS组成,能够以高达3.6A的峰值电流双向控制电机。利用电流衰减模式,可通过对输入进行脉宽调制(…

【电源专题】案例:电池存储40天电压从3.9V掉到了3.5V是什么异常?

本案例是在我休假过程中发现的。同事反馈说客户发现我们的一批产品有概率在存储40多天后发现电池从3.9V掉到了3.5V,并且制程、软件、硬件都有差异。会有可能存在什么异常? 首先我们要了解的是大多数带电池的产品在销售给客户时都会充好电(如手机/充电宝等),但不一定是充…

极市直播预告丨阿里达摩院:兼顾速度与精度的高效目标检测框架DAMO-YOLO

|极市线上分享第106期 | 一直以来,为让大家更好地了解学界业界优秀的论文和工作,极市已邀请了超过100位技术大咖嘉宾,并完成了105期极市线上直播分享。往期分享请前往http://bbs.cvmart.net/topics/149或直接阅读原文,也欢迎各位…

初学者如何学习FPGA?一文为你讲解清楚

想学习一门技术之前,我们先会从编程语言入手。就像学习FPGA,往往是从VHDL或者Verilog开始入手学习的。 当然,任何编程语言的学习都不能一劳永逸,因为任何经验技巧都是在实践的过程中才能学到,FPGA的学习当然也不例外。…

Python爬虫实战,Request+urllib模块,批量下载爬取飙歌榜所有音乐文件

前言 今天给大家介绍的是Python爬取飙歌榜所有音频数据并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文 本数据爬取…

C语言实现三子棋(超详解版本)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​ 📣系列专栏:鹏哥带我学c带我飞 💬总结:希望你看…