概述:

为确保业务的连续性,要求网络系统能在发生故障时保证业务的不间断转发,实现网络的高可用性。GR (Graceful Restart) 平滑重启就是- -种在主备倒换或协议重启时实现业务不间断转发的技术。

正常情况下,由于分布式设备的控制与转发是分开的,主控板负责整个设备的控制与管理,包括协议运行和路由计算,而接口板则负责数据转发。设备在发生主备倒换或协议重启后,与其周边设备的邻居关系必定会断开,邻居关系断开直接会使路由重置(产生新的LSP,重新进行路由计算),路由表的更新直接会引起FIB表的变化,最终导致业务中断。

IETF 针对这种情况为IS-IS制定了GR规范(RFC3847),GR规范的基本思想是在设备倒换或协议重启时,通知其周边设备继续保持其邻接关系和路由信息。在该设备倒换或协议重启后,周边邻居帮助其恢复之前的链路状态数据库和路由表,并且周边邻居的链路状态数据库和路由表也会保持稳定状态,这样就避免了路由振荡,没有路
由振荡确保了设备的FIB表始终没有发生变化,从而确保业务转发不中断。

基本术语:

GR Restart:发生协议重启事件且具有GR能力的设备。
GR Helper:和GR Restart具有邻居关系,协助完成GR流程的设备。
GR Session:IS-IS 邻居建立时进行关于GR能力的协商,一-般把GR能力的协商过程称为GR Session。协商的内容包括双方是否都具备GR能力等。一旦GR能力协商通过,当协议重启时就可以进入GR流程。

这里需要注意的是,采用分布式架构的设备可以充当GR Restart 和GR Helper;而集中式设备只能充GR Helper,协助GR Restart完成GR流程。

IS-IS GR TLV:

Restart TLV是包含在IIH(IS-to-IS Hello PDUs)报文中的扩展部分,Type为211。支持IS-IS GR能力的设备的所有IIH报文都包含Restart TLV。Restart TLV中携带了协议重启的一些参数。其报文格式如下图所示:(OSPF中同9类LSA实现,但是ISIS是通过TVL字段实现)

字段解释如下:

IS-IS GR定时器:

IS-IS的GR能力扩展中,引入了三个定时器,分别是T1、T2和T3。

T1定时器:如果GR Restarter已发送RR置位的IIH报文,但直到T1定时器超时还没有收到GR Helper的包含Restart TLV且RA置位的IIH报文的确认消息时,会重置T1定时器并继续发送包含Restart TLV的IIH报文。当收到确认报文或者T1定时器已超时3次时,取消T1定时器。T1定时器缺省设置为3秒。使能了IS-IS GR特性的进程,在每个接口都会维护一个T1定时器。在Level-1-2路由器上,广播网接口为每个Level维护一个T1定时器。

T2定时器:GR Restarter从重启开始到本Level所有设备LSDB完成同步的时间。T2定时器是系统等待各层LSDB同步的最长时间,一般情况下为60秒。Level-1和Level-2的LSDB各维护一个T2定时器。

T3定时器:GR Restarter成功完成GR所允许的最大时间。T3定时器的初始值为65535秒,但在收到邻居回应的RA置位的IIH报文后,取值会变为各个IIH报文的Remaining time字段值中的最小者。T3定时器超时表示GR失败。

整个系统维护一个T3定时器。

IS-IS GR流程如下:


R1为GR Restarter,R2为GR Helper。R1与R2之间进行GR的详细过程如下:

  1. 当R1的IS-IS协议被重新全局使能时启动T2和T3定时器。当R1的接口重新UP并使能协议时,在接口上启动T1定时器,并且发送Hello报文。
  2. 当R2收到R1发出的Hello报文后,保持邻居R1的状态不变,立即发送一一个Hello报文。之后,R2发送CSNP报文和LSP报文给R1以协助其进行LSDB 同步。
  3. 当R1在接口上收到了Hello报文以及接收到全部CSNP报文后就可以取消T1定时器,否则就周期性地发送Hello报文,直到收到Hello报文以及全部CSNP报文或者T1定时器达到最大超时次数才取消该接口的T1定时器。
  4. 当LSDB同步完成之后,R1取消T2定时器。
  5. 当所有T2定时器都取消之后就可以取消T3定时器,GR流程结束,正式进入IS-IS的正常流程。此时需要在所有接口上启动IIH定时器,以后就周期性地发送正常的Hello报文。
  6. R1在恢复所有路由信息后重新进行路由计算,重新刷新FIB表。

整理资料来源:《HCIE路由交换学习指南》、华为hedex文档

