首页 > 其他分享 >OSPF故障定位没思路?照这篇抄就行

OSPF故障定位没思路?照这篇抄就行

时间:2023-06-28 11:32:04浏览次数:47  
标签:LSA 这篇 故障 冲突 IP地址 Router OSPF 路由

我的网工朋友大家好。

好久没聊OSPF技术了,相关基础且经典的内容,公众号陆陆续续分享过一些,趣味科普,面试考题,实验操作,都有涉及。


按照惯例,先给你整一波优质的往期内容:

《 5个超经典实验,老杨带你高效进阶OSPF 》

《 不懂OSPF,你就千万别点开这篇文章 》

图解OSPF,看这70张图已经足够(一)

图解OSPF,看这70张图已经足够(二)


今天主要想给你分享点OSPF故障的相关干货。

引起OSPF故障的原因很多,不同的问题会导致不同的故障,但你真的会排查吗?

怎么做OSPF故障定位,码住这6个实用案例


今日文章阅读福利:《OSPF网络设计解决方案》

作为网络基础,了解它是你入门精进的第一步。私信我,备注“方案”,前30名私信的小友即可获得此份OSPF经典读物。

如果想从0到1系统学习网络,也可以和我聊聊,告知学习意向,我会为你推荐最适合你学习网络的方式。


01 OSPF邻居关系无法建立定位


01 确认配置及底层情况是否能转发报文

  • 确认配置是否都正确。
  • 检查接口是否都UP。
  • 两台设备能否ping通?要求带源地址ping直连接口。
  • 两端设备MTU是否一致?


02 检查报文是否发送接收正常?

display ospf cumulative查看收包和发包数量:

OSPF故障定位没思路?照这篇抄就行_网络工程师


03 隐藏模式打开

隐藏模式打开enableospf-lsa-dbg后。

display ospfinterface <接口名>查看接口收包和发包数量(V3R3及以后的版本)。

OSPF故障定位没思路?照这篇抄就行_华为认证_02

如果长时间处于init,基本上是没有发出hello包或没有收到hello包。

如果长时间处于Exstart和Exchange状态,检查ping大包能否ping通?

DD报文一般会填满MTU,如1500能填到1492。


04 debug逐层排查

上述简单检查都OK的话,需要debug来逐层排查了。

如果一端处于Init状态,一端没有显示状态,在两端debughello报文:

<Quidway>debugging ospf packet hello

如果一端处于Exstart状态,一端处于Exchange状态,在两端debugdd报文:

<Quidway>debugging ospf packet dd

如果一端处于Loading状态,一端处于其它状态,在两端debugrequeset 和update报文。

<Quidway>debugging ospf packetrequest

<Quidway>debugging ospf packet update

除hello以外其他报文可能比较长,建议用brief看报文头部

debug ip packet acl IP报文比较多,建议使用acl过滤。


02 OSPF邻居振荡定位


01 邻居振荡日志,关注邻居状态下降的日志

查找日志文件,关键字:NBR_CHG_DOWN、NBR_CHG_E(V3R2)、NBR_CHANGE_E(V3R3)。

举例:

Aug 28 2010 10:27:32 RTA %%01OSPF/3/NBR_CHG_DOWN(l): Neighbor event:neighbor statechanged  to  Down. (ProcessId=1,NeighborAddress=11.11.11.2, NeighborEvent=KillNbr,  NeighborPreviousState=Full,  NeighborCurrentState=Down)

由于接口DOWN导致主动断开邻居。

Aug 28 2010 10:31:29 RTA %%01OSPF/3/NBR_CHG_DOWN(l): Neighbor event:neighbor statechanged  to   Down. (ProcessId=1,NeighborAddress=11.11.11.2,  NeighborEvent=InactivityTimer,NeighborPreviousState=Full,NeighborCurrentState=Down)

由于超时导致断开邻居。

Aug 28 2010 10:34:51 RTA %%01OSPF/6/NBR_CHANGE_E(l): Neighbor changes event: neighborstatus  changed. (ProcessId=1,NeighborAddress=11.11.11.2, NeighborEvent=1-Way,NeighborPreviousState=Full,  NeighborCurrentState=Init)

对端断开邻居后触发重建,在未收到本端Hello前发送1-way hello,导致本端触发1-way事件。

