1.2.0 IGP高级特性之FRR

理论部分参考文档:Segment Routing TI-LFA FRR保护技术 - 华为

一、快速重路由技术

FRR(Fast Reroute)快速重路由

实现备份链路的快速切换,也可以与BFD联动实现对故障的快速感知。

随着网络的不断发展,VoIP在线视频等业务对实时性的要求越来越高,而OSPF故障恢复的时间远远超过了50ms,不能满足此类网络业务对实时性的要求。

OSPF IP FRRBFD联动可以实现50ms级的切换。OSPF IP FRR提前计算好备份链路的方式,BFD实现主链路出现故障时可以快速感知并使流量快速切换到备份链路上,保证流量不中断,从而达到保护流量的目的,因此极大的提高了OSPF网络的可靠性。

FRR技术适用于网络中对于丢包、延时非常敏感的业务。

二、工作原理

FRR的核心工作原理是提前为路由协议计算好备份链路,使得确认主链路故障之后,可以快速切换至备份链路进行转发流量,而不发再次去计算拓扑及路由后再进行流量转发。

如何计算备份链路?

FRR使用到的一种算法:LFA(Loop-free alternate)无环路备份路径

LFA的原理是找到一个非主下一跳(即不是最短转发路径上的下一跳)的邻居节点,如果这个邻居节点目的节点的最短路径不经过源节点,则这个邻居节点为无环备份下一跳。

关于以上名词介绍:源节点、邻居节点、目的节点、最短转发路径

S为运行LFA计算的源节点,N为邻居节点,D为目的节点

最短路径即由LSP计算链路开销得出的到达目的节点的最优转发路径(开销最小的路径)

在这里插入图片描述

LFA保护分为链路保护节点保护两种场景。

(1)LFA链路保护

链路保护场景可用如下公式计算无环下一跳:

  • Distance_opt(A,B),计算A至B之间的链路开销之和
  • 要想使FRR成功计算出备份链路,需要网络开销满足链路保护公式,否则无法计算出备份路由!

LFA链路保护即:备份的下一跳(邻居节点目的节点)的开销要小于< (邻居节点源节点)及(源节点目的节点)的开销之和。

公式一:Distance_opt(N, D) < Distance_opt(N, S) + Distance_opt(S, D)

LFA链路保护原理如下图:

在这里插入图片描述

可能会疑惑,为啥开销一定需要满足(N, D) <(N,S)+(S,D)呢?

  • 主要原来还是因为开销配置不当会出现短暂环路的情况。
  • 如下图,虽然看起来主备链路开销规划的很好,主用链路也是正确走向(即PE1去PE2,走PE1-PE4)。

在这里插入图片描述

  • 但邻居节点N(P2)去往PE2,走的却是P1-P4,而不是P2-P3-P4,因为ND开销=9,NSED=8。
  • 所以当链路故障之后,S马上将流量转发给N(红线1),由于N去往D最短路径走S,故流量重新回到S(蓝线2),S再…(红线3)因此出现环路。
  • 直到N重新完成网络收敛之后,流量才会正常转发。

在这里插入图片描述

(2)LFA节点保护

当发生节点故障时,流量需要从最短路径上S的**下一跳节点(E)**绕行,故需要计算下一跳节点到目的节点及邻居节点之间的开销,防止出现环路情况。

所以如果邻居节点同时满足下述公式,则该邻居满足节点保护条件。

公式二:Distance_opt(N, D) < Distance_opt(N, E) + Distance_opt(E, D)

LFA节点保护原理如下图:

在这里插入图片描述

如果链路开销不满足时:

  • 虽然主用链路路径正确,即PE1去PE2走的是SED。
  • 但邻居节点N去往PE2,走的却是SED,而不是直接ND,因为ND开销=6,NSED=5。

在这里插入图片描述

  • 当主链路E节点设备故障之后,S马上将流量转发给N(红线1),由于N去往D最短路径走S,故流量重新回到S(蓝线2),S再…(红线3)因此出现环路。

在这里插入图片描述

  • 应用FRR技术之后,需要满足以上两种LFA保护公式才能成功计算出备份路径,否则FRR不生效,无法生成备份路径。

其它LFA算法

除了LFA算法外,还有RLFA(remote loop-free alternates)远端无环路备份路径、TI-LFA(Topology Independent LFA)拓扑无关的无环路备份路径,各算法各有利弊。

(1)RLFA

