OSPF GR(Graceful Restart,平滑重启)技术

Stella981
• 阅读 575

OSPF GR(Graceful Restart,平滑重启)技术

概述

GR(Graceful Restart,平滑重启)是一种在主备切换或协议重启时保证转发业务不中断的机制。其核心在于:设备进行协议重启时,能够通知其周边设备,使到该设备的邻居关系和路由在一定时 间内保持稳定。在协议重启完毕后,周边设备协助其进行信息(包括支持GR的相关协议所维护的 各种拓扑、路由和会话信息)同步,在尽量短的时间内恢复到重启前的状态。在协议重启过程中不 会产生路由振荡,报文转发路径也没有任何改变,整个系统可以实现不间断运行。

OSPF GR可以保证运行OSPF协议的路由器在进行主备切换或 OSPF协议重启时,转发业务正常进行。

产生背景

一台路由器的OSPF协议重启之后,会发送 Hello报文以发现邻居,而邻居路由器因为之前已经和 该路由器建立有邻居关系,因此收到该 Hello 报文之后就会把该路由器从邻居列表中删除,断开与 该路由器的邻居关系,并通知其他路由器。当该路由器与邻居路由器重新建立OSPF邻居关系后, 会重新同步所有的路由信息数据,而周边路由器也需要重新进行路由计算,这样就会引起网络的路由振荡以及转发中断,对于一个大型网络,尤其是运营商网络,这些路由振荡和转发中断是不可容忍的。

如何能使协议重启而不引起网络振荡和转发中断呢?由于分布式设备的控制与转发是分开的,主控 板负责整个设备的控制与管理,包括协议运行和路由计算,而接口板则负责数据转发。这样当发生 主备倒换或协议重启时,数据转发仍然可以不中断进行。同时,如果在重启期间周边设备能维持邻居关系不变并保持路由稳定,并且在设备重启后能协助设 备进行路由信息同步,在尽量短的时间内使得本设备的路由信息恢复到重启前的状态,那么就可以 保持网络拓扑稳定,不引起网络路由振荡。

为了实现这个目的,OSPF 路由协议进行了扩展,即OSPF GR。通过 OSPF GR,可以避免网络 的路由振荡及转发中断。

技术优点

  • 保证协议重启或主备切换过程中转发业务不中断

  • 减少协议重启或主备切换时路由振荡对全网的影响

  • 减少单点故障,提高整个网络的可靠性

OSPF GR技术详细介绍

概念介绍

OSPF GR的基本术语:

  • GR Restarter:发生协议重启事件且具有 GR能力的设备。

  • GR Helper:和 GR Restarter具有邻居关系,协助完成 GR流程的设备。

  • GR Session:OSPF邻居建立时进行关于 GR能力的协商,一般把 GR能力协商过程称为 GR Session。协商的内容包括双方是否都具备 GR能力等。一旦 GR能力协商通过,当协议重启 时就可以进入 GR流程。

说明:分布式设备可以充当 GR Restarter和 GR helper;而集中式设备只能充当 GR Helper,协助 GR Restarter完成 GR流程。

目前 H3C有两种方式实现 OSPF GR技术:

  • 一种是基于 IETF标准,Restarter通过向 Helper发送一种称为 Grace LSA(Link state advertisement,链路状态信息公告)的 9类 Opaque LSA来控制 GR的交互过程。

  • 另外一种是非 IETF标准,Restarter与 Helper之间是通过相互发送携带 LLS(Link local signaling,本地链路信令)与 OOB(Out-of-band LSDB Resynchronization,带外的链路状 态信息库重新同步)扩展信息的 OSPF报文来完成 GR的交互过程。

说明:GR Restarter上只能配置 IETF标准与非 IETF标准其中的一种能力,两种方式是互斥的。

IETF标准OSPF GR实现机制

对 OSPF协议做了如下扩展:增加一种 9类 Opaque LSA――Grace LSA,用以在 GR Restarter 重启时,通知周边邻居进入** GR Helper**流程。

Grace LSA

Grace LSA格式如图 1所示。

图1 Grace LSA格式

OSPF GR(Graceful Restart,平滑重启)技术