Aug 28 2010 10:38:52 RTA %%01OSPF/6/NBR_CHANGE_E(l): Neighbor changes event: neighborstatus changed. (Process ID=1, Neighbor address=11.11.11.2, Neighbor event=SeqNumberMismatch, Neighbor previous state=Full,Neighbor current state=ExStart)

对端断开邻居后触发重建,在收到本端Hello后发送dd报文,导致本端触发SeqNumberMismatch事件。


02 最常见的原因:超时断连

现网使用中,最常见的OSPF邻居振荡的原因是超时断连。

也就是说,OSPF在dead timer间隔内没有收到一个Hello报文,出现该情况有如下可能性:

1、有丢包现象,导致OSPF hello报文无法上送;

2、CPU高,导致路由任务无法获得调度,报文无法发送和接受。

因此,出现超时断连的现象,除了要查看日志、诊断日志外,还需要查看底层丢包计数。

另外,在现网中,经常有用户提出疑问,为什么只有邻居DOWN的日志,没有邻居UP的日志?

首先明确,邻居DOWN和UP都是记录日志的,但一般巡检或用户查看的时候都是displaylogbuffer查看。

Aug 28 2010 10:31:29 RTA %%01OSPF/3/NBR_CHG_DOWN(l):Neighbor event:neighbor state changed to Down. (ProcessId=1, NeighborAddress=11.11.11.2, NeighborEvent=InactivityTimer,NeighborPreviousState=Full, NeighborCurrentState=Down)

OSPF邻居Down的日志级别比较高是Error级别的,在logbuffer中记录。

Aug 28 2010 10:33:41 RTA %%01OSPF/6/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1,NeighborAddress=11.11.11.2, NeighborEvent=HelloReceived,NeighborPreviousState=Down, NeighborCurrentState=Init)

OSPF邻居状态改变日志级别是Info级别的,在日志中有记录,但不会记录在logbuffer中。

logbuffer中的日志并不是全部的日志,logbuffer设计的初衷就是使用户便于查看用户关注的信息。

在不对其配置的默认情况下,logbuffer中记录的使warning(4)级别 以及以上的日志信息。

可以使用该命令查看对logbuffer的设置情况。

<Quidway>display channel

…
channel number:4, channel name:logbuffer
MODU_ID NAME ENABLE LOG_LEVEL ENABLE TRAP_LEVEL ENABLE DEBUG_LEVEL 
ffff0000 default  Y      warning      N      debugging     N     debugging


03 OSPF Router ID冲突故障定位

现网中时常会出现OSPFRouter ID配置冲突的问题。

由于Router ID是标识OSPF设备的重要依据,一旦冲突会导致OSPF的LSA频繁的老化和产生,进而导致网络不稳定。


01 区域内Router id冲突判断方法

如下拓扑:

OSPF故障定位没思路?照这篇抄就行_HCIP_03

RTA、RTB和RTC、RTD在区域0建立OSPF邻居关系,RTA和RTC的router id都是1.1.1.1,发生了冲突。

判断方法:

1、在任意一台路由器上每隔一秒输入display ospf lsdb,查看是否有Router LSA的Age字段频繁变化,同时查看Sequence字段是否增加的很快。

OSPF故障定位没思路?照这篇抄就行_HCIE_04

上例中router id为1.1.1.1的Router LSA Age频繁变化,Sequenc增加得也很快。

每隔一秒在RTB上输入display ospf routing,可以看到有路由在振荡,如果区域内路由频繁振荡,在没有邻居振荡的情况下,可以判断为RouterID冲突。

OSPF故障定位没思路?照这篇抄就行_华为认证_05


02 区域间RouterID冲突判断方法

有如下拓扑:

OSPF故障定位没思路?照这篇抄就行_网络工程师_06

如上图所示,其中RTA和RTC的Router ID是冲突的,但RTA和RTC不在同一个区域。

判断方法:

在任意一台路由器上每隔一秒输入display ospf lsdb。

如果发现大量的AS External LSA频繁刷新,且都来自于某一台路由器,可以初步推测出不同区域的Router ID存在冲突。

OSPF故障定位没思路?照这篇抄就行_CCIE_07

总的来说,在现网中,RouterID配置冲突的现象时有发生。

如果掌握了一些常用的判断方法,可以比较方便的找到问题的原因,然后逐个排查,找出冲突的RouterID。

解决办法:

