Table des matières

Introduction

Conditions préalables

Composants utilisés

Problème

Solution

Introduction

tacacsd est un processus IOS XR associé au service AAA de Tacacs. Ce document traite d'un bogue logiciel et de ses symptômes qui peuvent amener les routeurs exécutant IOS XR version 4.2.X ou antérieure à observer une utilisation élevée constante du CPU.

Conditions préalables

Aucune exigence spécifique n'est associée à ce document.

Composants utilisés

Le problème abordé dans ce document concerne Cisco GSR, ASR9000, CRS et d'autres routeurs exécutant IOS XR. Les résultats utilisés ci-dessous proviennent d’un routeur de travaux pratiques exécutant une version d’IOS XR antérieure à 4.2.X.

Problème

Les routeurs exécutant IOS XR version 4.2.X ou inférieure peuvent observer une utilisation élevée constante du CPU en raison d'un processus d'enregistrement d'alarme dû à un bogue logiciel connu. La sortie show process cpu indique que le processus du journal d'alarmes consomme la quantité maximale d'utilisation du processeur.

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>

Dans la mémoire tampon de journalisation, vous pouvez voir des journaux continus similaires à :

tacacsd[XXXX] : %SECURITY-TACACSD-7-GENERIC_ERROR : échec de l'obtention de la demande pour : key -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

les détails des processus alarm-logger et tacacsd sont visibles ci-dessous.

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 CPU élevé est provoqué par un déluge de messages syslog, ce qui entraîne le remplissage du tampon du journal d'alarme. Par conséquent, le processus de l'enregistreur d'alarmes reste occupé à essayer de traiter le message et à faire face à la condition de mémoire tampon pleine en même temps.  Dans ce cas, le processus TACACS accable le système d'enregistrement des alarmes. Comme le journal des alarmes est une victime, le redémarrage du processus du journal des alarmes ne sera pas utile car la mémoire tampon partagée reste persistante après le redémarrage du processus.

Solution

Ce problème a été résolu et corrigé via le bogue logiciel CSCuh98484 - L'erreur Tacacsd "Failed to get request for key" entraîne une utilisation CPU élevée. Les détails du bogue sont présents ici

Veuillez noter que le redémarrage du processus tacacsd est une solution de contournement qui devrait arrêter les journaux et l'utilisation du CPU devrait revenir à un niveau normal. Le redémarrage du processus tacacsd n'affectera aucune fonctionnalité ou transfert de paquets de données, il placera le processus dans son état initial.

Ce bogue a été corrigé dans les versions suivantes d'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