一、概述
众所周知,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计算的备份路径快速的切换到备份路径上,这样大大减少了我们收敛的时间,保证了数据不中断。
链路保护
什么是链路保护呢?
链路保护是开启了FRR功能的设备会通过算法来计算出备份链路,当然需要一定的条件,这个条件就是链路保护的条件,假如没有满足链路保护的条件就算开启了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的备份路径加入到转发路由表当中
节点保护
什么是节点保护?
节点保护与链路保护类似,但是发生的场景不一样,链路保护是发生在与邻居的链路发生的故障的情形比如,如下场景:

而节点保护发生在如下场景:

如果只是链路发生了故障,我们AR1仍然可以通过AR3的备份链路去访问AR5,但如果设备发生了故障则备份链路也没用了,此时想要访问到AR5,AR3就必须得再有一条备份链路。

当然,节点保护和链路保护一致,也有形成备份链路的条件在链路保护的前提条件上还要附加一条:N D < N E + E D
这里AR3与AR5之间的链路COST为1
AR3与AR4之间的链路COST为1
AR4与AR5之间的链路COST为1
1 < 2
条件达成即可形成节点保护,AR1依然会把AR3的备份链路加入到路由转发表当中
如果AR3与AR5之间的链路为2则条件未达成,AR1则不会将AR3的备份链路加入到路由转发表当中
情形三

在这个场景当中,虽然AR1通过AR3去访问AR5的COST比AR1通过AR6去访问AR5的COST要大,但是AR3满足了FRR备份链路的条件:N D < N S + S D。而AR6并没有满足FRR备份链路的条件,所以当AR1与AR4之间的链路发生故障时,AR1会优选通过AR3去访问AR5。当OSPF收敛结束后发现通过AR6去访问AR5更优则会改为通过AR6去访问AR5。
此时一共有三条路由:
- 主路径:AR1-AR2-AR5
- 主路径故障,通过FRR计算得出的备份路径(临时路径):AR1-AR3-AR5
- OSPF链路状态数据库同步完成,拓扑计算完成,收敛之后的主路径:AR1-AR6-AR5
工作过程:
1、AR1感知到链路发生了故障,通过FRR切换致备份路径。
- 产生LSA,泛洪LSA,计算拓扑
- 切换备份链路
2、OSPF收敛完成,切换至AR6
- 完成LSDB通过,拓扑计算完成
三、实验
1、链路保护
拓扑

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老化时间
2、节点保护
拓扑

基础配置与路由配置与上一致,这里只介绍行新增的AR3与AR5链路之间的配置
AR3
interface g0/0/2
ip add 10.0.35.3 24
q
AR5
interface g0/0/1
ip add 10.0.35.5 24
此时我们将AR4设备关机查看AR1上的路由信息
<AR1>dis ip routing-table 5.5.5.5 verbose
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 2
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: 00h01m23s
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
Destination: 5.5.5.5/32
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 2
NextHop: 10.0.13.3 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/1
TunnelID: 0x0 Flags: D
可以看到我们将AR4断开之后,AR1还是可以很快的计算出备份路径
此时我们将AR3与AR5之间的COST设置为2
<AR1>dis ip routing-table 5.5.5.5 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: 00h00m58s
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
3、情形三
拓扑

基础配置与路由配置与上实验一致,这里只介绍新增的配置命令
AR1
interface g0/0/2
ip add 10.0.16.1 24
AR6
interface g0/0/0
ip add 10.0.16.6 24
ospf cost 10
interface g0/0/1
ip add 10.0.64.6 24
ospf cost 20
q
ospf 1 router-id 6.6.6.6
area 0
netw 0.0.0.0 0.0.0.0
AR4
interface g4/0/0
ip add 10.0.64.4 24
查看AR1到达AR5的路由信息
[AR1]dis ip routing-table 5.5.5.5 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: 00h03m40s
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与AR4之间的链路down掉,查看AR1到AR5的路由信息的变化
[AR1]dis ip rout 5.5.5.5 ver
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: 31
NextHop: 10.0.16.6 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/2
TunnelID: 0x0 Flags: D
BkNextHop: 10.0.13.3 BkInterface: GigabitEthernet0/0/1
BkLabel: NULL SecTunnelID: 0x0
BkPETunnelID: 0x0 BkPESecTunnelID: 0x0
BkIndirectID: 0x0
可以看到,本来的备份链路是通过AR3去访问AR5,但OSPF收敛结束后还是通过AR6去访问AR5
以上就是本章的全部内容了,感谢大家的浏览观看!文章若有错误或疑问可联系博主删除更改。

3713

被折叠的 条评论
为什么被折叠?



