Introducción
Este documento describe la función "Graceful Assert Handling", introducida en la versión 21.5.0 de StarOS.
Prerequisites
Requirements
Cisco recomienda que tenga conocimiento sobre estos temas:
- StarOs
- Nodo de soporte de servicio GPRS (SGSN)
Componentes Utilizados
La información de este documento se basa en StarOS R21.5 y versiones posteriores.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
La función se puede encontrar en la documentación oficial aquí: Guía de SGSN-Admin.
El marco de Graceful Assert Handling habilita el manejo correcto de las sesiones de suscriptor para las cuales se alcanza la condición ASSERT en el momento de la ejecución de la llamada. Esto se logra sin afectar otras sesiones de suscriptor en el mismo proclet.
Normalmente, cuando se alcanza la condición ASSERT, el proclet Administrador de sesiones (SessMgr) se reinicia y recupera todas las sesiones de suscriptor del Administrador de AAA (AAAMgr). Las sesiones de suscriptor recuperadas se mueven al estado IDLE.
Cuando Graceful Assert Handling está habilitado, el folleto de SessMgr no se reiniciará. En su lugar, el proclet SessMgr recupera solamente la sesión del suscriptor afectado de AAAMgr y borra la sesión del suscriptor existente en SessMgr. Las sesiones de suscriptor recuperadas se mueven al estado IDLE. En el momento del procedimiento de recuperación, se descartan todos los mensajes dirigidos hacia el suscriptor. Después de la recuperación, el suscriptor continuará manejando los mensajes dirigidos hacia él. Con este procedimiento, las sesiones de suscriptor que permanecen en SessMgr no se ven afectadas.
Problema
Hay algunos casos de esquina y/o colisión para los cuales la causa raíz es compleja o la causa raíz es desconocida. En estos casos, se adopta el enfoque de aserción elegante para evitar el reinicio completo del administrador de sesiones.
Solución
Con graceful assert, puede limpiar y restaurar la 1 sesión que llega a la condición graceful assert.
No hay impacto en ninguna otra sesión en el mismo sessmgr.
No habrá trampa SNMP ni registro del sistema para un graceful restart.
No se perderá ningún KPI en caso de una afirmación correcta. La tarea en sí no se reiniciará.
Sin embargo, las afirmaciones de gracia se manejan como cualquier otro crash, lo que significa que obtendrá una entrada en show crash list.
Cómo identificar una afirmación correcta desde el SSD:
- Volcado de estado iniciado por el sistema con núcleo. - se verá en "show crash" output before stack
- el proclet bloqueado es iniciado por el usuario o no es un boxer - se verá después de la pila en la salida "debug console cpu"
- pid 7939 facility sessmgr failover 5132->94 - bajo "debug console CPU" no se registrará/verá en caso de Graceful Assert
Configurar
El manejo de aserción correcto se puede configurar de la siguiente manera:
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
Tome nota:
-
controlled-assert: Configura el marco de aserción controlado.
-
s4sgsn: Configura la aserción controlada S4-SGSN.
-
generación de núcleo: Configura la generación de núcleo para la aserción controlada. Predeterminado: Habilitado.
-
limit-per-assert: Configura el límite por aserción para aserción controlada. Predeterminado: 5.
-
test file-name file_name line-number line_num [ sequence-number seq_num ]: Configura el control de pruebas de aserción controladas.
-
nombre de archivo nombre_archivo: Configura el nombre de archivo donde se requiere el control Assert. nombre_archivo debe ser una cadena alfanumérica de 1 a 254 caracteres.
-
line-number line_num: Configura el número de línea donde se requiere el control de aserción. núm_línea debe ser un entero entre 1 y 4294967295.
-
sequence-number seq_num: Configura el número de secuencia donde se requiere el control de aserción. núm_seq debe ser un entero entre 1 y 100. Valor predeterminado: 1.
-
Desactivar: Deshabilita la acción especificada para un marco de aserción controlado.
-
habilitar: Habilita la acción especificada para un marco de aserción controlado.
-
no: Quita la configuración de prueba especificada relacionada con el marco de aserción controlado.
Ejemplo:
********************* 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
Verificación
Use esta sección para confirmar que su configuración funciona correctamente.
Ejemplo de obtención de las estadísticas de aserción controladas para todos los sessmgrs activos:
# 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
Ejemplo de salida:
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
Esta información (recuento y número de línea) se restablecerá si el sessmgr se reinicia para cualquier otro desperfecto. Una vez alcanzado el número máximo de veces (valor predeterminado 5), no se generará el núcleo.
Troubleshoot
Actualmente, no hay información específica de troubleshooting disponible para esta configuración.