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

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,这方面知识以后再总结

(0)

相关推荐