前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货】2万字总结Ping不通的故障原因和解决方案!从此让网工不再夜里偷偷哭泣。

【干货】2万字总结Ping不通的故障原因和解决方案!从此让网工不再夜里偷偷哭泣。

作者头像
网络之路一天
发布2024-03-06 09:43:50
2070
发布2024-03-06 09:43:50
举报
文章被收录于专栏:网络之路网络之路
Ping

是我们网络工程师排除设备访问故障的常见方法

但是也常常听我们同学在群里

抱怨:咋又不通呢?

所以今天有空就整理了一下

网络Ping不通的一些常见故障和处理方法

网络故障排除工具是每个网络工程师的必需品。为了提升我们的工作效率,不浪费时间,工具的重要性显而易见特别是每当添加新的设备或网络发生变更时,新的问题就会出现,而且很难快速确定问题出在哪里。每一位网络工程师或从事网相关的人员,都了解几款工具,能让快速定位网络故障。

Ping是排除设备访问故障的常见方法。

它使用Internet控制消息协议ICMP确定以下内容:

  • 远程设备是否处于可访问状态。
  • 访问远程设备时是否丢失报文。
  • 本端与远程设备之间通信的往返延迟。
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 ]

Ping不通介绍

故障分析

Ping不通是指Ping报文在网络中传输,由于各种原因(如链路故障、ARP学习失败等)而接收不到所有Ping应答报文的现象。

如果您需要了解Ping的原理

图1 Ping不通故障组网图

如图1所示,以一个Ping不通的尝试示例,介绍Ping不通故障的定位思路。

图1 Ping不通故障组网图

现象描述

SwitchA Ping不通SwitchD。

代码语言:javascript
复制
<SwitchA> ping 192.168.3.11  
PING 192.168.3.11: 56  data bytes, press CTRL_C to break
 Request time out
 Request time out
 Request time out
 Request time out
 Request time out
 --- 192.168.3.11 ping statistics ---
 5 packet(s) transmitted
 0 packet(s) received
 100.00% packet loss

表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失败的时候不会打印该信息。

故障定位

如图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不通的故障定位方法。

情况一:

假设故障发生在SwitchA和SwitchB之间,即SwitchA Ping SwitchB的IP地址192.168.1.11不通,定位流程如图2所示(其他直连网段Ping不通的故障处理方法类似),详细的定位方法请参见Ping不通故障定位指导。

情况二:

假设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不通流程图

Ping不通故障定位指导

一、检查Ping命令是否合理

在SwitchA上检查是否执行了 ping –f 192.168.1.11 命令,

如果执行了此操作,则ICMP报文发送的过程中不支持分片,此时需要检查链路上出接口的MTU值。

代码语言:javascript
复制
 <SwitchA> system-view
[SwitchA] interface GigabitEthernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] display this
[SwitchA-GigabitEthernet1/0/1] undo portswitch                    
[SwitchA-GigabitEthernet1/0/1] mtu 1600  //接口的MTU值为1600字节,如果此字段不显示,代表接口的MTU为缺省值1500字节。

如果MTU值小于ICMP报文长度,由于ICMP报文的发送过程中不支持分片,如果ICMP报文的大小超过链路的MTU值,ICMP报文将会被丢弃,所以会导致Ping不通,此时可以通过不使用-f参数或者增大链路MTU值的方式使ICMP报文不被丢弃。

二、检查配置是否正确

若PC直连交换机,确保PC与所属VLAN配置的VLANIF IP地址为同一网段。若交换机与其他网络设备直连,确保两端设备接口类型、VLAN配置一致,两端VLANIF IP地址为同一网段。以SwitchA为例,查看方法如下:

执行命令 display port vlan 查看GE1/0/1接口的接口类型和VLAN配置。其中Link Type代表的是接口链路类型,Trunk VLAN List代表的是接口动态加入和静态配置允许通过的VLAN ID。

代码语言:javascript
复制
<SwitchA> display port vlan
Port                    Link Type    PVID  Trunk VLAN List 
------------------------------------------------------------------------------- 
GigabitEthernet1/0/1    trunk         1     10 
GigabitEthernet1/0/2    access        1     1-11  13-30 
GigabitEthernet1/0/3    hybrid        50    - 
……

