最好的BGP路由黑洞解决方案----NPLS

上回说到,AS当中没有运行BGP协议的路由器会产生路由黑洞,也提供了几种解决方案,但都不是最佳方案,
本文将带来最好的路由黑洞解决方案----NPLS。
在这里插入图片描述
本文包含以下内容:各位小伙伴可以按需读取嗷

1.包交换和标签交换
2.当下MPLS存在的意义
3.MPLS的工作过程
4.MPLS的标签号和次末跳
5.MPLS的配置实验

1.包交换和标签交换

1.1包交换

包为网络层的PDU,故包交换是基于IP地址进行数据转发;就是路由器的路由行为

原始的包交换:数据包进入路由器后,路由器需要查询本地的路由表(RIB-路由信息数据库),再基于下一跳或者目标ip查询本地的ARP表,才能进行数据的转发;

快速的包交换:一次路由多次交换;每个数据流中的第一个包将被基于原始包交换规则转发;过程中生成缓存列表,记录整个通讯过程,该数据流量剩余数据包仅查询缓存记录即可;

特快的包交换:无需路由,直接交换; CEF-cisco特快交换,为cisco私有技术;非cisco厂商设备均存在和cef转发机制相同的技术;

路由表、ARP –转换为 FIB(转发信息数据库)表    流量转发过程中仅查询FIB表即可;
FIB的特点:在将路由器表转换过程中,存储递归查询结果;同时将新封装的二层地址进行绑定; 	
IP       fast0/0       172.16.20.115(7)
(递归后的出接口)      0 packets, 0 bytes
epoch 0
sourced in sev-epoch 357
Encap length 14
701CE7662A9768EFBD1D24C50800  
新的二层封装目标MAC    源MAC      类型号

1.2标签交换

标签交换:数据包在进入到的MPLS的域内后,将在第2层和3层中间压入标签号;使得域内的路由器在转发该数据包时,基于2.5层的标签号仅需要查询本地的一张LFIB表(标签转发信息数据库)
在这里插入图片描述

最初在包交换仅支持原始交换时,标签的意义在于更快的查询;但随着包交换的加速,使用标签交换失去了快速查表的优势;

2.当下MPLS存在的意义

包交换比标签交换要快了,那么为什么我们还使用mpls呢?

当下MPLS存在的意义:
1、解决BGP的路由黑洞   
2、MPLS  VPN         
3、MPLS  TE 流量工程
另外:随着包交换的加速,使得今天的MPLS技术也开始基于FIB表工作;来提高MPLS的工作效率;

3.MPLS的工作过程

在这里插入图片描述谈到工作过程,不得不讲一下什么是控制层面,什么数据层面:

控制层面:路由协议工作,生成RIB,流量的方向即为控制流量;
数据层面:设备基于路由表访问目标,产生数据流量;与控制层面方向相反;

控制层面

1)在没有MPLS时控制层面仅生成RIB(路由表)和FIB(转发信息数据库);FIB是基于RIB生成;

2)MPLS协议会启动TDP(cisco私有)或LDP(公有),直连设备间将建立邻居关系;
	LDP--  基于UDP和TCP的646端口工作;先使用udp发送组播hello包发现邻居,获取邻居ip地址,再和该直连邻居建立TCP的会话;邻居关系建立后;为了邻居关系间的稳定,一般使用设备的环回地址来建立tcp会话;建议设置环回地址为mpls协议的route-id,该id值将携带在组播收发的hello报文中,之后自动进行tcp会话建立;
	总结:MPLS协议需要在直连邻居间使用router-id地址来进行TCP的会话;故前提条件为,route-id必须为设备真实使用的ip地址,建议为环回地址—稳定; 组播hello包在直连的物理接口上收发,来获取对端的router-id,自然也要求router-id值间路由可达;
	因此正常在建立LDP的邻居关系间,路由协议已经收敛完成,RIB和FIB表已经生成;

3)MPLS在建立邻居关系后,生成邻居表;LDP协议再基于FIB表中学习到的路由条目生成标签号;
	cisco设备默认基于FIB表中所有学习到的路由条目生成标签号,华为设备默认仅基于FIB表中32位掩码的主机路由生成标签号;原因在于正常32位主机路由为ospf学习的环回接口,正常工程中只有BGP和MPLS  VPN才会基于环回通讯,使用标签转发;其他普通流量还是基于特快包交换来进行;反观cisco在启动mpls以后,所有流量将基于标签转发,降低了转发效率(前提为默认)

4)标签号生成后,将存储于本地的LIB表-标签信息数据库;LIB表将在邻居间共享;LIB表中装载本地及邻居为每条路由分发的标签号;

5)运行MPLS协议的设备,将LIB和FIB进行结合,将标签号和最佳路径的关系映射生成LFIB表(标签转发信息数据库)
	

注:控制层面生成的表格RIB—》FIB—》LIB—》LFIB 前两张表为路由协议工作后生成,后两张表为MPLS的LDP协议生成;

路由层面

1) 没有MPLS协议,基于FIB表正常转发即可
2) 名词:MPLS domain – MPLS的工作半径
	edge LSR(PE)--边界标签交换路由器  工作mpls域的边缘,连接域外设备
	LSR (P) -- 标签交换路由器   整体工作MPLS域内
3) 当流量进入到第一台pe设备时, 在没有特快交换之前,路由器基于目标IP地址查询本地的RIB;
	之后还要在LIB表中对应才能确定流量是否应该压入标签,需要两张表的查询;
	在存在特快交换时,流量进入第一pe时,直接查询FIB表,表中关联标签号,将直接确定是否压入标签;
	流量再到P路由器,接收到流量中若存在标签基于LFIB表转发,若没有标签基于FIB表即可;
	流量从最后一台边界离开MPLS 域时将弹出标签;
	存在标签号的流量,进入路由器时,入标签表应该为本地路由器分配的编号,出标签为本地的下游(下一跳)设备分配的标签号;  上下游的概念基于数据层面进行标定;

