好的,我们继续5G服务化短信的深度探索之旅。这是系列文章的第六篇,我们将 tackling 两个非常关键且具挑战性的话题:如何在茫茫的全球网络中为一条短信找到正确的“家”,以及当短信在一条复杂的、经过策略路由的路径上投递失败时,网络又该如何应对。

深度解析 3GPP TS 23.540:5.1 MT SMS 流程 (Part 4 - 跨网寻址 GPSI 解析与复杂路径失败处理)

本文技术原理深度参考了3GPP TS 23.540 V18.4.0 (2024-06) Release 18规范中,关于“5.1 Procedure for SBI-based MT SMS”的核心章节,本次重点聚焦于 5.1.7 GPSI-to-Subscription-Network resolution procedure 以及 5.1.9 Unsuccessful Mobile Terminated short message transfer via SMS Router。本文旨在为读者揭示5G网络在处理跨运营商短信时,如何像一名侦探一样,通过GPSI解析找到用户的真实归属网络,并详解在引入了SMS Router的复杂架构下,失败处理流程如何确保业务的健壮性。

在之前的旅程中,我们已经见证了小明的手机如何通过各种成功路径接收短信,也学习了当他“失联”时,网络那套优雅的Alert智能唤醒机制。然而,之前的场景都默认了一个前提:发给小明的短信,已经准确地抵达了他所在运营商的“大门口”(SMS-GMSC)。

但现实世界远比这复杂。今天,我们引入一位新角色——小明的同事小红。小红的手机号(例如 138-XXXX-AAAA)看起来属于A运营商,但她早已通过“携号转网”服务,将号码转到了小明所在的B运营商。现在,他们公司的HR平台(一个SC,连接在A运营商网络)要给全公司发送一条紧急通知短信。当这条发给小红的短信抵达A运营商的SMS-GMSC时,一个关键问题摆在了面前:“此人已非我家客,我该将信送何方?”

与此同时,我们还会回到小明的身上。他正在地下车库,信号微弱。一条需要经过SMS Router进行特殊处理的银行高优告警短信,恰在此时投递失败。失败的信号,又将如何在这条更长的链路上,引发连锁反应?


1. 跨网寻踪:GPSI 到归属网络的解析艺术 (Section 5.1.7)

Section 5.1.7是整部规范中保障**互联互通(Interoperability)**的基石。它解决了一个根本性问题:当一个网络功能(如SMS-GMSC)只知道用户的公开标识(GPSI,通常就是手机号MSISDN)时,它如何确定该用户当前签约的归属网络(Subscription Network/PLMN)?

When using service-based interface between the SMS-GMSC and the UDM, if the GPSI is the only known SMS recipient’s identifier, the SMS-GMSC needs to determine the target PLMN to be able to interact with the UDM in the home PLMN of the SMS recipient. The SMS-GMSC can determine the target PLMN using one of the following mechanisms…

深度解读:

这段话点明了问题的核心。在SBA架构下,SMS-GMSC需要与归属网络的UDM对话才能获取路由信息。但如果小红的号码已经转到了B运营商,A运营商的SMS-GMSC就不能再理所当然地去查询自家的UDM,而必须先“解析”出小红号码的真实归属地是B运营商,然后再去和B运营商的UDM通信。这个“解析”过程,规范定义了多种机制。

1.1 新来的“户籍警官”:MNPF

为了解决号码可携(Number Portability, NP)带来的寻址难题,5G架构引入了一个新的网络功能——MNPF (Mobile Number Portability Function)。它的唯一职责,就是维护一个号码可携数据库,对外提供查询服务,准确告知一个手机号码当前的“户籍”所在地。

1.2 解析机制一:由SMS-GMSC主动发起的“侦查” (Section 5.1.7.2)

