1、常用路由器诊断命令和工具解析3 常用诊断命令和工具介绍了NE80E/40E提供的故障处理手段,包括ping命令、tracert命令、display命令、debugging命令、reset命令和日志功能。 3.1 ping命令介绍了Ping的原理、功能以及使用ping命令解决故障的实例。 3.2 tracert命令介绍了Tracert的原理、功能以及使用tracert命令解决故障的实例。 3.3 display命令介绍了display命令的功能和使用方法,包括正则表达式在display命令中的应用。 3.4 debugging命令介绍了debugging命令的功能和使用方法、与display命令
2、的配合关系。 3.5 reset命令介绍了reset命令的功能和使用方法。 3.6 日志功能介绍了NE80E/40E的日志功能。 3.1 ping命令介绍了Ping的原理、功能以及使用ping命令解决故障的实例。 3.1.1 原理 3.1.2 功能 3.1.3 ping命令介绍 3.1.4 使用ping命令进行故障处理3.1.1 原理“ping”这个词源于声纳定位操作,指来自声纳设备的脉冲信号。ping命令的作用类似于发出一个短促的雷达波,通过收集回波来判断目标。即,源站点向目的站点发ICMP Echo Request报文,目的站点收到后回送ICMP Echo Reply报文,以此检测两个节点
3、间在IP层的可达性,检测网络层是否连通。3.1.2 功能ping命令用于检查IP网络连接及主机是否可达。3.1.3 ping命令介绍NE80E/40E平台的ping命令本节介绍NE80E/40E平台的ping命令中几个常用参数。ping -a source-ip-address | -c count | -s packetsize | -t timeout * host -a source-ip-address:设置发送ICMP Echo Request报文的源IP地址。 -c count:设置发送ICMP Echo Request报文的次数,缺省值为5。 -s packetsize:设置发送
4、ICMP Echo Request报文的长度(不包括IP和ICMP报文头),以字节为单位,缺省值为56。 -t timeout:设置ping报文的超时时间,缺省值为2000ms。说明: NE80E/40E实现多种应用环境下的ping功能,例如,对私网报文的ping、对VRRP虚拟路由器的ping、对LSP的ping、对IPv6的ping等等。对这些功能的详细介绍请参考NE80E/40E 配置指南。例如,向主机110.1.1.1发出2个8100字节的ping报文。 ping -c 2 -s 8100 110.1.1.1 PING 110.1.1.1: 8100 data bytes, press
5、 CTRL_C to break Reply from 110.1.1.1: bytes=8100 Sequence=0 ttl=123 time = 538 ms Reply from 110.1.1.1: bytes=8100 Sequence=1 ttl=123 time = 730 ms - 110.1.1.1 ping statistics - 2 packets transmitted 2 packets received 0.00% packet loss round-trip min/avg/max = 538/634/730 ms Windows平台的ping命令本节介绍Wi
6、ndows平台的ping命令中几个常用参数。ping -n number | -t | -l number * host -n number:设置发送ICMP Echo Request报文的次数,缺省值为5。 -t:持续地ping,直到被人为中断,可以暂时中止ping命令并查看当前的统计结果,而则可以中断命令的执行。 -l:设置ping报文所携带的数据部分的字节数。例如,向主机110.2.1.1发出2个数据部分大小为3000字节的ping报文。C: ping -l 3000 -n 2 110.2.1.1Pinging 110.2.1.1 with 3000 bytes of dataReply
7、 from 110.2.1.1: bytes=3000 time=321ms TTL=123Reply from 110.2.1.1: bytes=3000 time=297ms TTL=123Ping statistics for 110.2.1.1: Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: Minimum = 297ms, Maximum = 321ms, Average = 309ms说明: Windows平台ping命令其他参数的
8、介绍请参考Windows在线帮助。3.1.4 使用ping命令进行故障处理案例一:连通性问题还是性能问题 案例描述工程师小L,在配置完一台路由器后执行ping命令检测链路是否通畅,发现5个报文都没有ping通。检查双方的配置文件和路由表,没有找到错误原因。重复执行了一遍相同的ping命令,这一次5个报文中有1个ping通了原来是线路质量不好,存在比较严重的丢包。小L又配置了一台路由器,执行ping命令访问Internet上某站点的IP地址,但没有ping通。吸取上次教训,小L再一次ping了20个报文,仍旧没有响应。小L断定是网络故障,但检查配置链路没有发现问题。最后,小L采取逐段检测的方法对
9、链路中的网关进行逐级测试,发现都可以ping通,但响应时间越来越长,最后一个网关的响应时间在1800ms左右。会不会是由于超时而导致显示为ping不同呢?小L将ping命令报文的超时时间改为4000ms,这次成功ping通了,所有报文响应时间都在2200ms左右。 建议和总结真的是ping不通吗?这个问题需要定位清楚,连通性问题和性能问题的关注点是不一样的,问题定位错误必然导致排错过程的周折。ping命令缺省发送5个报文,超时时长是2000ms。如果ping不通,建议用带参数-c和-t的ping命令再执行一遍,如:ping -c 20 -t 4000 ip-address即,连续发送20个报文
10、,每个报文的超时时长为4000ms,这样就可以判断出到底是连通性问题还是性能问题。案例二:使用大包ping对端进行MTU不一致的故障处理 案例描述一台使用NE80E/40E软件的NE路由器与其他厂商的路由器互连,并运行OSPF协议。配置完毕后,一切正常,并在相当长的时间内运转稳定。但两个月后,用户反馈网络中断。 采用以下方式对问题定位:1. 登录到两台路由器上,发现双方连接正常,可以相互ping通对端地址,但OSPF协议中断;2. 登录到NE路由器查看邻居状态,发现邻居状态机处于Exstart状态。打开相应的调试开关查看报文信息,发现双方都可以收到Hello报文,但NE路由器发送DD报文后,一
11、直没有收到对方回应的DD报文;3. 登录另一台路由器,打开相应的调试开关,发现对方收到NE路由器发送的DD报文后,发送了相应的DD报文进行回应。因此,NE路由器没有收到对方发出的DD回应报文,但对方确实发出来了。 原因分析4. 双方能够接收到Hello报文,说明链路通畅,多播报文收发也没有问题。5. 推断可能是对方发送的DD报文有错误,导致NE路由器拒绝接受,但查看相应的信息,并没有报告接收到错误的DD报文。6. 仔细查看某厂商路由器的调试信息发现这个DD报文很大有2000多字节。会不会是由于报文太大导致的问题呢?试着ping了一个2000字节的报文,结果不通。那么故障原因很可能是由于双方的M
12、TU不一致导致大包不通。 处理过程:检查配置,发现对方路由器的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案
13、例组网图 在RouterA上配置一条指向100.2.2.2/16的静态路由。RouterA ip route-static 100.2.2.2 255.255.0.0 100.1.1.2在RouterA上ping路由器RouterB的以太网接口地址100.2.2.2,可以ping通;但在RouterB上ping路由器RouterA的以太网接口地址100.3.3.3,却无法ping通。 原因分析1. 在RouterB上执行display ip routing-table命令,发现没有到100.3.0.0/16的路由,所以RouterB上ping不通RouterA的以太网接口100.3.3.3。2
14、. 但是为何在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命令时,
15、ICMP Echo报文的源地址选择哪一个呢?实际情况是,路由器选择发出报文的接口的IP地址。6. 在考虑配置NAT的前提下,即使是两台主机,公网主机ping不通私网主机。3.2 tracert命令介绍了Tracert的原理、功能以及使用tracert命令解决故障的实例。 3.2.1 原理 3.2.2 功能 3.2.3 tracert命令介绍 3.2.4 使用tracert命令进行故障处理3.2.1 原理“tracert”的全称是trace route,用于探测报文在源节点到目的节点之间所经过的路径。tracert利用IP报文的TTL域每经过一个路由器转发后减一,当TTL0时向源节点报告TTL超
16、时这个特性实现。1. 首先发送一个TTL为1的UDP报文,因此第一跳发送回一个ICMP错误消息,明此数据报不能被发送;2. 之后再发送一个TTL为2的报文,在第二跳返回TTL超时,这个过程不断进行,直到到达目的地;3. 在目的地,由于数据报中使用了无效的端口号(缺省为33434),目的主机会返回一个ICMP目的地不可达消息,该tracert操作结束。在上述过程中,tracert记录下每一个ICMP TTL超时消息的源地址,从而获得报文到达目的地所经过的网关的IP地址。3.2.2 功能tracert命令用于测试报文从发送主机到目的地所经过的网关,主要用于检查网络连接是否可达,以及初步定位网络发生
17、故障的位置。3.2.3 tracert命令介绍NE80E/40E平台的tracert命令本节介绍NE80E/40E平台的tracert命令中几个常用参数。tracert -a source-ip-address | -f first-TTL | -m max-TTL | -p port | -q nqueries | -w timeout * host -a source-ip-address:设置tracert报文的IP地址。 -f first-TTL:设置初始TTL。 -m max-TTL:设置最大TTL。 -p port:设置的主机的端口号,一般无须更改此选项。 -q nqueries:
18、设置每次发送的探测数据包的个数。 -w timeout:设置报文的超时时间,单位是秒。 host:目的主机的IP地址。例如,查看去往目的主机100.1.1.1所经过的网关。 tracert 100.1.1.1 traceroute to 100.1.1.1(100.1.1.1) 30 hops max,40 bytes packet 1 100.10.10.1 1 4 ms 5 ms 5 ms 2 100.10.2.30 10 ms 5 ms 5 ms 3 100.10.3.21 10 ms 5 ms 5 ms 4 100.20.1.17 175 ms 160 ms 145 ms 5 110.
19、1.27.32 185 ms 210 ms 260 ms 6 100.1.1.1 230 ms 185 ms 220 ms说明: NE80E/40E实现多种应用环境下的tracert功能,例如,对私网地址的tracert、对LSP的tracert、对IPv6的tracert等等。对这些功能的详细介绍请参考NE80E/40E 配置指南。Windows平台的tracert命令在Windows平台上,tracert命令的格式如下:tracert -d | -h max-TTL | -j host-list | -w timeout * host -d:不解析主机名; -h max-TTL:设置最大T
20、TL。 -j host-list:设置松散源地址路由列表。 -w timeout:设置UDP报文的超时时间。例如,查看去往目的主机100.1.1.1所经过的前两个网关。C: tracert -h 2 100.1.1.1Tracing route to 100.1.1.1 over a maximum of 2 hops: 1 3 ms 2 ms 2 ms 100.10.10.1 2 5 ms 3 ms 2 ms 100.10.20.2Trace complete.3.2.4 使用tracert命令进行故障处理案例一:使用tracert命令定位不当的网络配置点 现象描述图3-2 tracert命
21、令定位故障组网图一 在图3-2中,RouterB和RouterC同属于一个运行RIPv2协议的网络,主机100.4.0.2访问数据库服务器100.5.0.2,用户反映访问速度慢。 相关信息显示登录到RouterC,使用带参数的ping远端服务器100.5.0.2,显示如下: ping -c 10 -s 4000 -t 6000 100.5.0.2 PING 100.5.0.2: 4000 data bytes, press CTRL_C to break Reply from 100.5.0.2: bytes=4000 Sequence=0 ttl=249 time = 552 ms Repl
22、y from 100.5.0.2: bytes=4000 Sequence=1 ttl=249 time = 5733 ms Reply from 100.5.0.2: bytes=4000 Sequence=2 ttl=249 time = 552 ms Reply from 100.5.0.2: bytes=4000 Sequence=3 ttl=249 time = 5714 ms Reply from 100.5.0.2: bytes=4000 Sequence=4 ttl=249 time = 552 ms Reply from 100.5.0.2: bytes=4000 Seque
23、nce=5 ttl=249 time = 5711 ms Reply from 100.5.0.2: bytes=4000 Sequence=6 ttl=249 time = 552 ms Reply from 100.5.0.2: bytes=4000 Sequence=7 ttl=249 time = 5709 ms Reply from 100.5.0.2: bytes=4000 Sequence=8 ttl=249 time = 552 ms Reply from 100.5.0.2: bytes=4000 Sequence=9 ttl=249 time = 5710 ms 原因分析1
24、. 上面的ping显示出一个规律:偶数报文返回的时长是奇数报文的10倍还多。初步推断,奇数报文和偶数报文采用了不同的路径传输。2. 使用tracert命令来追踪路径。在RouterC上,tracert远端RouterA的以太网接口100.5.0.1。 tracert -q 8 100.5.0.1 traceroute to 100.5.0.1(100.5.0.1) 30 hops max,40 bytes packet 1 100.4.0.1 6 ms 4 ms 4 ms 4 ms 4 ms 4 ms 4 ms 4 ms. 5 100.3.0.2 20 ms 16 ms 15 ms 16 ms
25、 16 ms 16 ms 16 ms 16 ms 6 100.5.0.1 30 ms 278 ms 25 ms 279 ms 25 ms 278 ms 25 ms 277 ms从上面的显示可以看到,直至100.3.0.2,UDP探测报文的返回时长都基本一致,而到100.5.0.1时,则发生明显变化,出现奇数报文时长短,偶数报文时长长的现象。据此判断,问题发生在RouterB和RouterA之间。3. 询问该段网络的管理员,得知RouterB和RouterA之间有一主一备两条串行链路,主链路带宽为155Mbit/s(POS2/0/0之间),备份链路为2Mbit/s(Serial3/0/0之间)。
26、两路由器间配置了如下的静态路由。配置RouterB:ip route-static 100.5.0.0 255.255.0.0 100.1.0.2ip route-static 100.5.0.0 255.255.0.0 100.2.0.2配置RouterA:ip route-static 0.0.0.0 0.0.0.0 100.1.0.1ip route-static 0.0.0.0 0.0.0.0 100.2.0.1由于配置时没有指定静态路由的优先级,两条路由项的优先级都采用了缺省值60。因此,两条路由同时出现在路由表中,实现的是负载分担,而不是备份。 处理过程确定了故障原因后,有两种处理
27、方法可以解决此问题:4. 继续使用静态路由,更改优先级RouterB的主链路使用缺省优先级60,备份链路优先级改为100:RouterB ip route-static 100.5.0.0 255.255.0.0 100.1.0.2RouterB ip route-static 100.5.0.0 255.255.0.0 100.2.0.2 100RouterA进行类似更改:RouterA ip route-static 0.0.0.0 0.0.0.0 100.1.0.1RouterA ip route-static 0.0.0.0 0.0.0.0 100.2.0.1 100这样,只有当主链路
28、发生故障时,备份链路的路由项才会出现在路由表中。5. 在两路由器上运行动态路由协议,如IS-IS、OSPF等,但不要运行RIP(因为RIP仅以hop作为Metric)o 建议和总结本案例展示了如何通过ping命令和tracert命令的配合,定位网络问题的故障点。在规模较大的网络中,维护人员可能无法沿路径逐个排查,这种情况下,迅速定位出发生问题的线路或路由器非常重要。案例二:使用tracert命令发现路由环路 现象描述图3-3 tracert命令定位故障组网图二 如图3-3,三台路由器均配置静态路由,配置完成后,登录到RouterA上ping主机100.4.0.2,不能ping通。 相关信息显示
29、 ping -c 6 -t 5000 100.4.0.2 PING 100.4.0.2: 56 data bytes, press CTRL_C to break Request time out Request time out Request time out Request time out Request time out Request time out tracert 100.4.0.2 traceroute to 100.4.0.2(100.4.0.2) 30 hops max,40 bytes packet 1 100.1.0.1 7 ms 5 ms 5 ms 2 100.1.
30、0.2 7 ms 6 ms 6 ms? 29 100.1.0.1 25 ms 25 ms 16 ms 30 100.1.0.2 18 ms 17 ms 17 ms 原因分析从tracert命令的输出信息可以发现,RouterA和RouterB间产生了路由环路。由于是配置的是静态路由,推断RouterA或RouterB的静态路由配置错误。o 检查RouterA的配置,配置的是缺省静态路由,没有错误:ip route-static 0.0.0.0 0.0.0.0 100.1.0.1o 检查RouterB的配置,发现配置的到100.4.0.0网络的静态路由如下:ip route-static 100
31、.4.0.0 255.255.0.0 100.1.0.2o 下一跳配置的是100.1.0.2,而不是100.3.0.1。正是这一错误的配置导致了路由环路的产生。 处理过程修改RouterB的配置:RouterB undo ip route-static 100.4.0.0 255.255.0.0 100.1.0.2RouterB ip route-static 100.4.0.0 255.255.0.0 100.3.0.1 建议和总结使用tracert命令,很容易发现路由环路等问题。当路由器A认为路由器B知道到达目的地的路径,而路由器B认为路由器A知道目的地时,路由环路就发生了。使用ping命令只能知道接收