01-系统维护与调试配置
本章节下载: 01-系统维护与调试配置 (228.62 KB)
目 录
通过使用ping功能,用户可以检查指定地址的设备是否可达,测试链路是否通畅。
Ping功能是基于ICMP(Internet Control Message Protocol,互联网控制消息协议)协议来实现的:源端向目的端发送ICMP回显请求(ECHO-REQUEST)报文后,根据是否收到目的端的ICMP回显应答(ECHO-REPLY)报文来判断目的端是否可达,对于可达的目的端,再根据发送报文个数、接收到响应报文个数以及ping过程报文的往返时间来判断链路的质量。
表1-1 Ping配置
操作 |
命令 |
说明 |
检查IP网络中的指定地址是否可达 |
ping [ ip ] [ -a source-ip | -c count | -f | -h ttl | -i interface-type interface-number | -m interval | -n | -p pad | -q | -r | -s packet-size | -t timeout | -tos tos | -v | -vpn-instance vpn-instance-name ] * host |
ping命令用于IPv4网络环境,ping ipv6命令用于IPv6网络环境 两条命令均可在任意视图下执行 |
ping ipv6 [ -a source-ipv6 | -c count | -m interval | -q | -s packet-size | -t timeout | -v | -vpn-instance vpn-instance-name ] * host [ -i interface-type interface-number ] |
如果网络传输速度较慢,用户在使用ping命令时,可以适当增大超时时间-t参数的值。
检查Device A与Device C之间是否路由可达,如果路由可达,需要了解Device A到Device C的路由细节。
图1-1 Ping应用组网图
# 使用ping命令查看Device A和Device C之间路由是否可达。
<DeviceA> ping 1.1.2.2
PING 1.1.2.2 (1.1.2.2): 56 data bytes
56 bytes from 1.1.2.2: icmp_seq=0 ttl=254 time=2.137 ms
56 bytes from 1.1.2.2: icmp_seq=1 ttl=254 time=2.051 ms
56 bytes from 1.1.2.2: icmp_seq=2 ttl=254 time=1.996 ms
56 bytes from 1.1.2.2: icmp_seq=3 ttl=254 time=1.963 ms
56 bytes from 1.1.2.2: icmp_seq=4 ttl=254 time=1.991 ms
--- 1.1.2.2 ping statistics ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.963/2.028/2.137/0.062 ms
以上显示信息表明Device A给Device C发送了5个ICMP报文,收到5个ICMP报文,没有报文丢失,路由可达。
# 了解Device A到Device C的路由细节。
<DeviceA> ping –r 1.1.2.2
PING 1.1.2.2 (1.1.2.2): 56 data bytes
56 bytes from 1.1.2.2: icmp_seq=0 ttl=254 time=4.685 ms
RR: 1.1.2.1
1.1.2.2
1.1.1.2
1.1.1.1
56 bytes from 1.1.2.2: icmp_seq=1 ttl=254 time=4.834 ms (same route)
56 bytes from 1.1.2.2: icmp_seq=2 ttl=254 time=4.770 ms (same route)
56 bytes from 1.1.2.2: icmp_seq=3 ttl=254 time=4.812 ms (same route)
56 bytes from 1.1.2.2: icmp_seq=4 ttl=254 time=4.704 ms (same route)
--- 1.1.2.2 ping statistics ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.685/4.761/4.834/0.058 ms
ping -r的原理如图1-1所示:
(1) 源端(Device A)发送RR选项(ICMP报文中的一个字段)为空的ICMP回显请求给目的端(Device C)。
(2) 中间设备(Device B)将自己出接口的IP地址(1.1.2.1)添加到ICMP回显请求报文的RR选项中,并转发该报文。
(3) 目的端收到请求报文后,发送ICMP回显响应报文,响应报文会拷贝请求报文的RR选项,并将自己出接口的IP地址(1.1.2.2)添加到RR选项中。
(4) 中间设备将自己出接口的IP地址(1.1.1.2)添加到RR选项中,并转发该报文。
(5) 源端收到ICMP回显响应报文,将自己入接口的IP地址(1.1.1.1)添加到RR选项中。最后得到,Device A到Device C具体路由为1.1.1.1 <-> {1.1.1.2; 1.1.2.1} <-> 1.1.2.2。
通过使用tracert功能,用户可以查看IP报文从源端到达目的端所经过的三层设备,从而检查网络连接是否可用。当网络出现故障时,用户可以使用该功能分析出现故障的网络节点。
图1-2 Tracert原理示意图
Tracert功能也是基于ICMP协议来实现的,如图1-2所示,Tracert功能的原理为:
(1) 源端(Device A)向目的端(Device D)发送一个IP数据报文,TTL值为1,报文的UDP端口号是目的端的任何一个应用程序都不可能使用的端口号;
(2) 第一跳(即该报文所到达的第一个三层设备,Device B)回应一个TTL超时的ICMP错误消息(该报文中含有第一跳的IP地址1.1.1.2),这样源端就得到了第一个三层设备的地址(1.1.1.2);
(3) 源端重新向目的端发送一个IP数据报文,TTL值为2;
(4) 第二跳(Device C)回应一个TTL超时的ICMP错误消息,这样源端就得到了第二个三层设备的地址(1.1.2.2);
(5) 以上过程不断进行,直到该报文到达目的端,因目的端没有应用程序使用该UDP端口,目的端返回一个端口不可达的ICMP错误消息(携带了目的端的IP地址1.1.3.2);
(6) 当源端收到这个端口不可达的ICMP错误消息后,就知道报文已经到达了目的端,从而得到数据报文从源端到目的端所经历的路径(1.1.1.2;1.1.2.2;1.1.3.2)。
IPv4网络环境:
· 需要在中间设备(源端与目的端之间的设备)上开启ICMP超时报文发送功能。如果中间设备是H3C设备,需要在设备上执行ip ttl-expires enable命令(该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IP性能优化”)。
· 需要在目的端开启ICMP目的不可达报文发送功能。如果目的端是H3C设备,需要在设备上执行ip unreachables enable命令(该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IP性能优化”)。
IPv6网络环境:
· 需要在中间设备(源端与目的端之间的设备)上开启设备的ICMPv6超时报文的发送功能。如果中间设备是H3C设备,需要在设备上执行ipv6 hoplimit-expires enable命令(该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IPv6基础”)。
· 需要在目的端开启设备的ICMPv6目的不可达报文的发送功能。如果目的端是H3C设备,需要在设备上执行ipv6 unreachables enable命令(该命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IPv6基础”)。
表1-2 Tracert配置
操作 |
命令 |
说明 |
查看源端到目的端的路由 |
tracert [ -a source-ip | -f first-ttl | -m max-ttl | -p port | -q packet-number | -vpn-instance vpn-instance-name | -w timeout ] * host |
tracert命令用于IPv4网络环境,tracert ipv6命令用于IPv6网络环境 两条命令均可在任意视图下执行 |
tracert ipv6 [ -f first-hop | -m max-hops | -p port | -q packet-number | -vpn-instance vpn-instance-name | -w timeout ] * host |
Device A使用Telnet登录Device C失败,现需要确认Device A与Device C之间是否路由可达,如果路由不可达,需要确定故障的网络节点。
图1-3 Tracert应用组网图
(1) 使用ping命令查看Device A和Device C之间路由是否可达。
<DeviceA> ping 1.1.2.2
PING 1.1.2.2 (1.1.2.2): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
ping: sendto: No route to host
ping: sendto: No route to host
ping: sendto: No route to host
--- 1.1.2.2 ping statistics ---
5 packet(s) transmitted, 0 packet(s) received, 100.0% packet loss
(2) 路由不可达,使用tracert命令确定故障的网络节点。
# 在Device B上开启ICMP超时报文发送功能。
<DeviceB> system-view
[DeviceB] ip ttl-expires enable
# 在Device C上开启ICMP目的不可达报文发送功能。
<DeviceC> system-view
[DeviceC] ip unreachables enable
# 在Device A上使用tracert命令确定故障的网络节点。
<DeviceA> tracert 1.1.2.2
Traceroute to 1.1.2.2(1.1.2.2), 30 hops at most, 40 bytes each packet, press CTRL_C to break
1 1.1.1.2 14 ms 10 ms 20 ms
2 * * *
3 * * *
4 * * *
5
<DeviceA>
从上面结果可以看出,Device A和Device C之间路由不可达,Device A和Device B之间路由可达,Device B和Device C之间的连接出了问题。此时可以在Device A和Device C上使用debugging ip icmp命令打开ICMP报文的调试开关,查看设备有没有收发指定的ICMP报文。或者使用display ip routing-table查看有没有到对端的路由。
设备提供了种类丰富的调试功能。设备支持的大部分功能模块,系统都提供了相应的调试信息,帮助用户对错误进行诊断和定位。
调试信息的输出可以由两个开关控制:
· 模块调试开关,控制是否生成某模块的调试信息。
· 屏幕输出开关,控制是否在某个用户屏幕上显示调试信息。屏幕输出开关可以使用terminal monitor和terminal logging level命令打开,terminal monitor和terminal logging level命令的详细介绍请参见“网络管理与监控命令参考”中的“信息中心”。
如图1-4所示:假设设备可以为1、2、3三个模块提供调试信息,用户只有将两个开关都打开,调试信息才会在终端显示出来。
在控制台上显示是最常用的调试信息输出方式,用户还可以将调试信息发送到别的输出方向,具体配置请参见“网络管理与监控配置指导”中的“信息中心”。
操作 |
命令 |
说明 |
打开指定模块的调试开关 |
debugging { all [ timeout time ] | module-name [ option ] } |
缺省情况下,所有模块的调试开关均处于关闭状态 该命令在用户视图下执行 |
(可选)显示已经打开的调试开关 |
display debugging [ module-name ] |
该命令可在任意视图下执行 |
· debugging命令一般在维护人员进行网络故障诊断时使用。
· 由于调试信息的输出会影响系统的运行效率,所以建议在需要进行网络故障诊断时根据需要打开某个功能模块的调试开关,不要同时打开多个功能模块的调试开关。在调试结束后,建议使用undo debugging all命令关闭所有模块的调试开关。
进程是系统运行的基础单元。根据软件实现需要,一个进程可能包含多个线程,这些线程相互配合共同实现某个功能。通过查看进程/线程的监控信息,用户可以更好的了解系统的实时运行状态;同时,当出现系统异常繁忙或者资源消耗异常等故障时,监控信息可以帮助用户确认出现故障的功能点,以便尽快进行功能的恢复。
使用本功能,可以:
· 根据设备和进程的状态控制一个进程;
· 查看当前系统是否繁忙;
· 查看当前哪些进程为活跃状态或占用CPU较多;
· 当系统繁忙,CPU占有率高时,确认哪个进程为异常源;
· 查看进程的重启记录;
· 查看进程的内存使用情况。
表1-4 监控进程/线程
操作 |
命令 |
说明 |
控制一个进程,包括对进程进行启动、异常终止、停止和重启操作 |
process { crash | restart | shutdown | start } { name process-name [ slot slot-number | all ] | job job-id [ slot slot-number ] } |
该命令在用户视图下执行 |
监控进程/线程运行状态 |
monitor { process | thread } [ dumbtty ] [ iteration number ] [ slot slot-number ] |
该命令可在任意视图下执行 |
显示进程的状态信息 |
display process [ all | job job-id | name process-name ] [ slot slot-number ] |
该命令可在任意视图下执行 |
显示所有进程的CPU占有率信息 |
display process cpu [ slot slot-number ] |
该命令可在任意视图下执行 |
显示所有进程的日志信息 |
display process log [ slot slot-number ] |
该命令可在任意视图下执行 |
显示所有进程的代码段、数据段以及堆栈等的内存使用信息 |
display process memory [ slot slot-number ] |
该命令可在任意视图下执行 |
查看系统内存使用情况 |
display memory [ slot slot-number ] |
该命令可在任意视图下执行 |
查看进程堆内存的使用情况 |
display process memory heap job job-id [ verbose ] [ slot slot-number ] |
该命令可在任意视图下执行 |
查看指定大小已使用内存块的地址 |
display process memory heap job job-id size memory-size [ offset offset-size ] [ slot slot-number ] |
该命令可在任意视图下执行 |
查看从指定地址开始的内存空间的内容 |
display process memory heap job job-id address starting-address length memory-length [ slot slot-number ] |
该命令可在任意视图下执行 |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!