Introduction
Este documento descreve como solucionar problemas e verificar as mensagens de log HAL_PKTMEM-2-OUT_OF_RESOURCES nos Aggregation Services Routers 1000 (ASR 1000) com Embedded Services Processor 10 (ESP10).
Prerequisites
Requirements
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Encaminhamento de pacotes ASR1k
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software:
- ASR1k 15.1(3)S2 e superior
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Informações de Apoio
PAK_PRIORITY é o mecanismo que os dispositivos usam para especificar o tratamento de um pacote enquanto ele é transmitido dentro do dispositivo. Os pacotes que normalmente são marcados como PAK_PRIORITY seriam pacotes de protocolo de controle, por exemplo: RIP,OSPF, EIGRP, ISIS, PPP, HDLC etc.
Sintoma
Normalmente, esse problema apresenta-se como o roteador que não consegue encaminhar o tráfego para fora de certas interfaces.
Esses registros podem ser vistos no buffer de log:
08 de abril 18:56:40.808 GMT: %IOSXE-2-PLATAFORMA: F0: cpp_cp: QFP:00 Thread:069 TS:0006374345833820173 %HAL_PKTMEM-2-OUT_OF_RESOURCES:
08 de abril 18:57:41.222 GMT: %IOSXE-2-PLATAFORMA: F0: cpp_cp: QFP:00 Thread:047 TS:00006374406093385973 %HAL_PKTMEM-2-OUT_OF_RESOURCES:
08 de abril 18:58:43.662 GMT: %IOSXE-2-PLATAFORMA: F0: cpp_cp: QFP:00 Thread:009 TS:0006374468373382518 %HAL_PKTMEM-2-OUT_OF_RESOURCES
Esse log significa que o dispositivo ficou sem buffers de pacotes, devido à assinatura excessiva do tráfego pak_priority.
O ASR 1k não descartará pacotes PAK_PRIORITY, facilitando o preenchimento dos buffers sem permitir que outro tipo de tráfego passe.
Troubleshoot
Você começa verificando os valores padrão das interfaces para as filas da interface com problemas:
R1#sh platf hard qfp ative infrastructure bqs queue output default interface GigabitEthernet0/0/4
Interface: GigabitEthernet0/0/4 QFP: 0,0 if_h: 19 Num Queues/Programações: 1
Especificações da fila:
Índice 0 (ID da fila:0x8a, Nome: GigabitEthernet0/0/4)
Informações de controle de software:
ID da fila (cache): 0x0000008a, com fio: 0x8b670082, qlimit (bytes): 3281312
parent_sid: 0x278, debug_name: GigabitEthernet0/0/4
sw_flags: 0x08000091, sw_state: 0x00000801, port_uidb: 0
orig_min: 0, mín.: 105000000
min_qos: 0 , min_dflt: 0
orig_max: 0, máx.: 0
max_qos: 0 , max_dflt: 0
compartilhar: 1
nível: 0, prioridade: 0
defer_obj_refcnt: 0
Estatísticas:
quedas traseiras (bytes): 0 , (pacotes): 0
total de enqs (bytes): 969986824 , (pacotes): 6713421
queue_deep (bytes): 262736736
Você pode ver que o limite da fila é 3281312, mas a profundidade da fila é 262736736. A quantidade de pacotes está sendo excedida. Isso só pode acontecer quando os pacotes pak_priority estão chegando a uma taxa alta na interface.
Em seguida, verifique quedas no QFP (Quantum Flow Processor) do ASR 1k, você percebe que há quedas de BQSOOR (Buffering Queueing e Scheduling fora de recurso). O BQS é o ASIC de buffer, enfileiramento e agendamento, o que significa que o dispositivo não é capaz de armazenar em buffer determinados pacotes que estão chegando devido à saturação.
R1#show plat hardw qfp ative statistics drop all | e _0_
—
Octetos de pacotes de estatísticas de descarte global
—
BqsOor 62918 8700111
R1#show plat hardw qfp ative statistics drop all | e _0_
—
Octetos de pacotes de estatísticas de descarte global
—
BqsOor 62923 8700966
R1#show plat hardw qfp ative statistics drop all | e _0_
—
Octetos de pacotes de estatísticas de descarte global
—
BqsOor 62942 8703894
Agora, verifique a utilização do pacote bqs para ver a porcentagem de buffer usada.
R1#show platform hardware qfp act bqs 0 utilização de pacotes
Detalhes de utilização da memória do buffer de pacotes:
Total: 256.00 MB
Utilizado: 253.44 MB
Livre: 2620.00 KB
Valores-limite:
Memória insuficiente (OOM): 255,96 MB, Status: Falso
Vital (> 98%): 253,44 MB, Status: Verdadeiro
Recurso não disponível (OOR): 217,60 MB, Status: Verdadeiro
Utilização: 99 %
A utilização é de 99%, portanto isso confirma que o dispositivo está ficando sem recursos para o buffer.
Agora você precisa localizar em qual grupo de buffers estão os pacotes.
Há 4 opções:
· filas QoS criadas via MQC executam o comando "Show policy-map int | incl. profundidade da fila|limite"
· Filas padrão para a interface de saída execute o comando "Sho plat hard qfp act inf bqs que out def all | incl queue_deep"
· filas de reciclagem usadas para infraestrutura execute o comando "Sho plat hard afp act inf bqs queue out recicle all | incl queue_deep"
· filas IPC (Interprocess Communication Protocol) executam o comando "Sho plat hard afp act inf bqs queue out ipc | incl queue_deep"
R1#show platform hardware qfp act inf bqs ver definição all | i queue_de
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 262736736
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
R1#show platform hardware qfp act inf bqs que saia tudo | i queue_de
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
queue_deep (pacotes): 0
R1#show platform hardware qfp act inf bqs que out ipc | i queue_de
queue_deep (bytes): 0
queue_deep (bytes): 0
queue_deep (bytes): 0
Você vê que os pacotes estão na fila padrão.
Normalmente, esse problema pode ser associado a uma tempestade de pacotes marcados com PAK_PRIORITY ou ataques de DDOS que podem ser enviados marcados como PAK_PRIORITY para interromper o encaminhamento de pacotes, pois esta CoPP (Política de Plano de Controle) pode ser necessária para descartar pacotes que não vêm de uma origem válida.
O controle de fluxo também pode causar isso, caso em que você também verá entradas de pausa aumentarem na interface.
R1#show int gi0/0/4
GigabitEthernet0/0/4 está ativo, protocolo de linha está ativo
O hardware é SPA-10X1GE-V2, o endereço é 74de.eee.ccc (bia 74de.eee.ccc)
Descrição: inmumpt005rtwn01-G0/2 Airtel 779861 300Mbps/1Gbps
O endereço de Internet é 10.1.1.1/30
MTU 9000 bytes, BW 300000 Kbit/s, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulamento ARPA, loopback não definido
Keepalive não suportado
Full Duplex, 1000 Mbps, tipo de link é force-up, tipo de mídia é LX
output flow-control is on, input flow-control is on
Tipo ARP: ARPA, Tempo limite ARP 04:00:00
Última entrada 00:00:02, saída 00:00:01, saída nunca travar
Última limpeza de contadores "show interface" 8w5d
Fila de entrada: 0/375/0/0 (tamanho/máx./gotas/descargas); Total de quedas de saída: 11
Estratégia de enfileiramento: Enfileiramento baseado em classe
Fila de saída: 0/40 (tamanho/máximo)
Taxa de entrada de 30 segundos 0 bits/s, 0 pacotes/s
Taxa de saída de 30 segundos 0 bits/s, 0 pacotes/s
16653945560 pacotes de entrada, 6397725725851 bytes, 91 sem buffer
Recebeu 339 broadcasts (0 multicasts IP)
0 runts, 0 giants, 0 throttles
52 erros de entrada, 52 CRC, 0 quadro, 0 overrun, 0 ignorado
0 watchdog, multicast 2095792, 166107198 pause input
saída de 12240362564 pacotes, 3785983938723 bytes, 0 perdas por ausência de execução