一、概述
众所周知,IGP当中链路状态路由协议(OSPF、ISIS)之所以可以代替我们的矢量路由协议(RIP),就是因为链路状态路由协议可以根据某些特性快速的感知到路由的变化从而改变路径。
前面我们已经介绍过了OSPF的其中一个快速收敛的机制,SPF算法,本章节将介绍另一个快速收敛机制,FRR(链路保护)
在我们OSPF网络环境当中,当没有配置BFD的情况下链路发生了故障时,设备是有一段空窗期无法快速感知到链路故障的,在这个空窗期内数据将会丢包,假如说没有备份路径则一直丢包,那么这个空窗期是多久呢?又是怎么计算得出的呢?
举个例子:

在这个拓扑当中假设AR1与AR4之间的链路发生了故障

AR1在Hello报文的老化时间(40s)倒计时之后没有收到对方的Hello报文,AR1就认为邻居down了,这里就需要40s
AR1在感知到邻居down之后拓扑发生了改变,AR1会产生LSA来通知其他邻居,收到该LSA加入到LSDB当中之后,重新进行SPF(SPT、PRC)算法。
经过以上一系列的操作之后重新计算出了新的拓扑和路由信息之后数据才会通过AR3去访问AR5,在此期间所有想要通过AR1去访问AR5的数据都将丢包。
在一些特定场景当中,客户不希望长时间的丢包,保证网络的稳定性和可靠性,那么在OSPF当中有没有什么技术可以加快收敛时间呢?
有的兄弟有的
其中就包括我们接下来要介绍的技术FRR
二、FRR
OSPF(fast reroute,快速重路由)通过LFA算法来预先计算出网络目的的备份路径,保存在转发表当中,当主路径发生故障时,可以及时将数据快速的切换到备份路径上,保证数据不中断,可将故障恢复时间降低到(50ms)之内,通常我们也会使用BFD来监测主路径,当主路径发生故障时,通过FRR计算的备份路径快速的切换到备份路径上,这样大大减少了我们收敛的时间,保证了数据不中断。
不是所有的路径都可以被当作备份路径保存在转发路由表当中的,需要满足一定的条件:N D < N S + S D
举个例子:

在这张拓扑当中,AR3作为AR1去往AR5的备份路径
AR3通过AR4去访问AR5的COST为2
AR3通过AR1去访问AR5的COST为3
AR1通过AR4去访问AR5的COST为2
此时N D=2 < N S(1) + S D(2)=3
AR1可以通过LFA算法来计算出备份路径放入自己的转发路由表当中,但如果此时我们将AR3与AR4之间的链路COST改成2那么条件就无法打成。