IS-IS GR(优雅重启)过程相关推荐

  1. linux 优雅重启进程,apache2 重启、停止、优雅重启、优雅停止

    停止或者重新启动apache有两种发送信号的方法 第一种方法: 直接使用linux的kill命令向运行中的进程发送信号.你也许你会注意到你的系统里运行着很多httpd进程.但你不应该直接对它们中的任何 ...

  2. plsql developer无监听程序_无停机优雅重启 Go 程序

    什么是优雅重启 在不停机的情况下,就地部署一个应用程序的新版本或者修改其配置的能力已经成为现代软件系统的标配.这篇文章讨论优雅重启一个应用的不同方法,并且提供一个功能独立的案例来深挖实现细节.如果你不 ...

  3. exec go 重启_无停机优雅重启 Go 程序

    什么是优雅重启 在不停机的情况下,就地部署一个应用程序的新版本或者修改其配置的能力已经成为现代软件系统的标配.这篇文章讨论优雅重启一个应用的不同方法,并且提供一个功能独立的案例来深挖实现细节.如果你不 ...

  4. golang服务开发平滑升级之优雅重启

    女主宣言 本文章主要探讨golang服务器开发中在平滑升级过程中对优雅重启的使用与研究. PS:丰富的一线技术.多元化的表现形式,尽在"360云计算",点关注哦! 经典平滑升级方案 ...

  5. exec go 重启_[译]Golang中的优雅重启

    声明:本文目的仅仅作为个人mark,所以在翻译的过程中参杂了自己的思想甚至改变了部分内容,其中有下划线的文字为译者添加.但由于译者水平有限,所写文字或者代码可能会误导读者,如发现文章有问题,请尽快告知 ...

  6. golang 遍历list_golang服务开发平滑升级之优雅重启

    1 经典平滑升级方案 服务器开发运维中,平滑升级是一个老生常谈的话题.拿一个http server来说,最常见的方案就是在http server前面加挂一个lvs负载,通过健康检查接口决定负载的导入与 ...

  7. Spring Boot 1.X和2.X优雅重启实战

    项目在重新发布的过程中,如果有的请求时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求,等待未完成的请求执行完成,这样可以保证数据 ...

  8. gin 优雅重启或停止

    gin 优雅重启或停止 想要优雅地重启或停止你的Web服务器,使用下面的方法 我们可以使用fvbock/endless来替换默认的ListenAndServe,有关详细信息,请参阅问题#296 rou ...

  9. linux 重启_四步见证linux系统重启过程,小心操作,防止后悔!

    linux小白到大神的成长之路:四步见证linux系统重启过程,小心操作,防止后悔! 本经验由宗龙龙原创,全文共880多字,阅读需要14分钟! 记得上篇文章给大家讲述linux系统的重启与关机操作,但 ...

  10. beego 优雅重启

    前言 最近在写 go 的项目, http 用的 beego 框架. 因为 go 不想 php, 每次代码改动都需要重启服务, 所以代码发上线之后, 如何重启服务就成了一个问题. 如果强行重启的话, 不 ...

最新文章

  1. h5在线浏览word_怎样将PDF在线转换成Word?教你成为一个高手的方法
  2. Spring Boot Spring MVC 异常处理的N种方法
  3. MyBatis批量插入
  4. 03-cmake语法-变量,字符串
  5. 成功解决ValueError: fill value must be in categories
  6. 一个公式、五大指标帮你构建产品经理数据分析思维
  7. vb如何测试连接mysql_VB怎么连接访问Access数据库?
  8. JavaScript工具
  9. Sql Server参数化查询之where in和like实现之xml和DataTable传参
  10. 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器(及Windows 10无法找到SQL server配置管理器的解决方法)
  11. 收集表的使用与批量图片下载
  12. RS485电路设计原理图
  13. 【交通流理论拟合】-速度流量拟合
  14. 万物皆“数”:你最好学学微积分,它是上帝的语言
  15. python之小坑:IndentationError: expected an indented block
  16. es 修改mapping
  17. ALEXANDER WANG 北京旗舰店开业活动
  18. asp二进制mysql_asP 读取二进制数据库
  19. TypeScript——Web前端开发的救赎
  20. 去除ubuntu u盘只读的解决办法

热门文章

  1. 征稿通知 | 2019亚洲语言处理国际大会(IALP2019)开始征稿
  2. leetcode—20.二叉树构建相关题目leetcode总结
  3. leetcode—10.栈题型python解答
  4. Django中FBV和CBV
  5. 从零开始,讲解详细,贴近实际应用,全面掌握用友ERP财务管理
  6. 无意中最大的收获:《构建高性能Web站点》
  7. .Net软件设计新思维
  8. 19【14】DIEN:深度兴趣演化⽹络
  9. Scala:数据类型和变量
  10. 怎样调整input框背景颜色_还在用百度搜索PPT背景图?7个高大上的图片网站,个个都是高清免费无版权!...