MPLS(Multiprotocol Label Switching)多协议标签转发复习总结

首先我们要先知道MPLS是为何出现的?

MPLS是基于传统IP网络(RIP,OSPF等)的缺陷由IETF确定的

顺便先复习一下路由器查路由表 转发的过程:

传统的IP转发中,物理层从交换机的一个端口收到一个报文,上送到数据链路层。数据链路层去掉链路层封装,根据报文的协议域上送给相应的网络层。网络层首先看报文是否是送给本机的,若是,去掉网络层封装,上送给它的上层协议。若不是,则根据报文的目的地址查找路由表,若找到路由,将报文送给相应端口的数据链路层,数据链路层封装后,发送报文。若找不到路由,将报文丢弃。传统的IP转发采用的是逐跳转发,数据报文经过每一台交换机,都要执行上述过程(如图中SWA收到目的地址为10.2.0.1的数据包,SWA会依次查找路由表,根据匹配的路由表项的进行转发,SWB、SWC、SWD都会进行类似的处理),所以速度缓慢。并且所有的交换机需要知道全网的路由或者默认路由。另外,由于传统IP转发是面向无连接的,所以无法提供好的Qos保证。


传统IP网络基于IGP Metric计算最优路径,这是远远不够的,往往在现实网络中还需考虑带宽、链路属性等其他因素;基于IP的流量工程是基于IGP面向目的地址的转发,是hop-by-hop(逐跳)的转发,无法实现根据来源来控制流量转发;另外基于IP的流量工程是面向无连接的,不能实现显式路径(Explicit Routing)。
上图中,SWB和SWD之间存在两条路径。传统的IP转发中IGP根据Metric选择最优的路由SWB-SWC-SWD转发所有从Network A和Network B到Network C的IP报文,而SWB-SWG-SWH-SWD链路则闲置,当网络中流量过大,有可能导致最优路径拥塞,但次优路径却空载没有被充分利用

MPLS的出现

我们老师当时是这么讲的:
从A到走到B有三种方法:
1.广播(如以太网):直接把数据发给每一个地方
2.逐跳寻径:走到一个地方,问一下路接下来该怎么走(也就是上面说的根据路由协议,查路由表)
3.源路由:提前规划好路线,到哪里怎么走,不常用。

MPLS是第四种走法
跟在“向导”后面走,向导在走过的路上做好标记,你只要沿着标记的指示走就可以了。这也就是“标签交换

MPLS结合了三层路由技术与二层交换技术,所以可以把它看成“2.5层”的
其中的MP多协议指的是支持多种网络协议,如ipv4,ipv6,CLNP,IPX等

MPLS是一种标签转发技术,它采用无连接的控制平面面向连接的数据平面(具体的MPLS架构下面还有介绍),无连接的控制平面实现路由信息的传递和标签的分发,面向连接的数据平面实现报文在建立的标签转发路径上传送。MPLS域内,交换机不需要查看每个报文的目的IP地址,只需要根据封装在IP头外面的标签进行转发即可,这样可以大大提高效率

MPLS转发与IP逐跳转发的关系

MPLS是IP的承载层:MPLS转发与IP转发不冲突,它们的关系是如果能够使用MPLS转发,那么IP包会先封装成MPLS数据帧来转发。如果不能MPLS转发,就还是原来的ip逐跳转发。
(也就是尽量优先MPLS,因为它会更快)

看上面的图,我们需要理解:整个MPLS域(可以进行MPLS转发的区域)是嵌在IP域上的,也就是MPLS域外部是IP域,它本身也运行IP域。

MPLS中一些基本概念,名词

标签(Label):是一个定长的,比较短的,只具有本地意义的标识。
FEC(转发等价类):一组或一类数据,这组数据分配的标签相同
LSP(标签交换通道):一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照
这些标签进行。数据流所走的路径就是LSP。
LSR(Label Switching Router): LSR是MPLS的网络的核心交换机,它提供标签交
换和标签分发功能。
LER(Label Switching Edge Router):在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签。它提供流量分类和标签的映射、标签的移除功能。


看这个图我们来理解LER,LSR,LSP
从IP域进入MPLS域的时候,LER(标记边缘路由器)要做一个压入(push),出MPLS域的时候做一个弹出(pop),而LSR(标记交换路由器)负责转发。所以LER实际工作量比LSR大很多。LSP(标记交换路径)就是从进入到离开 走的路径。这条路径是在转发报文之前就已经通过各种协议确定并建立的,报文会在特定的LSP上传递。(也可以把LSP看成一个隧道)