更改冲突的RouterID后通过reset ospf process可以修正该配置错误。(需要注意的是,reset ospf process会导致邻居重新建立,业务会有中断)。

示例:

OSPF故障定位没思路?照这篇抄就行_CCIE_08


04 OSPF 接口IP地址冲突故障定位

有如下拓扑:

OSPF故障定位没思路?照这篇抄就行_CCIE_09


01 DR与非DR冲突

RTA上IP地址为112.1.1.2的接口状态为DR,RTC上IP地址为112.1.1.2的接口状态不是DR,这两个接口的IP地址发生了冲突。

判断方法:

在RTC上每隔一秒输入display ospf lsdb,发现冲突网段的Network LSA的Age一直为3600或者偶尔没有这条LSA,而且Sequence字段增加很快。

OSPF故障定位没思路?照这篇抄就行_华为认证_10

在其他路由器上每隔一秒输入displayospf lsdb,发现冲突网段Network LSA的Age不断在3600和其他较小值之间切换,而且Sequence字段增加很快。


02 两个DR IP地址冲突

RTA上IP地址为112.1.1.2的接口状态为DR,RTC上IP地址为112.1.1.2的接口状态也为DR,这两个接口的IP地址发生了冲突。

判断方法:

在任一台路由器上每隔一秒输入displayospf lsdb。

会发现存在两个LinkState Id为112.1.1.2的Network LSA,并且这两个LSA的Age字段一直都很小,Sequence字段增加比较快。

OSPF故障定位没思路?照这篇抄就行_网络工程师_11

总的来说,在现网中,IP地址配置冲突的现象时有发生。

如果掌握了一些常用的判断方法,可以比较方便的找到问题的原因,然后逐个排查。

找出冲突的IP地址,更改冲突的IP地址后就可以修正该配置错误。


03 区域内IP地址冲突设备判断方法


一、DR与非DR冲突时:

首先根据这条振荡Network LSA(具体判断方法见上)的LinkStateID可以知道冲突的IP地址。

然后根据AdvRouter找到其中的一台设备进而定位出是哪个接口。

注意,与其冲突的设备只能够通过网络IP地址规划找到,很难通过OSPF自身携带的信息找到冲突设备。

如上例中,可以首先判断出冲突的IP地址为112.1.1.2。

其中一台冲突设备的Router ID为1.1.1.1,与其冲突的另外一台设备(3.3.3.3)无法通过OSPF自身携带的信息找到。


二、DR与DR冲突时:

可以根据这两个LinkState Id相同的Network LSA(具体判断方法见上)的LinkState Id和AdvRouter判断出是哪台设备的哪个接口IP地址冲突了。

如上例中,很容易定位出是RouterId为3.3.3.3和1.1.1.1的两台设备上存在IP地址冲突的接口。

然后在根据LinkState Id(112.1.1.2---冲突IP地址)很容易就找到对应的接口。


05 OSPF 链路接口频繁振荡故障定位


01 接口振荡

实际应用中,由于接口振荡导致CPU高的问题也经常出现,接口振荡,会导致Router LSA频繁产生。

按照协议RFC2328, Router LSA改变,会触发完全路由计算,频繁的路由计算导致CPU会一直比较高。

这类问题的排查还是需要从LSA着手。

存在如下拓扑:

OSPF故障定位没思路?照这篇抄就行_HCIP_12

Router-A和Router-B建立OSPF邻居关系。

Router-B上一个接口2.2.2.2/24在OSPF中使能,并频繁up/down,在Router-A和Router-B上都会进行频繁路由计算,导致CPU高。

判断方法:

一、在任意一台设备上每隔一秒输入display ospf lsdb。

查看是否存在Age一直很小的Router LSA,而且Sequence number增加很快:

OSPF故障定位没思路?照这篇抄就行_CCIE_13

二、在任意一台设备上输入display ospf brief。

查看完全路由计算的次数增长是否很快:

OSPF故障定位没思路?照这篇抄就行_华为认证_14

如果存在上述两种情况都符合,在结合日志,可以快速找到频繁振荡的接口。


02 LSA振荡

LSA振荡导致OSPF路由频繁计算,导致CPU高的场景排查起来比较困难,需要找到该LSA的发布路由器,然后再从源头控制这些振荡的LSA,排查如下:

一、输入display iprouting-table verbose命令。

找到频繁振荡的路由:

OSPF故障定位没思路?照这篇抄就行_华为认证_15

