简介
本文档介绍如何对带有嵌入式服务处理器10(ESP10)的聚合服务路由器1000(ASR 1000)中的日志消息HAL_PKTMEM-2-OUT_OF_RESOURCES进行故障排除和验证。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
本文档中的信息基于以下软件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
背景信息
PAK_PRIORITY是设备在设备内传输数据包时用于指定数据包处理的机制。通常被PAK_PRIORITY标记的数据包是控制协议数据包,例如:RIP、OSPF、EIGRP、ISIS、PPP、HDLC等
症状
通常,路由器无法从某些接口转发流量时,会出现此问题。
在日志缓冲区中可以看到以下日志:
.4月8日18:56:40.808 GMT:%IOSXE-2-PLATFORM:F0:cpp_cp:QFP:00线程:069 TS:00006374345833820173 %HAL_PKTMEM-2-OUT_OF_RESOURCES:
4月8日18:57:41.222 GMT:%IOSXE-2-PLATFORM:F0:cpp_cp:QFP:00线程:047 TS:00006374406093385973 %HAL_PKTMEM-2-OUT_OF_RESOURCES:
4月8日18:58:43.662 GMT:%IOSXE-2-PLATFORM:F0:cpp_cp:QFP:00线程:009 TS:00006374468373382518 %HAL_PKTMEM-2-OUT_OF_RESOURCES
此日志表示由于pak_priority流量超订用,设备已用尽数据包缓冲区。
ASR 1k不会丢弃PAK_PRIORITY数据包,因此它们可以轻松地填充缓冲区,不允许其他类型的流量通过。
故障排除
首先检查队列的接口默认值以查找有问题的接口:
R1#sh platf hard qfp active infrastructure bqs queue output default interface GigabitEthernet0/0/4
接口:GigabitEthernet0/0/4 QFP:0.0 if_h:19队列/计划数:1
队列详细信息:
索引0(队列ID:0x8a,名称:GigabitEthernet0/0/4)
软件控制信息:
(缓存)队列id:0x0000008a,wred:0x8b670082,qlimit(字节):3281312
parent_sid:0x278, debug_name:千兆以太网0/0/4
sw_flags:0x08000091,sw_state:0x00000801, port_uidb:0
orig_min:0,分钟:105000000
min_qos:0, min_dflt:0
orig_max:0,最大值:0
max_qos:0 , max_dflt:0
共享:1
详细:0,优先级:0
defer_obj_refcnt:0
统计信息:
尾部丢弃(字节):0,(数据包):0
总需求(字节):969986824(数据包):6713421
queue_depth(字节):262736736
您可以看到队列限制为3281312,但队列深度为262736736。超出了数据包的数量。只有在pak_priority数据包以高速率到达接口时,才会发生这种情况。
然后检查ASR 1k的QFP(量子流处理器)上的丢包,您会发现BQSOOR(缓冲队列和资源外调度)丢包正在增加。BQS是缓冲、排队和调度ASIC,这意味着设备无法缓冲由于饱和而到达的某些数据包。
R1#show plat hardw qfp active statistics drop all | e _0_
—
全局丢弃统计信息数据包八位组
—
BqsOor 62918 8700111
R1#show plat hardw qfp active statistics drop all | e _0_
—
全局丢弃统计信息数据包八位组
—
BqsOor 62923 8700966
R1#show plat hardw qfp active statistics drop all | e _0_
—
全局丢弃统计信息数据包八位组
—
BqsOor 62942 8703894
现在检查bqs数据包利用率,查看已使用缓冲区的百分比。
R1#show platform hardware qfp act bqs 0数据包利用率
数据包缓冲区内存利用率详细信息:
总数:256.00 MB
已使用:253.44 MB
免费:2620.00 KB
阈值:
内存不足(OOM):255.96 MB,状态:错误
重要(> 98%):253.44 MB,状态:真
资源不足(OOR):217.60 MB,状态:真
使用:99 %
利用率为99%,因此这确认设备已耗尽缓冲区的资源。
现在,您需要查找数据包所在的缓冲区组。
有4个选项:
·通过MQC创建的QoS队列运行命令“Show policy-map int |包括队列深度|限制"
·输出接口的默认队列运行命令“Sho plat hard qfp act inf bqs que out def all |包括queue_depth"
·用于基础设施的循环队列运行命令“Sho plat hard afp act inf bqs queue out recycle all |包括queue_depth"
· IPC(进程间通信协议)队列运行命令“Sho plat hard afp act inf bqs queue out ipc |包括queue_depth"
R1#show platform hardware qfp act inf bqs que out def all | i queue_de
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):262736736
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
R1#show platform hardware qfp act inf bqs qus qus que out recy all | i queue_de
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
queue_depth(数据包):0
R1#show platform hardware qfp act inf bqs que out ipc | i queue_de
queue_depth(字节):0
queue_depth(字节):0
queue_depth(字节):0
您会看到数据包处于默认队列中。
通常,此问题可能与PAK_PRIORITY标记的数据包或DDOS攻击风暴相关,这些攻击可能被发送为PAK_PRIORITY以中断数据包转发,因为此CoPP(控制平面策略)可能需要丢弃来自有效源的数据包。
流量控制也可能导致这种情况,在这种情况下,您还会看到接口上的暂停输入增加。
R1#show int gi0/0/4
GigabitEthernet0/0/4为up,线路协议为up
硬件为SPA-10X1GE-V2,地址为74de.eeee.cccc(bia 74de.eeee.cccc)
描述:inmumpt005rtwn01-G0/2 Airtel 7779861 300Mbps/1Gbps
Internet address is 10.1.1.1/30
MTU 9000字节,BW 300000 Kbit/s,DLY 10用户,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
不支持Keepalive
全双工,1000Mbps,链路类型为强制打开,介质类型为LX
输出流控制打开,输入流控制打开
ARP type:ARPA, ARP Timeout 04:00:00
上次输入00:00:02、输出00:00:01、输出从未挂起
上次清除“show interface”计数器8w5d
Input queue:0/375/0/0(大小/最大/丢包/刷新);总输出丢弃数:11
排队策略基于类的队列
Output queue:0/40 (size/max)
30秒输入速率0位/秒,0数据包/秒
30秒输出速率0位/秒,0数据包/秒
16653945560 packets input, 6397725725851 bytes, 91 no buffer
接收339个广播(0个IP组播)
0 runts, 0 giants, 0 throttles
52个输入错误、52个CRC、0帧、0溢出、0已忽略
0监视器,2095792组播,166107198暂停输入
12240362564 packets output, 3785983938723 bytes, 0 underruns