其中,几个主要的 TLV 的含义如下:

  • Grace Period TLV:Type 取值为 1,长度为 4字节,表示邻居设备进入 GR Helper处理流程 的最长保持时间。如果超过这段时间 GR Restarter还没有完成 GR处理流程,则周边邻居不 再担任 GR Helper角色。该 TLV 是 Grace LSA必须携带的。

  • Graceful Restart Reason TLV:Type 取值为 2,长度为 1字节,告知邻居设备 GR Restarter 的重启原因。Value取值为0表示原因未知,取值为1表示软件重启,取值为2表示软件重新 加载(升级),取值为 3表示 GR Restarter进行主备倒换。Grace LSA中必须携带该 TLV。

  • IP Interface Address TLV:Type 取值为 3,长度为 4字节,用来告知发送 Grace LSA的接口 的 IP地址,在网络上需要用该 IP地址来唯一标识一台重启设备。

IETF标准 OSPF GR运行过程

图 2所示,假设 Router A和 Router B原来有稳定的OSPF邻居关系,并且 Router A使能了 GR 能力,此时 Router A重启,将按照以下的流程进行路由信息交互:

1.Router A重启之后向 Router B发送 Grace LSA。

2.Router B收到 Router A发出的 Grace LSA后,会维持与 Router A的邻居关系不变。

3.Router A与 Router B进行 Hello报文与 DD(Database Description,链路状态信息库描述) 报文交互和 LSDB同步。由于 GR 过程中不能生成 LSA,所以在 LSDB同步过程中,如果 Router A从 Router B收到自己产生的 LSA,直接存储下来并置上 Stale标志。

4.完成 LSDB的同步之后,Router A发送 Grace LSA(Grace Period TLV的 Type值为 0)通 知 Router B结束 GR 流程。Router A进入正常 OSPF流程,然后 Router A重新生成 LSA, 并删除那些置了 Stale标志而又没有被重新生成的 LSA。

5.Router A在恢复所有路由信息后重新进行路由计算,重新刷新 FIB表。

图2 IETF标准 OSPF GR运行示意图

OSPF GR(Graceful Restart,平滑重启)技术

非IETF标准OSPF GR实现机制

IETF标准的OSPF GR相比,非IETF标准GR主要是通过下面两个能力扩展来支持OSPF GR:

  • Link-Local Signaling:OSPF本地链路通告扩展,用来标识当前路由器和其他路由器进行一 些可选信息的通信。

  • Out-of-band LSDB Resynchronization:带外的 LSDB重新同步,完成无邻接关系变化的 LSDB重新同步。

LLS能力扩展

在OSPF的Hello报文和DD报文的尾部增加了LLS Data。同时对Hello报文和 DD报文的Option字段进行扩展,以标识是否携带LLS。扩展后的Option字段如图 3 所示,如果L位置1表示携带了LLS Data。

图3 Option字段

OSPF GR(Graceful Restart,平滑重启)技术

经过扩展后的报文格式如图 4所示。

图4 LLS扩展后的 OSPF 报文格式图

OSPF GR(Graceful Restart,平滑重启)技术

LLS Data的具体的格式如图 5所示。

图5 LLS Data字段

OSPF GR(Graceful Restart,平滑重启)技术

LLS Data中的 TLV 可以用于进行不同的 OSPF扩展。例如为支持 GR,使用了类型为 1的 TLV, 即 Extended Option TLV(EO TLV)。下面我们讲一下 EO TLV 里两个重要字段:

  • LR字段:用以实现 OOB能力的协商,LR在 EO TLV 中的位置如 图 6所示。如果当前路由器 具备 OOB能力,则在发送 Hello和 DD报文时将 LR(LSDB Resynchronization)进行置位;否则不对 LR进行置位。

图6 EO TLV LR位说明图

OSPF GR(Graceful Restart,平滑重启)技术

RS字段:用以通知邻居当前路由器进入 GR流程,RS在 EO TLV 中的位置如图 7所示。当 路由器需要短暂离开网络时,可以通过将 Hello报文中的 RS(Restart Signal)置位来向周边 邻居通知自己需要进入 GR流程,这样周边邻居就会保持与此路由器的邻居关系不变;否则不 对 RS进行置位。

图7 EO TLV RS位说明图

