常用路由器诊断命令和工具解析.docx
《常用路由器诊断命令和工具解析.docx》由会员分享,可在线阅读,更多相关《常用路由器诊断命令和工具解析.docx(24页珍藏版)》请在冰豆网上搜索。
![常用路由器诊断命令和工具解析.docx](https://file1.bdocx.com/fileroot1/2023-1/2/dafb1d6f-f3be-4935-94fb-8c518a97fff5/dafb1d6f-f3be-4935-94fb-8c518a97fff51.gif)
常用路由器诊断命令和工具解析
3 常用诊断命令和工具
介绍了NE80E/40E提供的故障处理手段,包括ping命令、tracert命令、display命令、debugging命令、reset命令和日志功能。
∙3.1ping命令
介绍了Ping的原理、功能以及使用ping命令解决故障的实例。
∙3.2tracert命令
介绍了Tracert的原理、功能以及使用tracert命令解决故障的实例。
∙3.3display命令
介绍了display命令的功能和使用方法,包括正则表达式在display命令中的应用。
∙3.4debugging命令
介绍了debugging命令的功能和使用方法、与display命令的配合关系。
∙3.5reset命令
介绍了reset命令的功能和使用方法。
∙3.6日志功能
介绍了NE80E/40E的日志功能。
3.1 ping命令
介绍了Ping的原理、功能以及使用ping命令解决故障的实例。
∙3.1.1原理
∙3.1.2功能
∙3.1.3ping命令介绍
∙3.1.4使用ping命令进行故障处理
3.1.1 原理
“ping”这个词源于声纳定位操作,指来自声纳设备的脉冲信号。
ping命令的作用类似于发出一个短促的雷达波,通过收集回波来判断目标。
即,源站点向目的站点发ICMPEchoRequest报文,目的站点收到后回送ICMPEchoReply报文,以此检测两个节点间在IP层的可达性,检测网络层是否连通。
3.1.2 功能
ping命令用于检查IP网络连接及主机是否可达。
3.1.3 ping命令介绍
NE80E/40E平台的ping命令
本节介绍NE80E/40E平台的ping命令中几个常用参数。
ping[-asource-ip-address|-ccount|-spacketsize|-ttimeout]*host
∙-asource-ip-address:
设置发送ICMPEchoRequest报文的源IP地址。
∙-ccount:
设置发送ICMPEchoRequest报文的次数,缺省值为5。
∙-spacketsize:
设置发送ICMPEchoRequest报文的长度(不包括IP和ICMP报文头),以字节为单位,缺省值为56。
∙-ttimeout:
设置ping报文的超时时间,缺省值为2000ms。
说明:
NE80E/40E实现多种应用环境下的ping功能,例如,对私网报文的ping、对VRRP虚拟路由器的ping、对LSP的ping、对IPv6的ping等等。
对这些功能的详细介绍请参考《NE80E/40E配置指南》。
例如,向主机110.1.1.1发出2个8100字节的ping报文。
ping-c2-s8100110.1.1.1
PING110.1.1.1:
8100databytes,pressCTRL_Ctobreak
Replyfrom110.1.1.1:
bytes=8100Sequence=0ttl=123time=538ms
Replyfrom110.1.1.1:
bytes=8100Sequence=1ttl=123time=730ms
---110.1.1.1pingstatistics---
2packetstransmitted
2packetsreceived
0.00%packetloss
round-tripmin/avg/max=538/634/730ms
Windows平台的ping命令
本节介绍Windows平台的ping命令中几个常用参数。
ping[-nnumber|-t|-lnumber]*host
∙-nnumber:
设置发送ICMPEchoRequest报文的次数,缺省值为5。
∙-t:
持续地ping,直到被人为中断,可以暂时中止ping命令并查看当前的统计结果,而则可以中断命令的执行。
∙-l:
设置ping报文所携带的数据部分的字节数。
例如,向主机110.2.1.1发出2个数据部分大小为3000字节的ping报文。
C:
\>ping-l3000-n2110.2.1.1
Pinging110.2.1.1with3000bytesofdata
Replyfrom110.2.1.1:
bytes=3000time=321msTTL=123
Replyfrom110.2.1.1:
bytes=3000time=297msTTL=123
Pingstatisticsfor110.2.1.1:
Packets:
Sent=2,Received=2,Lost=0(0%loss),
Approximateroundtriptimesinmilli-seconds:
Minimum=297ms,Maximum=321ms,Average=309ms
说明:
Windows平台ping命令其他参数的介绍请参考Windows在线帮助。
3.1.4 使用ping命令进行故障处理
案例一:
连通性问题还是性能问题
∙案例描述
工程师小L,在配置完一台路由器后执行ping命令检测链路是否通畅,发现5个报文都没有ping通。
检查双方的配置文件和路由表,没有找到错误原因。
重复执行了一遍相同的ping命令,这一次5个报文中有1个ping通了——原来是线路质量不好,存在比较严重的丢包。
小L又配置了一台路由器,执行ping命令访问Internet上某站点的IP地址,但没有ping通。
吸取上次教训,小L再一次ping了20个报文,仍旧没有响应。
小L断定是网络故障,但检查配置链路没有发现问题。
最后,小L采取逐段检测的方法对链路中的网关进行逐级测试,发现都可以ping通,但响应时间越来越长,最后一个网关的响应时间在1800ms左右。
会不会是由于超时而导致显示为ping不同呢?
小L将ping命令报文的超时时间改为4000ms,这次成功ping通了,所有报文响应时间都在2200ms左右。
∙建议和总结
真的是ping不通吗?
这个问题需要定位清楚,连通性问题和性能问题的关注点是不一样的,问题定位错误必然导致排错过程的周折。
ping命令缺省发送5个报文,超时时长是2000ms。
如果ping不通,建议用带参数-c和-t的ping命令再执行一遍,如:
ping-c20-t4000ip-address
即,连续发送20个报文,每个报文的超时时长为4000ms,这样就可以判断出到底是连通性问题还是性能问题。
案例二:
使用大包ping对端进行MTU不一致的故障处理
∙案例描述
一台使用NE80E/40E软件的NE路由器与其他厂商的路由器互连,并运行OSPF协议。
配置完毕后,一切正常,并在相当长的时间内运转稳定。
但两个月后,用户反馈网络中断。
∙采用以下方式对问题定位:
1.登录到两台路由器上,发现双方连接正常,可以相互ping通对端地址,但OSPF协议中断;
2.登录到NE路由器查看邻居状态,发现邻居状态机处于Exstart状态。
打开相应的调试开关查看报文信息,发现双方都可以收到Hello报文,但NE路由器发送DD报文后,一直没有收到对方回应的DD报文;
3.登录另一台路由器,打开相应的调试开关,发现对方收到NE路由器发送的DD报文后,发送了相应的DD报文进行回应。
因此,NE路由器没有收到对方发出的DD回应报文,但对方确实发出来了。
∙原因分析
4.双方能够接收到Hello报文,说明链路通畅,多播报文收发也没有问题。
5.推断可能是对方发送的DD报文有错误,导致NE路由器拒绝接受,但查看相应的信息,并没有报告接收到错误的DD报文。
6.仔细查看某厂商路由器的调试信息发现这个DD报文很大有2000多字节。
会不会是由于报文太大导致的问题呢?
试着ping了一个2000字节的报文,结果不通。
那么故障原因很可能是--由于双方的MTU不一致导致大包不通。
∙处理过程:
检查配置,发现对方路由器的MTU设置为4000多而NE路由器的MTU设置为1500,于是修改对端路由器的MTU为1500。
故障处理。
那么为什么工程初期没有问题呢?
这是因为前期DD报文长度小于1500字节,而后来网络扩容导致路由信息过多使DD报文的长度超过了1500字节。
∙建议和总结:
缺省情况下,ping命令发送的报文大小是56个字节,所以显示的ping通信息只是表示56字节的报文可以通而并不一定表示其他大小的报文仍旧可以通。
所以,应当善于使用ping的其他参数来进行故障处理。
案例三:
A能ping通B,B就一定能ping通A吗
∙现象描述
图3-1 ping案例组网图
在RouterA上配置一条指向100.2.2.2/16的静态路由。
[RouterA]iproute-static100.2.2.2255.255.0.0100.1.1.2
在RouterA上ping路由器RouterB的以太网接口地址100.2.2.2,可以ping通;但在RouterB上ping路由器RouterA的以太网接口地址100.3.3.3,却无法ping通。
∙原因分析
1.在RouterB上执行displayiprouting-table命令,发现没有到100.3.0.0/16的路由,所以RouterB上ping不通RouterA的以太网接口100.3.3.3。
2.但是为何在RouterA上可以ping通100.2.2.2呢?
同样是没有回程路由呀?
3.打开路由器上的IP报文调试开关,发现从RouterA上发出的ICMP报文的源地址填写的是100.1.1.1而不是100.3.3.3,由于两台路由器的POS接口处于同一网段,所以,响应报文可以顺利到达RouterA。
∙建议和总结
在不考虑防火墙前提下,A能够ping通B则B一定能够ping通A,这句话的对错取决于A和B是指主机还是指路由器。
4.如果是指两台主机,上面的描述就是正确的。
5.如果是指两台路由器,上面的描述就不应正确。
这是因为,路由器通常会有多个IP地址。
当从一台路由器上执行ping命令时,ICMPEcho报文的源地址选择哪一个呢?
实际情况是,路由器选择发出报文的接口的IP地址。
6.在考虑配置NAT的前提下,即使是两台主机,公网主机ping不通私网主机。
3.2 tracert命令
介绍了Tracert的原理、功能以及使用tracert命令解决故障的实例。
∙3.2.1原理
∙3.2.2功能
∙3.2.3tracert命令介绍
∙3.2.4使用tracert命令进行故障处理
3.2.1 原理
“tracert”的全称是traceroute,用于探测报文在源节点到目的节点之间所经过的路径。
tracert利用IP报文的TTL域每经过一个路由器转发后减一,当TTL=0时向源节点报告TTL超时这个特性实现。
1.首先发送一个TTL为1的UDP报文,因此第一跳发送回一个ICMP错误消息,明此数据报不能被发送;
2.之后再发送一个TTL为2的报文,在第二跳返回TTL超时,这个过程不断进行,直到到达目的地;
3.在目的地,由于数据报中使用了无效的端口号(缺省为33434),目的主机会返回一个ICMP目的地不可达消息,该tracert操作结束。
在上述过程中,tracert记录下每一个ICMPTTL超时消息的源地址,从而获得报文到达目的地所经过的网关的IP地址。
3.2.2 功能
tracert命令用于测试报文从发送主机到目的地所经过的网关,主要用于检查网络连接是否可达,以及初步定位网络发生故障的位置。
3.2.3 tracert命令介绍
NE80E/40E平台的tracert命令
本节介绍NE80E/40E平台的tracert命令中几个常用参数。
tracert[-asource-ip-address|-ffirst-TTL|-mmax-TTL|-pport|-qnqueries|-wtimeout]*host
∙-asource-ip-address:
设置tracert报文的IP地址。
∙-ffirst-TTL:
设置初始TTL。
∙-mmax-TTL:
设置最大TTL。
∙-pport:
设置的主机的端口号,一般无须更改此选项。
∙-qnqueries:
设置每次发送的探测数据包的个数。
∙-wtimeout:
设置报文的超时时间,单位是秒。
∙host:
目的主机的IP地址。
例如,查看去往目的主机100.1.1.1所经过的网关。
tracert100.1.1.1
tracerouteto100.1.1.1(100.1.1.1)30hopsmax,40bytespacket
1100.10.10.114ms5ms5ms
2100.10.2.3010ms5ms5ms
3100.10.3.2110ms5ms5ms
4100.20.1.17175ms160ms145ms
5110.1.27.32185ms210ms260ms
6100.1.1.1230ms185ms220ms
说明:
NE80E/40E实现多种应用环境下的tracert功能,例如,对私网地址的tracert、对LSP的tracert、对IPv6的tracert等等。
对这些功能的详细介绍请参考《NE80E/40E配置指南》。
Windows平台的tracert命令
在Windows平台上,tracert命令的格式如下:
tracert[-d|-hmax-TTL|-jhost-list|-wtimeout]*host
∙-d:
不解析主机名;
∙-hmax-TTL:
设置最大TTL。
∙-jhost-list:
设置松散源地址路由列表。
∙-wtimeout:
设置UDP报文的超时时间。
例如,查看去往目的主机100.1.1.1所经过的前两个网关。
C:
\>tracert-h2100.1.1.1
Tracingrouteto100.1.1.1overamaximumof2hops:
13ms2ms2ms100.10.10.1
25ms3ms2ms100.10.20.2
Tracecomplete.
3.2.4 使用tracert命令进行故障处理
案例一:
使用tracert命令定位不当的网络配置点
∙现象描述
图3-2 tracert命令定位故障组网图一
在图3-2中,RouterB和RouterC同属于一个运行RIPv2协议的网络,主机100.4.0.2访问数据库服务器100.5.0.2,用户反映访问速度慢。
∙相关信息显示
登录到RouterC,使用带参数的ping远端服务器100.5.0.2,显示如下:
ping-c10-s4000-t6000100.5.0.2
PING100.5.0.2:
4000databytes,pressCTRL_Ctobreak
Replyfrom100.5.0.2:
bytes=4000Sequence=0ttl=249time=552ms
Replyfrom100.5.0.2:
bytes=4000Sequence=1ttl=249time=5733ms
Replyfrom100.5.0.2:
bytes=4000Sequence=2ttl=249time=552ms
Replyfrom100.5.0.2:
bytes=4000Sequence=3ttl=249time=5714ms
Replyfrom100.5.0.2:
bytes=4000Sequence=4ttl=249time=552ms
Replyfrom100.5.0.2:
bytes=4000Sequence=5ttl=249time=5711ms
Replyfrom100.5.0.2:
bytes=4000Sequence=6ttl=249time=552ms
Replyfrom100.5.0.2:
bytes=4000Sequence=7ttl=249time=5709ms
Replyfrom100.5.0.2:
bytes=4000Sequence=8ttl=249time=552ms
Replyfrom100.5.0.2:
bytes=4000Sequence=9ttl=249time=5710ms
∙原因分析
1.上面的ping显示出一个规律:
偶数报文返回的时长是奇数报文的10倍还多。
初步推断,奇数报文和偶数报文采用了不同的路径传输。
2.使用tracert命令来追踪路径。
在RouterC上,tracert远端RouterA的以太网接口100.5.0.1。
tracert-q8100.5.0.1
tracerouteto100.5.0.1(100.5.0.1)30hopsmax,40bytespacket
1100.4.0.16ms4ms4ms4ms4ms4ms4ms4ms
......
5100.3.0.220ms16ms15ms16ms16ms16ms16ms16ms
6100.5.0.130ms278ms25ms279ms25ms278ms25ms277ms
从上面的显示可以看到,直至100.3.0.2,UDP探测报文的返回时长都基本一致,而到100.5.0.1时,则发生明显变化,出现奇数报文时长短,偶数报文时长长的现象。
据此判断,问题发生在RouterB和RouterA之间。
3.询问该段网络的管理员,得知RouterB和RouterA之间有一主一备两条串行链路,主链路带宽为155Mbit/s(POS2/0/0之间),备份链路为2Mbit/s(Serial3/0/0之间)。
两路由器间配置了如下的静态路由。
配置RouterB:
iproute-static100.5.0.0255.255.0.0100.1.0.2
iproute-static100.5.0.0255.255.0.0100.2.0.2
配置RouterA:
iproute-static0.0.0.00.0.0.0100.1.0.1
iproute-static0.0.0.00.0.0.0100.2.0.1
由于配置时没有指定静态路由的优先级,两条路由项的优先级都采用了缺省值60。
因此,两条路由同时出现在路由表中,实现的是负载分担,而不是备份。
∙处理过程
确定了故障原因后,有两种处理方法可以解决此问题:
4.继续使用静态路由,更改优先级
RouterB的主链路使用缺省优先级60,备份链路优先级改为100:
[RouterB]iproute-static100.5.0.0255.255.0.0100.1.0.2
[RouterB]iproute-static100.5.0.0255.255.0.0100.2.0.2100
RouterA进行类似更改:
[RouterA]iproute-static0.0.0.00.0.0.0100.1.0.1
[RouterA]iproute-static0.0.0.00.0.0.0100.2.0.1100
这样,只有当主链路发生故障时,备份链路的路由项才会出现在路由表中。
5.在两路由器上运行动态路由协议,如IS-IS、OSPF等,但不要运行RIP(因为RIP仅以hop作为Metric)
o建议和总结
本案例展示了如何通过ping命令和tracert命令的配合,定位网络问题的故障点。
在规模较大的网络中,维护人员可能无法沿路径逐个排查,这种情况下,迅速定位出发生问题的线路或路由器非常重要。
案例二:
使用tracert命令发现路由环路
∙现象描述
图3-3 tracert命令定位故障组网图二
如图3-3,三台路由器均配置静态路由,配置完成后,登录到RouterA上ping主机100.4.0.2,不能ping通。
∙相关信息显示
ping-c6-t5000100.4.0.2
PING100.4.0.2:
56databytes,pressCTRL_Ctobreak
Requesttimeout
Requesttimeout
Requesttimeout
Requesttimeout
Requesttimeout
Requesttimeout
tracert100.4.0.2
tracerouteto100.4.0.2(100.4.0.2)30hopsmax,40bytespacket
1100.1.0.17ms5ms5ms
2100.1.0.27ms6ms6ms
?
?
29100.1.0.125ms25ms16ms
30100.1.0.218ms17ms17ms
∙原因分析
从tracert命令的输出信息可以发现,RouterA和RouterB间产生了路由环路。
由于是配置的是静态路由,推断RouterA或RouterB的静态路由配置错误。
o检查RouterA的配置,配置的是缺省静态路由,没有错误:
iproute-static0.0.0.00.0.0.0100.1.0.1
o检查RouterB的配置,发现配置的到100.4.0.0网络的静态路由如下:
iproute-static100.4.0.0255.255.0.0100.1.0.2
o下一跳配置的是100.1.0.2,而不是100.3.0.1。
正是这一错误的配置导致了路由环路的产生。
∙处理过程
修改RouterB的配置:
[RouterB]undoiproute-static100.4.0.0255.255.0.0100.1.0.2
[RouterB]iproute-static100.4.0.0255.255.0.0100.3.0.1
∙建议和总结
使用tracert命令,很容易发现路由环路等问题。
当路由器A认为路由器B知道到达目的地的路径,而路由器B认为路由器A知道目的地时,路由环路就发生了。
使用ping命令只能知道接收