标签报文格式:

MPLS Header长度为32bits,包括长度为20bits的标签(Label),该标签用于报文转发;长度为3bits的EXP通常用来承载IP报文中的优先级;长度为1bit的栈底标志S用来表明是否是最后一个标签(MPLS标签可以多层嵌套);长度为8bits的TTL,作用类似IP头部的TTL,用来防止报文环路等。

事实上MPLS封装有两种方式,上面说的是帧模式,Ethernet和PPP都是帧模式封装;还有一个信元封装模式(ATM采用)。
MPLS的 LSP 与标签转发表

MPLS转发过程


1.Push:首先从IP数据包从ip域进入MPLS域,入口LER做 push 操作,分析转发等价类,为数据包“打上标签”,绑定LSP通道;图中A的标签转发表内容大概如下:

2.Swap:B,C两个LSR根据标签转发表,用下一跳分配的标签,替换MPLS报文的标签并转发

3.Pop:转发到出口LER D时,进行pop弹出操作,去掉标签

MPLS转发的过程到这里结束。

PHP倒数第二跳弹出。Penultimate Hop Popping ,和web开发的php可没关系):上面的过程我们可以发现,C在发给D时,其实带标签的数据已经没有意义,因为下一跳就要弹出标签了,所以完全可以在C就把标签弹出,然后以ip报文形式转发给D。
这样可以大大降低最后的出口LER的工作量,是现在MPLS普遍采用的方法。
默认情况下,设备支持PHP特性,支持PHP的Egress节点即出口LER 分配给倒数第二跳节点的标签值为3。

MPLS标签转发表与LDP

先来看一个标签转发表例子

我们知道,
交换机中的MAC地址表是通过逆向学习法产生的;
路由器中的路由表是通过路由协议学习或自己配置静态路由产生的。
那么MPLS中标签转发表是怎么产生的呢?

答案是也会有一个类似的路由器学习的协议,这个协议叫做LDP(Label Distribution Protocol 标签分发协议),这个也是MPLS技术的核心协议之一。LDP来完成标签的分配控制和保持

从整个MPLS架构看这个协议的位置:

以上是MPLS架构图
MPLS包括两个平面:控制平面和数据平面。
控制平面负责产生和维护路由信息以及标签信息。数据平面负责普通IP报文的转发以及带MPLS标签报文的转发。
控制平面中路由协议模块(Routing Protocol)用来传递路由信息,生成路由信息表;标签分发协议模块(Label Distribution Protocol)用来完成标签信息的交换,建立标签转发路径。
数据平面包括IP转发表和标签转发表,当收到普通IP报文时(Incoming IP Packets),如果是普通IP转发,则查找IP路由表转发,如果需要标签转发,则按照标签转发表转发;当收到带有标签的报文时(Incoming Labeled Packets)时,如果需要按照标签转发,根据标签转发表转发,如果需要转发到IP网络,则去掉标签后根据IP转发表转发。

LDP的标签管理与保留方式主要内容有下面三部分

1. 标签分配模式

  • DoD:下游按需标记分发
  • DU:下游自主标记分发

2. 标签控制模式

  • 有序方式
  • 独立方式

3. 标签保持模式

  • 保守模式
  • 自由模式

最常用的组合是 下游自主(DU) + 有序 + 自由

下面来具体介绍什么意思

这里先要理解上游下游的概念,MPLS入口出为最上游;出口处为最下游。标签的产生可以理解为是下游为上游产生的,下游产生的IN标签作为上游的OUT标签(比如图中R3左边要接收的IN标签为100,那么R2向右的OUT标签就要是100,因为R3只要为100的标签)

然后具体介绍上面的三个部分:
Ⅰ.标签的控制模式(即标签是怎么产生的):
有序(常用):只有最下游路由器才能产生标签,最下游的上游收到最下游的标签映射消息后,然后才能再往自己的上游发送标签映射关系。
独立:中间的路由器也可以直接产生标签

