5G专网驻网失败分析(suci无效)

suci

5G终端第一次驻网时,注册消息Registartion request中携带的5GS mobile identity要携带suci类型的mobile identity。
注册消息协议规范见5G NAS 协议3gpp TS24.501 8.2.6 Registration request。

在这里插入图片描述

suci协议规范参见3gpp TS24.501 9.11.3.4 5GS mobile identity

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从上面协议内容可知,携带suci的注册消息中,有Routing
indicator字段。为两个字节。包含digit1到digit4. 其值从digit1开始存放,如果后面的digit不使用则为FF。
比如上面note2的例子,如果RoutingIndicator为3位。那么digit1 digit2 digit3 存RoutingIndicator的值。digit4要填为FF。

何时注册携带suci

UE注册时,如果UE既有5G-GUTI,又有SUCI,那注册请求中用5G-GUTI,否则用SUCI。但绝不能用SUPI。为了隐私和安全,SUPI在5G的空口中禁止传递。

3GPP 5G PROC协议,TS 23.502的4.2.2.2.2 General Registration注册流程描述如下
依次是GUTI,映射或native的guti。都没有,最后才是SUCI。
在这里插入图片描述

开源代码UERANSIM 的MmRegistration.java中,sendRegistration函数:
在这里插入图片描述

日志分析

终端在某5G专网能搜到网络,但是不向网络发送Registration Request注册网络。

首先分析网络的SIB消息:

00:47:04.546945 RRC/HighFreq/High/NR5GRRC [nr5g_rrc_sib.c    1792] Sending NR5G_CPHY_SIB_SCHED_REQ. sibs_to_acq_curr - 0x0, sibs_to_acq_next - 0x0
00:47:04.547088 RRC/HighFreq/High/NR5GRRC [nr5g_rrc_meas.c  18428]  DL carrier freq : 7880, scs : 1, mtc_periodicity : 0, priority : 0, band : 77
//如下日志说明sib4消息的dl_CarrierFreq配置有误
00:47:04.547223 RRC/HighFreq/High/NR5GRRC [nr5g_rrc_meas.c  17445] SIB4 omitted, dl_CarrierFreq 7880 msimatch valid band, skip
00:47:04.547233 RRC/HighFreq/High/NR5GRRC [nr5g_rrc_meas.c  18043] MEAS:Eutra carrierFreq = 40890, not supported

网络下发的 dl-CarrierFreq 7880 不是 freqBandIndicatorNR 77的合法频点。。
3GPP TS38.101-1协议的 Table 5.4.2.3-1: Applicable NR-ARFCN per operating band可以查看每个band的dl频点范围。从如下截图可以看出7880不在下行频点范围。
在这里插入图片描述

如下是sib4的字段内容

 sib4 : {interFreqCarrierFreqList {{dl-CarrierFreq 7880,frequencyBandList {{freqBandIndicatorNR 77}},ssbSubcarrierSpacing kHz30,deriveSSB-IndexFromCell TRUE,q-RxLevMin -60,t-ReselectionNR 1,threshX-HighP 30,threshX-LowP 22,threshX-Q {threshX-HighQ 30,threshX-LowQ 22},q-OffsetFreq dB-20}}}

不过interFreqCarrierFreqList 是用来NR interFreq重选相关的参数。应该不会导致终端连注册消息都不发。

终端确实在附近的时间点退出了NR5G模块。需要定位是哪里发送了NR5G_RRC_DEACTIVATE_REQ NR5G_RRC_STACK_DEACTIVATE_REQI。

00:47:04.557373   RRC/HighFreq/High/NR5GRRC   [    nr5g_rrc_csp.c  13854] CSP: Received Deactivate request NR5G_RRC_DEACTIVATE_REQ. Reason : 0
00:47:04.558346   RRC/HighFreq/High/NR5GRRC   [ nr5g_rrc_stackmgr.c   3494] RRCSM: Received NR5G_RRC_STACK_DEACTIVATE_REQI, at state 5, stop_cause 0, scen 17