OSPF GR(Graceful Restart,平滑重启)技术

OOB能力扩展

当路由器通过 LLS 完成 OOB 能力协商,确认双方都具备 OOB 能力后,则表示可以在邻居关系和 网络拓扑稳定时进行LSDB同步,即进入OOB流程。这时需要在向邻居发送的DD报文中将Option 字段中的 R进行置位,R在 Option字段中的位置如图 8所示。

图8 DD报文

OSPF GR(Graceful Restart,平滑重启)技术

非 IETF标准 OSPF GR运行过程

图 9所示,假设 Router A和 Router B原来有稳定的 OSPF邻居关系,并且 Router A使能了 GR 能力,此时 Router A重启,将按照以下的流程进行路由信息交互:

1.Router A重启后向 Router B发送 LR和 RS都置位的 Hello报文,向 Router B通告自己只是 暂时断开马上就会恢复正常,并且自己具备 OOB能力;

Router B收到Hello报文后,也会向Router A回复一个LR仍保持置位但是RS位已经清除的 Hello报文,向 Router A通告自己已经知道它是要短暂离开,并且自己也具备 OOB能力;

2.Router A向 Router B发送 R置位的 DD报文,向 Router B发起 LSDB同步请求,在 LSDB 同步期间,Router B不会将 Router A从自己的邻居列表中删除,在自己生成的 Router LSA (Network LSA)中,与 Router A的邻居关系仍然为 Full。由于 GR 过程中不能生成 LSA, 所以在 LSDB同步过程中,如果 Router A从 Router B收到自己产生的 LSA,直接存储下来 并置上 Stale标志。

3.完成LSDB的同步之后,Router A结束GR流程,进入正常OSPF流程,然后Router A重新 生成 LSA,并删除那些置了 Stale标志而又没有被重新生成的 LSA。Router B在和 Router A 的邻居关系重新达到 Full状态后退出 GR流程,进入正常 OSPF流程。

4.Router A在恢复所有路由信息后重新进行路由计算,重新刷新 FIB表。

图9 非 IETR标准 GR 同步过程

OSPF GR(Graceful Restart,平滑重启)技术

典型组网应用

OSPF GR典型组网应用

组网图

图10 OSPF GR配置组网图

OSPF GR(Graceful Restart,平滑重启)技术

组网需求
  • Router A、Router B、Router C、Router D、Router E、Router F、Router G、Router H、 Router I、Router J、Router K、Router L运行 OSPF协议。

  • Router A、Router B与骨干网相连,属于骨干节点。

  • Router G、Router H、Router I、Router J、Router K、Router L是分支节点,通过核心节点 Router C、Router D、Router E与骨干节点相连,通过骨干节点连接到骨干网上。

  • 使用 GR保证网络中的骨干节点和核心节点在出现协议重启时的转发业务不中断,避免出现不 必要的路由振荡。

  • 骨干节点和核心节点作为 GR Restarter(同时缺省也作为 GR Helper),分支节点作为 GR Helper。这样当骨干节点发生主备切换或重启 OSPF进程时,核心节点可以作为 GR Helper 协助其进行 LSDB重同步,并且保持转发不中断;当核心节点发生主备切换或重启 OSPF进 程时,骨干节点和分支节点都可以作为 GR Helper协助其进行 LSDB重同步,并且保持转发不中断。

OSPF GR(Graceful Restart,平滑重启)技术

**,
**

OSPF GR(Graceful Restart,平滑重启)技术

OSPF GR(Graceful Restart,平滑重启)技术

瑞哥建了一个微信群,不在群的朋友,可以加瑞哥微信(备注单位+姓名)

进群前先转发本图文至朋友圈,添加后截图给瑞哥,立即拉群!

一个有态度的优质教程集聚地

帮助过上万位网友解决教程需求问题

教程仅用于学习交流,禁止用于商业交易©

猜您喜欢

往期精选▼

RIPng技术篇|必看

PPPoE(Point-to-Point Protocol over Ethernet)技术

OSPF GR(Graceful Restart,平滑重启)技术

努力学习,勤奋工作,让青春更加光彩

OSPF GR(Graceful Restart,平滑重启)技术

再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达

本文分享自微信公众号 - 网络技术联盟站(wljslmz)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这