Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Problema

Solución

Configurar

Verificación

Troubleshoot

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.