执行命令 display ip interface brief 查看VLANIF10接口下的IP地址配置。其中IP Address/Mask代表的是接口的IP地址和掩码。

代码语言:javascript
复制
 
 <SwitchA> display ip interface brief
……
Interface             IP Address/Mask      Physical   Protocol
Vlanif10              192.168.1.10/24        up         up
……

三、检查物理链路状态是否正常

1、检查物理链路连接

查看设备接口指示灯状态,如果是常灭,说明无连接。此时需要更换接口或者网线再进行尝试。

查看光纤或网线连接的接口和网络要求的部署是否一致。

如果不一致,需要重新对接口进行部署。

光纤所带的光模块波长参数需要一致,光模块建议使用华为认证光模块。

如果是通过Eth-Trunk接口连接,执行命令 display eth-trunk trunk-id 检查两端设备上Eth-Trunk中加入的物理成员接口数量是否一致,如果不一致,需要进行Eth-Trunk的重新配置。

如果是手工模式Eth-Trunk,回显如下,其中PortName代表的是加入Eth-Trunk的接口。

代码语言:javascript
复制

<SwitchA> display eth-trunk 11
Eth-Trunk11's state information is:
WorkingMode: NORMAL         Hash arithmetic: According to SIP-XOR-DIP
Least Active-linknumber: 1  Max Bandwidth-affected-linknumber: 8
Operate status: up          Number Of Up Port In Trunk: 1
--------------------------------------------------------------------------------
PortName                                 Status      Weight
GigabitEthernet1/0/1                      Up          1

 

如果是LACP模式Eth-Trunk,回显如下,其中ActorPortName代表的是加入Eth-Trunk的接口。

代码语言:javascript
复制
<SwitchA> display eth-trunk 10
Eth-Trunk10's state information is:
Local:
LAG ID: 10                  WorkingMode: LACP
Preempt Delay Time: 10      Hash arithmetic: According to SIP-XOR-DIP
System Priority: 120        System ID: 0018-82d4-04c3
Least Active-linknumber: 1  Max Active-linknumber: 2
Operate status: up          Number Of Up Port In Trunk: 2
--------------------------------------------------------------------------------
ActorPortName                     Status   PortType     PortPri PortNo PortKey PortState Weight
GigabitEthernet1/0/1              Selected 1GE          10      262    2609    10111100  1
GigabitEthernet1/0/2              Selected 1GE          10      263    2609    10111100  1
GigabitEthernet1/0/3              Unselect 1GE          32768   264    2609    10100000  1

Partner:
--------------------------------------------------------------------------------
ActorPortName                     SysPri    SystemID  PortPri PortNo  PortKey   PortState
GigabitEthernet1/0/1              32768  00e0-fc6e-bb11  32768  262   2609      10111100
GigabitEthernet1/0/2              32768  00e0-fc6e-bb11  32768  263   2609      10111100
GigabitEthernet1/0/3              32768  00e0-fc6e-bb11  32768  264   2609      10110000
  
2、检查对应的VLANIF接口是否Up

VLANIF接口UP是能Ping通的前提。执行命令display ip interface brief查看VLANIF接口的状态,如果VLANIF接口Down,说明该VLAN下没有成员接口Up。

代码语言:javascript
复制
<SwitchA> display ip interface brief 
…… 
Interface              IP Address/Mask      Physical   Protocol   
Vlanif10             10.1.1.1/24        down      down        
Vlanif30               unassigned           *down      down      
……

执行命令display interface brief 查看接口状态,保证接口Up。如果接口为Down状态,请首先排除接口Down的故障。

代码语言:javascript
复制
<SwitchA> display interface brief
…… 
Interface                   PHY   Protocol InUti OutUti   inErrors  outErrors 
GigabitEthernet1/0/1      down  down       0%     0%          0          0 
GigabitEthernet1/0/2        down  down        0%     0%          0          0

3、如果VLANIF和物理接口均为UP状态,检查设备上是否运行了STP、RRPP或Smart Link等二层协议,确认Ping业务经过的物理接口是否被阻塞。如果接口被阻塞,需要修改相关的配置。

