你们好,我的网工朋友。
Ping 是我们网络工程师排除设备访问故障 的常见方法,它使用Internet控制消息协议ICMP确定以下内容:
远程设备是否处于可访问状态。
访问远程设备时是否丢失报文。
本端与远程设备之间通信的往返延迟。
但是也常常听网工朋友在群里抱怨:咋又不通呢?
所以今天有空就总结 了一下网络Ping不通的一些常见故障和处理方法,希望能帮到你。
今日文章阅读福利:《 H3C经典Ping命令详解 》
连ping都没用好,更别说用别的命令了,你说是吧?
还不熟的朋友,看看这份命令详解,深入学习。私信我,发送暗号"ping",领取这份详解资料。
01 Ping命令格式
Ping命令的参数非常的丰富,用户可以依据检测目的、网络类型、当前网络状况等因素选择不同的参数。
ping [ ip ] [ -a source-ip-address | -c count | -d | { -f | ignore-mtu } | -h ttl-value | -nexthop nexthop-ip-address | -i interface-type interface-number | -m time | -n | -name | -p pattern | -q | -r | { -s packetsize | -range [ min min-size |max max-size | step step-size ] * } | -system-time | -t timeout | -tos tos-value | -v | -vpn-instance vpn-instance-name ] * host [ ip-forwarding ]
02 Ping不通介绍
01 故障分析
Ping不通 是指Ping报文在网络中传输,由于各种原因 (如链路故障、ARP学习失败等)而接收不到所有Ping应答报文的现象。
如果您需要了解Ping的原理
图1 Ping不通故障组网图
如图1所示,以一个Ping不通的尝试示例,介绍Ping不通故障的定位思路。
02 现象描述
SwitchA Ping不通SwitchD。
表1 Ping命令输出信息描述
|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 项目 | 描述 |
| 项目 | 查看所有接口的概要信息 |
| PING 192.168.3.11 | 对IP地址为192.168.3.11的目的主机进行Ping测试,检测目的主机是否可达。 |
| 56 data bytes | 发送的Echo Request报文的长度 |
| press CTRL_C to break | 在执行命令的过程中,执行Ctrl+C可终止Ping操作 |
| Request time out | 如果超时时间内没有收到响应报文,则显示"Request time out"。 |
| 192.168.3.11 ping statistics | 对目的主机进行Ping测试的统计结果,包括以下内容:1、packet(s) transmitted:2、发送的ICMP Echo Request报文数目。packet(s) received 3、接收到的ICMP Echo Reply报文数目。% packet loss:未响应报文数占发送报文总数的百分比。4、round-trip min/avg/max:响应时间的最小值、平均值、最大值,单位为毫秒(ms)。Ping失败的时候不会打印该信息。 |
03 故障定位
如图1所示,Ping操作涉及三个角色:
------源端:Ping报文发起端SwitchA
------中间设备:SwitchB和SwitchC
------目的端:Ping报文接收端SwitchD
当在源端SwitchA上直接Ping IP地址192.168.3.11不通时,直接判定故障出现的原因比较困难。
此时可以缩小故障范围,在SwitchA上分别Ping SwitchB、SwitchC、SwitchD,然后在SwitchB上分别Ping SwitchC、SwitchD,依此类推,最后可以判断出哪一段网络出现故障。
以下述两种情况为例,介绍Ping不通的故障定位方法。
04 情况一
假设故障发生在SwitchA和SwitchB之间,即SwitchA Ping SwitchB的IP地址192.168.1.11不通,定位流程如图2所示(其他直连网段Ping不通的故障处理方法类似),详细的定位方法请参见Ping不通故障定位指导。
05 情况二
假设SwitchA Ping SwitchB的IP地址192.168.1.11能通 ,SwitchB Ping SwitchC的IP地址192.168.2.21能通,但是SwitchA Ping SwitchC的IP地址192.168.2.21不通 。@ 网 络 工 程 师 俱 乐 部
这种情况需要在SwitchA、SwitchB和SwicthC上做ICMP报文的流量统计,进而判断流量是在哪丢弃的,关于流量统计的方法,请参见ICMP报文流量统计。
图2 直连Ping不通流程图
03 Ping不通故障定位指导
01 检查Ping命令是否合理
在SwitchA上检查是否执行了 ping --f 192.168.1.11命令。
如果执行了此操作,则ICMP报文发送的过程中不支持分片,此时需要检查链路上出接口的MTU值。
如果MTU值小于ICMP报文长度,由于ICMP报文的发送过程中不支持分片,如果ICMP报文的大小超过链路的MTU值,ICMP报文将会被丢弃,所以会导致Ping不通。
此时可以通过不使用-f参数或者增大链路MTU值的方式使ICMP报文不被丢弃。
02 检查配置是否正确
若PC直连交换机,确保PC与所属VLAN配置的VLANIF IP地址为同一网段。
若交换机与其他网络设备直连,确保两端设备接口类型、VLAN配置一致,两端VLANIF IP地址为同一网段。以SwitchA为例,查看方法如下:
执行命令 display port vlan 查看GE1/0/1接口的接口类型和VLAN配置。
其中Link Type代表的是接口链路类型,Trunk VLAN List代表的是接口动态加入和静态配置允许通过的VLAN ID。
执行命令 display ip interface brief 查看VLANIF10接口下的IP地址配置。其中IP Address/Mask代表的是接口的IP地址和掩码。
03 检查物理链路状态是否正常
1、检查物理链路连接
查看设备接口指示灯状态,如果是常灭,说明无连接。此时需要更换接口或者网线再进行尝试。
查看光纤或网线连接的接口和网络要求的部署是否一致。
如果不一致,需要重新对接口进行部署。
光纤所带的光模块波长参数需要一致,光模块建议使用华为认证光模块。
如果是通过Eth-Trunk接口连接,执行命令 display eth-trunk trunk-id 检查两端设备上Eth-Trunk中加入的物理成员接口数量是否一致,如果不一致,需要进行Eth-Trunk的重新配置。
如果是手工模式Eth-Trunk,回显如下,其中PortName代表的是加入Eth-Trunk的接口。
如果是LACP模式Eth-Trunk,回显如下,其中ActorPortName代表的是加入Eth-Trunk的接口。
2、检查对应的VLANIF接口是否Up
VLANIF接口UP是能Ping通的前提。
执行命令display ip interface brief查看VLANIF接口的状态,如果VLANIF接口Down,说明该VLAN下没有成员接口Up。
执行命令display interface brief 查看接口状态,保证接口Up。如果接口为Down状态,请首先排除接口Down的故障。
3、 如果VLANIF和物理接口均为UP状态 ,检查设备上是否运行了STP、RRPP或Smart Link等二层协议,确认Ping业务经过的物理接口是否被阻塞。
如果接口被阻塞,需要修改相关的配置。
1)执行命令 display stp brief 命令,查看STP状态,回显信息中STP State为FORWARDING表示转发状态,为DISCARDING表示阻塞状态。
2)执行命令 display rrpp verbose [ domain domain-id [ ring ring-id ] ],查看RRPP配置的详细信息,回显信息中Port status为UP表示转发状态,为BLOCKED表示阻塞状态
3)执行命令 display smart-link group all ,查看Smart Link组的状态信息,回显信息中State为Active表示转发状态,为Inactive表示阻塞状态。
04 检查路由是否正常
1、 检查是否有直连路由
如果和交换机连接的是终端设备,检查终端设备上是否配置了正确的网关地址。
如果和交换机连接的是交换机或路由设备,检查设备上是否有正确的回程路由。
在源端执行命令display ip routing-table ip-address 检查有无到对端的路由。
如有路由则显示如下信息,回显字段中Proto为Direct表示为直连路由。
由于遵循最长匹配原则,同一路由前缀,当非直连路由掩码长度大于直连路由时,将导致报文无法从直连接口转发。
若检查目的IP匹配的路由为非直连路由,需排查路由故障。
如果没有路由,则输入上述命令后无任何信息显示,需要检查路由协议配置是否正确。
2、检查是否配置了策略路由
**例如:**SwitchB在GE1/0/2接口调用策略路由,将SwitchA上送的源IP地址为192.168.1.10的报文重定向到下一跳192.168.2.11。
可以通过下述步骤查看策略路由配置并做相应配置的修改。
a、执行display traffic-policy applied-record命令,查看流策略的应用记录。
b、执行display traffic behavior user-defined behavior-name命令,查看已配置的流行为信息。
c、执行display traffic classifier user-defined classifier-name命令,查看策略中流分类关联的ACL编号。
<SwitchB> display traffic classifier user-defined c1User Defined Classifier Information: Classifier: c1Precedence: 15Operator: ANDRule(s) : if-match acl 3000 //流分类c1关联的ACL为acl 3000
d、执行display acl acl-number命令,查看ACL具体内容。
<SwitchB> display acl 3000
Advanced ACL 3000, 1 rule
Acl's step is 5
rule 5 permit ip source 192.168.1.10 0 //acl 3000中匹配了源地址为192.168.1.10的所有IP
3、修改流策略,保证SwitchA与SwitchB之间的流量正常转发。
**配置思路:**新建ACL,匹配SwitchA到SwitchB的流量,这部分流量不做重定向。
配置顺序: 配置流分类时,先创建不做重定向的流分类,再配置用于重定向的流分类。网 络 工 程 师 俱 乐 部
配置流策略时,先绑定不做重定向的流分类和流行为,再绑定用于重定向的流分类和流行为。
<SwitchB> system-view[SwitchB] acl 3001 //新建ACL[SwitchB-acl-adv-3001] rule permit ip source 192.168.1.10 0 destination 192.168.1.11 0.0.0.255 //匹配SwitchA到SwitchB的IP报文(不做重定向的流量)[SwitchB-acl-adv-3001] quit[SwitchB] traffic behavior b2 //新建流行为[SwitchB-behavior-b2] permit //动作为允许(正常转发,不做重定向动作)[SwitchB-behavior-b2] quit//由于之前的策略已经调用在接口,所以需要先在接口下取消策略调用,再到流策略中解除绑定的流分类,在全局删除流分类后再按顺序配置。[SwitchB] interface GigabitEthernet1/0/1[SwitchB-GigabitEthernet1/0/1] undo traffic-policy inbound //进入接口下取消策略调用[SwitchB-GigabitEthernet1/0/1] quit[SwitchB] traffic policy p1[SwitchB-trafficpolicy-p1] undo classifier c1 //解除策略下绑定的流分类[SwitchB-trafficpolicy-p1] quit[SwitchB] undo traffic classifier c1 //全局下取消之前创建的流分类[SwitchB] traffic classifier c2 //先创建不做重定向的流分类c2[SwitchB-classifier-c2] if-match acl 3001 //在c2中匹配acl 3001[SwitchB-classifier-c2] quit[SwitchB] traffic classifier c1 //再创建用于重定向的流分类c1[SwitchB-classifier-c1] if-match acl 3000 //在c1中匹配acl 3000[SwitchB-classifier-c1] quit[SwitchB] traffic policy p1 //进入流策略,先绑定不做重定向的流分类和流行为,再绑定需要重定向的流分类和流行为[SwitchB-trafficpolicy-p1] classifier c2 behavior b2[SwitchB-trafficpolicy-p1] classifier c1 behavior b1[SwitchB-trafficpolicy-p1] quit[SwitchB] interface GigabitEthernet1/0/1 //进入接口下调用流策略[SwitchB-GigabitEthernet1/0/1] traffic-policy p1 inbound[SwitchB-GigabitEthernet1/0/1] quit
05 检查ARP学习是否正确
执行 display arp all命令,检查直连地址的ARP是否学习正常。
下述回显信息中,如果MAC ADDRESS显示的是MAC地址 ,则代表ARP学习正确;
如果显示的是Incomplete ,表示当前表项为临时ARP表项,尚未学习到ARP,出现MAC地址后,代表ARP学习完成。
如果ARP学习正确,通过display mac-address interface-type interface-number命令查看MAC表项,确认MAC地址的出接口和ARP的物理出接口是否一致。
若不一致,排查是否存在环路或MAC冲突。
如果ARP学习失败,有以下几种可能性,请参照表1进行排查ARP学习失败的原因(SwitchA向SwitchB发送ARP请求报文)。
表1 ARP学习失败可能的原因
06 检查是否配置黑名单
配置cpu-defend黑名单后,设备将直接丢弃黑名单用户上送的报文
通过display cpu-defend policy查看调用在全局或特定槽位的策略名,然后通过display cpu-defend policy policy-name查看策略中是否配置黑名单(Blacklist),再通过display acl acl-number查看黑名单调用的ACL具体内容
黑名单中应用的ACL,无论其rule配置为permit还是deny,命中该ACL的报文均会被丢弃。
如果策略中配置了黑名单,且黑名单中包含对端IP,请尝试删除黑名单或修改黑名单关联的ACL,保证报文可以被正常处理。
例如:取消防攻击策略test1下的黑名单配置。
如果策略中没有配置黑名单,或者黑名单中不包含对端IP,进行下一步排查。
07 检查报文收发是否正常
如果通过以上步骤排查配置、链路、ARP表项和路由表项均正常,但是仍然Ping不通,接下来检查ICMP报文收发是否正常。
1.ICMP统计查询
进行Ping操作时,通过命令display icmp statistics查看ICMP报文的收发情况,ICMP Echo Request和ICMP Echo Reply报文收发是否一致,是否存在checksum错误统计计数。
SwitchA Ping SwitchB,以SwitchA的回显为例,Output方向的echo字段 代表的是请求报文数目,Input方向的echo reply 代表的是应答报文数目,bad checksum代表的是校验错误的报文数目。
在SwitchA上执行Ping操作的前后查看bad checksum计数是否一直增长,如果一直增长,需要检查对端设备SwitchB的协议栈软件回应ICMP报文的格式是否正确。
如果echo和echo reply数目一致,但是仍然Ping不通,接下来需要进行ICMP报文流量统计进而判断报文的收发情况。
如果echo和echo reply数目不一致:
如果SwitchA发出的echo报文数目少于 Ping发送的报文数目,说明报文在SwitchA上被丢弃。
如果SwitchA发出的echo报文数目多于 SwitchB接收到的echo报文的数目,说明报文在传输链路上被丢弃。
如果SwitchA发出的echo报文数目等于 SwitchB接收到的echo报文的数目,但是离开SwitchB的echo reply报文数目少于进入SwitchB的echo报文的数目,说明报文在SwitchB上被丢弃。
如果报文在链路上被丢弃,请更换链路再进行Ping测试;
如果报文在终端或其他厂商设备被丢弃,请排查终端或者其他厂商设备;
如果报文在华为交换机被丢弃,可进入下一步排查或者联系技术支持人员处理。
2.ICMP报文流量统计
以SwitchA为例,介绍如何对ICMP报文做流量统计。
(1)配置进入SwitchA报文的流量统计。
• 配置ACL规则。这里的ACL一定要是高级ACL,编号范围为3000~3999。
• 配置流分类。
• 配置流行为。
• 配置流策略。
在接口上应用流策略
(2)配置离开SwitchA报文的流量统计
配置ACL规则。这里的ACL一定要是高级ACL,编号范围为3000~3999。
• 配置流分类。
• 配置流行为。
• 配置流策略。
• 在接口上应用流策略
如果是交换机直连PC,在连接PC的接口出、入方向调用流统策略;
如果是交换机与其他网络设备直连,建议在两台设备两个接口的出、入方向都使用流量统计。
配置完成后,先执行reset命令清空计数信息,以保证接口流统计数归零,相关命令如下:
reset traffic policy statistics interface GigabitEthernet 1/0/1 inboundreset traffic policy statistics interface GigabitEthernet 1/0/1 outbound
在SwitchA上持续Ping SwitchB,通过display traffic policy statistics interface interface-type interface-number { inbound | outbound } verbose rule-base命令查看接口流量统计信息。
以SwitchA出方向为例,介绍上述display命令的回显,其中Packets和Bytes分别代表报文包个数和报文字节数。
如果离开SwitchA的报文数目少于 Ping发送的报文数目,说明报文在SwitchA上被丢弃。
如果离开SwitchA的报文数目多于 进入SwitchB的报文数目,说明报文在传输链路上被丢弃。
如果离开SwitchA的报文数目等于 进入SwitchB的报文数目,但是离开SwitchB的报文数目少于进入SwitchB的报文数目,说明报文在SwitchB上被丢弃。
如果报文在链路上被丢弃,请更换链路再进行Ping测试;
如果报文在终端或其他厂商设备被丢弃,请排查终端或者其他厂商设备;如果报文在华为交换机被丢弃,可进入下一步排查或者联系技术支持人员处理。
08 检查CPCAR统计是否有过多ICMP报文被丢弃
查看CPCAR的统计情况,检查ICMP报文是否由于CPCAR超出限制被丢弃,相关命令行如下(不同形态、不同版本的命令行有所不同):
对于框式交换机V100R002版本、盒式交换机V100R005版本,执行display cpu-defend icmp statistics all命令查看Drop计数是否在增加。
对于框式交换机V100R003及之后版本、盒式交换机V100R005及之后版本,执行display cpu-defend statistics packet-type icmp all命令查看Drop计数是否在增加。
对于框式交换机V100R003及之后版本、盒式交换机V100R005及之后版本,执行display cpu-defend statistics packet-type icmp all命令查看Drop计数是否在增加。
如果Drop计数在增加,说明存在CAR丢包,可以适当增加CAR值再进行Ping测试,看问题是否解决,最后建议恢复CAR值。
调整CPCAR不当将会影响网络业务,如果需要调整CPCAR,建议联系技术支持人员处理。
修改CAR的命令如下:
配置cpu-defend policy,执行命令car packet-type icmp cir cir-value指定新的CAR值。
将该Policy策略在全局或者指定的接口板应用。全局应用:
[HUAWEI] cpu-defend-policy 1 global
在指定的接口板应用:
09 检查报文格式是否正确
有时虽然交换机收到了报文,但是可能**报文的格式不对,导致无法得到正确处理。**例如目的MAC错误,VLAN的CFI被置为1等,此时则需要通过获取报文信息来确认。
在端口获取报文可以更加直接的看到设备上报文的收发情况,可以使用端口镜像或者流镜像获取端口下的所有报文,然后分析ICMP报文格式是否正确。
在镜像获取报文无法实施时,使用capture命令确认报文接收情况,然后分析ICMP报文格式是否正确。
配置镜像查看报文收发情况
如果端口上流量不大,可以配置端口镜像,确认报文的收发情况(以SwitchA为例)。
配置观察口。
配置镜像口,获取双向报文。
如果端口上流量比较大 ,可以配置流镜像(以SwitchA为例)。配置观察口。
配置ACL规则。
配置流分类。
配置流行为。
配置流策略。
在接口上应用流策略。
通过对镜像报文进行分析,不仅可以确认报文的收发情况,同时可以对报文进行校验,包括:报文的VLAN是否正确、报文的目的MAC地址是否是设备系统MAC地址、报文IP头的checksum是否正确、ICMP的checksum是否正确。
使用capture命令确认报文接收情况 在镜像获取报文无法实施时,也可以使用Capture命令来确认端口收到的报文情况,可以将报文打印到登录终端进行显示,也可以存入.cap文件中保存到设备上,然后对获取到的报文进行分析。
capture命令如下:
10 收集信息并寻求技术支持
1.收集信息
收集上述各个操作步骤的执行结果。
采集logbuffer信息、trapbuffer信息。
采集一键式诊断信息。
<HUAWEI> display diagnostic-information
若输出诊断信息过长,可以按Ctrl+C停止。
此命令主要用于问题定位,搜集系统诊断信息,搜集时可能会影响系统的性能(例如CPU占用率升高等)。
因此,在系统正常运行时不建议执行此命令。
严禁在连接到设备的多个终端上同时执行display diagnostic-information命令,否则可能造成设备的CPU占用率明显增高,导致设备性能下降。
保存交换机的日志、诊断日志
将框式交换机CF卡中保存的日志、诊断日志文件导出到相关文件路径。
<HUAWEI> cd cfcard:/logfile
将盒式交换机Flash中保存的日志、诊断日志文件导出到相文件路径。
<HUAWEI> cd logfile/
2.寻求技术支持
请联系华为技术支持人员获取技术支持。
整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部