如上表所示,如果该路由频繁振荡,其Age值很小,基本上是秒级的。

二、输入displayospf lsdb命令。

查看该LSA的产生源。

OSPF故障定位没思路?照这篇抄就行_HCIP_16

如上表所示,找到该LSA的产生源是Router id为2.2.2.2的设备,需要登录到这台设备上查看频繁产生该LSA的具体原因。

总的来说,由于OSPF路由计算导致CPU高的问题,排查方法重要是查看LSA的变化,根据LSA的变化找到导致振荡的原因,最终解决问题。


06 OSPF无法计算路由故障定位


01 故障概述

PE-CE间,OSPF与BGP间路由相互学习和发布,有可能导致路由环路问题。

OSPF VPN特性专门针对这种情况提供了解决方案。

OSPF故障定位没思路?照这篇抄就行_HCIP_17

一、VPN场景中PE通过引入私网BGP路由通过OSPF向CE发布。

如图所示,PE1和PE2将BGP发送过来的远端路由10.1.1.1/32通过OSPF发布给CE1。

CE1产生了目的地址为10.1.1.1/32的路由,下一跳分别指向PE1和PE2。

二、PE1收到了PE2发布的路由,产生了一条10.1.1.1/32的OSPF路由,下一跳指向CE1。

三、同理PE2收到了PE1发布的路由,也产生一条10.1.1.1/32的OSPF路由,下一跳指向CE1。

四、如上过程所描述的,到达目的地址10.1.1.1/32的路由,CE1-->PE1,PE2-->CE1,一个环路就产生了。

五、由于OSPF路由的优先级高于BGP路由,所以PE1和PE2上的BGP路由会被OSPF路由所替代。

没有了BGP路由,PE1和PE2也不会在向CE1发布路由。同时PE1和PE2也学不到对方发布的路由,刚才产生的OSPF路由也被撤消了。

此时没有了OSPF路由,BGP路由又被优选了。又开始重复刚才的循环。这会导致路由震荡。

为此,OSPF使用DN-Bit和Router-tag防止环路:

OSPF故障定位没思路?照这篇抄就行_网络工程师_18


02 DN-Bit抑制

OSPF故障定位没思路?照这篇抄就行_CCIE_19

如上图所示,PE1和MCE设备都绑定了VPN,属于私网进程,在PE1上引入BGP路由,产生了LSA,但MCE设备上却没有计算出来路由。

判断方法如下:

一、在MCE上输入display ospf lsdb ase<Link id>查看该LSA是否带DN-Bit:

OSPF故障定位没思路?照这篇抄就行_HCIP_20

二、在MCE上输入displaycurrent-configuration configuration ospf查看OSPF进程是否绑定了VPN:

OSPF故障定位没思路?照这篇抄就行_HCIE_21

如果绑定了VPN,由于前面所述,由于DN-Bit的抑制,即使有LSA,路由也无法计算出来。

三、解决办法

如果该设备不承担PE角色,在MCE上输入vpn-instance-capabilitysimple即可取消环路检查。


03 Route Tag一致

OSPF故障定位没思路?照这篇抄就行_HCIP_22

同样如上图所示,PE1和MCE设备都绑定了VPN,属于私网进程。

在PE1上引入BGP路由,产生了LSA,但MCE设备上却没有计算出来路由。

判断方法如下:

一、在MCE上输入displayospf lsdb ase <Link id>查看该LSA的Route Tag值:

OSPF故障定位没思路?照这篇抄就行_HCIP_23

二、在MCE上输入displayospf brief命令查看OSPF本地Tag值是否和收到的LSATag值是否一致:

OSPF故障定位没思路?照这篇抄就行_华为认证_24

如果LSA的RouteTag和本地Tag一致,由于防止环路的需要,该LSA无法计算出路由。

三、解决办法

如果该设备不承担PE角色,在MCE上输入vpn-instance-capabilitysimple即可取消环路检查。

另外,更改本地Route Tag值,和LSA的Tag值不一致也可以解决该问题。


整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

标签:LSA,这篇,故障,冲突,IP地址,Router,OSPF,路由
From: https://blog.51cto.com/u_15281548/6570189