1)执行命令 display stp brief 命令,查看STP状态,回显信息中STP State为FORWARDING表示转发状态,为DISCARDING表示阻塞状态。

代码语言:javascript
复制
<SwitchA> display stp brief 
 MSTID  Port                     Role  STP State     Protection 
  0   GigabitEthernet1/0/1     DESI  DISCARDING    LOOPBACK

2)执行命令 display rrpp verbose [ domain domain-id [ ring ring-id ] ],查看RRPP配置的详细信息,回显信息中Port status为UP表示转发状态,为BLOCKED表示阻塞状态

代码语言:javascript
复制
<SwitchA> display rrpp verbose domain 1 ring 1
Domain Index   : 1
Control VLAN   : major 400    sub 401
Protected VLAN : Reference Instance 30
Hello Timer    : 1 sec(default is 1 sec)  Fail Timer : 6 sec(default is 6 sec)
RRPP Ring      : 1
Ring Level     : 0
Node Mode      : Master
Ring State     : Complete
Is Enabled     : Enable                        Is Active : Yes
Primary port   : GigabitEthernet1/0/1          Port status: BLOCKED
Secondary port : GigabitEthernet1/0/2          Port status: UP

3)执行命令 display smart-link group all ,查看Smart Link组的状态信息,回显信息中State为Active表示转发状态,为Inactive表示阻塞状态。

代码语言:javascript
复制
<SwitchA> display smart-link group all
Smart Link group 1 information :                                                
Smart Link group was enabled
Link status: Lock                                                  
Wtr-time is: 60 sec.
Load-Balance Instance: 10
Protected-vlan reference-instance: 1                                 
DeviceID: 0025-9e80-2494  Control-vlan ID: 505                                
    Member              Role   State    Flush Count Last-Flush-Time           
----------------------------------------------------------------------        
                                                                              
GigabitEthernet1/0/1    Master Inactive  1           2010/09/29 09:30:09 UTC+08:00   
GigabitEthernet1/0/2    Slave  Active     0           0000/00/00 00:00:00 UTC+00:00   

 

四、检查路由是否正常

1、 检查是否有直连路由

如果和交换机连接的是终端设备,检查终端设备上是否配置了正确的网关地址。

如果和交换机连接的是交换机或路由设备,检查设备上是否有正确的回程路由。

在源端执行命令display ip routing-table ip-address 检查有无到对端的路由。

如有路由则显示如下信息,回显字段中Proto为Direct表示为直连路由。由于遵循最长匹配原则,同一路由前缀,当非直连路由掩码长度大于直连路由时,将导致报文无法从直连接口转发。若检查目的IP匹配的路由为非直连路由,需排查路由故障。

代码语言:javascript
复制
<SwitchA> display ip routing-table 192.168.1.11                
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------ 
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

 192.168.1.0/24   Direct  0    0           D   192.168.1.10    Vlanif10 
 
 

如果没有路由,则输入上述命令后无任何信息显示,需要检查路由协议配置是否正确。

2、检查是否配置了策略路由

例如:SwitchB在GE1/0/2接口调用策略路由,将SwitchA上送的源IP地址为192.168.1.10的报文重定向到下一跳192.168.2.11。

可以通过下述步骤查看策略路由配置并做相应配置的修改。

a、执行display traffic-policy applied-record命令,查看流策略的应用记录。

代码语言:javascript
复制
<SwitchB> display traffic-policy applied-record
#
-------------------------------------------------
Policy Name:   p1
Policy Index:  0
   Classifier:c1     Behavior:b1 //流策略p1中关联了流分类c1和流行为b1
------------------------------------------------- 
 *interface GigabitEthernet1/0/2
  traffic-policy p1 inbound //流策略p1应用在接口GE1/0/2的入方向
    slot 1    :  success
-------------------------------------------------
Policy total applied times: 1. 
#                   

b、执行display traffic behavior user-defined behavior-name命令,查看已配置的流行为信息。

