BGP④——MPLS①

**

一、出现背景

**

MPLS是一种多协议标签交换技术,和帧中继网络是同一个时代的产物,在网络发展初期,路由器交换数据并不像现在那么快,流量每次进入路由器都必须查询路由表,进行递归查询和最长匹配,这就需要花费大量的CPU内存去查找,耗费时间。
后来思科提出了CEF的概念,将原有的路由表中数据转换为FIB表,已经完成递归,可以被芯片直接调用,然后再产生一张ADJ表将出接口信息和ARP表进行结合直接转化为一张二进制表,我们知道,二进制是可以直接被硬件识别的,这样就大大提高了数据交换的速度。
CEF解决了数据转发速度的问题正是借鉴交换机的工作原理,交换机就是将目标信息直接对应到出接口进行转发,可以被硬件识别,CEF也是将路由信息直接对应到出接口,使得硬件可以直接转发。
现在我们来看BGP的路由黑洞问题,产生的根本原因是因为路由在传递过程中,BGP可以非直连建邻,路由可以在数据层面传递,但找不到控制层面回复的路由,所以导致不可达现象。那么仅依靠数据的正常转发肯定无法解决上述问题,所以MPLS提出了标签交换的概念:
通过启动CEF之后,该表可以直接被ASIC芯片调用,CEF解决了递归问题,MPLS在数据封装的时候,在IP报头和MAC报文之间再添加一层标签号,通过压入和弹出标签进行数据转发;
在这里插入图片描述

**

二、MPLS工作过程

**
控制层面:通过IGP或EGP交互路由条目,生成路由表,然后CEF基于路由表生成FIB表;MPLS使用TDP/LDP基于FIB表中的每一条信息(本地所有的路由条目)生成一个标签号,然后告知所有邻居;
该工作完成后路由器上生成:
0)路由表
1)FIB表—转信息数据库= CEF基于路由表生成
2)LIB表—标签信息数据库(本地和邻居关于所有学习到的路由条目生成的标签号)
3)LFIB表–标签转发信息数据库----将FIB表和LIB进行结合
数据层面:普通的数据包将基于FIB表转发;若数据包中存在标签号,基于LFIB进行转发;标签的压入和弹出也是在数据层面完成的;
MPLS的工作过程
当控制层面使用路由协议传递路由条目后,路由器上使用TDP/LDP为本地FIB表中每一条存在的路由条目均分配一个标签号,装载于LIB表中,同时传递给邻居,LIB中还记录邻居传递到本地标签号;之后路由器基于本地的FIB和LIB表生成LFIB—标签转发表—标签号的最佳路径对应;
LDP分配标签参考CEF表,把CEF表中所有的路由都会分配一个标签,形成一个叫binding表,binding表中有路由前缀以及本地分配的local binding,还会把从邻居收到的该路由的标签添加进去(remote-binding,邻居及邻居分配给该路由的标签);
数据层面工作时,第一跳路由器负责标签的压入,中间路由器基于标签号转发流量,进行标签号的替换,最后一跳路由器负责标签的弹出;
注:入标签号为本地分配的标号,出标签为下一跳(下游)分配的标签号;
存在上下游路由器概念,基于数据层面定义;
最后一跳路由器在默认情况下需要查看LFIB表后再查看FIB表,然后转发数据;PHP可以使倒数第二跳在已知出接口、下一跳等信息时便将标签号弹出,然后基于出接口转发流量;导致最后一跳路由器仅查看FIB表;
最后一跳路由器,将本地直连路由传递给邻居时使用标号来告知对方为倒数第二跳;
非直连路由正常分配标签号;针对域外的非直连路由,域内的最后一跳路由器需要查询两张表;建议PE路由器直接连接用户,不再连接其他路由器;
注意:使用标签交换在查表时,路由前缀是严格匹配一致性的,且MPLS路由在传递过程中不能汇总,不能改变其位数(掩码长度),如果底层是ospf,那么ospf回环地址最好是32位的主机地址。
**

三、LDP

**
LDP标签分发协议,是MPLS体系中的一种主要协议。为ip分配一个标签。但是标签表还是mpls。在MPLS网路中,两个标签交换路由器(LSR)必须用在他们之间或者通过他们转发流量的标签上达成一致
LDP定义了一组程序和消息,通过他们一个LSR可以通知另一个LSR其已经形成的标签捆绑。通过网络层路由协议与数据链路层交换路径之间的直接映射,LSR可以使用LDP协议通过网络来建立标签交换路径。
利用LDP交换标签映射信息的两个标签路由器(LSR)作为LDP对等结点,并且他们之间有一个LDP标签分发协议会话。在一个单个会话中,每一个对等结点都能获得其它的标签映射,换句话说,这个协议是双向的

在这里插入图片描述
两个LSR之间交换LDP Hello消息将触发LDP会话建立过程。 下面简要介绍LDP会话的建立和维护。以LSR1和LSR2为例来说明会话的建立和维护。
1、在建立会话之前,LSR1、LSR2在每个接口的UDP端口646发送Hello消息,消息中包括一个LDP标识符,同时也要接收UDP端口646的消息。
2、LSR1、LSR2接收到Hello消息后,判断是否已经同发送方建立会话,如果没有,开始准备建立会话。
3、LSR1、LSR2根据双方地址决定在会话建立中哪个是主动方,哪个是被动方,地址大的一方为主动。(NON EXISTENT状态)
4、建立支持会话的TCP连接(INITIALIZED状态)。
5、主动方发送Init消息,进入OPENSENT状态;
被动方接收到可以接收的Init消息,进入OPENREC状态,同时向对方发送Init消息和KeepAlive消息;
6、进入OPENSEND的一方接收到可以接收的Init消息进入OPENREC状态,同时向对方发送KeepAlive消息。
进入OPENREC的一方接收到KeepAlive消息进入OPERATIONAL状态。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

**

四、配置

**
1、
r1(config)#interface s1/1
r1(config-if)#mtu ?
<64-17940> MTU size in bytes 修改接口MTU值,mpls为1504,mpls vpn为1508;
2、开启MPLS ----在标签号所有需要经过的接口上配置
r2(config)#interface s1/1
r2(config-if)#mpls ip 开启某个接口的MPLS协议
MPLS协议在工作时,存在两种封装:
1、TDP cisco私有 TCP/UDP 711 hello包基于UDP传输,标签信息基于TCP传输;
2、LDP 公有 TCP/UDP 646 hello包基于UDP传输,标签信息基于TCP传输;
Cisco ios 版本12.4(3)以下设备默认使用TDP,以上使用LDP;
r2(config)#mpls label protocol ? 修改封装协议
ldp Use LDP
tdp Use TDP (default)
协议开启后,邻居间使用hello包建立邻居关系,生成邻居表:
r2#show mpls ldp neighbor 存在RID,RID的选举规则同OSPF一致
注:RID同时作为了建立TCP会话的源目ip地址;若存在环回,那么默认使用环回作为RID,此时就必须将环回宣告到路由协议中–必须可达;
r2(config)#mpls ldp router-id serial 1/1 ? 修改RID为S1/1口的地址
force Forcibly change the LDP router id 立即生效
<cr 重启设备后生效
当邻居关系建立后,邻居间会将基于FIB表生成的标签号传递给邻居,保存于LIB表中:
r2#show ip cef detail 查看FIB表
r2#show mpls ldp bindings 查看LIB表
之后将LIB表和FIB表进行结合,生成LFIB表,基于该表格进行标签流量转发;
r2#show mpls forwarding-table

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值