从终端日志和网络信令看,网络的SIB没有明显错误导致终端不注册。
所以需要从终端上层NAS模块查看,有无从NAS模块发送退出5G的命令。

查看上层协议日志

//这里看到终端已经成功搜到5G网络
00:47:04.486137 MM/HighFreq/High/REG [ reg_send.c    510] DS: SUB 0 =REG= CM_CAMPED_IND PLMN (XXX - XXX) Primary PLMN (XXX - XXX)
00:47:04.486170 MMODE/STRM/High/CM   [ cmregprx.c  13148] NAS->CMREG: sub 0 stk 0, CM_CAMPED_IND
00:47:04.550872 MM/HighFreq/High/REG [ reg_mode.c   9558] DS: SUB 0 =REG= Home MCC = XXX Home MNC = XXX
00:47:04.554016 MM/LowFreq/High/REG  [         reg_state.c   2973] DS: SUB 0 =REG= CM_SERVICE_REQ Scan Scope type=0 network_selection_mode 2 Additional_info=0 RAT Enabled BM = 0x1000, BST BM = 0x1000
00:47:04.554304 MM/LowFreq/High/REG  [ reg_send.c    856] DS: SUB 0 =REG= CM_SERVICE_CNF scan_status:1 msg.service_state.service_status: 1
00:47:04.554305 MM/LowFreq/High/REG  [ reg_send.c    880] DS: SUB 0 =REG= CM_SERVICE_CNF PLMN (XXX - XXX) Primary PLMN (XXX - XXX) blocked_for_no_voice 0
//但是不知为何NAS MM REG模块收到CM_STOP_MODE_REQ
00:47:04.557049 MM/LowFreq/High/REG  [         reg_state.c  11751] DS: SUB 0 =REG= CM_STOP_MODE_REQ stop_mode_reason 0
//转换成MMR_STOP_MODE_REQ
00:47:04.557155 MM/HighFreq/High/REG [ reg_send.c   2302] DS: SUB 0 =REG= MMR_STOP_MODE_REQ sent trans_id 0x67
//进一步向5G RRC发送命令NR5G_RRC_DEACTIVATE_REQ
00:47:04.557275 MM/LowFreq/High/MM   [       mm5g_rrc_if.c    434] DS: SUB 0 =MM5G= Sending NR5G_RRC_DEACTIVATE_REQ with reason = 0
00:47:04.557350 MM/HighFreq/High/SM  [sm5g_process_pdu_procedure.c   1805] DS: SUB 0 SM5G: NAS_MM5G_DETACH_IND Received,

进一步向上看日志,卡模块抛出MMGSDI_SESSION_ILLEGAL_SUBSCRIPTION_EVT,导致CM上报CM_PH_CMD_SUBSCRIPTION_NOT_AVAILABLE,即卡无效。进而退出5G驻网流程。

