目录

软硬件平台

问题描述

故障诊断步骤

经验总结

相关命令

其他相关文档

软硬件平台

硬件平台： 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 功能配置文档