Contents

Introduction

Prerequisites

Componentes Utilizados

Problema

Solução

Discussões relacionadas da comunidade de suporte da Cisco

Introduction

tacacsd é um processo XR do IOS que está associado ao serviço AAA do Tacacs. Este documento discute um bug de software e seus sintomas que podem fazer com que os roteadores que executam o IOS XR versão 4.2.X ou inferior observem alta utilização constante da CPU.

Prerequisites

Não existem requisitos específicos para este documento.

Componentes Utilizados

O problema abordado neste documento se aplica ao Cisco GSR, ASR9000, CRS e outros roteadores que executam IOS XR. As saídas usadas abaixo foram tiradas de um roteador de laboratório que executa a versão do IOS XR anterior à 4.2.X.

Problema

Os roteadores que executam o IOS XR versão 4.2.X ou anterior podem observar uma alta utilização constante da CPU devido ao processo do agente de alarme devido a um bug de software conhecido. A saída show process cpu mostraria o processo do alarm-logger consumindo a quantidade máxima de utilização da CPU.

show proc cpu | ex "0% 0% 0%"

CPU utilization for one minute: 100%; five minutes: 100%; fifteen minutes: 100%

PID 1Min 5Min 15Min Process

<snip>

53281 2% 2% 2% syslogd_helper

57379 1% 1% 1% fabricq_prp_driver

69636 1% 1% 1% correlatord

69677 6% 6% 6% syslogd

118842 1% 1% 1% sysdb_svr_local

122962 3% 3% 3% gsp

229604 2% 2% 2% eem_ed_syslog

262456 1% 1% 1% tacacsd

452726918 67% 71% 72% alarm-logger

463302887 1% 1% 1% exec

<snip>

No buffer de registro, você pode ver logs contínuos semelhantes a:

tacacsd[XXXX]: %SECURITY-TACACSD-7-GENERIC_ERROR : Falha ao obter solicitação para: chave -XXXXX/XXXX/XXXX/XXXX sessão XXXXX

show log

<snip>

RP/0/7/CPU0:Dec 26 04:02:03.149 : tacacsd[1110]: %SECURITY-TACACSD-6-SERVER_UP :

TACACS+ server 32.95.X.X/XXXX is UP

RP/0/7/CPU0:Dec 26 04:02:05.956 : tacacsd[1110]: %SECURITY-TACACSD-6-SERVER_DOWN :

TACACS+ server 32.95.X.X/XXXX is DOWN - Socket 43: Connection timed out

RP/0/7/CPU0:Dec 26 04:02:09.468 : tacacsd[1110]: %SECURITY-TACACSD-6-SERVER_DOWN :

TACACS+ server 199.37.X.X/XXXX is DOWN - Socket 43: Connection timed out

RP/0/7/CPU0:Dec 26 04:02:09.647 : tacacsd[1110]: %SECURITY-TACACSD-6-TIMEOUT_IGNORED :

A time out event has been ignored for context key -953829129/1073/60000000/6486405

(session 6486405)

RP/0/7/CPU0:Dec 26 04:02:11.647 : tacacsd[1110]: %SECURITY-TACACSD-7-GENERIC_ERROR :

Failed to get request for: key -953829129/1073/60000000/6486405 session 105407493

RP/0/0/CPU0:last message repeated 520 times

RP/0/7/CPU0:Dec 26 04:02:34.064 : tacacsd[1110]: %SECURITY-TACACSD-6-SERVER_UP :

TACACS+ server 32.95.X.X/XXXX is UP

RP/0/7/CPU0:Dec 26 04:02:34.064 : tacacsd[1110]: %SECURITY-TACACSD-7-GENERIC_ERROR :

Failed to get request for: key -953829129/1073/60000000/6486405 session 105407493

os detalhes dos processos alarm-logger e tacacsd podem ser vistos como abaixo.

show processes alarm-logger

<snip>

Job Id: 114

PID: 135303