00:47:04.550000 MM/HighFreq/High/MM [mm_multimode_handler.c   5456] DS: SUB 0 =EMM= Moving to DEREGISTERED STATE, Update EPS security_context...
00:47:04.550146 MMODE/STRM/High/CM  [ cmmmgsdi.c   5559] UIM->CM: MMGSDI_SESSION_ILLEGAL_SUBSCRIPTION_EVT, session-id 103
00:47:04.550170 MM/HighFreq/High/SM [sm5g_process_pdu_procedure.c   1805] DS: SUB 0 SM5G: NAS_MM5G_DETACH_IND Received,
00:47:04.550179 MMODE/DEBUG/Low/CM  [       cm.c   9886] ->CM: phcmd 8: CM_PH_CMD_SUBSCRIPTION_NOT_AVAILABLE, cdma 1, gwl 0 sub 0, curr 5, true 5, active_subs 1, is_msim 100:47:04.550589 MMODE/STRM/High/CM  [     cmph.c  19463] PH_PROC: sub 0, CM_PH_CMD_SUBSCRIPTION_NOT_AVAILABLE is being processed cause:0, 5 1 0 0
00:47:04.550593 MMODE/STRM/High/CM  [     cmph.c  19473] SUBSCRIPTION_NOT_AVAILABLE sub_asub_id 0  1x_sub 0
00:47:04.550599 MMODE/STRM/High/CM  [     cmph.c  19554] SUBSC_NOT_AVAIL: sess_type 0 app_type 3
00:47:04.550702 MM/HighFreq/High/REG [         reg_state.c  13082] DS: SUB 0 =REG= LIMITED_SERVICE on HPLMN(XXX-XXX)
00:47:04.550760 MM/LowFreq/High/REG [ reg_send.c    880] DS: SUB 0 =REG= CM_SERVICE_CNF PLMN ( XXX- XXX) Primary PLMN (XXX - XXX) blocked_for_no_voice 0
00:47:04.552409 MMODE/STRM/High/CM  [     mmoc.c   5778] MMOC->PROT: DEACT_REQ to ACTIVE protocol: 5, reason: 6, sub 0 stk 0, insanity_count 0, ps_enabled 1
00:47:04.552414 MMODE/DEBUG/Low/CM  [  mmocdbg.c   1091] After event was processed: Curr_trans 1(SUBSC_CHGD), Trans_state 2(WAIT_DEACTD_CNF)
00:47:04.556994 MMODE/STRM/High/CM  [ cmregprx.c   4772] CMREG->NAS: sub 0 stk 0, Send STOP_MODE_REQ, reason=0
00:47:04.557017 MMODE/DEBUG/Low/CM  [      cmregprx_dbg.c    302] MMOC->CMREG: PROT_CMD_DEACTIVATE:trans_id 89 Reason 6, sub 0 stk 0
00:47:04.557049 MM/LowFreq/High/REG [         reg_state.c  11751] DS: SUB 0 =REG= CM_STOP_MODE_REQ stop_mode_reason 0
00:47:04.557155 MM/HighFreq/High/REG    [ reg_send.c   2302] DS: SUB 0 =REG= MMR_STOP_MODE_REQ sent trans_id 0x67

卡流程哪里出问题了呢?
从下面日志可知,终端第一次注册,进入向网络发送registration Request的流程。
Start registration procedure, reg type = 1,
由于第一次注册,终端没有GUTI,所以需要携带SUCI给网络。所以向卡发送生成SUCI的命令。即SUCI generation request sent to MMGSDI。
但是卡回复的SUCI的routing indicator有误。digit1 = 15, digit2 = 1, digit3 = 15, digit4 = 15。
按协议,15为FF即不不使用。比如如果routing indicator是3位,那么digit1 digit2 digit3 为非FF的值,digit4为FF. 但是卡返回的digit1 = 15, digit2 = 1。 不可能digit1无效,而digit2中有有效值。所以routing indicator校验失败。日志打印SUCI parsing failed。
终端无法获取SUCI,就无法注册网络,进而无法驻网。

此问题到这里比较清楚了,专网卡有问题,生成suci中包含的的routing indicator无效,导致终端无法发送注册消息,进而终端无网络。

