Introduzione
Questo documento descrive la funzione "Graceful Assert Handling", introdotta nella versione 21.5.0 di StarOS.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- StarOs
- SGSN (GPRS Support Node) al servizio
Componenti usati
Il riferimento delle informazioni contenute in questo documento è StarOS R21.5 e versioni successive.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
La funzione è disponibile nella documentazione ufficiale qui: SGSN-Admin.
Il framework Graceful Assert Handling consente la gestione ordinata delle sessioni del sottoscrittore per le quali viene soddisfatta la condizione ASSERT al momento dell'esecuzione della chiamata. Questa operazione non influisce sulle altre sessioni del destinatario predefinito sullo stesso client.
In genere, quando viene soddisfatta la condizione ASSERT, il processo di gestione delle sessioni (SessMgr) viene riavviato e ripristinato tutte le sessioni sottoscrittori da AAA Manager (AAMgr). Le sessioni del sottoscrittore recuperate vengono spostate nello stato IDLE.
Quando la gestione delle asserzioni attendibili è abilitata, il processo di SessMgr non viene riavviato. Al contrario, il client di SessMgr recupera solo la sessione del destinatario interessato da AAMgr e cancella la sessione del destinatario esistente su SessMgr. Le sessioni del sottoscrittore recuperate vengono spostate nello stato IDLE. Al momento della procedura di ripristino, tutti i messaggi diretti al destinatario vengono eliminati. Dopo il ripristino, il sottoscrittore continua a gestire i messaggi indirizzati al destinatario. Con questa procedura, le sessioni sottoscrittori che rimangono su SessMgr non subiscono alcuna modifica.
Problema
In alcuni casi d'angolo e/o di collisione la correzione della causa principale è complessa oppure la causa principale è sconosciuta. In questi casi, viene adottato un approccio di asserzione aggraziato per evitare il riavvio completo del gestore della sessione.
Soluzione
Con l'asserzione corretta è possibile pulire e ripristinare la sessione 1 che raggiunge la condizione di asserzione corretta.
Non vi è alcun impatto su altre sessioni dello stesso sessmgr.
Non sono presenti trap SNMP o syslog per un riavvio normale.
In caso di asserzione aggraziata non si verifica alcuna perdita di KPI. L'attività stessa non viene riavviata.
Tuttavia, le asserzioni graziose sono gestite come qualsiasi altro crash, il che significa che si ottiene una voce in show crash list.
Come identificare un'asserzione graziosa dall'SSD:
- Dump dello stato avviato dal sistema con core. - viene visualizzato nell'output "show crash" prima dello stack
- il client arrestato in modo anomalo può essere avviato dall'utente o meno - viene visualizzato dopo lo stack nell'output della "cpu della console di debug"
- pid 7939 funzione sessmgr failover 5132->94 - in "debug console CPU" non viene registrato/visualizzato in caso di Graceful Assert
Configurazione
La gestione delle asserzioni senza problemi può essere configurata come segue:
configure
debug controlled-assert s4sgsn
[ disable | enable ] core-generation
limit-per-assert assert_value
[ no ] test file-name file_name line-number line_num [ sequence-number seq_num ]
end Prendi nota:
-
asserzione controllata: Configura la struttura di asserzione controllata.
-
s4sgsn : Configura l'asserzione controllata S4-SGSN.
-
generazione di base: Configura la generazione di base per l'asserzione controllata. Predefinito: Attivato.
-
limite per asserzione: Configura il limite per asserzione per l'asserzione controllata. Predefinito: 5.
-
test file-name nome_file numero_riga num_riga [ numero-sequenza num_seq ]: Configura la gestione dei test degli asserzioni controllati.
-
nome_file nome_file: Configura il nome del file in cui è richiesto il controllo assert. nome_file deve essere una stringa alfanumerica di lunghezza compresa tra 1 e 254 caratteri.
-
numero riga num_riga: Configura il numero di riga in cui è richiesto il controllo assert. il valore di num_riga deve essere un numero intero compreso tra 1 e 4294967295.
-
numero-sequenza num_seq: Configura il numero di sequenza in cui è richiesto il controllo assert. num_seq deve essere un numero intero compreso tra 1 e 100. Valore predefinito: 1.
-
disabilitare: Disabilita l'azione specificata per un assert framework controllato.
-
abilita: Abilita l'azione specificata per un assert framework controllato.
-
no: Rimuove la configurazione di test specificata correlata al framework di asserzione controllato.
Esempio
********************* CRASH #93 ***********************
SW Version : 21.5.19
Similar Crash Count : 8
Time of First Crash : 2019-May-21+06:57:14
Fatal Signal 6: Aborted
Note: System-initiated state dump w/core. <<< This note indicates a graceful assert.
Process: card=10 cpu=0 arch=X pid=11573 cpu=~16% argv0=sessmgr
Crash time: 2019-May-23+06:00:13 UTC
Recent errno: 11 Resource temporarily unavailable
Build_number: 71813
Verifica
Per verificare che la configurazione funzioni correttamente, consultare questa sezione.
Esempio di recupero dello stato degli assert controllati per tutte le sessioni attive:
# zcat ssd_s4sgn.log.gz | sed -n -e '/\*\{7\} show session subsystem facility sessmgr all debug-info /,/\*\{7\}/p' | sed -e '/^SessMgr: /,/^Controlled Assert Stats/{/^SessMgr: /!{/^Controlled Assert Stats/!d}}' | grep -E "SessMgr: Instance [0-9]{1,3}$" -A 10Output di esempio:
SessMgr: Instance 135
Controlled Assert Stats
Module Name :SGW_DRV
Assert Count:0
Count File:Line Last Assert hit time(in sec)
Module Name :S4_SGSN
Assert Count:1
Count File:Line Last Assert hit time(in sec)
1 sess/sgsn/sgsn-app/s4_sm/s4_smn_egtpc.c:3164 2019/01/30 09:28:11 UTC
Queste informazioni (conteggio e numero di riga) vengono reimpostate se sessmgr viene riavviato per qualsiasi altro arresto anomalo. Una volta raggiunto il numero massimo di volte (valore di default 5), il core non viene generato.
Risoluzione dei problemi
Al momento non sono disponibili informazioni specifiche per la risoluzione dei problemi di questa configurazione.