一、MPLS的概述
MPLS:(Multi-Protocol Lable Switching的缩写)多协议标签交换:是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术。
我们先把多协议标签技术交换拆开来看
1.多协议的含义是指MPLS不但可以支持多种网络层层面上的协议,还可以兼容第二层的多种数据链路层技术。
2.标签交换的含义是指数据在进入MPLS域内后,将在第二层和第三层压入标签号,使得域内的路由器在转发该数据包时,基于2.5层的标签号仅需查询本地的一张LFIB表(标签转发信息数据库)
3. 标签交换以及包交换的发展过程
1.原始包交换:数据包进入路由器的时候,路由器需要先查询路由表(RIB-路由信息数据库),在基于下一跳或者目标ip查询本地的ARP表,才能进行数据转发。---- 这个过程需要查两张表,而标签交换的出现只需要查询一张表,数据的转发效率得到了提升。
2.快速的包交换:一次路由多次转换;每个数据流中的第一个数据包基于原始包交换规则进行转发,过程中生成缓存列表,记录整个通讯过程,该数据流剩余流量包仅查询缓存记录即可;
3.特快的包交换:无需路由直接转发;将路由表和ARP表转换为FIB表(转发信息数据库),流量的转发过程只需查询FIB表即可;FIB的特点:在将路由表转换过程中,存储递归查询结果;同时将新封装的二层地址进行绑定。
最初在包交换仅支持原始包交换时,标签的意义在于更快的查询,但是随着包交换的加速,使标签交换失去了快速查表的优势,但是今天的 MPLS也基于FIB表进行工作,提高了MPIS的工作效率。当下MPLS存在的意义:1、解决BGP的路由黑洞 2、MPLS VPN 3、MPLS TE 流量工程
二、MPLS的工作过程
控制层面
1.在MPLS网络中,MPLS会启动TDP(cisco私有)或LDP(公有),直连设备间将建立邻居关系;
2.LDP --- 基于UDP和TCP646端口进行工作;先使用UDP发送组播hello包发现邻居,获取邻居的ip地址,在和该直连邻居建立TCP的会话,邻居建立成功后;为了邻居关系间的稳定性,一般使用环回地址来建立TCP会话;建议设置环回地址为mpls协议的route-id。(要求route-id值之间路由可达)
3.邻居建立成功之后,生成邻居表,LDP会基于在FIB中学到的路由条目生成标签;
4.标签号生成之后,将存储于本地的LIB表中(标签信息数据库);LIB表将在邻居间共享,所以LIB表中装载本地及其邻居为每条路由分发的标签号;(如图RTC设备的邻居是RTB和RTD,RTC中有它自己以及RTB和RTD两个邻居的标签号)
5.运行MPLS协议的设备,将LIB和FIB结合,将标签号和最佳路径的关系映射生成LFIB表(标签转发信息数据库)
数据层面
1.流量RTA设备进入RTB设备时,直接查询FIB表,表中关联标签号,将直接确认是否压入标签
2.压入标签后,流量到 RTC设备,流量就会基于LFIB表转发,如果没有压入就基于FIB表转发
3.流量就会从离开最后一台边界路由器RTD时将标签弹出。
存在标签号的流量,进入路由器时,入标签表应该为本地路由器分配的编号,出标签为本地的下游(下一跳)设备分配的标签号; 上下游的概念基于数据层面进行标定;
三、标签号
标签被压入在2层与3层之间,称为2.5层
标签的格式---32位,4个字节
0——19位为标签号,2^20个标签号;其中1-15号保留,作为特殊编号;
20——22位exp,3位8个数,为优先级,用于QOS策略使用;
第23位为栈底位,该位为1标识该标签为最后一层标签;MPLS最大可以在一个数据包中封装3次标签;
普通的MPLS 一层标签 MPLS VPN 两层 MPLS TE 3层
TTL 生存时间 在第一次压入标签时,将当前数据包中的3层TTL复制到标签中;之后查询一次标签TTL减一,在最后一跳设备弹出标签时将2.5层的TTL复制到3层报头中;
四、MPLS的次末跳 – 倒数第二跳 默认执行
边界LSR将本地的直连网段传递给MPLS域内邻居后,LDP分配标签号为3,告知倒数第二跳设备它的身份;(标签好为3是指该设备为倒数第二跳的设备)导致倒数第二跳设备在查询LFIB表后,已知转发路径的前提下提前弹出标签,使得最后一跳路由器均只需要查询FIB表; 否则最后一跳路由器在查询LFIB表后,弹出标签还需要查询FIB;
作者留言:非常感谢个位帅哥美女的观看,有什么不足和疑惑可以告诉我哦,你们的点赞和关注就是作者最大的动力哦