00:47:04.486137 MM/HighFreq/High/REG [ reg_send.c    510] DS: SUB 0 =REG= CM_CAMPED_IND PLMN (xxx - XXX) Primary PLMN (XXX- XXX)
00:47:04.486139 MM/HighFreq/High/MM  [mm5g_registration_handler.c   1103] DS: SUB 0 =MM5G= Start registration procedure, reg type = 1, reset_attempt_counter = 1, attempt counter = 0, REG Cause BM = 0x0 CS-For = 0
00:47:04.486157 MM/HighFreq/High/REG [         reg_state.c   1461] DS: SUB 0 =REG= sent message MS: 48   MSG_ID: 0
00:47:04.486236 MM/HighFreq/High/MM  [     mm5g_security.c   6788] DS: SUB 0 =MM5G= SUCI generation request sent to MMGSDI
00:47:04.549614 MM/HighFreq/High/MM  [     mm5g_security.c   7072] DS: SUB 0 =MM5G= Received SIM_MM_USIM_GET_SUCI_CNF, SUCI data len 53
00:47:04.549617 MM/HighFreq/Error/MM [     mm5g_security.c   6988] DS: SUB 0 =MM5G= MMGSDI returned incorrect routing inddigit1 = 15, digit2 = 1, digit3 = 15, digit4 = 15
00:47:04.549620 MM/HighFreq/Error/MM [     mm5g_security.c   7087] DS: SUB 0 =MM5G= MMGSDI returned status 0 in GET_SUCI_CNF or SUCI parsing failed00:47:04.549961 User Identity Module/High [  mmgsdisessionlib.c   6123] mmgsdi_session_manage_illegal_subscription0
00:47:04.549969 User Identity Module/High [  mmgsdisessionlib.c   6172] Queue of MMGSDI command: MMGSDI_SESSION_MANAGE_ILLEGAL_SUBSCRIPTION_REQ status 0x00
00:47:04.549996 User Identity Module/High [        mmgsdi_gen.c   2017] Application for session 72 is MARKED AS ILLEGAL BY REQUEST0
00:47:04.550070 User Identity Module/High [  qmi_uim.c  18401] qmi_uim_process_manage_illegal_card_evt with legal_status as 0x1000:47:04.549614 MM/HighFreq/High/MM  [     mm5g_security.c   7072] DS: SUB 0 =MM5G= Received SIM_MM_USIM_GET_SUCI_CNF, SUCI data len 53
00:47:04.549617 MM/HighFreq/Error/MM [     mm5g_security.c   6988] DS: SUB 0 =MM5G= MMGSDI returned incorrect routing inddigit1 = 15, digit2 = 1, digit3 = 15, digit4 = 15
00:47:04.549620 MM/HighFreq/Error/MM [     mm5g_security.c   7087] DS: SUB 0 =MM5G= MMGSDI returned status 0 in GET_SUCI_CNF or SUCI parsing failed

Routing indicator含义

Routing Indicator是suci中的字段。
在TS 23.502的4.2.2.2.2 General Registration中,指向了TS 33.501 5GS Architecture协议。查看此协议:
Routing Indicator: An indicator defined in TS 23.003 [19] that can be used for AUSF or UDM selection.
即Routing Indicator用来注册时AMF选择AUSF或UDM。 AUSF或UDM存储终端的注册和绑定信息。
在TS23.003-i50 Numbering, addressing and identification协议中,详细定义如下:
在这里插入图片描述
即:Routing Indicator路由指示符,由归属网络运营商分配并在USIM中提供的1到4个十进制数字组成,允许与归属网络标识符一起将包含SUCI字段的网络信令路由到能够为用户服务的AUSF和UDM实例。
路由指示器中的每个十进制数字都是有意义的(例如,值“012”与值“12”不同)。如果USIM或ME上没有配置路由指示符,则该数据字段应设置为值0(即仅由一个十进制数字“0”组成,即0FFF)。
此问题中卡返回的Routing Indicator digit1 = 15, digit2 = 1, digit3 = 15, digit4 = 15,即F1FF. 按照TS24.501 协议,只有不使用的高位数字才可以为15(FF)。所以卡应该返回 digit1 = 1, digit2 = 15, digit3 = 15, digit4 = 15.

如果卡不指定AUSF和UDM,则卡应该返回 digit1 = 0, digit2 = 15, digit3 = 15, digit4 = 15.
在这里插入图片描述
在这里插入图片描述
参考链接:
https://articles.zsxq.com/id_ful8uwunrrcj.html (1) 初始注册流程关键步骤分析 UE-ID 为suci
https://articles.zsxq.com/id_hgcezzezpli2.html 学习UERANSIM源码-registation相关文件
https://blog.csdn.net/qq_31985307/article/details/126440655 5G NR系列文章-5G标识符SUPI和SUCI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes Service 之原理与 ClusterIP 和 NodePort 用法

