当前位置: 首页 > news >正文

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 32AR3
system
sysname AR3
interface g0/0/0
ip add 10.0.13.3 24
interface g0/0/1
ip add 10.0.34.3 24AR4
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 24AR5
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.0AR3
ospf 1 router-id 3.3.3.3
area 0
netw 0.0.0.0 0.0.0.0AR4
ospf 1 router-id 4.4.4.4
area 0
netw 0.0.0.0 0.0.0.0AR5
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 briefOSPF Process 1 with Router ID 1.1.1.1Peer 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.1Link State Database Area: 0.0.0.0Type      LinkState ID    AdvRouter          Age  Len   Sequence   MetricRouter    4.4.4.4         4.4.4.4             77  60    80000007       1Router    1.1.1.1         1.1.1.1             88  60    80000007       1Router    5.5.5.5         5.5.5.5             80  48    80000004       1Router    3.3.3.3         3.3.3.3             85  48    80000007       1Network   10.0.14.4       4.4.4.4             79  32    80000002       0Network   10.0.13.3       3.3.3.3             91  32    80000002       0Network   10.0.34.4       4.4.4.4             85  32    80000002       0Network   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 : 1Destination: 5.5.5.5/32Protocol: OSPF             Process ID: 1Preference: 10                     Cost: 2NextHop: 10.0.14.4         Neighbour: 0.0.0.0State: Active Adv              Age: 00h01m38sTag: 0                  Priority: mediumLabel: NULL                QoSInfo: 0x0IndirectID: 0x0              RelayNextHop: 0.0.0.0           Interface: GigabitEthernet0/0/0TunnelID: 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 : 1Destination: 5.5.5.5/32Protocol: OSPF             Process ID: 1Preference: 10                     Cost: 2NextHop: 10.0.14.4         Neighbour: 0.0.0.0State: Active Adv              Age: 00h00m17sTag: 0                  Priority: mediumLabel: NULL                QoSInfo: 0x0IndirectID: 0x0              RelayNextHop: 0.0.0.0           Interface: GigabitEthernet0/0/0TunnelID: 0x0                   Flags:  DBkNextHop: 10.0.13.3       BkInterface: GigabitEthernet0/0/1BkLabel: 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 : 1Destination: 5.5.5.5/32Protocol: OSPF             Process ID: 1Preference: 10                     Cost: 2NextHop: 10.0.14.4         Neighbour: 0.0.0.0State: Active Adv              Age: 00h00m01sTag: 0                  Priority: mediumLabel: NULL                QoSInfo: 0x0IndirectID: 0x0              RelayNextHop: 0.0.0.0           Interface: GigabitEthernet0/0/0TunnelID: 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老化时间

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

http://www.dtcms.com/a/265477.html

相关文章:

  • Vue 项目在哪里加载「字典数据」最好
  • 基于 alpine 构建 .net 的基础镜像
  • 开源模型应用落地-让AI更懂你的每一次交互-Mem0集成Qdrant、Neo4j与Streamlit的创新实践(四)
  • Zookeeper 客户端 .net访问框架 ZookeeperNetEx项目开发编译
  • 开源 C# .net mvc 开发(六)特殊控制控制台、周期、邮件编程
  • 深度实战:Ubuntu服务器宕机排查全记录
  • 月付物理服务器租用平台-青蛙云
  • 基于 govaluate 的监控系统中,如何设计灵活可扩展的自定义表达式函数体系
  • npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
  • Python Set() 完全指南:从入门到精通
  • R语言开发记录,一
  • 前端-HTML-day1
  • Rust Web 全栈开发(二):构建 HTTP Server
  • 主流分布式中间件及其选型
  • locate命令的原理是啥
  • OpenCV CUDA模块设备层-----在GPU 上高效地执行两个 uint 类型值的最大值比较函数vmax2()
  • Frida:配置自动补全 in VSCode
  • 搭建VirtualBox-6+vagrant_2+docker+mysql5.7的步骤
  • 客户案例 | 某新能源车企依托Atlassian工具链+龙智定制开发服务,打造符合ASPICE标准的研发管理体系
  • 云原生系统DOCKER中容器系统搭建
  • Python字符与ASCII转换方法
  • Ubuntu Gnome 安装和卸载 WhiteSur-gtk-theme 类 Mac 主题的正确方法
  • vue2+elementui使用compressorjs压缩上传的图片
  • Euler2203安装.NetCore6.0环境操作步骤
  • python安装虚拟环境
  • Python 物联网(IoT)与边缘计算开发实战(1)
  • 优雅草蜻蜓R实时音视频会议系统云原生私有化部署方案深度解析-优雅草卓伊凡|贝贝|clam|麻子|夜辰
  • Docker 容器资源限制
  • 9.Docker的容器数据卷使用(挂载)
  • ATE FT ChangeKit学习总结-20250630