代码语言:javascript
复制
<SwitchB> display traffic behavior user-defined b1
User Defined Behavior Information:
  Behavior: bb                                               
    Permit
    Redirect: no forced
      Redirect ip-nexthop
      192.168.2.11  //流行为b1的动作为重定向,下一跳IP为192.168.2.11
      
      

c、执行display traffic classifier user-defined classifier-name命令,查看策略中流分类关联的ACL编号。

代码语言:javascript
复制
<SwitchB> display traffic classifier user-defined c1
User Defined Classifier Information:
 Classifier: c1
Precedence: 15
Operator: AND
Rule(s) : if-match acl 3000 //流分类c1关联的ACL为acl 3000

d、执行display acl acl-number命令,查看ACL具体内容。

代码语言:javascript
复制
<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的流量,这部分流量不做重定向。

配置顺序:配置流分类时,先创建不做重定向的流分类,再配置用于重定向的流分类。配置流策略时,先绑定不做重定向的流分类和流行为,再绑定用于重定向的流分类和流行为。

代码语言:javascript
复制
<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

五、 检查ARP学习是否正确

执行display arp all命令,检查直连地址的ARP是否学习正常。

下述回显信息中,如果MAC ADDRESS显示的是MAC地址,则代表ARP学习正确;如果显示的是Incomplete,表示当前表项为临时ARP表项,尚未学习到ARP,出现MAC地址后,代表ARP学习完成。

代码语言:javascript
复制
<SwitchA> display arp all
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE INTERFACE      VPN-INSTANCE      
                                       VLAN 
------------------------------------------------------------------------------
192.168.1.10    4c1f-cc17-1ca5            I -  Vlanif10
192.168.1.11    4c1f-cc2f-3634  19        D-0  GE1/0/1
                                       10
------------------------------------------------------------------------------
Total:2         Dynamic:1       Static:0     Interface:1    

如果ARP学习正确,通过display mac-address interface-type interface-number命令查看MAC表项,确认MAC地址的出接口和ARP的物理出接口是否一致。若不一致,排查是否存在环路或MAC冲突。

代码语言:javascript
复制
<SwitchA> display mac-address 4c1f-cc2f-3634
------------------------------------------------------------------------------- 
MAC Address          VLAN/VSI                    Learned-From          Type       
-------------------------------------------------------------------------------
4c1f-cc2f-3634       10/-                        GE1/0/1               dynamic 
-------------------------------------------------------------------------------
Total items displayed = 2

如果ARP学习失败,有以下几种可能性,请参照表1进行排查ARP学习失败的原因(SwitchA向SwitchB发送ARP请求报文)。

表1 ARP学习失败可能的原因

六、检查是否配置黑名单

配置cpu-defend黑名单后,设备将直接丢弃黑名单用户上送的报文。

通过display cpu-defend policy查看调用在全局或特定槽位的策略名,然后通过display cpu-defend policy policy-name查看策略中是否配置黑名单(Blacklist),再通过display acl acl-number查看黑名单调用的ACL具体内容。

代码语言:javascript
复制
<SwitchA> display cpu-defend policy
----------------------------------------------------------------
Name  : default
Related slot : <>
----------------------------------------------------------------
Name  : test1
Related slot : <1>    //名称为test1的policy调用在1号槽位
----------------------------------------------------------------

代码语言:javascript
复制
<SwitchA> display cpu-defend policy test1
Related slot : <1>
Configuration :
Blacklist 1 ACL number : 3300  //该策略test1下配置了黑名单,关联的ACL编号为3300
Car packet-type icmp : CIR(5000)  CBS(20000)
Car packet-type tcp : CIR(2000)  CBS(376000)

代码语言:javascript
复制
r<SwitchA> display acl 3300
Advanced ACL 3300, 1 rule
Acl's step is 5
rule 5 permit ip source 10.1.1.1 0 (match-counter 0)  //ACL匹配源IP地址为10.1.1.1的IP报文

黑名单中应用的ACL,无论其rule配置为permit还是deny,命中该ACL的报文均会被丢弃。

如果策略中配置了黑名单,且黑名单中包含对端IP,请尝试删除黑名单或修改黑名单关联的ACL,保证报文可以被正常处理。

例如:取消防攻击策略test1下的黑名单配置。