起因:

  • 虽然LFA在网格状拓扑中通常能够获得较好的覆盖范围,但是针对环网,LFA的覆盖范围很低。

  • 为了提升保护范围,产生了RLFA技术,用于提升FRR保护范围。

优点:

  • RLFA将LFA节点的计算范围扩大到了远端节点,而不仅限于邻居节点,从而提高了LFA计算的成功概率。

缺点:

  • 仍然存在与LFA算法同样的缺陷,即网络开销不满足保护公式时算法失效。

工作原理

RLFA的基本原理是在远端找到一个LFA节点(通常称为PQ节点),然后使得S节点与PQ节点之间建立隧道进行流量转发。因为该节点是去往源和目的无环的一台设备,所以通过隧道将流量转发给PQ节点由它来进行转发给目的/源可保证链路故障后不会出现短暂环路现象。

这个PQ节点需要满足两个条件:

  1. PQ节点源节点(也即受保护链路的源端节点)于故障收敛前的最短路径(Pre-convergence Shortest Path)可达,且路径不经过受保护链路。
  2. PQ节点可以通过最短路径到达受保护链路的对端节点(E节点),且路径不经过受保护链路。

RLFA保护也分为链路保护和节点保护两种场景。

关于RLFA的相关名词解析
概念解释
P空间以保护链路源端为根节点建立SPF树,所有从根节点不经过保护链路可达的节点集合称为P空间。
扩展P空间以保护链路源端的所有邻居为根节点分别建立SPF树,所有从根节点不经过保护链路可达的节点集合称为扩展P空间。
**说明:**华为设备在计算RLFA FRR备份路径时,默认计算扩展P空间。
Q空间以保护链路末端为根节点建立反向SPF树,所有从根节点不经过保护链路可达的节点集合称为Q空间。
P节点P空间、扩展P空间的节点称为P节点。
Q节点Q空间的节点称为Q节点。
PQ节点在(扩展)P空间又在Q空间的节点,PQ节点会作为保护隧道的目的端

P空间内P节点,保证P到S节点不存在故障后出现微环的情况。

Q空间内Q节点,保证Q到D节点不存在故障后出现微环的情况。

处于P空间与Q空间中的节点设备,则具备有去往源目节点都不会环路的能力(下图中的P3设备)

故只需要使S与P3建立一条隧道,该隧道便是PE1-PE2的备用链路。

在这里插入图片描述

RLFA链路保护

P节点的计算公式如下:

公式三:Distance_opt(N, P) < Distance_opt(N, S) + Distance_opt(S, P)

套用公式进行计算得出,满足P节点公式的只有P2、P3设备。

Q节点的计算公式如下:

公式四:Distance_opt(Q, D) < Distance_opt(Q, S) + Distance_opt(S, D)

套用公式进行计算得出,满足Q节点公式的只有PE2、P4、P3设备。

在这里插入图片描述

为啥PQ节点如此计算

其实与LFA算法一致,主要还是为了防止保护链路在故障之后,出现微环的情况。

如P节点计算,以P3作为P节点,故NP=3,NS=8,SP=12,满足公式。

如果链路开销设置不合理

  • 在未故障前,流量正常通过P1-P4转发。
  • 故障之后,因为P2去往PE2最优路径下一跳是P1,故存在微环风险。
  • 同时套用公式可以看出:NP=30,NS=8,SP=17,不满足公式。

在这里插入图片描述

RLFA节点保护

P节点的计算公式如下:

公式五:Distance_opt(N, P) < Distance_opt(N, E) + Distance_opt(E, P)

Q节点的计算公式如下:

公式六:Distance_opt(Q, D) < Distance_opt(Q, E) + Distance_opt(E, D)

在这里插入图片描述

其中规律

此时拿出LFA的保护公式与RLFA的保护公式进行对比记忆:

LFA链路保护:Distance_opt(N, D) < Distance_opt(N, S) + Distance_opt(S, D)

RLFA链路保护-P节点:Distance_opt(N, P) < Distance_opt(N, S) + Distance_opt(S, P)

RLFA链路保护-Q节点:Distance_opt(Q, D) < Distance_opt(Q, S) + Distance_opt(S, D)

以链路保护为例,可以看到明显有变化与没有变化的地方。

将LFA公式中的D节点换成P节点,即成为了RLFA-P节点的计算公式。

将LFA公式中的N节点换成Q节点,即成为了RLFA-Q节点的计算公式。