AR3通过AR4去访问AR5的COST为3
AR3通过AR1去访问AR5的COST为3
AR1通过AR4去访问AR5的COST为2
此时N D=3 ≮ N S(1) + S D(2) =3
条件无法达成则AR1无法将AR3的备份路径加入到转发路由表当中
三、实验
拓扑
1、基础配置
AR1
system
sysname AR1
interface g0/0/0
ip add 10.0.14.1 24
interface g0/0/1
ip add 10.0.13.1 24
interface loopback 1
ip add 1.1.1.1 32
AR3
system
sysname AR3
interface g0/0/0
ip add 10.0.13.3 24
interface g0/0/1
ip add 10.0.34.3 24
AR4
system
sysname AR4
interface g0/0/0
ip add 10.0.14.4 24
interface g0/0/1
ip add 10.0.34.4 24
interface g0/0/2
ip add 10.0.45.4 24
AR5
system
sysname AR5
interface g0/0/0
ip add 10.0.45.5 24
interface loopback 1
ip add 5.5.5.5 32
2、路由配置
AR1
ospf 1 router-id 1.1.1.1
area 0
netw 0.0.0.0 0.0.0.0
AR3
ospf 1 router-id 3.3.3.3
area 0
netw 0.0.0.0 0.0.0.0
AR4
ospf 1 router-id 4.4.4.4
area 0
netw 0.0.0.0 0.0.0.0
AR5
ospf 1 router-id 5.5.5.5
area 0
netw 0.0.0.0 0.0.0.0
查看OSPF邻居表和LSDB
[AR1]dis ospf peer brief
OSPF Process 1 with Router ID 1.1.1.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 4.4.4.4 Full
0.0.0.0 GigabitEthernet0/0/1 3.3.3.3 Full
----------------------------------------------------------------------------
[AR1]display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 77 60 80000007 1
Router 1.1.1.1 1.1.1.1 88 60 80000007 1
Router 5.5.5.5 5.5.5.5 80 48 80000004 1
Router 3.3.3.3 3.3.3.3 85 48 80000007 1
Network 10.0.14.4 4.4.4.4 79 32 80000002 0
Network 10.0.13.3 3.3.3.3 91 32 80000002 0
Network 10.0.34.4 4.4.4.4 85 32 80000002 0
Network 10.0.45.5 5.5.5.5 80 32 80000002 0
查看AR1去往AR5的路由
[AR1]display ip routing-table 5.5.5.5 32 verbose
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination: 5.5.5.5/32
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 2
NextHop: 10.0.14.4 Neighbour: 0.0.0.0
State: Active Adv Age: 00h01m38s
Tag: 0 Priority: medium
Label: NULL QoSInfo: 0x0
IndirectID: 0x0
RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0
TunnelID: 0x0 Flags: D
可以看到此时AR1去往AR5的路由当中并没有备份路径,如果此时AR1的主路径发生的故障则需要较长的一段时间来重新计算出新的链路来转发数据,那我们的客户肯定是不能接受的,所以接下来我们就来配置FRR(快速重路由)技术来加快我们收敛的速度。
AR1
ospf 1
frr
loop-free-alternate
配置完后我们来重新查看AR1去往AR5的路由信息
[AR1]display ip routing-table 5.5.5.5 32 verbose
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination: 5.5.5.5/32
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 2
NextHop: 10.0.14.4 Neighbour: 0.0.0.0
State: Active Adv Age: 00h00m17s
Tag: 0 Priority: medium
Label: NULL QoSInfo: 0x0
IndirectID: 0x0
RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0
TunnelID: 0x0 Flags: D
BkNextHop: 10.0.13.3 BkInterface: GigabitEthernet0/0/1
BkLabel: NULL SecTunnelID: 0x0
BkPETunnelID: 0x0 BkPESecTunnelID: 0x0
BkIndirectID: 0x0
可以看到此时AR1的路由表当中已经有了下一跳为10.0.13.3的备份路径,当AR1感知到主路径发生故障时,就会快速的将去往AR5的路径切换到备份路径,从而减少了丢包时间。
如果此时我们将AR3与AR4之间的链路COST改为2,看看AR1的路由会不会发生变化
AR3
interface g0/0/1
ospf cost 2
[AR1]display ip routing-table 5.5.5.5 32 verbose
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination: 5.5.5.5/32
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 2
NextHop: 10.0.14.4 Neighbour: 0.0.0.0
State: Active Adv Age: 00h00m01s
Tag: 0 Priority: medium
Label: NULL QoSInfo: 0x0
IndirectID: 0x0
RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0
TunnelID: 0x0 Flags: D
可以看到我们将AR3与AR4之间的链路COST改大之后AR1的路由表当中就没有了AR3的备份路径了。
这是为什么呢?
其实很简单,就是我们上面提到的条件:N D < N S + S D
想要AR1计算出AR3的备份路径,那么AR3到达AR5的COST就必须小于AR3到达AR1+AR1到达AR5的COST。
通过FRR计算出备份路径,在链路发生故障时我们可以将故障时间降低致大约50s左右,但这还是很久如果想要进一步加快收敛速度,我们可以在AR1的主路径上配置BFD快速检测,不需要等待40s的hello老化时间
以上就是本章的全部内容了,感谢大家的浏览观看!文章若有错误或疑问可联系博主删除更改。