Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Problema

Soluzione

Configurazione

Verifica

Risoluzione dei problemi

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.