소개
이 문서에서는 StarOS 릴리스 21.5.0에 도입된 "Graceful Assert Handling" 기능에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- 스타오스
- SGSN(Serving GPRS Support Node)
사용되는 구성 요소
이 문서의 정보는 StarOS R21.5 이상을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
이 기능은 다음 공식 문서에서 확인할 수 있습니다. SGSN-Admin 가이드.
Graceful Assert Handling 프레임워크는 통화 실행 시 ASSERT 조건이 충족되는 가입자 세션을 정상적으로 처리할 수 있도록 합니다. 이는 동일한 프로필의 다른 가입자 세션에 영향을 주지 않고 수행됩니다.
일반적으로 ASSERT 조건이 충족되면 세션 관리자(SessMgr) 프록시가 다시 시작되고 AAA 관리자(AAAMgr)의 모든 가입자 세션을 복구합니다. 복구된 가입자 세션은 IDLE 상태로 이동합니다.
Graceful Assert 처리가 사용하도록 설정된 경우 SessMgr 프록시가 다시 시작되지 않습니다. 대신 SessMgr 프록시는 AAAMgr에서 영향받는 가입자의 세션만 복구하고 SessMgr에서 기존 가입자의 세션을 지웁니다. 복구된 가입자 세션은 IDLE 상태로 이동합니다. 복구 절차 시 가입자에게 전달되는 모든 메시지가 삭제됩니다. 복구 후 가입자는 자신에게 전달된 메시지를 계속 처리합니다. 이 절차에서는 SessMgr에 남아 있는 가입자 세션이 영향을 받지 않습니다.
문제
근본 원인 해결이 복잡하거나 근본 원인을 알 수 없는 일부 코너 및/또는 충돌 사례가 있습니다. 이러한 경우 전체 세션 관리자 재시작을 방지하기 위해 Graceful Assert 접근 방식이 사용됩니다.
솔루션
graceful assert를 사용하면 graceful assert 조건에 도달한 1 세션을 정리하고 복원할 수 있습니다.
동일한 세션의 다른 세션에는 영향을 주지 않습니다.
정상 재시작을 위한 SNMP 트랩 또는 syslog가 없습니다.
정상적인 어설션의 경우 KPI 손실이 없습니다. 작업 자체는 다시 시작되지 않습니다.
그러나 Graceful Asserts는 다른 충돌과 마찬가지로 처리되므로 show crash list에 항목을 가져옵니다.
SSD에서 정상 어설션을 식별하는 방법:
- 시스템에서 시작된 상태 덤프(코어 포함). - stack 앞에 "show crash" 출력이 표시됩니다.
- crash procllet은 사용자가 시작했거나 boxer가 아닌 경우 "debug console cpu" 출력 아래의 스택 뒤에 표시됩니다.
- Graceful Assert의 경우 pid 7939 기능 sessmgr 장애 조치(failover) 5132->94 - "debug console CPU" 아래에 기록되거나 표시되지 않습니다.
구성
Graceful Assert 처리는 다음과 같이 구성할 수 있습니다.
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
참고:
-
controlled-assert: 제어된 어설션 프레임워크를 구성합니다.
-
s4sgsn: S4-SGSN 제어 어설션을 구성합니다.
-
코어 세대: 제어된 어설션에 대한 코어 생성을 구성합니다. 기본값: 사용.
-
어설션당 제한: 제어된 어설션의 어설션당 제한을 구성합니다. 기본값: 5.
-
test file-name file_name line-number line_num [ sequence-number seq_num ]: controlled assert 테스트 처리를 구성합니다.
-
파일 이름 file_name: assert 제어가 필요한 파일 이름을 구성합니다. file_name은 1자 ~ 254자의 영숫자 문자열이어야 합니다.
-
라인 번호 line_num: assert 제어가 필요한 라인 번호를 구성합니다. line_num은 1에서 4294967295 사이의 정수여야 합니다.
-
시퀀스 번호 seq_num: assert 제어가 필요한 시퀀스 번호를 구성합니다. 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)에 도달하면 코어가 생성되지 않습니다.
문제 해결
현재 이 설정에 사용할 수 있는 특정 문제 해결 정보가 없습니다.