MPLS协议介绍

MPLS介绍

1.MPLS协议概述

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

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

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

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决定。

MPLS是一种分类转发技术,它将具有相同特征(目的地相同或具有相同服务等级等)的报文归为一类,称为FEC。属于相同FEC的报文在MPLS网络中将获得完全相同的处理。目前设备只支持根据报文的网络层目的地址划分FEC。

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,就是类似窗口的机制,数据包试着发出去,如果被丢了,就减小后再发,如果再丢就再减再发,直到能正常发到目的地为止。

19.MPLS转发表
  • NHLFE(Next Hop Label Forwarding Entry,下一跳标签转发项):描述对标签执行的操作,用于指导MPLS报文的转发。
  • FTN(FEC to NHLFE map,FEC到NHLFE表项的映射,ip to mpls):用于在Ingress节点将FEC映射到NHLFE表项。LSR接收到不带标签的报文后,查找对应的FIB表项。如果FIB表项的Token值不是Invalid,则该报文需要进行MPLS转发。LSR根据Token值找到对应的NHLFE表项,以便确定需要执行的标签操作。
  • ILM(Incoming Label Map,入标签映射,mpls to mpls):用于将入标签映射到NHLFE表项。LSR接收到带有标签的报文后,查找对应的ILM表项。如果ILM表项的Token值非空,则找到Token值对应的NHLFE表项,以便确定需要执行的标签操作。
    mpls_forward.png
  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值