代码语言:javascript
复制
<SwitchA> system-view
[SwitchA] cpu-defend policy test1
[SwitchA-defend-policy-test] display this
#
cpu-defend policy test1
blacklist 1 acl 3300
car packet-type icmp cir 5000 cbs 20000
car packet-type tcp cir 2000 cbs 376000
……
[SwitchA-defend-policy-test1] undo blacklist 1
[SwitchA-defend-policy-test1] quit

如果策略中没有配置黑名单,或者黑名单中不包含对端IP,进行下一步排查。

七、检查报文收发是否正常

如果通过以上步骤排查配置、链路、ARP表项和路由表项均正常,但是仍然Ping不通,接下来检查ICMP报文收发是否正常。

ICMP统计查询

进行Ping操作时,通过命令display icmp statistics查看ICMP报文的收发情况,ICMP Echo Request和ICMP Echo Reply报文收发是否一致,是否存在checksum错误统计计数。

SwitchA Ping SwitchB,以SwitchA的回显为例,Output方向的echo字段代表的是请求报文数目,Input方向的echo reply代表的是应答报文数目,bad checksum代表的是校验错误的报文数目。

代码语言:javascript
复制
<SwitchA> display icmp statistics
  Input: bad formats         0          bad checksum           0   
      echo                0          destination unreachable 0    
      source quench       0          redirects               0   
      echo reply        25         parameter problem       0   
      timestamp request   0          information request     0   
      mask requests       0          mask replies            0   
      time exceeded       0          timestamp reply         0         
      Mping request       0          Mping reply             0   
  Output:echo               25         destination unreachable 0   
      source quench       0          redirects               0   
      echo reply          0          parameter problem       0   
      timestamp request   0          information reply       0   
      mask requests       0          mask replies            0   
      time exceeded       0          timestamp reply         0
      Mping request       0          Mping reply             0   

在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测试;如果报文在终端或其他厂商设备被丢弃,请排查终端或者其他厂商设备;如果报文在华为交换机被丢弃,可进入下一步排查或者联系技术支持人员处理。

ICMP报文流量统计

以SwitchA为例,介绍如何对ICMP报文做流量统计。

配置进入SwitchA报文的流量统计。

• 配置ACL规则。这里的ACL一定要是高级ACL,编号范围为3000~3999。

代码语言:javascript
复制
<SwitchA> system-view 
[SwitchA] acl number 3000 
[SwitchA-acl-adv-3000] rule permit icmp source 192.168.1.11 0 destination 192.168.1.10 0 
[SwitchA-acl-adv-3000] quit

• 配置流分类。

代码语言:javascript
复制
[SwitchA] traffic classifier 3000 
[SwitchA-classifier-3000] if-match acl 3000 
[SwitchA-classifier-3000] quit

• 配置流行为。

代码语言:javascript
复制
[SwitchA-behavior-3000] statistic enable 
[SwitchA-behavior-3000] quit

• 配置流策略。

代码语言:javascript
复制
[SwitchA] traffic policy 3000 
[SwitchA-trafficpolicy-3000] classifier 3000 behavior 3000 
[SwitchA-trafficpolicy-3000] quit

在接口上应用流策略

代码语言:javascript
复制
[SwitchA] interface gigabitethernet 1/0/1 
[SwitchA-GigabitEthernet1/0/1] traffic-policy 3000 inbound 
[SwitchA-GigabitEthernet1/0/1] return

配置离开SwitchA报文的流量统计
配置ACL规则。这里的ACL一定要是高级ACL,编号范围为3000~3999。
代码语言:javascript
复制
[SwitchA] acl number 3001 
[SwitchA-acl-adv-3001] rule permit icmp source 192.168.1.10 0 destination 192.168.1.11 0 
[SwitchA-acl-adv-3001] quit

• 配置流分类。

代码语言:javascript
复制
[SwitchA-classifier-3001] if-match acl 3001 
[SwitchA-classifier-3001] quit

• 配置流行为。

代码语言:javascript
复制
[SwitchA-behavior-3001] statistic enable 
[SwitchA-behavior-3001] quit

• 配置流策略。

