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: Guida 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.
Se è attivata la gestione degli asserzioni senza errori, il processo di SessMgr non verrà 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 continuerà a gestire i messaggi indirizzati al destinatario. Con questa procedura, le sessioni sottoscrittori che rimangono su SessMgr non subiscono modifiche.
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 saranno presenti trap SNMP o syslog per un riavvio normale.
In caso di asserzione corretta non si verificherà alcuna perdita di KPI. L'attività non verrà 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 corretta dall'unità SSD:
- Dump dello stato avviato dal sistema con core. - verrà visualizzato nell'output "show crash" prima dello stack
- il client arrestato in modo anomalo può essere avviato dall'utente o meno - verrà visualizzato dopo lo stack nell'output della "cpu della console di debug"
- pid 7939 funzione sessmgr failover 5132->94 - in "debug console CPU" non verrà 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
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
PC: [ffffe430/X] __kernel_vsyscall()
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 10
Output 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) verranno reimpostate se sessmgr viene riavviato per un altro arresto anomalo. Una volta raggiunto il numero massimo di volte (valore di default 5), il core non verrà generato.
Risoluzione dei problemi
Al momento non sono disponibili informazioni specifiche per la risoluzione dei problemi di questa configurazione.