Kubernetes Service 之原理与 ClusterIP 和 NodePort 用法 Service 定义 在 Kubernetes 中,由于Pod 是有生命周期的,如果 Pod 重启它的 IP 可能会发生变化以及升级的时候会重建 Pod,我们需要 Service 服务去动态的关联这些 Pod 的 IP 和端口…

防止浏览器缓存了静态的配置等文件(例如外部的config.js 等文件)

防止浏览器缓存了静态的配置文件 前言1、在script引入的时候添加随机数1.1、引入js文件1.2、引入css文件2、通过html文件的<meta>设置防止缓存3、使用HTTP响应头:前言 在实际开发中浏览器的缓存问题一直是一个很让人头疼的问题,尤其是我们打包时候防止的静态配置文件c…

openssh9.7p1(OpenSSL 1.1.1w)适用于各Linux系统的rpm包

本人近几日编译的openssh9.7p1包&#xff0c;用于解决漏洞扫描器提示openssh相关漏洞的问题处理。 包含多个Linux发行版本&#xff08;包含el6\el7\el8\openeuler2110\openeuler2203\BCLinux\eulerOS2.10对应版本等&#xff09;。 一、适用openeuler2203和openeuler2203 sp*系…

界面组件DevExpress WPF v23.2新版亮点:富文本编辑器、电子表格组件升级

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF控件日…

FreeRtos进阶——消息队列的操作逻辑

消息队列&#xff08;queue&#xff09; 在不同的任务之间&#xff0c;如果我们需要互相之间通信&#xff0c;使用全局变量进行通信&#xff0c;是一种不安全的通信的方式。为保证线程安全&#xff0c;我们需要引入消息队列的通信方式。 粗暴的消息队列 为保证线程的安全&am…

如何手搓一个RAG

如何手搓一个RAG RAG的原理 RAG 是一个完整的系统&#xff0c;其工作流程可以简单地分为数据处理、检索、增强和生成四个阶段&#xff1a; 数据处理阶段 对原始数据进行清洗和处理。将处理后的数据转化为检索模型可以使用的格式。将处理后的数据存储在对应的数据库中。 检索…

趣店集团golang一面要个20K,Channel什么情况下会出现死锁,有遇到过吗?

结束后面试官加了VX&#xff0c;并询问方便二面的时间&#xff0c;一直还没回复&#xff0c;拖着拖着给忘啦... 面试题 1、自我介绍 2、你在团队里头负责哪一块&#xff0c;这个物流开放平台流量多大 3、为什么今年3月份被从物流开放团队转到了finance财务部门&#xff0c;感…

hadoop学习之MapReduce案例:输出每个班级中的成绩前三名的学生

hadoop学习之MapReduce案例&#xff1a;输出每个班级中的成绩前三名的学生 所要处理的数据案例&#xff1a; 1500100001 施笑槐,22,女,文科六班,406 1500100002 吕金鹏,24,男,文科六班,440 1500100003 单乐蕊,22,女,理科六班,359 1500100004 葛德曜,24,男,理科三班,421 15001…

安全术语 | 软件包purl详解:跨工具、数据库、API和语言之间可靠地识别和定位软件包

软件包URL&#xff08;purl&#xff0c;Package URL&#xff09;是一个URL字符串&#xff0c;用于在编程语言、包管理器、包约定、工具、API和数据库中以最通用和统一的方式识别和定位软件包。purl是对现有方法进行标准化的尝试&#xff0c;以可靠地识别和定位软件包。 有望取代…

集合的创建

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python中的集合同数学中的集合概念类似&#xff0c;也是用于保存不重复元素的。它有可变集合&#xff08;set&#xff09;和不可变集合&#xff08;f…

