5G Service Request流程详解:信令交互、用户面激活与常见故障排查

📅 发布时间:2026/10/20 14:09:00
5G Service Request流程详解:信令交互、用户面激活与常见故障排查
1. 从一条空荡荡的正文说起为什么Service Request值得单独拎出来讲拿到这个标题的时候项目正文是空的关键词和摘要描述也没给。这种情况其实挺常见——有时候一个技术点本身就足够有分量不需要额外的背景铺垫。Service Request中文一般叫服务请求在5G核心网的 signaling 流程里它属于那种平时不显山露水一出问题就要命的角色。我先说一个真实的场景。某次联调终端明明显示有信号但就是上不了网抓包一看Service Request发出去之后核心网回了Service RejectCause值指向UE identity cannot be derived by the network。当时团队里有人第一反应是去查基站配置有人怀疑是SIM卡的问题折腾了大半天最后发现是AMF侧的一个临时标识分配逻辑在特定时序下出了岔子。这件事让我意识到Service Request这个流程虽然看起来只是终端告诉网络我要干活了这么简单但它牵扯到的状态管理、标识分配、安全上下文恢复每一个环节都有坑。所以这篇内容我想把Service Request这个流程从头到尾拆开讲清楚。它是什么、什么时候触发、信令怎么走、每一步背后的逻辑是什么、实际排查中容易在哪儿翻车。适合已经对5G核心网有基本概念、但想把这个具体流程吃透的同行也适合刚接触5G信令、想找一个切入点深入理解核心网交互逻辑的朋友。我会尽量用人话来解释该有的专业术语不省略但每个术语第一次出现的时候都会说清楚它在这个流程里扮演什么角色。提前说明本文涉及的参数取值和定时器数值不同厂商设备可能存在差异文中给出的数值是基于常见实现的参考值实际部署时以设备文档为准。2. Service Request在5G状态机里的位置它到底解决什么问题2.1 先搞清楚UE的两种空闲状态要理解Service Request必须先理解终端在5G网络里的状态划分。5G里UE和核心网之间的连接状态核心是两个概念RM状态Registration Management注册管理状态和CM状态Connection Management连接管理状态。RM状态只有两个值RM-DEREGISTERED和RM-REGISTERED。这个好理解——要么注册了要么没注册。CM状态也是两个值CM-IDLE和CM-CONNECTED。CM-IDLE意味着UE和AMF之间没有N2连接也没有N3用户面连接UE在AMF看来是失联的但AMF还保留着UE的上下文比如签约信息、安全上下文、临时标识等。CM-CONNECTED则意味着N2连接存在UE和AMF之间可以正常交互信令。关键点来了UE处于CM-IDLE但RM-REGISTERED状态时如果它想发数据或者收数据就必须先唤醒网络侧的连接这个唤醒动作就是Service Request。你可以把它类比成你在一家公司上班已经办了入职RM-REGISTERED但你现在不在工位上CM-IDLE。突然有个快递要你签收有上行或下行数据要传你得先回到工位、打开电脑、登录系统Service Request才能处理这个快递。如果你压根没入职RM-DEREGISTERED那就不是Service Request能解决的事了得先走注册流程。2.2 两种触发方式UE主动和网络寻呼Service Request的触发分两种情况这个区分很重要因为信令流程不一样。第一种UE发起的Service RequestUE Triggered。UE有上行数据要发或者要响应寻呼主动发起Service Request。这时候UE会给AMF发一条NAS消息类型是Service Request里面包含UE的身份标识、Service Type等信息。第二种网络触发的Service RequestNetwork Triggered。下行有数据要发给UE但UE处于CM-IDLE核心网通常是SMF通过AMF触发寻呼Paging。UE收到寻呼后发起Service Request作为响应。注意这种情况下UE发的Service Request和第一种在消息结构上是一样的只是触发原因不同。这里有个容易混淆的点网络触发的Service Request严格来说Service Request这个NAS消息还是UE发的网络侧发的是Paging。所以你在看信令流程的时候不要以为网络会直接发一个叫Service Request的消息给UE不是这样的。网络发PagingUE回Service Request这个方向要搞清楚。2.3 Service Type字段告诉网络我要干什么Service Request消息里有一个关键字段叫Service Type它告诉AMF这次请求的目的是什么。常见的取值包括Service Type值含义典型场景0信令UE有NAS信令要发比如TAU、去注册等1数据UE有上行数据要发或者响应下行数据寻呼2移动性注册更新位置区更新触发的服务请求3紧急服务紧急呼叫场景4高优先级接入特殊优先级用户5-7预留后续扩展这个字段决定了AMF后续的处理逻辑。比如Service Type是数据AMF会检查是否有PDU会话需要激活用户面如果是信令可能只需要建立N2连接就够了不需要动用户面。2.4 为什么不能跳过Service Request直接发数据有人可能会问UE既然已经注册了为什么不能直接发数据非要先走一个Service Request原因在于用户面连接的按需建立。5G核心网为了省电、省资源在UE没有数据要传的时候会把N3接口的用户面隧道释放掉只保留控制面的上下文。这样做的好处是基站不用一直给UE分配空口资源核心网也不用一直维护用户面隧道。代价就是一旦有数据要传必须先通过控制面信令把用户面重新拉起来。这个拉起来的过程就是Service Request流程要完成的核心任务建立N2连接如果还没有的话激活PDU会话的用户面资源让数据可以走N3隧道传输。3. 信令流程逐步拆解从UE发出请求到用户面恢复3.1 第一步UE发起Service Request之前的判断UE在发起Service Request之前不是拍脑袋就发的。它需要满足几个条件UE处于CM-IDLE状态且RM-REGISTEREDUE有上行数据要发或者收到了网络的PagingUE有有效的5G-GUTI5G Globally Unique Temporary Identity这是AMF分配给UE的临时标识用于在Service Request中标识自己如果UE处于非允许区域或者有禁止接入的标志UE不应该发起Service Request。这里有个细节UE在Service Request中使用的身份标识通常是5G-GUTI。如果UE没有有效的5G-GUTI比如刚开机还没注册那就不能走Service Request得先走注册流程。5G-GUTI的作用是让AMF能快速找到UE的上下文而不需要UE每次都报自己的永久标识SUPI。3.2 第二步UE到gNB的RRC连接建立UE要发NAS消息首先得和基站建立RRC连接。这个过程包括UE在随机接入信道上发送前导码PreamblegNB回应随机接入响应RARUE发送RRCSetupRequest里面携带UE的初始身份通常是5G-GUTI或者随机值gNB回应RRCSetup分配SRB1资源UE发送RRCSetupComplete这条消息里会捎带NAS层的Service Request消息。注意Service Request是作为RRCSetupComplete的搭载消息发出去的不是单独发的。这种NAS over RRC的搭载机制在5G里很常见目的是减少信令交互次数加快流程。实操提示抓包的时候如果你只看NAS层可能会觉得Service Request是凭空出现的。实际上它藏在RRCSetupComplete里看信令流程要同时关注RRC层和NAS层。3.3 第三步gNB到AMF的N2消息传递gNB收到UE的Service Request后会把它封装在N2接口的Initial UE Message里发给AMF。这条消息除了NAS PDU之外还包含用户位置信息User Location Information当前UE所在的小区、TAI等信息RRC建立原因RRC Establishment Cause比如mo-Data移动台发起数据、mt-Access移动台终止接入等UE上下文信息如果gNB之前有UE的上下文也会带上Selected PLMN IDUE选择的PLMN。AMF收到这条消息后首先做的是身份验证和上下文查找。它用Service Request里的5G-GUTI去查自己维护的UE上下文。如果找到了继续如果找不到可能会走Identity Request流程让UE报SUPI或者直接拒绝。3.4 第四步AMF的安全检查和上下文恢复AMF找到UE上下文后会做几件事第一检查UE的接入权限。比如UE是否在允许的区域、是否有漫游限制、是否有接入限制等。如果检查不通过AMF会回Service Reject带上拒绝原因。第二激活NAS安全。如果之前的安全上下文还有效AMF会直接使用如果安全上下文需要更新可能会触发Authentication流程。在Service Request场景下通常安全上下文是复用的不需要重新认证。第三检查Service Type。如果是数据类型AMF需要通知SMF激活用户面如果是信令类型可能只需要建立N2连接。第四决定是否更新UE的TAI列表。如果UE当前所在的TAI不在AMF之前分配的TAI列表里AMF可能会在Service Accept里带上新的TAI列表。3.5 第五步AMF与SMF的交互——用户面激活这是Service Request流程里最核心的一步。AMF根据UE的PDU会话信息找到对应的SMF发送Nsmf_PDUSession_UpdateSMContext Request消息。这条消息的作用是告诉SMFUE要传数据了请把用户面资源准备好。SMF收到后会做几件事检查PDU会话的状态确认会话是激活的如果有必要更新UPF上的N4会话规则比如QoS规则、转发规则向AMF回复Nsmf_PDUSession_UpdateSMContext Response里面包含N2 SM信息比如UPF的隧道信息、QoS参数等。AMF拿到SMF的回复后会把这些信息通过N2 PDU Session Resource Setup Request发给gNB。gNB根据这些信息建立空口和N3接口的用户面资源。3.6 第六步Service Accept与用户面打通gNB完成用户面资源建立后会给AMF回N2 PDU Session Resource Setup Response。AMF收到后向UE发送Service Accept消息。这条NAS消息告诉UE你的请求已经被接受了用户面已经准备好了可以发数据了。到这里Service Request流程基本结束。UE可以开始发送上行数据网络也可以开始下发下行数据。整个流程用文字描述可能有点绕我用一个简化的时序来概括UE - gNB: RRCSetupRequest gNB - UE: RRCSetup UE - gNB: RRCSetupComplete (携带Service Request) gNB - AMF: Initial UE Message (携带Service Request) AMF - SMF: Nsmf_PDUSession_UpdateSMContext Request SMF - AMF: Nsmf_PDUSession_UpdateSMContext Response AMF - gNB: N2 PDU Session Resource Setup Request gNB - AMF: N2 PDU Session Resource Setup Response AMF - UE: Service Accept UE - gNB - UPF: 用户面数据传输3.7 一个容易被忽略的分支Service Reject不是每次Service Request都能成功。如果AMF检查不通过会回Service Reject里面带一个Cause值。常见的Cause包括Cause值含义可能原因9UE identity cannot be derived5G-GUTI无效或过期10Implicitly deregisteredUE上下文已被删除11PLMN not allowedUE不在允许的PLMN12Tracking area not allowedUE不在允许的TA13Roaming not allowed漫游限制22Congestion网络拥塞25Insufficient resources资源不足收到Service Reject后UE的行为取决于Cause值。有些情况下UE会重新注册有些情况下UE会等待一段时间再重试。4. 实际排查中最容易翻车的几个点4.1 5G-GUTI失效导致的身份无法识别这是我在实际工作中遇到最多的问题。UE发Service RequestAMF回Service RejectCause是UE identity cannot be derived。这个问题的根因通常是UE使用的5G-GUTI在AMF侧已经不存在了。为什么会这样几种可能UE之前注册的AMF和当前AMF不是同一个比如跨AMF移动当前AMF没有UE的上下文AMF重启或者上下文被清理了但UE还保留着旧的5G-GUTI5G-GUTI的分配和释放时序有问题UE用了一个已经被回收的标识。排查思路先确认UE用的5G-GUTI是什么然后去AMF侧查这个GUTI对应的上下文是否存在。如果不存在看AMF的日志确认上下文是什么时候、为什么被删除的。如果是跨AMF场景需要确认AMF之间的上下文传递流程是否正常。实操心得这个问题在实验室环境里不容易复现因为实验室通常只有一个AMFUE也不会跨AMF移动。但在现网或者多AMF的测试环境里这个问题出现的概率不低。建议在测试用例里专门加一个跨AMF Service Request的场景。4.2 安全上下文不同步导致的鉴权失败Service Request流程中如果AMF发现安全上下文有问题可能会触发重新鉴权。但如果UE和AMF对安全上下文的认知不一致就会出现鉴权失败最终Service Request被拒绝。这种问题的典型表现是UE侧显示正在连接然后超时失败网络侧看到的是Authentication Request发出去了但UE回的Authentication Response验证不通过。根因通常是UE和AMF之间的安全上下文在某个环节没有同步更新。比如之前的一次鉴权流程中UE成功计算了RES但AMF侧因为某种原因没有更新上下文导致后续流程中双方用的密钥不一致。排查这种问题需要同时抓UE侧和网络侧的日志对比双方的安全参数比如KAMF、NAS COUNT等。如果发现不一致往前追溯是哪一步开始出现分歧的。4.3 用户面资源建立失败但信令面显示成功这是一个比较隐蔽的坑。Service Request流程在信令面上看起来是成功的——AMF回了Service AcceptUE也收到了。但实际发数据的时候发现上行数据发不出去或者下行数据收不到。问题出在用户面资源建立失败但信令面没有正确反映这个失败。可能的原因包括gNB侧N3隧道建立失败但gNB回的N2 PDU Session Resource Setup Response里没有正确指示失败UPF侧的N4会话规则没有正确下发导致数据包被丢弃QoS参数不匹配导致数据包被限速或丢弃。排查这种问题不能只看信令面必须同时检查用户面的状态。具体来说在gNB侧确认N3隧道是否建立成功查看隧道端点标识TEID是否匹配在UPF侧确认N4会话规则是否正确查看PDRPacket Detection Rule和FARForwarding Action Rule在UE侧确认PDU会话的QoS Flow状态看是否有QoS Flow被拒绝。4.4 寻呼时机不匹配导致网络触发的Service Request失败网络触发的Service Request场景下如果UE没有在正确的寻呼时机Paging Occasion监听寻呼信道就会错过Paging导致下行数据无法送达。这个问题的根因通常是UE和网络对寻呼时机的计算不一致。寻呼时机的计算涉及UE的5G-S-TMSI、DRX周期、寻呼帧偏移等参数。如果这些参数在UE和AMF/gNB之间不一致就会导致UE在错误的时刻监听。排查思路对比UE侧和网络侧使用的DRX参数、5G-S-TMSI确认寻呼时机的计算结果是否一致。如果发现不一致检查参数配置的同步机制。5. 几个值得深挖的进阶话题5.1 Service Request与RRC状态的关系5G里RRC状态有三种RRC_IDLE、RRC_INACTIVE、RRC_CONNECTED。Service Request流程和RRC状态的关系比较微妙。当UE处于RRC_INACTIVE时它保留了一部分RRC上下文但空口连接是释放的。这种情况下UE要发数据可以先走RRC Resume流程而不是完整的Service Request。RRC Resume可以更快地恢复空口连接减少信令开销。但注意RRC Resume和Service Request不是互斥的。在某些实现里UE在RRC Resume的过程中会捎带NAS层的Service Request。具体行为取决于UE和网络的实现。5.2 Service Request中的QoS Flow处理Service Request流程中如果UE有多个PDU会话每个会话可能有多个QoS Flow。AMF在通知SMF激活用户面时需要指定激活哪些QoS Flow。这里有个策略问题是激活所有QoS Flow还是只激活有数据要传的QoS Flow不同实现有不同的做法。全激活的好处是简单坏处是浪费资源按需激活的好处是节省资源坏处是逻辑复杂容易出bug。在实际排查中如果发现某个QoS Flow的数据传不出去要检查Service Request流程中这个QoS Flow是否被正确激活了。5.3 Service Request的拥塞控制网络拥塞的时候AMF可能会拒绝Service Request回Service RejectCause是Congestion。这时候UE会根据网络给的退避定时器Back-off Timer等待一段时间再重试。这个退避定时器的值需要仔细设置。设得太短UE频繁重试加重拥塞设得太长UE长时间无法接入影响用户体验。通常这个值会根据网络的负载情况动态调整。实操提示在测试拥塞场景时要注意观察UE是否正确遵守了退避定时器。有些UE实现可能会忽略这个定时器导致拥塞加剧。6. 抓包分析实战如何从信令流里读出问题6.1 抓包点的选择要看清楚Service Request流程抓包点的选择很关键。理想情况下你需要同时抓UE侧的空口日志看UE发了什么、收到了什么gNB侧的N2接口看gNB和AMF之间的信令交互AMF侧的N2和N11接口看AMF和gNB、AMF和SMF之间的交互SMF侧的N4接口看SMF和UPF之间的交互。如果只能抓一个点优先抓AMF侧的N2接口因为这里能看到最完整的信令流程。6.2 关键字段的解读在抓包结果里有几个字段需要特别关注Service Request消息里的5G-S-TMSIUE的临时标识用于AMF查找上下文Service Type请求的目的PDU Session StatusUE侧认为哪些PDU会话是激活的。Initial UE Message里的RRC Establishment Cause接入原因帮助判断是UE主动还是网络触发User Location InformationUE的位置信息。Service Accept消息里的PDU Session Status网络侧确认的PDU会话状态TAI List如果有更新会带在这里。Service Reject消息里的Cause拒绝原因这是排查问题的第一手线索。6.3 一个真实的排查案例某次测试中UE发起Service Request后AMF回了Service Accept但UE就是发不出数据。抓包发现Service Accept里带的PDU Session Status显示所有会话都是inactive。这意味着AMF虽然接受了Service Request但没有激活任何PDU会话的用户面。进一步查AMF日志发现AMF在收到Service Request后没有向SMF发UpdateSMContext Request。原因是AMF侧的配置里这个UE的PDU会话被标记为不需要用户面激活。这是一个配置问题不是协议问题。修正配置后流程正常。这个案例的教训是不要假设Service Accept就意味着用户面一定通了。要看Service Accept里的PDU Session Status确认会话是否真的被激活了。7. 写在最后一些个人体会Service Request这个流程看起来简单但真正吃透需要把UE状态机、NAS安全、N2/N4接口交互、用户面建立这几个模块都串起来。我在实际工作中最大的体会是信令流程的每一步都有它存在的理由不要死记硬背流程要理解每一步解决什么问题。比如为什么Service Request要携带PDU Session Status因为UE和网络对会话状态的认知可能不一致UE通过这个字段告诉网络我认为这些会话是活的网络据此决定是否需要更新状态。理解了这一点你在排查会话状态不一致类问题时就有方向了。另外不同厂商的设备在Service Request流程的实现上可能有细微差异比如定时器取值、消息字段的填充方式、异常处理逻辑等。在做互联互通测试时这些差异往往是问题的根源。建议在测试前先对照3GPP协议和厂商文档把关键差异点列出来有针对性地设计测试用例。最后分享一个小技巧如果你在排查Service Request相关的问题先把UE侧、gNB侧、AMF侧、SMF侧的日志按时间戳对齐然后从Service Request消息发出开始逐条消息往下看看在哪一步出现了异常。这种时间线对齐法看起来笨但非常有效尤其是对时序相关的问题。