代码语言:javascript
复制
[SwitchA] traffic policy 3001 
[SwitchA-trafficpolicy-3001] classifier 3001 behavior 3001 
[SwitchA-trafficpolicy-3001] quit

• 在接口上应用流策略

代码语言:javascript
复制
[SwitchA] interface gigabitethernet 1/0/1 
[SwitchA-GigabitEthernet1/0/1] traffic-policy 3001 outbound 
[SwitchA-GigabitEthernet1/0/1] return

如果是交换机直连PC,在连接PC的接口出、入方向调用流统策略;如果是交换机与其他网络设备直连,建议在两台设备两个接口的出、入方向都使用流量统计。

配置完成后,先执行reset命令清空计数信息,以保证接口流统计数归零,相关命令如下:

reset traffic policy statistics interface GigabitEthernet 1/0/1 inbound

reset 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分别代表报文包个数和报文字节数。

代码语言:javascript
复制
<SwitchA> display traffic policy statistics interface gigabitethernet 1/0/1 outbound verbose rule-base 
 Interface: GigabitEthernet1/0/1                                                                                                    
 Traffic policy outbound: 3001                                                                                                      
 Rule number: 1                                                                                                                     
 Current status: OK!                                                                                                                
 Statistics interval: 300                                                                                                           
---------------------------------------------------------------------                                                               
 Classifier: 3001 operator or                                                                                                       
 Behavior: 3001                                                                                                                     
 Board : 1                                                                                                                          
 rule 5 permit icmp source 10.1.1.1 0 destination 10.1.1.2 0 (match-counter 0)                                              
---------------------------------------------------------------------                                                               
 Passed        |      Packets:                           100                                                                     
               |      Bytes:                          10,200                                                                     
               |      Rate(pps):                           0                                                                     
               |      Rate(bps):                           0                                                                     
---------------------------------------------------------------------                                                               
 Dropped       |      Packets:                             0                                                                     
               |      Bytes:                               0                                                                     
               |      Rate(pps):                           0                                                                     
               |      Rate(bps):                           0                                                                     
---------------------------------------------------------------------

-如果离开SwitchA的报文数目少于Ping发送的报文数目,说明报文在SwitchA上被丢弃。

-如果离开SwitchA的报文数目多余进入SwitchB的报文数目,说明报文在传输链路上被丢弃。

-如果离开SwitchA的报文数目等于进入SwitchB的报文数目,但是离开SwitchB的报文数目少于进入SwitchB的报文数目,说明报文在SwitchB上被丢弃。

如果报文在链路上被丢弃,请更换链路再进行Ping测试;如果报文在终端或其他厂商设备被丢弃,请排查终端或者其他厂商设备;如果报文在华为交换机被丢弃,可进入下一步排查或者联系技术支持人员处理。

八、检查CPCAR统计是否有过多ICMP报文被丢弃

查看CPCAR的统计情况,检查ICMP报文是否由于CPCAR超出限制被丢弃,相关命令行如下(不同形态、不同版本的命令行有所不同):

对于框式交换机V100R002版本、盒式交换机V100R005版本,执行display cpu-defend icmp statistics all命令查看Drop计数是否在增加。

代码语言:javascript
复制
<HUAWEI> display cpu-defend icmp statistics all 
CPCAR on mainboard 
------------------------------------------------------------------------------- 
Packet Type         Pass(Bytes)  Drop(Bytes)   Pass(Packets)   Drop(Packets) 
icmp                0            0               0               0 
------------------------------------------------------------------------------- 
CPCAR on slot 4 
------------------------------------------------------------------------------- 
Packet Type         Pass(Bytes)  Drop(Bytes)   Pass(Packets)   Drop(Packets) 
icmp                0            0               0               0 
-------------------------------------------------------------------------------

对于框式交换机V100R003及之后版本、盒式交换机V100R005及之后版本,执行display cpu-defend statistics packet-type icmp all命令查看Drop计数是否在增加。