这是最直接的方式,由“网关门卫”SMS-GMSC自己来负责搞清楚来客的身份。

  • 直接路由 (Direct Routing - 5.1.7.2.2)

    When MNP is implemented in a country… with direct routing mechanism, the originating network first does the number portability query to identify the recipient GPSI’s subscription PLMN before routing…

    深度解读与场景还原(Figure 5.1.7.2.2-1)

    1. HR平台的SC将发给小红(138-XXXX-AAAA)的短信,发送到A运营商的SMS-GMSC

    2. A运营商的SMS-GMSC看到这个号码,根据本地策略,它知道需要进行NP查询。于是,它向A运营商的MNPF发起Nmnpf_NPStatus_Get服务调用:“请查一下 138-XXXX-AAAA 这个号码的户籍。”

    3. MNPF查询数据库后,回复道:“这个号码已经转出,现在的归属网络是B运营商。”

    4. 拿到这个决定性的信息后,A运营商的SMS-GMSC便知道不能在内部继续处理。它会通过跨运营商的接口(通常会经过边界网关SEPP),去查询B运营商的NRF,找到B运营商的UDM,然后继续我们之前熟悉的MT SMS流程。

    这种方式,源网络直接获取最终地址并直达,效率最高。

  • 间接路由 (Indirect Routing - 5.1.7.2.3)

    …the signalling messages are always routed to the number range holder network, the number range holder then performs a number portability check and forwards the request to the subscription network if the number is ported out.

    深度解读与场景还原(Figure 5.1.7.2.3-1)

    这是一种不同的路由哲学,常见于国际漫游等场景。

    1. 假设一个国外的C运营商要给小红发短信。C运营商的网关可能不知道如何查询A或B运营商的MNPF。

    2. 于是,它遵循一个简单的规则:根据号码前缀(138-XXXX),它将短信路由到这个号码的“原始颁发网络”,即号码范围持有者(Number Range Holder)——A运营商。

    3. 短信抵达A运营商的SMS-GMSC后,由A运营商负责执行NP查询。发现号码已转至B运营商后,A运营商再将短信转发给B运营商的网络。

    在这种模式下,号码的原始归属网络扮演了“路由中转站”的角色。

1.3 解析机制二:委托“智能代理”SCP处理 (Section 5.1.7.3)

In indirect Communication with Delegated Discovery, the SCP is the service consumer of the GPSI-to-Subscription-Network resolution service in MNPF and routes an SBI message based on GPSI when MNPF is implemented.

深度解读:

这是一种架构上的解耦。SMS-GMSC可以把自己不擅长的“侦查”工作,完全委托给一个更专业的“智能代理”——SCP (Service Communication Proxy)

  • 流程:SMS-GMSC收到短信后,无脑地将所有需要跨网查询的请求都发给SCP。SCP内部集成了与MNPF、NRF等交互的复杂逻辑。它负责完成所有的解析工作,找到最终的UDM地址,然后代理SMS-GMSC完成查询,并将结果返回。

  • 好处:这大大简化了SMS-GMSC的逻辑,使得路由策略和解析逻辑可以集中在SCP进行管理和升级。

1.4 解析机制三:由NRF执行的“集成服务” (Section 5.1.7.4)

The SMS-GMSC … contacts the NRF … The discovery request is based on the GPSI of the SMS recipient and includes an indication for the NRF to determine the target PLMN…

深度解读:

这是最体现SBA思想的方式。它将“网络解析”这个能力,也融入到了“服务发现”的流程中。

  • 流程:SMS-GMSC不再是先问MNPF再找UDM,而是直接向NRF发起一个增强的服务发现请求:“请帮我找一个能为小红(GPSI: 138-XXXX-AAAA)服务的UDM,并且请你顺便帮我搞定她的归属网络问题。”

  • NRF的智能:收到这个请求的NRF,会自己去查询MNPF,或者通过其他手段(如DNS/ENUM查询)来确定小红的归属网络是B运营商。然后,它再在B运营商的网络里寻找符合条件的UDM,并将最终结果一次性返回给SMS-GMSC。

  • 好处:对于SMS-GMSC来说,整个复杂的解析过程被“屏蔽”了,变得完全透明。它就像在使用一个“智能搜索引擎”,只需输入GPSI,就能得到最终的服务实例,大大降低了服务消费者的复杂度。