网络学习(九)|深入解析Cookie与Session:高级应用及安全实践

Cookie相关问题 Cookie的主要属性有哪些&#xff1f; Cookie的主要属性包括&#xff1a; name&#xff1a;Cookie的名称。value&#xff1a;Cookie的值。domain&#xff1a;Cookie所属的域。path&#xff1a;Cookie生效的路径。expires / max-age&#xff1a;Cookie的过期时…

网络学习(十) | 深入学习HTTPS与安全传输

文章目录 HTTPS与HTTP的关系基本概念主要区别关系发展趋势 HTTPS的加密原理与SSL/TLS协议加密原理加密机制总结 HTTPS的握手vs三次握手三次握手HTTPS握手过程区别总结 证书颁发机构&#xff08;CA&#xff09;与数字证书的验证证书颁发机构&#xff08;CA&#xff09;CA的主要功…

vue的axios配置超时时间;单个接口配置响应时间

vue项目中axios请求统一配置了超时时间&#xff0c;单独接口请求时重设超时时间 根据官网推荐&#xff1a;axios中文文档 1.配置的优先顺序 配置会以一个优先顺序进行合并。这个顺序是&#xff1a;在 lib/defaults.js 找到的库的默认值&#xff0c;然后是实例的 defaults 属性&…

【iOS】——GCD再学习

文章目录 一、GCD的定义二、GCD 任务和队列1.任务2.队列 三、GCD 的使用1.创建队列2.创建任务3.队列任务 组合方式并发队列 同步执行异步执行 并发队列同步执行 串行队列异步执行 串行队列同步执行 主队列在主线程中调用 同步执行 主队列在其它线程中调用 同步执行 主队…

四数相加Ⅱ-力扣

做这道题想到的解法是&#xff0c;由于该题只统计元组个数&#xff0c;而不需要位置&#xff0c;那我们首先用一个map来统计数组1和数组2两两元素之和出现的个数&#xff0c;然后去遍历数组3和数组4&#xff0c;在map中寻找 0 - c - d 这个键值是否存在&#xff08;c和d为数组3…

uniApp 创建Android.keystore证书IOS的证书

Android 证书 1、安装JRE环境 可从Oracle官方下载jre安装包&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/index.html 打开命令行&#xff08;cmd&#xff09;&#xff0c;输入以下命令&#xff1a; //切换工作目录到f:路径 D: //将jre命令添加到…

2024/5/22 Day36 greedy 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

2024/5/22 Day36 greedy 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果 1005.K次取反后最大化的数组和 题目链接 1005 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这…

Android制作.9图

需求背景&#xff1a;android 启动图变形 开发语言&#xff1a;uni-app&#xff0c;uni-app官网 俗语曰&#xff1a;授人以鱼不如授人以渔 原创地址&#xff1a;Android制作.9图 语雀 一.工具 使用android studio&#xff0c;因为android studio已经集成.9.png制作工具&a…

MYSQL设置字段默认值的函数

目录 前言IFNULLCOALESCE总结 前言 数据库中有些字段可能是null或统计字段也可能是NULL&#xff0c;这些前端拿到数据显示出来是空白&#xff0c;遇到这种情况&#xff0c;有必要将null的字段设置一个默认值。将NULL值的字段设置默认值的函数有IFNULL(expr1,expr2)和COALESCE(…

某勾求职网逆向分析

搜索目标: aHR0cHM6Ly93d3cubGFnb3UuY29tL3duL2pvYnM/cG49MSZweD1kZWZhdWx0JmZyb21TZWFyY2g9dHJ1ZSZrZD0lRTYlOTUlQjAlRTYlOEQlQUUlRTUlODglODYlRTYlOUUlOTA= 抓包分析 请求和返回都是加密的 请求头部也有未知参数 跟栈分析 请求和返回是一个AES加密,加密的KEY是session s…