相关文章

  • 《深入理解Java虚拟机第3版》垃圾收集器与内存分配策略、虚拟机性能监控故障处理工具
    目录往期博客:Java课堂篇3_初识JMM、常量池简单理解(字符串常量池、静态常量池、大整型常量池)为什么要了解垃圾收集和内存分配?如何判断对象已死?引用计数算法可达性分析算法JDK1.2之后引用的扩充回收方法区垃圾收集算法分代收集理论标记清除标记复制标记整理对象分配虚拟机......
  • 看完这篇,你就了解了K8S的CKA认证考试的内容占比和具体考纲
    如果你正好想要了解关于Kubernetes(K8S)的CKA认证考试的内容占比和具体考纲,那么你来对地方了!本篇文章将详细解析CKA认证考试的内容占比以及具体考纲,让你对考试有一个清晰的了解。CKA(CertifiedKubernetesAdministrator)认证是云原生计算基金会(CNCF)推出的一项权威认证,目的......
  • 【服务器数据恢复】HP-Unix小机raid5故障导致上层LUN无法访问的数据恢复案例
    服务器数据恢复环境:一台服务器中有一组由数块SAS硬盘组建的RAID5阵列,阵列中有1块热备盘,上层部署OA以及Oracle数据库。服务器故障:该磁盘阵列中有2块硬盘出现故障先后离线,RAID5阵列瘫痪,上层LUN无法正常使用。经过检测发现硬盘无物理故障,无坏道。服务器数据恢复过程:1、将故障服务......
  • MSDT是Microsoft Diagnostic Tool的缩写,它是一种由微软开发的诊断工具。MSDT可以用于
    MSDT是MicrosoftDiagnosticTool的缩写,它是一种由微软开发的诊断工具。MSDT可以用于分析和修复Windows操作系统中的各种问题,包括硬件故障、网络连接问题、应用程序错误等。使用MSDT可以执行自动化的故障排除过程,它会根据用户提供的问题描述和系统日志进行诊断,并提供相应的解决方......
  • 当K8S发生故障时,可以从哪几个方面入手排查问题?
    当K8S发生故障时,往往需要迅速而精确地定位问题,并及时采取行动。那么,当遇到K8S故障时,应该从哪几个方面入手排查问题呢?本篇就来聊聊这个话题,让我们一起来探寻关键的排查方向。第一方面:审视集群状态K8S的集群状态是排查故障的关键起点。使用kubectlgetnodes命令来检查节点状态......
  • DNS 引起经典RAC故障
    DNS引起经典RAC故障作者:吴伟龙(PrudentWoo)一、环境介绍:这是一套四年前部署的RAC系统,之前运行一直很好,没有出过问题,平时基本处于无人管的状态。OS:RedhatEnterPriseLinux5.8x86_x64DB:OracleDatabaseEnterPrise 11.2.0.4GI:OracleGridInfrastructure11.2.0.4二、问题描述......
  • 线上故障的正确打开方式
    对技术同学来说,线上故障是一个绕不开的话题。一方面,线上故障会极大的影响个人的绩效和心态;另一方面,处理线上故障也是很好的提升解决问题能力的机会。因为线上故障的原因是多种多样的,会逼迫你去收集信息,从各种角度分析定位根因,然后想办法去优化解决。处理线上故障的过程,是一个......
  • 网络故障排查
    网络故障排查:1.网卡工具,服务器有多个网卡并且已经配置好运行当中,你却没记得eth0、eth1、eth2…分别对应的是哪个物理的网卡,此时可以使用如下命令:ethtooleth0此时就会看到eth0对应的物理口一个灯在不停的闪烁2.查看网卡状态ifconfigeth0UP(代表网卡开启状态)RUNNING(代表网卡的......
  • nvidia显卡故障记录
    问题一:描述重启后,显卡就找不到驱动,因为都采用了同一个型号显卡且安装了相同版本的驱动,故猜测可能是硬件问题排查过程lspci|grep-invidia可以看到pci号是01:00.0,通过此pci号,查看一下详细信息lspci-s01:00.0-vv通过图上的信息可以发现"!!!Unknownheadertype7......
  • OSPF /O E1/ O *E2/O IA路由
    O域内路由  OIA域间路由 OE1域外路由,会累加METRIC值(默认20)OE2域外路由,不累加METRIC值(默认20),由外部重分布进来默认使用OE2OE1和OE2都是自治系统外的路由,O*E2——默认自治系统外的路由。OE1和OE2的区别:它们代表的是外部路由1和外部路由2。OIA就是自治系统......