Einleitung
Dieses Dokument beschreibt die Funktion "Graceful Assert Handling", die in StarOS 21.5.0 eingeführt wurde.
Voraussetzungen
Anforderungen
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
- StarOS
- SGSN (Serving GPRS Support Node)
Verwendete Komponenten
Die Informationen in diesem Dokument basieren auf StarOS R21.5 und höher.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle verstehen.
Hintergrundinformationen
Die Funktion ist in der offiziellen Dokumentation hier zu finden: SGSN-Administratorhandbuch.
Das Graceful Assert Handling-Framework ermöglicht die sanfte Verarbeitung von Teilnehmersitzungen, bei denen die ASSERT-Bedingung zum Zeitpunkt der Anrufausführung erfüllt ist. Dies wird erreicht, ohne andere Teilnehmersitzungen auf demselben Prolet zu beeinträchtigen.
Wenn die ASSERT-Bedingung erfüllt ist, startet das Session Manager (SessMgr)-Prolet normalerweise neu und stellt alle Subscriber-Sitzungen vom AAA Manager (AAAMgr) wieder her. Die wiederhergestellten Teilnehmersitzungen werden in den IDLE-Status verschoben.
Wenn die sanfte Asserthandhabung aktiviert ist, wird das SessMgr-Prolet nicht neu gestartet. Stattdessen stellt das SessMgr-Prolet nur die Sitzung des betroffenen Teilnehmers vom AAAMgr wieder her und löscht die Sitzung des vorhandenen Teilnehmers im SessMgr. Die wiederhergestellten Teilnehmersitzungen werden in den IDLE-Status verschoben. Zum Zeitpunkt der Wiederherstellung werden alle an den Teilnehmer gerichteten Nachrichten verworfen. Nach der Wiederherstellung verarbeitet der Teilnehmer weiterhin an ihn gerichtete Nachrichten. Bei diesem Verfahren bleiben die im SessMgr verbliebenen Teilnehmersitzungen unberührt.
Problem
In einigen Ecken- und/oder Kollisionsfällen ist entweder die Ursachenbehebung komplex oder die Ursache unbekannt. In diesen Fällen wird ein "graceful assert"-Ansatz gewählt, um einen Neustart des Sitzungsmanagers zu vermeiden.
Lösung
Mit graceful assert können Sie die 1 Sitzung, die die graceful assert-Bedingung erfüllt, bereinigen und wiederherstellen.
Es gibt keine Auswirkungen auf andere Sitzungen im gleichen Sessmgr.
Es wird kein SNMP-Trap oder Syslog für einen ordnungsgemäßen Neustart vorhanden sein.
Im Falle einer ordnungsgemäßen Bestätigung gibt es keinen KPI-Verlust. Der Task selbst wird nicht neu gestartet.
Die graceful Asserts werden jedoch wie jeder andere Absturz behandelt, d. h. Sie erhalten einen Eintrag in der Liste show crash.
So identifizieren Sie eine graziöse Assertion vom SSD:
- Systeminitiiertes State Dump mit Core - wird unter "show crash" vor dem Stack angezeigt
- Abgestürzte Proklets sind entweder vom Benutzer initiiert oder nicht-boxer - werden nach dem Stapel unter "debug console cpu"-Ausgabe angezeigt
- pid 7939 facility sessmgr failover 5132->94 - unter "debug console CPU" wird bei Graceful Assert nicht protokolliert/angezeigt
Konfigurieren
Die Verarbeitung von sicheren Assert kann wie folgt konfiguriert werden:
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
Beachten Sie:
-
kontrollierte Bestätigung: Konfiguriert das kontrollierte Assert-Framework.
-
s4sgsn: Konfiguriert die gesteuerte S4-SGSN-Bestätigung.
-
Kerngeneration: Konfiguriert die Kerngenerierung für die kontrollierte Bestätigung. Standard: Aktiviert.
-
Grenzwert pro Aussage: Konfiguriert das Limit pro Assert für kontrollierte Assert. Standard: 5.
-
Name der Testdatei Dateiname Zeilennummer Zeilennummer [ Sequenznummer seq_num ]: Konfiguriert die kontrollierte Handhabung von Assert-Tests.
-
Dateiname Dateiname: Konfiguriert den Dateinamen, für den Assert-Steuerung erforderlich ist. file_name muss eine alphanumerische Zeichenfolge mit 1 bis 254 Zeichen sein.
-
Zeilennummer_Nummer: Konfiguriert die Zeilennummer, für die eine Assertierungssteuerung erforderlich ist. Die Zeilennummer muss eine ganze Zahl zwischen 1 und 4294967295 sein.
-
Sequenznummer (seq_num): Konfiguriert die Sequenznummer, für die eine Assertierungssteuerung erforderlich ist. seq_num muss eine ganze Zahl zwischen 1 und 100 sein. Standardwert: 1.
-
Deaktivieren: Deaktiviert die angegebene Aktion für ein gesteuertes Assert-Framework.
-
Aktivieren: Aktiviert die angegebene Aktion für ein gesteuertes Assert-Framework.
-
nein: Entfernt die angegebene Testkonfiguration für das gesteuerte Assert-Framework.
Beispiel
********************* 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
Überprüfung
Nutzen Sie diesen Abschnitt, um zu überprüfen, ob Ihre Konfiguration ordnungsgemäß funktioniert.
Beispiel für das Abrufen der gesteuerten Bestätigungsstatistiken für alle aktiven Sitzungen:
# 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
Beispielausgabe:
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
Diese Informationen (Anzahl und Zeilennummer) werden zurückgesetzt, wenn der Sessmgr bei einem anderen Absturz einen Neustart durchführt. Wenn die maximale Anzahl von Malen (Standard 5) erreicht ist, wird der Core nicht generiert.
Fehlerbehebung
Für diese Konfiguration sind derzeit keine spezifischen Informationen zur Fehlerbehebung verfügbar.