交换机 : Cisco Nexus 7000 系列交换机

在Nexus 7000设备上ping结果丢包

2010 年 12 月 9 日 - 原创文档
其他版本: PDFpdf | 反馈

目录

软硬件平台
问题描述
故障诊断步骤
经验总结
相关命令
其他相关文档

软硬件平台

硬件平台: Nexus 7000

软件版本: 所有

问题描述

用户网络中,经常使用 ping 命令测试设备连通性。在 ping Nexus 7000 设备时,会出现规律性丢包。

N7K-1 (10.10.3.3) -------------- (10.10.3.4) N7K-2 

CTD-100-F1.11.09-7000-1# ping 10.10.3.4 vrf test packet-size 2000 count 30
PING 10.10.3.4 (10.10.3.4): 2000 data bytes
2008 bytes from 10.10.3.4: icmp_seq=0 ttl=254 time=7.559 ms
2008 bytes from 10.10.3.4: icmp_seq=1 ttl=254 time=2.082 ms
2008 bytes from 10.10.3.4: icmp_seq=2 ttl=254 time=2.079 ms
2008 bytes from 10.10.3.4: icmp_seq=3 ttl=254 time=1.964 ms
2008 bytes from 10.10.3.4: icmp_seq=4 ttl=254 time=1.964 ms
2008 bytes from 10.10.3.4: icmp_seq=5 ttl=254 time=1.965 ms
2008 bytes from 10.10.3.4: icmp_seq=6 ttl=254 time=1.971 ms
2008 bytes from 10.10.3.4: icmp_seq=7 ttl=254 time=1.959 ms
Request 8 timed out
2008 bytes from 10.10.3.4: icmp_seq=9 ttl=254 time=2.158 ms
2008 bytes from 10.10.3.4: icmp_seq=10 ttl=254 time=2.008 ms
2008 bytes from 10.10.3.4: icmp_seq=11 ttl=254 time=2.09 ms
2008 bytes from 10.10.3.4: icmp_seq=12 ttl=254 time=2.088 ms
2008 bytes from 10.10.3.4: icmp_seq=13 ttl=254 time=2.088 ms
2008 bytes from 10.10.3.4: icmp_seq=14 ttl=254 time=2.123 ms
2008 bytes from 10.10.3.4: icmp_seq=15 ttl=254 time=2.059 ms
2008 bytes from 10.10.3.4: icmp_seq=16 ttl=254 time=2.089 ms
Request 17 timed out
2008 bytes from 10.10.3.4: icmp_seq=18 ttl=254 time=2.128 ms
2008 bytes from 10.10.3.4: icmp_seq=19 ttl=254 time=2.045 ms
2008 bytes from 10.10.3.4: icmp_seq=20 ttl=254 time=2.089 ms
2008 bytes from 10.10.3.4: icmp_seq=21 ttl=254 time=2.089 ms
2008 bytes from 10.10.3.4: icmp_seq=22 ttl=254 time=2.087 ms
2008 bytes from 10.10.3.4: icmp_seq=23 ttl=254 time=2.086 ms
2008 bytes from 10.10.3.4: icmp_seq=24 ttl=254 time=2.092 ms
2008 bytes from 10.10.3.4: icmp_seq=25 ttl=254 time=14.091 ms
Request 26 timed out
2008 bytes from 10.10.3.4: icmp_seq=27 ttl=254 time=2.206 ms
2008 bytes from 10.10.3.4: icmp_seq=28 ttl=254 time=1.927 ms
2008 bytes from 10.10.3.4: icmp_seq=29 ttl=254 time=1.962 ms

--- 10.10.3.4 ping statistics ---
30 packets transmitted, 27 packets received, 10.00% packet loss
round-trip min/avg/max = 1.927/2.705/14.091 ms

使用大包 ping 测试,可以使此现象更明显地重现。

故障诊断步骤

首先,我们需要了解此类 ping 测试数据包是如何在 Nexus 设备上被处理的。Nexus 设备处理数据包分为软件处理和硬件处理。绝大部分数据流量都是通过硬件处理快速转发的。但是一些特殊流量是需要交由软件处理的。包括以下种类的数据包(并不局限于以下类型):

  1. 数据包目的地为设备本地的数据流量,会交由软件处理。
    1. 控制层面流量,包括 STP,CDP,VTP 和 HSRP 等等。
    2. 路由协议流量,包括 RIP,EIGRP,OSPF 和 BGP 等等。
    3. SNMP 管理流量。
    4. Telnet,SSH到本地的流量。
    5. ARP 流量。
  2. 需要特殊进程处理的数据包流量,会交由软件处理。
    1. 包涵特殊 IP option 的数据包,TTL 超时的数据包和非 ARPA 封装的数据包。
    2. 需特殊处理的数据包,例如t unneling。
    3. 分片数据包。
    4. 从 Route processor 或者 Switch processor 发出的,包涵 ICMP 消息的数据包。
    5. MTU 检测失败的数据包。
    6. 包涵 IP 错误的数据包。例如,IP checksum 和 length 错误。

根据此策略,目的地址为对端接口地址的 ping 测试流量会被 Nexus 7000 软件处理。软件处理意味着数据包会被送到设备 CPU,由 CPU 处理和转发。所以无论在 N7K-1,还是 N7K-2 上,ping 流量都是由 CPU 处理转发的。

在了解了 Nexus 处理数据包的行为后,我们开始对此故障进行排查。

我们通过抓包软件,对链路进行抓包,发现数据包已经从 N7K-1 上发出,N7K-2 也已经收到。

据此判断,N7K-2 收到数据包后,由于某种原因,数据包被丢弃。

根据 Nexus 配置文档,Nexus 设备默认配置 CoPP 特性,对设备 CPU 进行保护。于是,我们通过命令检查 N7K-2 上 CoPP 的状态。

CTD-100-F1.11.09-7000-2# sh policy-map inter control-plane | be copp-system-class-monitoring
    class-map copp-system-class-monitoring (match-any)
      match access-grp name copp-system-acl-icmp
      match access-grp name copp-system-acl-icmp6
      match access-grp name copp-system-acl-traceroute
      police cir 130 kbps , bc 1000 ms 
      module 1 :
        conformed 1411010 bytes; action: transmit 
        violated 87528 bytes; action: drop 

      module 2 :
        conformed 23868 bytes; action: transmit 
        violated 0 bytes; action: drop 

      module 7 :
        conformed 5930 bytes; action: transmit 
        violated 0 bytes; action: drop

通过命令,我们可以很清晰的发现数据包有部分被丢弃了。

解决办法:

  1. 调整 CoPP 参数,保证正常的用户需求流量不被丢弃。
  2. 移除 CoPP。

经验总结

CoPP 功能在 Nexus 设备上是默认开启的,并且会有默认的限制参数设置。主要功能是保护设备 CPU 运行和对正常控制流量的处理。用户配置时,可以结合自身网络需求,对 CoPP 参数进行调整。

相关命令

show policy-map interface control-plane

其他相关文档

Nexus 7000 CoPP 功能配置文档