08、OSPF邻居震荡抑制

OSPF邻居震荡抑制

OSPF邻居震荡抑制功能是一种震荡抑制方式,通过延迟邻居建立或调整链路开销为最大值的方法达到抑制震荡的目的。

产生原因

如果承载OSPF业务的接口状态在Up和Down之间切换,就会引起邻居状态的频繁震荡。此时,OSPF会快速发送Hello报文重新建立邻居,同步数据库LSDB,触发路由计算,会造成大量报文交互,影响现有邻居的稳定性,对OSPF业务造成较大影响,同时也会影响依赖OSPF的其他业务(如:LDP、BGP)的正常运行。为了解决这个问题,OSPF实现了邻居震荡抑制功能,即在邻居频繁震荡时,启动震荡抑制,实现邻居延迟建立,或实现业务流量延迟经过频繁震荡的链路,达到抑制震荡的目的。

相关概念

flapping_event:震荡事件,接口上最后一次邻居状态由Full切换为ExStart或Down,称之为flapping_event。flapping_event作为震荡源输入,用来触发震荡检测机制启动工作。

flapping_count:当前震荡次数。

detect-interval:震荡检测间隔,用于判断是否触发一次有效震荡事件。

threshold:震荡抑制阈值,有效震荡事件触发累计大于等于该值时,进入震荡抑制阶段。

resume-interval:恢复间隔,连续两次有效震荡事件的时间间隔超过该值时,退出震荡抑制阶段。

实现原理

震荡检测

OSPF接口启动一个flapping_count计数器,相邻两次flapping_event产生时间的间隔在detect-interval之内,记为一次有效震荡事件。flapping_count计数加1,当flapping_count计数大于等于threshold时,系统判定震荡发生,需要进入震荡抑制阶段。进入震荡抑制阶段后,flapping_count清0。在flapping_count大于等于threshold之前,如果两次flapping_event的间隔大于等于resume-interval,则flapping_count清0。邻居震荡抑制从最后一次邻居状态变为ExStart或Down开始计时。

用户可以通过命令行配置detect-intervalthresholdresume-interval三个震荡检测的关键参数。

resume-interval必须大于detect-interval

震荡抑制

震荡抑制分为Hold-down和Hold-max-cost两种模式:

  • Hold-down模式:针对邻居建立过程中的频繁泛洪和拓扑变化的问题,在一段时间内禁止该邻居重新建立,避免频繁的数据库同步和大量的报文交互。
  • Hold-max-cost模式:针对用户业务流量频繁切换的问题,在一段时间内将链路开销值设置为最大值Max-cost(65535),避免用户的业务流量经过频繁震荡的链路。

Hold-down模式和Hold-max-cost模式可以叠加使用,同时生效时,先进入Hold-down模式,待Hold-down模式退出后,再进入Hold-max-cost模式。

缺省情况下,OSPF使能Hold-max-cost模式,用户可以通过命令行修改震荡抑制方案和震荡抑制周期。

接口进入震荡抑制阶段后,接口下的全部邻居都会进入震荡抑制阶段。

退出震荡抑制

退出震荡抑制有以下几种方式:

  • 抑制定时器超时。
  • 复位OSPF进程。
  • 重启OSPFv3邻居。
  • 用户通过命令行强制退出震荡抑制状态。

典型场景

基本场景

图1所示,正常的业务流量路径是Router A->Router B->Router C->Router E。链路故障时,业务流量路径切换为Router A->Router B->Router D->Router E。在主备路径切换初期,Router B和Router C之间很可能会发生邻居状态频繁震荡,导致Router A到Router E的用户流量在两条路径不断切换,并且每次故障引发的切换都会导致用户流量部分丢失,影响网络稳定性。此时,如果Router B和Router C之间邻居震荡满足抑制条件时,设备就会启动震荡抑制功能。

  • 采用Hold-down模式:在一段时间内禁止Router B和Router C建立邻居关系,达到将业务流量切换到Router A->Router B->Router D->Router E路径的目的。
  • 采用Hold-max-cost模式:在一段时间内将Router B和Router C之间的链路开销值设置为最大值Max-cost(65535),达到将业务流量切换到Router A->Router B->Router D->Router E路径的目的。
图1 基本场景的邻居震荡抑制

关键路径场景

网络中只有唯一的流量转发路径,转发路径上的任何邻居断开都会导致用户流量中断。如图2所示,唯一的业务流量路径是Router A->Router B->Router C->Router E,如果Router B和Router C之间发生邻居震荡,满足抑制条件,进入震荡抑制阶段。但是,Router B和Router C之间的链路是组网中的关键链路,一旦断开,整个网络将被分割为互不连通的两个网络。因此,关键路径场景不建议采用Hold-down模式断开邻居关系,推荐采用Hold-max-cost模式抑制震荡,在一段时间内将Router B和Router C间的链路开销值设置为最大值Max-cost(65535),进行震荡抑制。待网络稳定后,抑制定时器超时,自动退出抑制状态,迅速恢复业务链路。

  缺省情况下,OSPF使能Hold-max-cost模式。

图2 关键路径场景的邻居震荡抑制

广播网场景

