MPLS转发原理

MPLS vs IP

IP转发原理:
1.利用路由协议生成路由表
2.根据目的IP地址进行转发
3.在IP报文转发的过程中,源和目的IP地址保持不变,只是重新封装数据帧头

MPLS转发原理
在这里插入图片描述数据包从IP域进入MPLS域的时候,插入MPLS的报头,在MPLS网络中,路由器收到带有MPLS报头的数据包,查看标签,根据标签转发表来转发数据,从相应的接口发送出去。
所以不论是IP转发还是MPLS转发,真正重要的是如何生成路由表或者标签转发表。

MPLS包头格式
在这里插入图片描述32bit,4字节,相比ip报头简洁。
20bit用作标签label
3bit的EXP,支持QOS
1bit的S,栈底位,用于标记是否是栈底位,这也说明了MPLS的标签是可以嵌套的,靠近二层报头为栈顶,靠近IP报头为栈底,存在多个先查看栈顶位。
8bit的TTL,防环

MPLS报头结构
在这里插入图片描述
MPLS术语
标签label:只具有本地意义,位于数据链路层的数据链路层封装报头和三层数据包之间,通过绑定过程同FEC相映射。
FEC:forwarding equivalence class,转发等价类,是在转发过程中以等价的方式处理的一组数据分组。
可以通过地址,隧道,COS等来标识创建FEC,目前看到的MPLS中只是一条路由对应一个FEC,在一台设备上,对一个FEC分配相同的标签。
LSP:标签交换通道,一个FEC的数据流,在不同的节点被赋予确定标签,数据转发按照这些标签进行,数据流所走的路径就是LSP。
LSR:label switching router,LSR是MPLS网络的核心交换机,提供标签交换和标签分发功能。
LER:label switching edge router,在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签。提供流量分类和标签的压入与弹出功能。

MPLS域如何生成标签转发表项?
解:类比于路由表学习,有直连,通过路由协议传递路由
路由与标签之间需要存在映射关系FEC
LDP协议:需要IGP协议配合
in方向是自己分配的,out方向是别人传递的,比如
在这里插入图片描述
从IP域进入MPLS域,怎样插入MPLS标签头?
解:push动作,在边缘设备上根据FIB表向IP报文中插入MPLS报文头。

在MPLS域内,如何进行报文转发?
解:swap动作,收到标签报文后,按照MPLS转发表中相关表项对报文的标签进行替换。收到带有标签的报文,若是与自己的LIB表的in方向,如果相同,替换为out方向的标签,从相应接口转发出去。
pop动作,收到标签报文后,按照MPLS转发表中相关表项对报文中的标签进行弹出。
PHP:倒数第二跳弹出。(为了提高效率,不然边缘路由器查IP路由表和FIB表,倒数第二跳弹出后倒数第一跳路由器直接查看IP路由表即可)
问题:倒数第二跳怎么就知道自己就该弹出呢?
解:倒数第一跳连接的是IP域,那么为其分配的标签就是POP标签,特殊标签3,那么倒数第二跳路由器学习到的out方向就是pop,就知道自己是倒数第二跳了。

LSR如何判断自己收到的报文是MPLS标签报文?
解:根据二层协议字段记性判断承载的是不是MPLS报文
以太网0x8847单播 0x8848组播
PPP:0x8281 MPLSCP,一种新的NCP协议
在这里插入图片描述

IP的hop-by-hop逐跳转发
IP的逐跳转发,在经过的每一跳数,必须进行路由表的最长匹配查找,速度缓慢。
label switched path(LSP)
MPLS的标签转发,通过事先分配好的标签,为报文建立一条标签转发通道LSP,在通道经过的每一个设备处,只需要进行快速的标签交换即可,一次查找。

FEC的精妙之处:
不同目的地址(属于相同的网段)的IP报文,在LER处被划分为相同的FEC,具有相同的标签,这样在LSR处,只需要根据标签快速的交换即可。对于传统的IP路由,在每一跳处实际上都是一次重新划分FEC的过程,如果一台路由器对于IP路由和标签交换同样使用了cache功能,由于对于路由来说,在cache中只能记录主机路由,条目十分有限,而标签对应的是FEC,有可能是网段,可以做到很少的条目匹配大量的报文。

FEC的缺陷
对于一条FEC来说,沿途的所有设备都必须具有相同的路由(前缀和掩码相同)才可以构建一条LSP,换句话说,使用MPLS转发的所有沿途设备上,对于要使用标签转发的路由,都不能做路由聚合的操作。

发布了138 篇原创文章 · 获赞 203 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qinshangwy/article/details/104030575