Executable path: /c12k-os-4.2.4/sbin/alarm-logger

Instance #: 1

Version ID: 00.00.0000

Respawn: ON

Respawn count: 1

Max. spawns per minute: 12

Last started: Tue Aug 13 02:17:23 2013

Process state: Run

Package state: Normal

core: MAINMEM

Max. core: 0

Level: 91

Placement: None

startup_path: /pkg/startup/alarm-logger.startup

Ready: 0.672s

Process cpu time: 1401.018 user, 49.774 kernel, 1450.792 total

JID TID Stack pri state TimeInState HR:MM:SS:MSEC NAME

114 1 88K 10 Receive 0:00:02:0071 0:00:40:0919 alarm-logger

114 2 88K 10 Receive 3242:46:17:0308 0:00:00:0000 alarm-logger

114 3 88K 10 Reply 0:00:00:0000 0:23:08:0029 alarm-logger

114 4 88K 10 Mutex 0:00:00:0000 0:00:21:0957 alarm-logger

-------------------------------------------------------------------------------

<snip>

show processes tacacsd

<snip>

Job Id: 1110

PID: 266551

Executable path: /disk0/iosxr-infra-4.2.4/bin/tacacsd

Instance #: 1

Version ID: 00.00.0000

Respawn: ON

Respawn count: 1

Max. spawns per minute: 12

Last started: Tue Aug 13 02:23:47 2013

Process state: Run

Package state: Normal

Started on config: cfg/gl/aaa/tacacs/

Process group: central-services

core: MAINMEM

Max. core: 0

Placement: Placeable

startup_path: /pkg/startup/tacacsd.startup

Ready: 3.954s

Process cpu time: 1010.118 user, 185.932 kernel, 1196.050 total

JID TID Stack pri state TimeInState HR:MM:SS:MSEC NAME

1110 1 108K 16 Sigwaitinfo 3242:46:40:0742 0:00:00:0116 tacacsd

1110 2 108K 10 Nanosleep 0:01:03:0835 0:00:00:0019 tacacsd

1110 3 108K 10 Receive 3242:46:41:0593 0:00:00:0002 tacacsd

1110 4 108K 10 Reply 0:00:00:0000 0:08:55:0970 tacacsd

1110 5 108K 16 Receive 3242:46:40:0771 0:00:00:0000 tacacsd

1110 6 108K 10 Receive 0:07:07:0403 0:04:03:0462 tacacsd

1110 7 108K 10 Receive 0:00:01:0389 0:03:28:0939 tacacsd

1110 8 108K 10 Receive 0:00:01:0332 0:03:03:0622 tacacsd

-------------------------------------------------------------------------------

<snip>

A alta utilização da CPU é causada devido à inundação de mensagens de syslog, fazendo com que o buffer do registro de alarme fique cheio. Assim, o processo do agente de alarme permanece ocupado tentando manipular a mensagem e enfrentando a condição de buffer cheio ao mesmo tempo.  Nesse caso, o processo TACACS está sobrecarregando o alarm-logger. Como o alarm-logger é uma vítima, reiniciar o processo do alarm-logger não ajudará, pois o buffer de memória compartilhada permanece persistente após a reinicialização do processo.

Solução

Este problema foi resolvido e corrigido através do bug de software CSCuh98484 - erro Tacacsd "Falha ao obter solicitação de chave" causa alta CPU. Detalhes do bug estão presentes aqui

Observe que a reinicialização do processo tacacsd é uma solução alternativa que deve interromper os registros e a utilização da CPU deve retornar ao nível normal. Reiniciar o processo tacacsd não afetará nenhuma funcionalidade ou encaminhamento de pacote de dados, ele colocará o processo em seu estado inicial.

Esse bug foi corrigido nas seguintes versões do IOS XR.

4.3.2.SP2

4.3.2.SP3

4.3.2.SP5

4.3.2.SP6

4.3.2.SP7

4.3.2.SP8