目录

简介

先决条件

要求

使用的组件

背景信息

问题

解决方案

配置

验证

故障排除

简介

本文档介绍StarOS版本21.5.0中引入的“平稳断言处理”功能。

先决条件

要求

Cisco 建议您了解以下主题：

- StarOs

- 服务GPRS支持节点(SGSN)

使用的组件

本文档中的信息基于StarOS R21.5及更高版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

该功能可在以下官方文档中找到：SGSN管理指南。

流畅的断言处理框架能够流畅地处理呼叫执行时触发ASSERT条件的用户会话。这可在不影响同一进程上的其他用户会话的情况下实现。

通常，当达到ASSERT条件时，会话管理器(SessMgr)进程会重新启动并从AAA管理器(AAMgr)恢复所有用户会话。 恢复的用户会话将转换为IDLE状态。

启用平稳断言处理后，SessMgr进程不会重新启动。相反，SessMgr进程仅从AAAMgr恢复受影响的用户会话，并清除SessMgr上的现有用户会话。恢复的用户会话将转换为IDLE状态。在执行恢复过程时，会丢弃所有指向用户的消息。恢复后，用户将继续处理向其发送的消息。在此过程中，保留在SessMgr上的用户会话不受影响。

问题

有些拐角和/或冲突案例根本原因修复非常复杂或根本原因未知。在这些情况下，会采用平滑断言方法来避免会话管理器完全重启。

解决方案

使用平滑断言，您可以清除和恢复符合平滑断言条件的1个会话。

对同一sessmgr上的任何其他会话没有影响。

无用于平滑重启的SNMP陷阱或系统日志。

如果判断正确，则不会出现KPI损失。任务本身不会重新启动。

但是，平稳断言的处理方式与任何其他崩溃类似，这意味着您将在show crash list中看到一个条目。

如何从SSD识别流畅断言：

- 系统启动的状态转储，带核心。 — 将在堆栈之前的“show crash”输出下显示

- 崩溃的proclet是用户启动或非机箱程序 — 在堆栈之后的“debug console cpu”输出下可见

- pid 7939 facility sessmgr failover 5132->94 — “debug console CPU”（调试控制台CPU）下不会记录/看到平滑断言

配置

可以按如下方式配置正常断言处理：

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

请注意：

- 受控断言：配置受控断言框架。

- s4sgsn:配置S4-SGSN控制的断言。

- 核心层生成：配置受控断言的核心生成。默认:启用.

- limit-per-assert:为受控断言配置每个断言的限制。默认:5.

- test file-name file_name line-number line_num [ sequence-number seq_num ]:配置受控断言测试处理。

- 文件名file_name:配置需要声明控制的文件名。file_name必须是1到254个字符的字母数字字符串。

- line-number line_num:配置需要声明控制的行号。line_num必须是介于1和4294967295之间的整数。

- sequence-number seq_num:配置需要声明控制的序列号。seq_num必须是介于1和100之间的整数。默认值：1.

- 禁用:禁用受控断言框架的指定操作。

- 启用:启用受控断言框架的指定操作。

- 否：删除与受控断言框架相关的指定测试配置。

示例

********************* 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

验证

使用本部分可确认配置能否正常运行。

获取所有活动会话的受控断言统计信息的示例：

# 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

示例输出：

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

如果sessmgr针对任何其他故障执行重新启动，将重置此信息（计数和行号）。在达到最大次数（默认5）后，将不生成核心。

故障排除

目前没有针对此配置的故障排除信息。