通过这套精密的GPSI解析机制,5G网络确保了即使用户身份(号码)与其归属网络(运营商)的关系变得动态和复杂,每一条短信依然能够被精准地投递到正确的目的地,这是实现全球无缝通信的基石。


2. 复杂路径上的回响:经由SMS Router的失败处理 (Section 5.1.9)

现在,让我们回到小明身上。他正在地下车库,银行发来的高优告警短信(需要经过SMS Router处理)因为信号问题投递失败了。Section 5.1.9 Unsuccessful Mobile Terminated short message transfer via SMS Router为我们清晰地展示了这条失败路径上的多米诺骨牌效应。

Figure 5.1.9-1: Unsuccessful MT SMS over NAS via SMS Router是我们的行动指南。

失败的传递:一条更长的回溯之路

  1. If the AMF informs the SMSF that it cannot deliver the MT-SMS to the UE… the SMSF shall send the Nsmsf_SMService_MtForwardSm response with error cause to the SMS Router.
  1. If the SMS Router receives error response from SMSF… the SMS Router shall send the Nrouter_SMService_MtForwardSm response with error cause to the SMS-GMSC.

深度解读:

失败的源头依然在接入侧:AMF无法联系到小明的手机。

  1. 第一张倒下的骨牌AMF通知SMSF投递失败。

  2. 第二张倒下的骨牌SMSF收到失败通知后,将带有错误原因(e.g., UE_UNREACHABLE)的失败响应,发送给它的上游调用者——SMS Router

  3. 第三张倒下的骨牌SMS Router收到了这个坏消息。它可能会执行一些自己的失败处理策略(比如尝试路由到备份的SMSF,但在此流程中没有)。最终,它忠实地将这个失败响应继续向上传递,发送给它的上游调用者——SMS-GMSC

我们可以清晰地看到,失败报告的传递路径,与成功消息的下发路径,完全是镜像的。消息怎么来,报告就怎么回去。

责任的归属:依然是“守门员”发起Alert

  1. The SMS-GMSC subscribes in UDM to be notified when the UE becomes reachable for SMS… by using the Nudm_EventExposure_Subscribe service operation…

深度解读:

SMS-GMSC最终收到这个从层层上游传递回来的、带有“用户不可达”原因的失败报告后,它立刻明白了这是一个暂时性问题。

此时,一个关键的架构设计原则体现了出来:由谁来负责发起“智能等待”(Alert订阅)?

答案是:依然是入口网关SMS-GMSC。

  • 逻辑:尽管SMS Router是失败路径上的一环,但它是一个中间策略节点,不应该承担端到端的业务恢复责任。SMS-GMSC作为整条MT短信链路的“发起者”和“总负责人”,理应负责监控用户的最终状态,并触发后续的恢复流程。

  • 流程:SMS-GMSC在收到失败报告后,执行了我们已经非常熟悉的操作:向UDM发起Nudm_EventExposure_Subscribe服务调用,订阅小明的可达性事件。

后续的Alert流程将与5.1.8完全一致:小明出车库 AMF通知UDM UDM通知SMS-GMSC SMS-GMSC发送Alert给银行SC SC重发短信。这一次,重发的短信会再次经过SMS Router,最终成功送达。

这个流程清晰地界定了链路中不同节点的职责,确保了即使在复杂的多跳路由场景下,失败处理和业务恢复机制依然能够统一、健壮地工作。


【FAQ环节】

Q1:MNPF和NRF在GPSI解析中都可能参与,它们的分工到底是什么?

A1:它们的分工非常明确,一个是“户籍警察”,一个是“114查号台”。

  • MNPF (Mobile Number Portability Function)唯一职责是回答:“这个手机号现在属于哪个运营商?”它只提供号码归属信息(PLMN ID)。

  • NRF (Network Repository Function) 的职责是回答:“在某个运营商网络里,能提供XX服务的网络功能实例在哪里?”它提供的是具体的服务实例地址。

