简介
本文档介绍如何对Cisco IOS® XE路由器上的接口丢包进行故障排除。
要求
有关数据包流和Cisco IOS XE的基本知识。
使用的组件
本文档基于Cisco IOS XE路由器平台,例如ISR 4000和ASR1000路由器。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
在Cisco IOS XE路由器上,数据包丢弃可能发生在不同的组件上,包括:
这些丢包可以在接口的输入或输出方向上观察到。分析QFP时,主要关注输出丢包。
有关影响Cisco IOS XE设备上控制平面的数据包丢弃,请参阅指南中概述的丢弃:排除超出阈值的监察器故障。
输入丢弃
接口可能会遇到输入队列中的输入丢弃。使用命令show interfaces在输入队列字段“drops counter”部分可以看到此计数器:
---- show interfaces ----
GigabitEthernet0/0/0 is up, line protocol is up
Input queue: 0/375/71966/0 (size/max/drops/flushes); Total output drops: 47009277
接口上的输入丢弃计数器在IQD列下的show interface summary命令中也可见,该列表示从输入队列丢弃的数据包。
---- show interface summary ----
Interface IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL
-----------------------------------------------------------------------------------------------------------------
* Te0/0/0 0 0 0 0 29544000 2830 1957000 1446 0
* Te0/0/1 0 0 0 0 23476000 2555 16655000 3346 0
* GigabitEthernet0/0/0 0 71966 0 47019440 18852000 5321 59947000 6064 0
接口上的输入丢弃通常发生在输入队列变得不堪重负且无法及时处理时。因此,可以根据正在使用的排队算法选择性地丢弃数据包。
出现输入丢弃的可能原因包括:
- 发送设备以比接收设备能够处理的速率更高的速率传输数据包,导致输入队列耗尽
- 流量模式中的突发或微突发
- 平台限制
您可以在接口级别下使用hold-queue命令尝试增加输入队列大小:
Router(config-if)#hold-queue ?
<0-240000> Queue length
注意:Hold-queue命令在某些平台上无效。验证平台规格或向TAC提交案例。
注意:流量控制机制也可用于将暂停帧从接收设备发送到发送设备。查看特定平台的《接口和硬件组件配置指南》中有关流量控制的详细信息。
接口上的输出丢弃
输出队列中显示的接口上的输出丢弃,并可使用show interfaces命令查看:
---- show int gi 1/0/46 ----
GigabitEthernet1/0/46 is up, line protocol is up (connected)
Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 154786
Total Output Drops计数器指示受影响接口的输出队列饱和。服务质量(QoS)等机制可能会加剧这种情况,这些机制可以选择性地丢弃数据包来管理拥塞。
由于QoS会更改流量的优先级,因此另一个故障排除步骤是通过使用命令service-policy output在输出方向上配置的策略映射,验证接口是否正在使用非默认排队策略。
interface GigabitEthernet0/1
service-policy output PRIORITIZE-VOICE
要验证输出丢弃是否是由于实施的服务质量机制所致,请使用命令show policy-map interface <interface-name> out。如以下示例所示:
---- show policy-map interface gi0/0/0 output ----
GigabitEthernet0/0/0
Service-policy output: PRIORITIZE-VOICE
queue stats for all priority classes:
Queueing
queue limit 512 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
Class-map: VOICE (match-any)
0 packets, 0 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: dscp ef (46)
Priority: Strict, b/w exceed drops: 0
Class-map: class-default (match-any)
0 packets, 0 bytes
5 minute offered rate 0000 bps, drop rate 0000 bps
Match: any
queue limit 4166 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 0/0
Router#
此命令显示所配置的类中由于服务质量机制而发生的丢弃。
注意:如果接口上的输出丢弃与策略映射中看到的丢弃相关,则通常由于所配置的服务质量而预期会发生丢弃。如果需要,请与TAC接洽,更深入地了解所使用的服务质量机制,并参阅此功能的相应指南。
有关QoS工作以及如何实施的其他信息,请参阅服务质量配置指南、Cisco IOS XE 17.x配置指南。
要查看排队策略,请使用show interfaces命令并检查排队策略值。默认情况下,出站数据包处理策略为先进先出(FIFO)。
---- show interfaces gigabitEthernet 0/0/0 ----
Queueing strategy: Class-based queueing
未达到服务质量时的输出丢弃
如果接口在服务质量输出方向没有关联的策略映射,则其他原因可能导致输出丢弃。
在没有服务质量接口的接口上出现输出丢弃的部分原因如下:
- 形成端口通道和超订用单个输出接口的传入接口
- 量子流处理器(QFP)背压
- 许可吞吐量限制
- 平台限制
请参阅本文档的Quantum Flow处理器(QFP)丢弃部分,进一步对此情况进行故障排除。
Quantum Flow Processor(QFP)丢弃
要验证QFP丢弃的原因,请使用命令show platform hardware qfp active statistics drop,如下所示:
---- show platform hardware qfp active statistics drop ----
Last clearing of QFP drops statistics : never
-------------------------------------------------------------------------
Global Drop Stats Packets Octets
-------------------------------------------------------------------------
BFDoffload 23944858 1904416850
IpTtlExceeded 184211 28644972
IpsecIkeIndicate 175 26744
IpsecInput 686112 171458640
IpsecInvalidSa 1 80
Ipv4Martian 4 392
Ipv4NoAdj 19776 6587643
Ipv4NoRoute 75 10950
Ipv6NoRoute 27068 1515808
ReassDrop 3489529 450382594
ReassNoFragInfo 4561070 6387610348
ReassOverlap 3 198
ReassTimeout 7408271 2631950860
TailDrop 193769387 157113756882
此命令显示QFP丢弃的不同原因以及每个类别的相关数据包计数器。
注意:大多数QFP丢弃类别原因从其名称本身就可以解释清楚。原因类别指导故障排除流程。对于非常见的数据包丢弃类别,如果需要,请提交思科TAC案例。
尾部丢弃
TailDrop计数器是最常见的丢弃类型之一,它通常由于以下原因而增加:
生成的日志类型:
%BW_LICENSE-4-THROUGHPUT_MAX_LEVEL:F0/0:cpp_ha_top_level_server:在过去<period>小时内,<sampling-number>采样周期内,平均吞吐量速率接近许可带宽<mbps> Mbps,采样周期为<sampling-period>秒
验证命令:
- show platform hardware qfp active infrastructure bqs queue output default interface <interface>
- show plat hardware qfp active infrastructure bqs queue output default all
- show platform hardware qfp active feature lic-bw oversubscription
- show platform hardware through level
- show platform hardware throughput crypto
要了解受影响的流量是否被丢弃,以及QFP是否查看更详细的数据包处理,您可以使用数据包跟踪功能。请参阅使用Cisco IOS-XE数据路径数据包跟踪功能进行故障排除。
生成的日志类型:
%IOSXE_QFP-2-LOAD_EXCEED:插槽:0、QFP:0、Load <load-percentage>%超过设置阈值。
注意:请参阅产品手册中的平台限制吞吐量数字和扩展。吞吐量取决于设备配置中功能的数量和使用情况。它还会因注入QFP的每秒聚合位(bps)而异。
您可以使用命令show platform hardware qfp active datapath utilization summary检验过去5秒、1分钟、5分钟或60分钟内的QFP利用率。
---- show platform hardware qfp active datapath utilization summary ----
CPP 0: 5 secs 1 min 5 min 60 min
Input: Total (pps) 1 2 2 2
(bps) 320 1032 1032 1032
Output: Total (pps) 0 1 1 1
(bps) 0 8560 8560 8576
Processing: Load (pct) 0 0 0 0
Crypto/IO
Crypto: Load (pct) 0 0 0 0
RX: Load (pct) 0 0 0 0
TX: Load (pct) 2 2 2 2
Idle (pct) 97 97 97 97
对于QFP中的其他丢包验证,请使用show drops { bqs | crypto| firewall| interface| ip-all| nat| punt| qfp| qos|history}命令,请参阅Cisco Catalyst 8500和8500L系列边缘平台软件配置指南。
数据包丢弃故障排除的其他提示
接口上的计数器
通过show interfaces [interface]命令显示不同的计数器。有关每个计数器的含义的说明可在以太网故障排除文档中找到。
基于CLI的每秒历史位图形
您可以在接口级别下使用命令history bps,在CLI中从接口的传入和传出方向启用历史记录位每秒图形视图。此配置会在接口上生成一个历史bps的图形。
Router(config)#interface gigabitEthernet 0/0/0
Router(config-if)#history bps
您还可以启用history bps output-drops和其他计数器历史记录。
要显示一段时间内的历史记录计数器结果,请使用命令show interfaces <interface> history命令:
---- show interfaces gigabitEthernet 0/0/0 history ? ----
60min Display 60 minute histograms only
60sec Display 60 second histograms only
72hour Display 72 hour histograms only
all Display all three histogram intervals
both Display both input and output histograms
input Display input histograms only
output Display output histograms only
| Output modifiers
#show int gi1 history 60sec
90100 *
82100 *
74100 ******
66100 ***********
58100 ***********
50100 ****************
42100 *********************
34100 *******************************
26100 ************************************
18100 ***************************************************
10100 **********************************************************
0....5....1....1....2....2....3....3....4....4....5....5....6
0 5 0 5 0 5 0 5 0 5 0
GigabitEthernet1 output rate(mbits/sec) (last 60 seconds)
清除计数器
这些命令用于清除各种计数器统计信息:
- clear counters:清除接口级计数器数据。
- show platform hardware qfp active statistics drop clear:重置QFP(量子流处理器)上的丢弃计数器。
一段时间内的丢弃百分比
要验证输出丢弃的数量是否有效,除了在接口级别使用history bps output-drops 命令了解随时间变化的丢弃情况外,还可以使用其他计数器值获取自上次清除计数器以来输出丢弃的总体百分比。
如果自上次启动后未清除计数器,请使用命令show version获取系统的正常运行时间,或者使用命令show interfaces参阅show interface counters值的上次清除时间。
在确定计数器上次清除时间或确定设备正常运行时间之后,计算该时间段内发生的输出丢弃的百分比。
这可以通过将总输出丢弃值乘以100,然后将show interfaces <interface>命令的数据包输出计数器值之间的结果来完成。该操作的结果给出了该接口在该时间段内输出丢弃的百分比。
注意:请记住,show interfaces和show platform hardware qfp active statistics drop中的计数器自上次清除后是历史的和累积的。如果重新加载完成,则清除计数器。
请参阅以下示例输出:
---- show version ----
Hostname uptime is 51 weeks, 1 day, 14 hours, 17 minutes
---- show interface GigabitEthernet0/0/1 ----
GigabitEthernet0/0/1 is up, line protocol is up
Last clearing of "show interface" counters never
Input queue: 0/375/0/0 (size/max/drops/flushes); Total output drops: 1351
219128599 packets output, 84085726336 bytes, 0 underruns
示例输出表明接口的计数器从未被清除,这意味着在设备的最后51周的正常运行时间内,总输出丢弃的百分比为(1351 x 100)/ 219128599 = .0006%。
此百分比的解释可能是,此接口上的总输出丢弃并不显着,而且由于此计数器是历史的、累积的,并且考虑到较长的正常运行时间,这意味着丢弃没有影响。
加载间隔
Load interval是来自接口级别的配置参数,指示数据用于计算负载统计信息的时间长度。
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface gigabitEthernet 0/0/0
Router(config-if)#load-interval ?
<30-600> Load interval delay in seconds
load-interval参数的结果会显示在输入和输出速率值下的show interfaces命令中:
---- show interfaces gigabitEthernet 0/0/0 ----
GigabitEthernet0/0/0 is administratively down, line protocol is down
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
在验证执行show interfaces命令时的每秒比特率时,这一点非常重要。
输入和输出速率值有助于了解接口每秒传入和传出的位数。
使用命令show interface summary可大致了解所有接口上的输入和输出速率值,并获取物理接口的聚合输出速率,这有助于了解特定时间点的每秒总聚合位输出。 请参阅此示例输出中的RXBS和TXBS计数器:
---- show interfaces summary ----
*: interface is up
IHQ: pkts in input hold queue IQD: pkts dropped from input queue
OHQ: pkts in output hold queue OQD: pkts dropped from output queue
RXBS: rx rate (bits/sec) RXPS: rx rate (pkts/sec)
TXBS: tx rate (bits/sec) TXPS: tx rate (pkts/sec)
TRTL: throttle count
Interface IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL
-----------------------------------------------------------------------------------------------------------------
* GigabitEthernet0/0/0 1 0 0 0 9000 19 0 0 0
GigabitEthernet0/0/1 0 0 0 0 0 0 0 0 0
GigabitEthernet0/0/2 0 0 0 0 0 0 0 0 0
* GigabitEthernet0/0/3 0 0 0 0 9000 19 0 0 0
临时删除QoS策略
要进行故障排除,请暂时从受影响的接口删除QoS策略。在接口配置级别使用命令no service-policy output <policy-name>。
- 如果丢包在没有QoS策略的情况下仍然存在,则问题与QoS无关。
- 如果在删除QoS策略后停止丢弃,则可能是该策略的原因。
注意:如果需要TAC帮助,则隔离确定丢弃是否由于服务质量所致,这对于在早期阶段将案例路由到适当的专家非常重要。
注意:丢弃也可能是由于ipsec功能。Ipsec丢弃通常在用作隧道源的物理接口中汇聚。如果仅在使用隧道时存在丢弃,则必须向TAC指示是否需要帮助。这有助于在早期阶段将案例路由到相应的团队
相关文章和文档