图3所示,四台设备分别通过交换机接入到同一个广播网中,相互之间建立广播网邻居。此时,如果Router C因为链路原因一直处于震荡状态,并且Router A和Router B接入网络的时间不一致(例如,Router A更早一点),或者Router A和Router B的震荡检测参数配置不一致,导致的结果是,Router A先检测到Router C处于震荡状态,抑制了Router C,在Router A发布的Hello报文中就不会携带Router C的Router ID,但是,Router B无法检测到Router C处于震荡状态,仍然认为Router C为合法节点。在DR选举时,Router A识别到的参与DR选举的设备集合包括Router B和Router D,Router B识别到的参与DR选举的设备集合包括Router A、Router C和Router D。两者备选集合不相同,选举结果也会不一致,这样就会导致广播网中的设备对网络理解的差异,造成路由计算错误。因此,在广播网或P2MP、NBMA等一个接口下存在多个邻居的场景中,不能单独抑制某个邻居,需要对接口下的全部邻居都进行抑制,震荡检测也不能以某个邻居为单位进行检测,需要检测接口上最后一个邻居状态为ExStart或Down的震荡事件。也就是说,如果Router C震荡,广播网中的Router A、Router B和Router D都会被抑制,待网络稳定后,抑制定时器超时,自动退出抑制状态,Router A、Router B和Router D都会恢复到正常业务状态。

图3 广播网场景的邻居震荡抑制

多区域组网场景

图4所示,Router A、Router B、Router C、Router E和Router F通过Area 1连接,Router B、Router D和Router E通过骨干区域Area 0连接。Router A到Router F的正常的业务流量优先选取区域内路由,路径是Router A->Router B->Router C->Router E->Router F。当Router B和Router C之间发生邻居震荡,满足抑制条件,进入震荡抑制阶段时,缺省情况采用Hold-max-cost模式。但是,根据OSPF路由优选规则,区域内路由和区域间路由相互不会比较链路的开销值,区域内路由优先级大于区域间路由,也就是说,发生邻居震荡后,Router A到Router F的业务流量路径仍然是Router A->Router B->Router C->Router E->Router F,Hold-max-cost模式在此时无法达到抑制流量路径切换的目的。因此,多区域组网场景的邻居震荡抑制只能采用Hold-down模式,即在一段时间内禁止Router B和Router C建立邻居关系,达到将业务流量切换到Router A->Router B->Router D->Router E->Router F路径的目的。

缺省情况下,OSPF使能Hold-max-cost模式,用户可以通过命令行修改为Hold-down模式。

图4 多区域组网场景的邻居震荡抑制

IGP-LDP联动和邻居震荡抑制同时部署的场景

图5所示,PE1和P1之间链路发生故障时,LDP快速回切,导致新的LSP还没有完全建立时老的LSP就已经被拆除,为了避免引起业务中断,需要部署IGP-LDP联动。部署IGP-LDP联动特性后,设置新建立的邻居发布的链路开销值为最大值Max-cost(65535),避免IGP路由回切,等新的LSP建立完成后,再修改链路开销值为配置值,触发IGP路由回切,删除老的LSP,LDP业务流量切换到新建立的路径上。

IGP-LDP联动分为Hold-down模式和Hold-max-cost模式两种,邻居震荡抑制也分为Hold-down模式和Hold-max-cost模式两种。同时部署邻居震荡抑制和IGP-LDP联动时,优先生效Hold-down模式,次优生效Hold-max-cost模式,最后生效链路上配置的开销值。优先生效原则不以业务类型为条件,以最终生效的状态(Hold-down、Hold-max-cost、退出)为条件,详细情况请参考表1

表1 震荡抑制模式优先生效原则

IGP-LDP联动抑制模式/邻居震荡抑制模式

IGP-LDP联动抑制Hold-down模式

IGP-LDP联动抑制Hold-max-cost模式

退出IGP-LDP联动抑制

邻居震荡抑制Hold-down模式

Hold-down模式

Hold-down模式

Hold-down模式

邻居震荡抑制Hold-max-cost模式

Hold-down模式

Hold-max-cost模式

Hold-max-cost模式

退出邻居震荡抑制

Hold-down模式

Hold-max-cost模式

退出IGP-LDP联动和邻居震荡抑制

例如,如图5所示,PE1和P1之间发生频繁震荡。同时部署邻居震荡抑制和IGP-LDP联动,通过震荡抑制模式优先生效原则选取抑制模式,即在一段时间内禁止PE1和P1建立邻居关系或将PE1和P1之间的链路开销值设置为最大值Max-cost(65535),达到将业务流量切换到PE1->P4->P3->PE2路径的目的。

图5 IGP-LDP联动和邻居震荡抑制同时部署的场景

误码倒换和邻居震荡抑制同时部署的场景

误码倒换特性用于保护链路质量,当链路质量检测发现链路质量差,误码率高,就会上报误码事件,误码率高的链路上承载的用户业务会受到较大的影响,可能影响用户正常使用,因此需要将用户流量尽量调整到其他链路上。OSPF业务在收到误码事件后,会调整接口开销值为最大值Max-cost(65535),路由随即重新计算,重新选路,将业务流量切换到备选链路。误码倒换和邻居震荡抑制同时部署时,两种震荡抑制方式同时生效,优先生效Hold-down模式,次优生效Hold-max-cost模式,最后生效链路上配置的开销值。

posted @ 2024-04-15 15:54  博雅塔之客  阅读(16)  评论(0编辑  收藏  举报