非集成的模式下(如5.1.7.2.2),SMS-GMSC会先问MNPF拿到PLMN ID,再问目标PLMN的NRF拿到UDM地址。而在集成模式下(如5.1.7.4),SMS-GMSC可以直接问NRF一个复杂问题,NRF在后台会自己去查询MNPF,然后把最终结果返回。

Q2:直接路由和间接路由,两种号码可携的解决方案,各有什么优缺点?

A2:这是网络架构设计中的经典权衡。

  • 直接路由 (Direct Routing)

    • 优点:路由路径最短,效率最高,时延最低,节省了不必要的网间中转信令。

    • 缺点:要求发起网络具备查询目标国家/地区NP数据库的能力,或者与对方的MNPF有互通接口,部署和互联互通更复杂。

  • 间接路由 (Indirect Routing)

    • 优点:对发起网络要求最低,只需知道号码的原始归属网络即可,实现简单,尤其适用于复杂的国际漫游场景。

    • 缺点:路由路径变长,增加了“号码范围持有者”网络的中转处理,会引入额外的时延和网间信令开销。

Q3:当一个MT短信失败时,是由SMS-GMSC, IP-SM-GW, 还是SMS Router来负责发起Alert订阅?

A3:这是一个非常好的架构问题,答案是:由最靠近业务入口且负责端到端流程的那个网关来负责。

  • 在无中间件的场景,是SMS-GMSC

  • 在经由IP-SM-GW的场景,失败订阅的责任转移到了IP-SM-GW,因为它才是IP短信互通的端到端负责人。

  • 在经由SMS Router的场景,责任依然是SMS-GMSC。因为SMS Router只是一个策略路由节点,它不改变短信的端到端业务属性,SMS-GMSC仍然是整个MT业务流程的入口和守护者。

这个设计原则确保了职责的清晰。

Q4:规范中提到的DNS/ENUM也是一种GPSI解析方式,它和MNPF是什么关系?

A4:DNS/ENUM (E.164 Number to URI Mapping) 是一种利用公共DNS系统来查询电话号码相关服务信息的技术。它可以作为实现MNPF功能的一种底层技术选择,或者是MNPF的一种替代方案

  • 关系:运营商可以将自己的号码可携信息发布到ENUM服务器上。当一个NF(如NRF)需要解析号码时,它可以发起一个ENUM查询,DNS系统会返回一个包含归属网络信息的URI。

  • 对比:MNPF是3GPP体系内定义的、基于SBI接口的“原生”解决方案。而DNS/ENUM则是一种更通用、更开放的、基于互联网技术的解决方案。在实际部署中,运营商可以选择自建基于SBI的MNPF,也可以选择利用ENUM体系,或者让MNPF在后台通过ENUM来获取数据。

Q5:如果SMS Router有复杂的策略,比如它会把一条短信分发给两个不同的SMSF,这时如果其中一个SMSF投递失败,会发生什么?

A5:这是一个高级场景,规范没有明确定义这种“分发”逻辑,但我们可以根据SBA原则推演。

  • SMS Router向两个SMSF发起Nsmsf_SMService_MtForwardSm调用后,它需要维护两个独立的事务状态。

  • 它会分别收到来自两个SMSF的响应。一个可能是“成功”,另一个可能是“失败(UE不可达)”。

  • 此时,SMS Router需要根据其内置的策略来决定如何向SMS-GMSC报告最终结果。

    • 策略A(成功优先):只要有一个成功,就向SMS-GMSC报告成功。

    • 策略B(失败优先):只要有一个失败,就向SMS-GMSC报告失败,并可能附带部分成功的信息。

    • 策略C(分别报告):这在SBI的请求-响应模式下较难实现,但理论上可以通过其他机制异步报告。

  • 通常,对于暂时性失败,SMS Router会向上游报告失败,以便触发Alert机制,因为网络的期望是最终所有投递都能成功。这取决于SMS Router作为B2BUA(Back-to-Back User Agent)的具体实现复杂度。