代码语言:javascript
复制
 <HUAWEI> display cpu-defend statistics packet-type icmp all 
 Statistics on mainboard: 
 ------------------------------------------------------------------------------- 
 Packet Type         Pass(Bytes)  Drop(Bytes)   Pass(Packets)   Drop(Packets) 
 ------------------------------------------------------------------------------- 
 icmp                4488           0              44               0 
 ------------------------------------------------------------------------------- 
 Statistics on slot 3: 
 ------------------------------------------------------------------------------- 
 Packet Type         Pass(Bytes)  Drop(Bytes)   Pass(Packets)   Drop(Packets) 
 ------------------------------------------------------------------------------- 
 icmp                0            0               0               0 
 -------------------------------------------------------------------------------

对于框式交换机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值。

代码语言:javascript
复制
<HUAWEI> system-view 
[HUAWEI] cpu-defend policy 1 
[HUAWEI-cpu-defend-policy-1] car packet-type icmp cir 256 
[HUAWEI-cpu-defend-policy-1] display this 
# 
cpu-defend policy 1 
car packet-type icmp cir 256 cbs 48128 
#

将该Policy策略在全局或者指定的接口板应用。全局应用:

代码语言:javascript
复制
[HUAWEI] cpu-defend-policy 1 global

在指定的接口板应用:

代码语言:javascript
复制
[HUAWEI] slot 1 
[HUAWEI-slot-1] cpu-defend-policy 1 
[HUAWEI-slot-1] display this 
# 
slot 1 
cpu-defend-policy 1 
#

九、 检查报文格式是否正确

有时虽然交换机收到了报文,但是可能报文的格式不对,导致无法得到正确处理。例如目的MAC错误,VLAN的CFI被置为1等,此时则需要通过获取报文信息来确认。

在端口获取报文可以更加直接的看到设备上报文的收发情况,可以使用端口镜像或者流镜像获取端口下的所有报文,然后分析ICMP报文格式是否正确。

在镜像获取报文无法实施时,使用capture命令确认报文接收情况,然后分析ICMP报文格式是否正确。

配置镜像查看报文收发情况

如果端口上流量不大,可以配置端口镜像,确认报文的收发情况(以SwitchA为例)。

配置观察口。

代码语言:javascript
复制
<SwitchA> system-view 
[SwitchA] observe-port 1 interface gigabitethernet 1/0/1

配置镜像口,获取双向报文。

代码语言:javascript
复制
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/1] port-mirroring to observe-port 1 both 
[SwitchA-GigabitEthernet1/0/1] return

如果端口上流量比较大,可以配置流镜像(以SwitchA为例)。配置观察口。

代码语言:javascript
复制

<SwitchA> system-view 
[SwitchA] observe-port 1 interface gigabitethernet 1/0/1

配置ACL规则。

代码语言:javascript
复制
[SwitchA] acl number 3033 
[SwitchA-acl-adv-3033] rule permit icmp source 192.168.1.11 0 destination 192.168.1.10 0 
[SwitchA-acl-adv-3033] rule permit icmp source 192.168.1.10 0 destination 192.168.1.11 0 
[SwitchA-acl-adv-3033] quit

配置流分类。

代码语言:javascript
复制
[SwitchA] traffic classifier 3033 
[SwitchA-classifier-3033] if-match acl 3033 
[SwitchA-classifier-3033] quit

配置流行为。

代码语言:javascript
复制
[SwitchA] traffic behavior 3033 
[SwitchA-behavior-3033] mirroring to observe-port 1 
[SwitchA-behavior-3033] quit

配置流策略。

代码语言:javascript
复制
[SwitchA] traffic policy 3033 
[SwitchA-trafficpolicy-3033] classifier 3033 behavior 3033 
[SwitchA-trafficpolicy-3033] quit

在接口上应用流策略。

代码语言:javascript
复制
[SwitchA] interface gigabitethernet 1/0/1 
[SwitchA-GigabitEthernet1/0/1] traffic-policy 3033 inbound 
[SwitchA-GigabitEthernet1/0/1] traffic-policy 3033 outbound 
[SwitchA-GigabitEthernet1/0/1] return

通过对镜像报文进行分析,不仅可以确认报文的收发情况,同时可以对报文进行校验,包括:报文的VLAN是否正确、报文的目的MAC地址是否是设备系统MAC地址、报文IP头的checksum是否正确、ICMP的checksum是否正确。

