OSPF高级特性之FRR

一、概述

众所周知,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老化时间

以上就是本章的全部内容了,感谢大家的浏览观看!文章若有错误或疑问可联系博主删除更改。

相关推荐
小徐不徐说32 分钟前
每日一算:华为-批萨分配问题
数据结构·c++·算法·leetcode·华为·动态规划·后端开发
FIT2CLOUD飞致云3 小时前
里程碑 | 1Panel开源面板GitHub Star数量突破30,000个!
运维·开源
FIT2CLOUD飞致云4 小时前
支持MySQL、PostgreSQL和Redis集群部署,1Panel开源面板v2.0.5版本发布
运维·开源
南玖yy4 小时前
Linux 桌面市场份额突破 5%:开源生态的里程碑与未来启示
linux·运维·服务器·汇编·科技·开源·gradle
小马爱打代码5 小时前
Spring Boot 接口安全设计:接口限流、防重放攻击、签名验证
网络·spring boot·安全
giaoho5 小时前
Android网络请求,Retrofit,OKHttp学习
网络
苹果醋37 小时前
iview中实现点击表格单元格完成编辑和查看(span和input切换)
运维·vue.js·spring boot·nginx·课程设计
丨千纸鹤丨7 小时前
高可用集群Keepalived
linux·服务器·网络
北极光SD-WAN组网8 小时前
工业互联网时代,如何通过混合SD-WAN提升煤炭行业智能化网络安全
网络·安全·web安全
hweiyu008 小时前
开发运维DevOps(附电子书资料)
运维·devops