P节点:计算S至D的下一跳节点(P节点)是否存在环路问题,可将其它设备作为P节点设备进行计算,判断是否还存在其它设备可成为下一跳P节点且不出现环路问题。最终这些P节点的集成就是P空间。

Q节点:计算D至S的下一跳节点(Q节点)是否存在环路问题,与P节点一致,计算出所有可成为下一跳Q节点的设备集成为Q空间。

LFA节点保护:Distance_opt(N, D) < Distance_opt(N, E) + Distance_opt(E, D)

RLFA节点保护-P节点:Distance_opt(N, P) < Distance_opt(N, E) + Distance_opt(E, P)

RLFA节点保护-Q节点:Distance_opt(Q, D) < Distance_opt(Q, E) + Distance_opt(E, D)

节点保护一致。

P节点保护S至D在故障时不出现环路问题,故LFA公式中将D换成P即成为RLFA-P节点公式。

Q节点保护D至S在故障时不出现环路问题,故LFA公式中将N换成Q即成为RLFA-Q节点公式。

理解之后,只需要记忆LFA的两个公式即可推理出其它公式。

(2)TI-LFA

起因:

  • 为了解决RLFA的会因网络开销规划不合理造成计算失败的问题,出现了基于Segment Routing(SR技术)的TI-LFA FRR技术。

优点:

  • TI-LFA FRR可以在网络拓扑中不存在PQ节点的情况下,实现任意拓扑的保护。
  • TI-LFA FRR完全继承了RLFA FRR计算扩展P空间和Q空间的算法,上文的公式三到公式六完全适用于TI-LFA FRR场景。

缺点:

  • 目前只能应于SR技术上。

转至 SR段路由技术之后再进行进一步补充原理及其它内容。

三、配置命令介绍

开启FRR功能,并使用LFA算法(ENSP中只支持该算法)。

[Huawei]ospf 1 
[Huawei-ospf-1]frr
[Huawei-ospf-1-frr]loop-free-alternate 

实验拓扑

​ 按照图中规划进行设置网络及链路开销,要求实现主用链路断开之后,网络能快速感知并切换至备用链路转发数据。

在这里插入图片描述

基础配置

  • 省略底层IP及OSPF相关配置。

  • 未配置FRR时,于P1上查看去往模拟业务的OSPF路由信息:

默认下一跳为10.1.14.4(P4)此外无其它信息。

[P1-ospf-1]dis ip routing-table protocol ospf verbose

Destination: 192.168.2.0/24
     Protocol: OSPF             Process ID: 1
   Preference: 10                     Cost: 6
      NextHop: 10.1.14.4         Neighbour: 0.0.0.0
        State: Active Adv              Age: 00h00m03s
          Tag: 0                  Priority: low
        Label: NULL                QoSInfo: 0x0
   IndirectID: 0x0              
 RelayNextHop: 0.0.0.0           Interface: GigabitEthernet0/0/0
     TunnelID: 0x0                   Flags:  D

启用FRR

  • 将所有设备的FRR功能启用,并指定LFA算法。

  • 配置完成之后,于P1上查看去往模拟业务的OSPF路由信息:

开启FRR之后,出现BKNextHop等信息,表示该路由的备份链路信息。

[P1-ospf-1]dis ip routing-table protocol ospf verbose

Destination: 192.168.2.0/24
     Protocol: OSPF             Process ID: 1
   Preference: 10                     Cost: 6
      NextHop: 10.1.14.4         Neighbour: 0.0.0.0
        State: Active Adv              Age: 00h00m12s
          Tag: 0                  Priority: low
        Label: NULL                QoSInfo: 0x0
   IndirectID: 0x0              
 RelayNextHop: 0.0.0.0           Interface: GigabitEthernet0/0/0
     TunnelID: 0x0                   Flags:  D
----------《新增信息》----------
    BkNextHop: 10.1.12.2       BkInterface: GigabitEthernet0/0/1
      BkLabel: NULL            SecTunnelID: 0x0              
 BkPETunnelID: 0x0         BkPESecTunnelID: 0x0              
 BkIndirectID: 0x0   

启用BFD

  • 为了实现链路故障之后能够快速感知,需要启用BFD技术。
  • 将所有设备的BFD功能启用,使用默认间隔即可。
[PE1]bfd
[PE1-bfd]ospf 1
[PE1-ospf-1]bfd all-interfaces enable
  • P1上查看BFD会话是否建立成功:
[P1-ospf-1]dis bfd session all 
--------------------------------------------------------------------------------
Local Remote     PeerIpAddr      State     Type        InterfaceName            
--------------------------------------------------------------------------------

8192  8193       10.1.14.4       Up        D_IP_IF     GigabitEthernet0/0/0     
8193  8192       10.1.15.5       Up        D_IP_IF     GigabitEthernet0/0/2     
8194  0          10.1.12.2       Down      D_IP_IF     GigabitEthernet0/0/1     
--------------------------------------------------------------------------------
     Total UP/DOWN Session Number : 2/1

模拟故障

  • PE1设备上进行长ping模拟业务,然后于P4上将G0/0/0接口关闭,观察通断情况。

  • 目前直连链路断开,P1直接感知可能并不需要通过BFD检测就能感知通断,故只丢了1个包。
    在这里插入图片描述

  • 于P1-P4之间添加一台设备S,此时如果将S的E0/0/2口断开,P1无法通过直连快速感知,就需要借助BFD检测进行实现快速感知。

  • 链路断开之后,BFD经过约3秒时间断开会话,触发OSPF邻居断开,快速切换到FRR计算的备份路径转发路由。

  • 但从Ping测试中并没有看出明显的差距,还是只丢包1个,不过可以说明BFD检测的作用。
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/280492.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC-图片生成视频系列-3】AI视频随心而动:MotionCtrl的相机运动控制和物体运动控制

最近&#xff0c;「单张图片生成视频」相关工作很多&#xff0c;但运动控制的准确性依旧是个挑战&#xff0c;包括相机运动的控制以及物体运动控制。 然&#xff0c;MotionCtrl 横空出世。 一. 项目简介 MotionCtrl——一个相机运动控制、物体运动控制的视频工具&#xff0c…

