第三章路由故障排除.docx
《第三章路由故障排除.docx》由会员分享,可在线阅读,更多相关《第三章路由故障排除.docx(32页珍藏版)》请在冰豆网上搜索。
第三章路由故障排除
第3章路由故障排除
本章介绍了分析IRMP、OSPF动态路由协议故障的基本思路、常用方法和使用命令等。
本章内容:
¾IRMP故障排除
¾OSPF故障排除
¾RIP故障排除
¾BGP故障排除
3.1IRMP故障排除
3.1.1IRMP故障排除基本思路
分析步骤一:
收集详细的网络拓扑信息。
动态路由协议运行在路由器与路由器之间,出现故障后,首先要定位故障所在,比如路由表中缺少哪些路由、哪些邻居等等。
分析步骤二:
确认交互路由的路由器之间链路是否相通。
动态路由协议运行在ip层之上,各个路由器之间要交互路由协议报文,首先链路层要保证相通。
分析步骤三:
定位出故障路由器,在此路由器上使用系统提供的show工具查看相关信息,比如IRMP的接口表,邻居表,拓扑表等等。
分析步骤四:
通过收集到的信息可以大概分析故障所在,然后可通过系统提供的dedug工具分析报文交互,查出具体原因。
3.1.2IRMP故障排除相关工具
迈普路由器提供了许多工具进行IRMP故障的查找,下面将分别介绍相关show工具和debug工具。
3.1.2.1show工具的使用与解释
shipirmp
interface
interface
查看启用IRMP特定接口信息。
查看所有启用IRMP接口信息
neighbor
ASnumber(1~65535)
查看特定自治系统的邻居表。
Detail
查看邻居表的详细信息
Interface
查看特定接口的接口表。
查看所有IRMP邻居表
topology
A.B.C.D
查看特定网段的拓扑表。
Active
查看处于active状态路由的拓扑表
Detail
查看拓扑表的详细信息,
Summary
统计路由表的条数
查看所有拓扑表的内容
traffic
ASnumber(1~65535)
查看特定自治系统IRMP报文发送、接收的统计信息
查看所有IRMP报文发送、接收的统计信息
下面举例介绍show工具的应用。
如图所示,RouterA的s0/0接口(21.1.1.1)与RouterB的s0/0(21.1.1.2)接口相连,链路层使用PPP协议相通,14.14.14.14为RouterB回环接口的ip地址.配置如下
RouterA
routerirmp19
network21.0.0.0
exit
RouterB
routerirmp19
network14.0.0.0
network21.0.0.0
exit
使用show工具在RouterB上可以收集到以下信息
接口表信息
命令:
showipirmpinterface
IP-IRMPinterfacesforprocess19
InterfaceLocaladdressPeersHello-IntervalHold-Time
loopback014.14.14.140515
serial0/021.1.1.11515
从接口表中可以看出,有两个接口l0、s0/0加入IRMP接口表,Localaddress表示接口的ip地址,其中点对点接口以对端ip(本例中,链路层为ppp,RouterA接口的ip地址为21.1.1.1)标识,pees表示在此接口上建立邻居的个数,其中0表示没有邻居。
Hello-Interval为发送hello包的间隔时间,Hold-Time为在此时间内如果没有收到对端的hello包,删除邻居的保持时间。
正常情况下,所有up的接口如果被network覆盖,此接口就应该被加入接口表.
拓扑表信息
命令:
showipirmptopology
IP-IRMPTopologyTableforprocess19
Codes:
P-passive,A-Active,U-Update,Q-Query,R-Reply,
r-Replystatus,H-Holddown
P21.1.0.0/16,1successors,FDis20512000
viaConnected,serial0/0
P14.14.14.14/32,1successors,FDis128256
viaConnected,loopback0
这是IRMP拓扑表信息,p表示路由为passive状态,“1successors”表示有一个下一跳,FD为此条路由的费用。
对于IRMP来说,路由的交互以拓扑表为准,是否学到路由要看拓扑表中是否有这条路由。
对于Cisco路由器的eigrp路由协议来说,如果路由中存在一条比eigrp更优的路由,eigrp路由在拓扑表中successors为“0”,即它不会加入核心路由表。
正常情况下,拓扑表包括网络覆盖的直连路由、重分发路由、从邻居路由器学习的路由。
邻居表信息
showipirmpneighbor
IP-IRMPneighborsforprocess19
HAddressInterfaceHoldUptimeSeq
(sec)Num
021.1.1.1serial0/01200:
07:
024
IRMP邻居表存储了所有与此路由器交互路由的邻居路由器,“Address”为邻居的ip地址,其中点对点接口以对端ip(本例中,链路层为ppp,RouterA接口的ip地址为21.1.1.1)标识,“Interface”为与邻居建立邻接的接口,“Hold”表示hold-time的剩余时间,如果这个值为0表示邻居马上就要被删除,每次收到hello包,hold-time定时器刷新;“Uptime”为邻居建立的时间;“Seq”为最近收到邻居发来的可靠报文的序号,如果这个值为“0”,说明虽然收到了对端的hello报文,但没有收到对端的update报文.。
协议信息
命令:
showipprotocolirmp
RoutingProtocolIRMP:
AS19
IRMPmetricweightK1=1,K2=0,K3=1,K4=0,K5=0
IRMPmaximumpath6
IRMPmaximummetricvariance1
IRMPActivetimer180s
RoutingforNetworks:
14.0.0.0
21.0.0.0
Incomingupdatefilterlistforallinterfacesisnotset
Outgoingupdatefilterlistforallinterfacesisnotset
Incomingroutesaddedmetricforallinterfaceisnotset
Outgoingroutesaddedmetricforallinterfaceisnotset
Distance:
internal90external170
在IRMP协议配置结束后,使用showipprotocolirmp命令查看配置的统计信息.有时,系统出现故障后,虽然shell上有相关配置信息,但是可能由于某些原因已经失去作用,所以可通过这个命令提供的信息进行分析,查看真正对协议起效的配置及约束条件.
IRMP报文统计信息
命令:
showipirmptraffic
IP-IRMPTrafficStatisticsforprocess19
Hellossent/received:
948/169
Updatessent/received:
62/43
Queriessent/received:
1/0
Repliessent/received:
0/40
ACKssent/received:
83/58
这个信息是IRMP协议五种报文的统计信息,通常在网络比较稳定的情况下,Queries与Replies报文的收发应该不是很大,如果发现统计的数据比较大时,说明网络不是很稳定,就应该查找导致网络不断动荡的原因,结合debug信息定位问题所在.
3.1.2.2debug工具的使用与解释
debugipirmpevents:
查看IRMP事件信息,比如发现一个新邻居,删除一个邻居,认证不成功等等。
debugipirmppacketshello:
查看IRMPhello报文的发送与接收
debugipirmppacketstersedetail:
查看除hello报文之外的其它IRMP报文
debugipirmproute:
查看IRMP路由信息的删除与添加以及状态的变化。
3.1.3IRMP常见故障处理
故障一:
接口不能加入IRMP接口表
可能的原因
判断方法和解决方案
1.接口处于down状态
使用showipirmpinterface命令查看接口表:
解决方案:
保证接口up
2.链路层如果是点对点协议(hdlc、ppp),两边ip地址相同。
查看接口表时,注意点对点接口以对端接口的ip地址标识自己;其它类型的接口以本端ip地址表示自己。
解决方案:
保证ip配置正确
3.Network配置不正确。
检查network配置是否正确。
对于有类网络可配置
自然网络号或者带反掩码的子网络号;对于超网必须带反掩码,否则接口不能加入接口表,IRMP报文将不会在这个接口收发
故障二:
接口加入接口表,但没有邻居。
可能的原因
判断方法和解决方案
1.链路上负载过重,收不到对端的hello报文
使用showipirmppackethello
2.认证信息的自治系统号、key值、或者密码不匹配。
如果认证信息不正确,可通过debugipirmpevents获取提示信息:
Receivepacketfrom21.1.1.2:
Invaidauthentication,opcode5
3.链路层协议不支持组播(x25、fra)
对于x25、fra这种非广播类型的网络,链路上不能走IRMP组播报文,所以不能建立邻居(因为hello包为组播报文)。
一种解决方法是在x25、fra的map映射配置中添加broadcast参数,一种是在IRMP配置模式下添加单播命令neighbor。
4.自治系统号错误
如果自治系统号配置有误,可通过debugipirmppackethello获取提示信息:
IRMP:
serial0/1receiveinvalidpacketfrom21.1.1.1:
ASnotmap。
5.对端接口或者本端接口被配置为被动接口。
如果希望在接口上建立邻居,接口就不能被设置为被动接口。
故障三:
路由表与拓扑表不一致
可能的原因
判断方法和解决方案
1.这种问题的出现属于软件原因,在Cisco路由器eigrp的老版本中经常出现。
当路由表中存在一条比较优的路由时,eigrp路由以0后继存在在拓扑表中,当比较优的路由删除后,eigrp路由不能正常加入核心路由表
判断方法
在Cisco路由器上showipeigrptopology,如果发现有路由的后继为0,而核心路由表中确实不存在这条路由,这说明路由器本身出了问题。
这种情况经常会出现在迈普路由器与Cisco路由器互联时,起初Cisco通过动态eigrp协议学习到迈普路由器的irmp路由,当迈普路由器用重分发的静态路由代替这些路由时,Cisco不能正常将重分发的外部路由替换到核心中。
解决方案
为避免Cisco的问题,迈普路由器添加了一条容错命令compatibleoldversion,将外部路由以内部路由的形式通告出去,避免Cisco路由器进行路由切换。
故障四:
本端有对端邻居但对端无本端邻居
可能的原因
判断方法和解决方案
1.线路问题:
本端可正常收发报文,另一端只发不收(对于IRMP协议来说,只要收到对端的hello包就将其加入邻居表,因此没有加入邻居表就说明没有收到hello报文)
1.可通过debugipirmppacketshello命令看hello报文的收发情况,
解决方案:
检测物理线路;
2.在迈普路由器与Cisco路由器互连时,对于点对点协议(ppp、hdlc),两端ip地址不在一个网段,迈普路由器可以建立邻居,Cisco路由器不可以
1.链路可以ping通,接口加入接口表,直连路由也加入拓扑表,但是showipirmpnei时发现”seq”的值始终为0,
2.配置单播命令系统提示IP-IRMP:
Notadd:
10.1.1.1isondifferentnetworkfromserial0/0
解决方案:
在迈普路由器之间互连没有问题,如果和Cisco路由器互联,必须保证两端ip在同一个网段;或者在Cisco路由器上使用ipunnumber.
故障五:
路由过滤不成功
可能的原因
判断方法和解决方案
对于IRMP协议来说,可以对收到的路由信息进行过滤,也可以对发出的路由信息进行过滤,如果过滤不成功,可能是相关配置错误。
1.访问列表配置错误
判断方法:
1.学习到了被拒绝的路由信息;
2.没有学习到被允许的路由信息;
解决方案:
检查访问列表是否配置正确,正确配置访问列表
2.引用访问列表配置出错:
distribute-list命令的in、out参数配置错误
判断方法:
1.学习到了被拒绝的路由信息;
2.没有学习到被允许的路由信息;
解决方案:
正确引用访问列表
3.1.4IRMP错误信息实例
3.1.4.1IRMP错误信息(以下只是信息的关键语句)及原因
信息
原因
信息1:
IRMP:
serial0/1receiveinvalidpacketfrom21.2.1.1:
ASnotmap
本端与对端的IRMP自治系统号不匹配。
信息2:
IRMP:
Adjacencytimerexpired,nbr129.255.30.111down
IRMP:
Nbr129.255.30.111deleted
在hold-down时间内收不到对端的hello报文,邻居被强行删除。
常常是由于线路负载过重、线路不畅引起,或者是hello发送间隔时间与hold-down时间设置不当引起,比如hold-down时间与hello间隔时间相差不大,通常情况下,hold-down=hello-interval*3.
信息3:
IRMP:
IgnoreunicastHellofromserial0/021.1.1.1
本端发送组播hello报文,对端发送单播hello报文,导致邻居不能建立。
信息4:
Receivepacketfrom21.1.1.1:
Invaidauthentication,opcode5
本端与对端的认证参数不一致,包括自治系统号、key值、密码。
1.解决:
配置自治系统号一致
2.解决:
把hold-down时间修改更大
3.解决:
两端都配置neighbor或都去掉neighbor
4.解决:
配置认证参数一致
注:
以上信息均由debugipirmpevents、debugipirmppackets命令打出,具体请参照配置手册相关章节
3.2OSPF故障排除
3.2.1OSPF故障排除基本思路
分析步骤一:
收集详细的网络拓扑信息。
动态路由协议运行在路由器与路由器之间,出现故障后,首先要定位故障所在,比如路由表中缺少哪些路由、哪些邻居等等。
分析步骤二:
确认交互路由的路由器之间链路是否相通。
动态路由协议运行在ip层之上,各个路由器之间要交互路由协议报文,首先链路层要保证相通。
分析步骤三:
定位出故障路由器,在此路由器上使用系统提供的show工具查看相关信息,比如OSPF的接口表,邻居表等等。
分析步骤四:
通过收集到的信息可以大概分析故障所在,然后可通过系统提供的dedug工具分析报文交互,查出具体原因。
基本上OSPF问题都是OSPF协商双方参数配置问题(在本章所讨论的OSPF故障排除问题,是建立在链路层协议UP前提下的)
3.2.2OSPF常见故障处理
故障一:
OSPF不能发现邻居
可能的原因
判断方法和解决方案
1.协商双方配置错误,期望的OSPF接口并没有加入到OSPF接口中
1.showipospfneighbor查看,长期没有发现相应的邻居。
2.通过showipospfinterface命令查看所期望的接口是否已加入OSPF。
3.核对OSPF相关配置:
networkA.B.C.D[Networknumber]A.B.C.D[OSPFwildcardbits注意此处为反掩码]areaArea_number
4.解决办法:
正确使用network命令
2.协商双方OSPF接口配置的认证参数不匹配
1.showipospfneighbor查看,长期没有发现相应的邻居。
2.打开debugipospfpackethello,打印类似以下的报错信息:
OSPFRECVArea0.0.0.0172.160.3.9->224.0.0.5:
OSPF:
badauthenticationkey;
3.核实OSPF协商双方接口的认证参数是否一致,是否是:
一边配置认证,另一边没有配置;一边为简单文本认证,另一边为MD5认证;两边配置的密钥不一致;
4.解决办法:
在接口配置模式下使用以下命令更改两端的OSPF认证配置一致:
ipospfauthentication-key
ipospfmessage-digest-key
3.协商双方接口OSPF网络模式不匹配
1.showipospfneighbor查看,长期没有发现相应的邻居。
2.OSPF网络模式不匹配可能造成不能发现邻居的问题,例如:
一端接口配置OSPF网络模式为NBMA,另一端为点对点,在此种情况下双方都不能发现邻居,因为如果网络模式不一样,则接口的hello时间间隔、邻居死亡时间间隔等参数有可能不一样,且可能出现接口不收OSPF多播报文的问题。
3.解决方法:
核对协商双方接口四种OSPF网络模式是否匹配:
ipospfnetworkbroadcast
ipospfnetworknon-broadcast
ipospfnetworkpoint-to-multipoint
ipospfnetworkpoint-to-point
注:
默认情况下
HDLC\SLIP\PPP为point-to-point模式
X25\FR\为non-broadcast模式
以太网则为broadcast模式
4.协商双方OSPF接口配置的hello报文时间间隔参数不匹配
1.showipospfneighbor查看,长期没有发现相应的邻居。
2.打开debugipospfpackethello,打印类似以下的报错信息:
OSPFRECVArea0.0.0.0172.160.3.4->224.0.0.5:
HELLO:
hellotimermismatch
3.使用showipospfinterface命令查看hello间隔是否一致:
Hello:
30Poll:
0Dead:
2:
00Retrans:
5,默认情况下:
点对点网络模式:
hello间隔10秒;
点对多点网络模式:
hello间隔30秒;
广播网络模式:
hello间隔10秒;
NBMA网络模式:
hello间隔30秒;
4.解决办法:
首先确保协商双方网络模式一致,不一致就先改成一致,此后如果hello间隔时间还是不一致,在接口配置模式下使用以下命令更改两端的hello报文时间间隔配置一致:
ipospfhello-interval
5.协商双方OSPF接口配置的邻居死亡时间间隔参数不匹配
1.showipospfneighbor查看,长期没有发现相应的邻居。
2.打开debugipospfpackethello,打印类似以下的报错信息:
OSPFRECVArea0.0.0.0172.160.3.4->224.0.0.5:
HELLO:
deadtimermismatch
3.使用showipospfinterface命令查看邻居死亡时间间隔是否一致:
Hello:
30Poll:
0Dead:
2:
00Retrans:
5,默认情况下:
点对点网络模式:
hello间隔40秒;
点对多点网络模式:
hello间隔120秒;
广播网络模式:
hello间隔40秒;
NBMA网络模式:
hello间隔120秒;
4.解决办法:
首先确保协商双方网络模式一致,不一致就先改成一致,此后如果邻居死亡时间间隔还是不一致,在接口配置模式下使用以下命令更改两端的邻居死亡时间间隔配置一致:
ipospfdead-interval
6.协商双方OSPF接口所在区域不一致
1.showipospfneighbor查看,长期没有发现相应的邻居。
2.打开debugipospfpackethello,打印类似以下的报错信息:
OSPFRECVArea0.0.0.0172.160.3.4->224.0.0.5:
HELLO:
areamismatch
3.使用showipospfinterface命令查看双方接口所在的区域是否一致:
(直接showrun检查配置也可以)
Interface:
172.160.3.9(serial0/0)Area1ProcessID:
65535
4.解决办法:
在接口配置模式下使用以下命令更改两区域配置一致:
使用networkA.B.C.D[Networknumber]A.B.C.D[OSPFwildcardbits注意此处为反掩码]areaArea-number命令重新配置接口所在的OSPF区域。
7.链路层为NBMA网络(如x25\FR)且没有为支持多播报文进行特别配置
1.showipospfneighbor查看,长期没有发现相应的邻居。
2.打开debugipospfpackethello,出现只发不收的情况。
3.查看链路层协议如果为X25或FR,而又在接口上配置OSPF网络模式为广播、点对点或点对多点网络,且没有为支持多播报文进行特别配置,则会有OSPF多播报文发不出去的情况出现。
如:
链路层协议为FR,OSPF网络模式为点到点,但其map映射没有配置为支持broadcast,由此,该接口不支多播。
4.解决办法:
配置FR、X25的map映射支持broadcast。
8.链路层为NBMA网络(如x25\FR),或者在其它链路层协议的接口上配置了ipospfnetworknon-broadcast命令,但OSPF中没有配置邻居
1.showipospfneighbor查