Sommario

Introduzione

Prerequisiti

Componenti usati

Problema

Soluzione

Introduzione

tacacsd è un processo IOS XR associato al servizio Tacacs AAA. In questo documento viene descritto un bug software e i suoi sintomi che possono causare il costante e elevato utilizzo della CPU da parte dei router con IOS XR versione 4.2.X o precedenti.

Prerequisiti

Nessun requisito specifico previsto per questo documento.

Componenti usati

Il problema illustrato in questo documento si applica a Cisco GSR, ASR9000, CRS e altri router con IOS XR. Gli output usati di seguito sono stati presi da un router lab con IOS XR versione precedente alla 4.2.X.

Problema

I router con IOS XR versione 4.2.X o inferiore possono rilevare un elevato utilizzo della CPU costante a causa del processo di registrazione degli allarmi dovuto a un bug noto del software. Mostra l'output della CPU del processo indica che il processo di registrazione degli allarmi utilizza la massima quantità di 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>

Nel buffer di registrazione è possibile visualizzare registri continui simili a:

tacacsd[XXXX]: %SECURITY-TACACSD-7-GENERIC_ERROR: impossibile ottenere la richiesta per: chiave -XXXXX/XXXX/XXXX/XXXX session 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

i dettagli dei processi alarm-logger e tacacsd sono riportati di seguito.

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>

Un elevato livello di CPU è causato da un'ondata di messaggi syslog che causano il pieno utilizzo del buffer del registratore di allarmi. Quindi il processo di alarm-logger rimane occupato, cercando di gestire il messaggio e affrontando la condizione di buffer pieno allo stesso tempo.  In questo caso, il processo TACACS è uno strumento di registrazione degli allarmi impressionante. Poiché alarm-logger è una vittima, il riavvio del processo alarm-logger non sarà di aiuto in quanto il buffer di memoria condivisa rimane persistente dopo il riavvio del processo.

Soluzione

Il problema è stato risolto e risolto con il bug software CSCuh98484 - L'errore Tacacsd "Failed to get request for key" (Impossibile ottenere la richiesta per la chiave) causa un utilizzo elevato della CPU. Qui sono riportati i dettagli dei bug

Notare che il riavvio del processo tacacsd è una soluzione che dovrebbe arrestare i registri e l'utilizzo della CPU dovrebbe tornare al livello normale. Il riavvio del processo tacacsd non influirà sulle funzionalità o sull'inoltro dei pacchetti di dati, ma metterà il processo nello stato iniziale.

Questo bug è stato risolto nelle seguenti versioni di 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