在这里插入图片描述

总的而言就是一个贴标签,进行欺骗,再撕标签到达的过程。

4.MPLS的标签号和次末跳

标签号

标签被压入在2层与3层之间,称为2.5层
在这里插入图片描述
标签的格式—32位,4个字节
在这里插入图片描述

前20位为标签号,2^20个标签号;其中1-15号保留,作为特殊编号; 第
21-23位exp,3位8个数,为优先级,用于QOS策略使用;
第24位为栈底位,该位为1标识该标签为最后一层标签;MPLS最大可以在一个数据包中封装3次标签;
普通的MPLS 一层标签 MPLS VPN 两层 MPLS TE 3层
TTL 生存时间
在第一次压入标签时,将当前数据包中的3层TTL复制到标签中;之后查询一次标签TTL减一,在最后一跳设备弹出标签时将2.5层的TTL复制到3层报头中;

MPLS的次末跳

倒数第二跳
默认执行边界LSR将本地的直连网段传递给MPLS域内邻居后,LDP分配标签号为3(1-15内任意),告知倒数第二跳设备它的身份;
导致倒数第二跳设备在查询LFIB表后,已知转发路径的前提下提前弹出标签,使得最后一跳路由器均只需要查询FIB表;

否则最后一跳路由器在查询LFIB表后,弹出标签还需要查询FIB;

5.MPLS的配置实验

在这里插入图片描述

1.合理规划ip地址,并AS2内部起ospf
2. 起bgp
3.在AS2内部做mpls。
4. 做策略

1. 合理规划ip地址,并AS2内部起ospf。

Ip地址可规划如下:

骨干网段:172.16.1.0/24172.16.1.0/30 172.16.1.4/30 172.16.1.8/30
R2:172.16.2.0/24 
	用户端172.16.2.1/24   
	 环回:172.16.0.2/30
R3:172.16.3.0/24
	 用户端172.16.3.1/24  
	 环回:172.16.0.3/32
R4:172.16.4.0/24
 	用户端172.16.4.1/24  
 	环回:172.16.0.4/32
R5:172.16.5.0/24
	 用户端172.16.5.1/24   
 	环回:172.16.0.5/32
R6:172.16.6.0/24
	 用户端172.16.6.1/24  
 	环回:172.16.0.6/32
 R7:172.16.7.0/24
 	用户端172.16.7.1/24 	
 	环回:172.16.0.7/32

在这里插入图片描述

R2路由表可以看到全AS2内全部路由表
在这里插入图片描述

修改环回的接口类型,为breakcost,这样可以变为/24位的网段,不是一个个的环回地址。如果没有修改,ospf域内用户之间走的是标签,慢了许多。

2. 起bgp

R2:
在这里插入图片描述
R5
在这里插入图片描述
R7
在这里插入图片描述
宣告R1环回进行检测。
R7:
在这里插入图片描述
需要更改下一跳。

在R2和R5相互也得将peer下一跳改为本地,因为链路断开,还有优的条件,

需要全改下一跳为优。更改下一跳后,成为优秀路由。
在这里插入图片描述
同时 R8也可以收到。
基于可以访问的需求,先做一条空接口路由进行宣告,然后再做策略。做了空接口路由以后,可以看到R1上有去AS2内和AS3的路由,但是由于AS2内部的路由器都没有AS的路由,所以无法实现访问。

R1
在这里插入图片描述
而AS2内部没有起bgp的路由器只有自己通过ospf学到的AS2内部的路由,其余都没有

3.在AS2内部做mpls

做完后可以通过mpls ldp peer表进行查看建立情况
R3:
在这里插入图片描述
R6:
在这里插入图片描述
R5:
在这里插入图片描述

可以看到LDP邻居关系建立完成。
通过查看FIB表
在这里插入图片描述
查看LIB表看到给本地和邻居分配的标签号
在这里插入图片描述
mpls做完后,华为设备默认不为标签执行下一跳。

华为设备需要开启 route recursive-lookup tunnel 路由基于隧道进行递归查找

完成后,R1环回可以访问R8环回

在这里插入图片描述
通过抓包R2我们可以发现AS2内部路由器根本不知道自己的目的地,只知道更加标签转发
在这里插入图片描述
R2的0/0/1端口在这里插入图片描述
此时R1和R8还无法访问AS2内部,需要内部做缺省指向AS2中的bgp路由器

在这里插入图片描述
完成后便可实现R1访问AS2内部。AS2内部可以访问AS2外部,
在这里插入图片描述
在这里插入图片描述

4. 做策略

在R1上可以看到,他加入了一条去往AS2的整个网段,而且都是走R2去的
在这里插入图片描述
需要实现功能如下
在这里插入图片描述
默认走的是R2,那么只需要去2,3,4走R5,就完成了策略。

反向的方向–正向宣告,做R2上其用户网段的策略。
应该在AS2内干涉AS1对AS2的选路

R2上抓取
在这里插入图片描述
在这里插入图片描述
再进协议
在这里插入图片描述

这里是做了一条的策略,用于验证,随后抓取三条流量做策略。

可以看到成功干涉了选路
在这里插入图片描述
实验总结:

在做的过程中,如果不理解贴标签的行为,可以使用抓包来观察。

如果你看完了,给博主点个赞吧,不要下次一定了,来个三连(关注,点赞加收藏)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42707739/article/details/104848813