Ⅱ.标签的分发模式
下游按需 :需要的时候上游再向下游询问标签信息;
下游自主:不管有没有问,下游路由器都自主的向上游发送标签映射信息(主动向上汇报)
Ⅲ.标签的保留模式:如果有两条路径,也就会有两个标签,那么路由器保留哪个。
保守:只保留路由表中的”最佳路径“,跳数比较少的;
自由:保留所有的标签,虽然占用了更多的标签空间,但是收敛会快

以上介绍了MPLS的基础知识,概念
实际上在运营商网络。大型的互联网公司与BGP结合,做VPN是比较多的;
常见应用包括MPLS VPN,MPLS QoS,MPLS TE,这方面知识以后再总结

MPLS协议基本知识总结(比较详细,好理解)相关推荐

  1. SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  2. delphi7存取配置文件与sqlserver数据库连接_SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  3. CANopen协议基础知识

    CANopen协议基础知识 资料: DS301协议中文文档:https://winshton.gitbooks.io/canopen-ds301-cn/content/chapter5.html 30 ...

  4. 一文打败TCP/IP五层协议基础知识

    注意: 文章如有抄袭部分,请私信我. 未经允许,不得转载,如需转载,可以私信我. 前言 在很久之前,计算机刚刚被研究出来,当时的计算机还不能上网,玩游戏等,它只用于科学家,并没有给普通人使用. 后来, ...

  5. 标定协议基础知识介绍

    在上一篇<如何实现标定>中介绍了标定工具通过标定协议与控制器进行通讯从而实现标定.在二十世纪九十年代由Audi.BMW.Mercedes-Benz.Volkswagen等相关企业成立了AS ...

  6. IOS Socket 01-网络协议基础知识

    IOS Socket 01-网络协议基础知识 1. 网络参考模型 OSI参考模型                                          TCP/IP参考模型 2. 七层简述 ...

  7. eip协议通信_工业通讯 | EtherNET/IP协议基础知识(Part 3)||附视频讲解

    点击蓝字 关注我们 相关阅读: EtherNet/IP OSI参考模型及其物理层.数据链路层与网络层的功能特点: EtherNET/IP协议基础知识(Part 1)||附视频讲解 Encapsulat ...

  8. 【LWIP】LWIP协议|相关知识汇总|LWIP学习笔记

    这里作为一个汇总帖把,把以前写过的LWIP相关的博客文章汇总到一起,方便自己这边查找一些资料. 收录于: [LWIP]LWIP协议|相关知识汇总|LWIP学习笔记 LWIP协议 [LWIP]LWIP网 ...

  9. HTTP协议基础知识

    简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅保 ...

最新文章

  1. HDU 3015 Disharmony Trees(树状数组)
  2. HDU3929(容斥原理)
  3. 多点子接口的帧中继配置
  4. centos7 zabbix
  5. 台式计算机开机密码设置,设置台式电脑的开机锁屏密码的方法步骤
  6. 自动驾驶 9-5: EKF 的局限性 Limitations of the EKF
  7. Unity--使用反编译软件ILSpy查看dll中的代码
  8. Python移动应用开发
  9. 啊哈算法---快速排序(C语言)
  10. android 指令脱壳,安卓脱壳之战-腾讯脱壳
  11. Scratch游戏设计——愤怒的小鸟
  12. spyder python教程_Spyder
  13. halcon轮廓擦除_【Halcon】轮廓处理
  14. 2020年中国报废汽车拆解回收行业市场现状分析,汽车报废率远低于发达国家「图」
  15. html 空格 正则表达式,正则表达式清除空格和html标签中的 空格
  16. hdu5285 wyh2000 and pupil
  17. java clh_【Java并发编程实战】—– AQS(四):CLH同步队列
  18. android的aod的功能,一加正式推出氢OS 11:基于安卓11打造 新增「年轮AOD」功能
  19. ardupilot避障代码分析
  20. cubemx实现CAN通讯

热门文章

  1. iOS内购遇到的问题之返回的response.products为空
  2. 纯CSS3实现鼠标悬浮内容自动撑开的过渡动画
  3. vue/react项目使用depcheck检查缺失的依赖项目
  4. 网站为什么会被降权 网站降权恢复的解决方案
  5. 实战|手把手教你利用Python网络爬虫获取新房数据
  6. SQL中round()函数的使用
  7. N-gram特征,浅谈FastText文本分类利器解读(2)
  8. zip直链生成网站_网站地图全面解析
  9. 华为云--网络类服务实践
  10. 前端下拉框能支持手动输入_可输入的select下拉框