使用capture命令确认报文接收情况 在镜像获取报文无法实施时,也可以使用Capture命令来确认端口收到的报文情况,可以将报文打印到登录终端进行显示,也可以存入.cap文件中保存到设备上,然后对获取到的报文进行分析。

capture命令如下:

代码语言:javascript
复制
[HUAWEI] capture-packet interface GigabitEthernet 1/0/1 destination terminal packet-num 100 
Info: Captured packets will be shown on terminal. 
[HUAWEI] 
Packet: 1 
------------------------------------------------------- 
00 00 0a 88 15 d0 00 00 0a 88 15 d5 81 00 00 c8 
08 00 45 00 00 54 17 9e 00 00 ff 01 05 eb 07 08 
c8 0d 07 08 c8 02 08 00 40 69 ab e4 00 01 0f 84 
d1 ea 00 00 00 00 00 01 02 03 04 05 06 07 08 09 
0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 
1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 
2a 2b 2c 2d 2e 2f 
------------------------------------------------------- 
 
Packet: 2 
------------------------------------------------------- 
00 00 0a 88 15 d0 00 00 0a 88 15 d5 81 00 00 c8 
08 00 45 00 00 54 17 9e 00 00 ff 01 05 eb 07 08 
c8 0d 07 08 c8 02 08 00 40 69 ab e4 00 01 0f 84 
d1 ea 00 00 00 00 00 01 02 03 04 05 06 07 08 09 
0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 
1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 
2a 2b 2c 2d 2e 2f 
-------------------------------------------------------

十、 收集信息并寻求技术支持

收集信息

收集上述各个操作步骤的执行结果。

采集logbuffer信息、trapbuffer信息。

代码语言:javascript
复制

<HUAWEI> display logbuffer
<HUAWEI> display trapbuffer

采集一键式诊断信息。

代码语言:javascript
复制

<HUAWEI> display diagnostic-information

若输出诊断信息过长,可以按Ctrl+C停止。

此命令主要用于问题定位,搜集系统诊断信息,搜集时可能会影响系统的性能(例如CPU占用率升高等)。因此,在系统正常运行时不建议执行此命令。

严禁在连接到设备的多个终端上同时执行display diagnostic-information命令,否则可能造成设备的CPU占用率明显增高,导致设备性能下降。

保存交换机的日志、诊断日志。

代码语言:javascript
复制

<HUAWEI> save logfile
<HUAWEI> system-view
[HUAWEI] diagnose
[HUAWEI-diagnose] save diag-logfile

将框式交换机CF卡中保存的日志、诊断日志文件导出到相关文件路径。

代码语言:javascript
复制

<HUAWEI> cd cfcard:/logfile

将盒式交换机Flash中保存的日志、诊断日志文件导出到相文件路径。

代码语言:javascript
复制

<HUAWEI> cd logfile/

寻求技术支持

请联系华为技术支持人员获取技术支持。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络之路博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ping不通介绍
  • Ping不通故障定位指导
    • 一、检查Ping命令是否合理
      • 二、检查配置是否正确
        • 三、检查物理链路状态是否正常
          • 1、检查物理链路连接
        • 四、检查路由是否正常
          • 1、 检查是否有直连路由
          • 2、检查是否配置了策略路由
          • 3、修改流策略,保证SwitchA与SwitchB之间的流量正常转发。
        • 五、 检查ARP学习是否正确
          • 六、检查是否配置黑名单
            • 七、检查报文收发是否正常
              • ICMP统计查询
              • ICMP报文流量统计
            • 八、检查CPCAR统计是否有过多ICMP报文被丢弃
              • 九、 检查报文格式是否正确
                • 十、 收集信息并寻求技术支持
                  • 收集信息
                  • 寻求技术支持
              相关产品与服务
              云硬盘
              云硬盘(Cloud Block Storage,CBS)为您提供用于 CVM 的持久性数据块级存储服务。云硬盘中的数据自动地在可用区内以多副本冗余方式存储,避免数据的单点故障风险,提供高达99.9999999%的数据可靠性。同时提供多种类型及规格,满足稳定低延迟的存储性能要求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档