[C#]opencvsharp进行图像拼接普通拼接stitch算法拼接

介绍&#xff1a; opencvsharp进行图像拼一般有2种方式&#xff1a;一种是传统方法将2个图片上下或者左右拼接&#xff0c;还有一个方法就是融合拼接&#xff0c;stitch拼接就是一种非常好的算法。opencv里面已经有stitch拼接算法因此我们很容易进行拼接。 效果&#xff1a; …

二分查找(非朴素)--在排序数组中查找元素的第一个和最后一个位置

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 本题链接 输入描述 输出描述 算法分析 1.算法一&#xff1a;暴力求解 2.算法二&#xff1a;朴素二分算法 3.算法三&#xff1a;二分查找左右端点 3.1查找左端点 3.1.1细节一&#xff1a;循环条件 3.1.2细节二…

【前端基础】——原型与原型链详解,看一篇即可【图文版】

前言 本文旨在通过图文的方式&#xff0c;一步步回顾原型链的整个流程是如何运作的&#xff0c;如果你刚好在电脑旁边&#xff0c;不妨跟着我的思路&#xff0c;一起走一遍敲一遍代码流程&#xff0c;你会发现原型链并没有你想的那么复杂。 new关键字 我们先看这一个代码&am…

华锐三维云展平台 | VR在线展览云平台提供定制化虚拟展厅制作工具

随着科技的飞速发展&#xff0c;互联网技术的不断革新&#xff0c;广州华锐互动顺应时代需求&#xff0c;开发了VR在线展览云平台&#xff0c;用户可以在平台上自主创建属于自己的3D展厅。VR在线展览云平台正改变着传统展览行业的模式&#xff0c;为参展者提供更高效、更便捷、…

vue3中怎么巧妙的去运用jsx?

文章目录 概要JSX / TSX?安装配置封装JsxRender.vue使用JsxRender.vue怎么巧妙的去使用它?Demo下载 概要 我们都知道vue3是支持用jsx/tsx&#xff0c;但是好像从来都没有人告诉我们应该怎么运用到项目当中&#xff0c;下面是我觉得不错的一种使用方式&#xff0c;分享给大家…

二级路由的配置以及注意项

二级路由 比如说LayOut组件是父亲&#xff0c;LayOut和ArtComp是儿子&#xff0c;那我们怎么给儿子配路由呢&#xff1f; 1、首先在router下的index.js导入组件&#xff0c;配置规则&#xff0c;详细如下 // 导入路由相关组件 import LayOut from /views/LayOut import UserC…

IntelliJ IDEA常用快捷键

【1】创建内容&#xff08;新建&#xff09;&#xff1a;altinsert 【2】main方法&#xff1a;psvm 【3】输出语句&#xff1a;sout 【4】复制行&#xff1a;ctrld 【5】删除行&#xff1a;ctrly&#xff08;很多编辑器ctrly是前进操作&#xff0c;如果选择 Delete Line&…

C++内联函数与引用(超详细)

文章目录 前言一、内联函数1.为什么会存在内联函数2.什么是内联函数3.内联函数注意事项 二、引用1.什么是引用2.引用的特性3.常引用4.引用使用场景5.引用与指针 总结 前言 一、内联函数 1.为什么会存在内联函数 &#x1f9d0;&#x1f9d0;首先我们介绍内联函数之前&#xf…

NVMe over Fabrics:概念、应用和实现

对于大部分人来说&#xff0c;NVMe over Fabrics&#xff08;简称NVMf&#xff09;还是个新东西&#xff0c;因为其第一个正式版本的协议在今年6月份才发布。但是这并不影响人们对NVMf的关注&#xff0c;因为这项依托于NVMe的技术很可能继续改变存储市场格局。 NVMf的贡献在于…

USB -- STM32F103复合设备(HID+MassStorage)传输讲解(十)

目录 链接快速定位 前沿 1 描述符讲解 1.1 设备描述符 1.2 配置描述符 1.3 接口描述符 1.4 功能描述符 1.5 端点描述符 1.6 字符串描述符 1.7 报告描述符 2 运行演示 链接快速定位 USB -- 初识USB协议&#xff08;一&#xff09; 源码下载请参考链接&#xff1a;…

vivado CDC约束-“设置总线倾斜”对话框

“设置总线倾斜”对话框 在AMD Vivado™ IDE中&#xff0c;可以通过多种方式设置总线偏斜约束&#xff1a; •通过时间约束编辑器。选择窗口 → 时间限制 → 断言 → 设置总线倾斜。从“时序约束编辑器”中&#xff0c;可以添加、删除或修改总线扭曲约束。 注意&#…

【VSCode】关闭双击shift出现搜索

原因 有时候总是手滑按两下shift&#xff0c;每次都会弹出如下图的搜索框&#xff0c;导致很不方便 解决办法 找到该文件 C:\Users\admin\.vscode\extensions\k--kato.intellij-idea-keybindings-1.5.12\package.json&#xff08;admin是自己的用户名&#xff09; 然后关键字…

【MySQL视图特性】

目录&#xff1a; 前言视图基本使用创建视图查看视图内容修改内容测试删除视图 视图规则和限制 前言 剑指offer&#xff1a;一年又12天 视图 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图也是带有名称的列和行内容&#xff0c;对视图内容的…

Java集合/泛型篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、说说List,Set,Map三者的区别二、Array与ArrayList有什么不一样?三、Map有什么特点四、集合类存放于 Java.util 包中, 主要有几 种接口前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…

系列四、Eureka自我保护

一、Eureka自我保护 1.1、故障现象 保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式&#xff0c;Eureka Server将会尝试保护其服务注册表中的信息&#xff0c;不再删除服务注册表中的数据&#xff0c;也就是不会注销任何微服务。如…

学生信息管理系统winform+sqlserver

学生信息管理系统winformsqlserver Winform作为一个强大的桌面应用程序开发工具&#xff0c;具有丰富的图形化界面编程组件&#xff0c;可以快速构建出用户友好的界面。使用这个工具&#xff0c;我能够轻松设计出适合学生信息管理系统的各类窗体&#xff0c;比如学生信息录入窗…

------- 计算机网络基础

1.1概述 是什么? 答出独立计算机通信线路连接实现资源共享 计算机网络组成 从组成部分看: 硬件软件协议 从工作方式看: 边缘部分和核心部分 从功能组成看: 通信子网和资源子网 计算机网络性能指标 速率是指数据传输的物理速度&#xff0c;吞吐量是指实际的数据传输…

Redis:原理速成+项目实战——Redis的Java客户端

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis常见命令&#xff08;数据结构、常见命令总结&#xff09; &#x1f4da;订阅专栏&…

Qt Creator可视化交互界面exe快速入门5

上一期介绍了加法计算器,本期介绍QObject定时器。 首先一样先建个工程,比如我这项目名为QObject 本期的任务就是制作图片在界面上显示,然后每秒定时切换,点击另一个暂停按钮,可以定格当前图片,即取消定时切换功能。 显示图片的我们可以使用显示里面的label 这个用于显示…