短信,这个诞生于1992年的"古董级"业务,在5G时代不但没有消亡,反而获得了一条全新的传输通道——SMS over NAS。本文将带你深入理解这条通道的设计哲学。
想象一下这个场景:你是一个5G运营商,刚刚建好了5G SA核心网,万事俱备。但这时候发现一个尴尬的事实——你的用户还在发短信,而你的5G核心网里,既没有2G/3G的电路域(CS Domain),也没有部署IMS。
短信往哪里送?
在4G时代,这个问题有两个标准答案:
| 方案 | 传输通道 | 依赖什么 |
|---|---|---|
| SMS over SGs | MME → MSC(经SGs接口) | 需要2G/3G电路域的MSC |
| SMS over IP | UE → IMS(经SIP MESSAGE) | 需要IMS核心网 |
问题在于,5G SA核心网里既没有MME,也没有SGs接口。如果还想用SMS over SGs,就得回退到4G EPS,走EPS Fallback的思路——这太重了。如果走SMS over IP,就得部署全套IMS——很多小运营商觉得为了一个短信不值得。
于是3GPP在Release 15中给出了一个优雅的答案:SMS over NAS——把短信塞进NAS信令里,让AMF当"快递中转站",再加一个新的网元SMSF来处理短信逻辑。
理解SMS over NAS的最佳类比就是寄信时顺便托人带个口信:
graph LR
UE[📱 UE] -->|N1 NAS信令| AMF[AMF<br/>接入管理]
AMF -->|N20 SMS信令| SMSF[SMSF<br/>短消息功能]
SMSF -->|MAP/Diameter| SMSC[SMSC<br/>短信中心]
SMSC -->|MAP| GMSC[SMS-GMSC<br/>短信网关]
UDM[UDM<br/>用户数据] -.->|Nudm_SDM<br/>签约查询| AMF
UDM -.->|Nudm_SDM<br/>短信路由| SMSF
style SMSF fill:#ff9900,stroke:#333,color:#000
style AMF fill:#4488ff,stroke:#333,color:#fff
style UE fill:#44bb44,stroke:#333,color:#fff
在这个架构中,有几个关键角色:
| 网元 | 在SMS中的角色 | 类比 |
|---|---|---|
| UE | 短信的发送方/接收方 | 寄件人/收件人 |
| AMF | NAS信令锚点,转发SMS Payload | 邮递员(不拆信,只转交) |
| SMSF | 5GC新增网元,处理SMS逻辑 | 口信处理员 |
| SMSC | 传统短信中心,存储转发 | 邮局总局 |
| UDM | 存储SMS签约和路由信息 | 户口本 |
SMSF是5GC中唯一一个专门为SMS服务新定义的网元。它的核心能力包括:
graph TB
subgraph SMSF内部结构
direction TB
A[N20接口处理<br/>与AMF交互] --> B[SMS业务逻辑<br/>鉴权/路由/计费]
B --> C[MAP/Diameter接口<br/>与SMSC交互]
D[UDM接口<br/>签约查询] --> B
end
style A fill:#4488ff,color:#fff
style B fill:#ff9900,color:#000
style C fill:#44bb44,color:#fff
style D fill:#9966cc,color:#fff
为什么需要SMSF,而不是让AMF直接处理?
这是典型的"单一职责"设计原则。AMF的核心职责是接入和移动性管理——注册、切换、寻呼,已经够复杂了。把SMS的处理逻辑(路由、格式转换、计费)独立出来给SMSF,既让AMF保持简洁,又让SMS的逻辑可以独立演进和扩展。
理解SMS over NAS的关键在于理解协议栈的嵌套关系。下面从上到下逐层拆解:
┌──────────────────────────────────┐
│ 用户短信内容 │ ← "你好,今晚7点吃饭"
├──────────────────────────────────┤
│ TPDU (SMS-SUBMIT) │ ← 短信传输层协议数据单元
├──────────────────────────────────┤
│ RP-DATA (MO) │ ← 中继协议:UE ↔ SMSF
├──────────────────────────────────┤
│ NAS Transport (UL/DL) │ ← NAS传输容器
├──────────────────────────────────┤
│ 5GS NAS信令 │ ← NAS安全层(加密+完整性)
├──────────────────────────────────┤
│ RRC信令 │ ← 无线资源控制
├──────────────────────────────────┤
│ L2 / L1 │ ← 物理层传输
└──────────────────────────────────┘
这里有一个非常巧妙的设计:RP协议(Relay Protocol)被原封不动地保留了下来。RP协议从2G时代就在用,负责在终端和短信中心之间建立逻辑连接。5G所做的只是换了一个"运输工具"——从2G的DTAP信道、4G的SGsAP隧道,变成了5G的NAS Transport容器。
RP协议本身只有4种消息类型:
| RP消息 | 方向 | 用途 |
|---|---|---|
| RP-DATA (MO) | UE → SMSF | 移动台发起的短信 |
| RP-DATA (MT) | SMSF → UE | 移动台终止的短信 |
| RP-ACK | 双向 | 确认收到 |
| RP-ERROR | 双向 | 传输失败 |
NAS Transport是5G NAS中一个通用容器消息,它本身只做一件事:把上层协议的Payload从一个地方搬到另一个地方。SMS over NAS利用的就是这个搬运能力。
NAS Transport消息中的关键字段:
| 字段 | 说明 |
|---|---|
| Payload Container Type | 指示装的是什么(SMS = "5GS SMS") |
| Payload Container | 实际内容(RP消息) |
| Additional Information | 路由辅助信息 |
| PDU Session ID | 可选,关联的会话(SMS不用) |
SMS over NAS的前提是UE和网络都支持这个能力,且用户有签约。这个信息在注册流程中交换。
sequenceDiagram
participant UE as UE
participant AMF as AMF
participant UDM as UDM
participant SMSF as SMSF
UE->>AMF: Registration Request<br/>(含 "5GS NAS SMS supported" 指示)
AMF->>UDM: Nudm_SDM_Get(查询SMS签约数据)
UDM-->>AMF: 返回 SMS Subscription Data
AMF->>SMSF: Nsmsf_SMService_Activate<br/>(激活该用户的SMS服务)
SMSF-->>AMF: Activate Response
AMF-->>UE: Registration Accept<br/>(含 "NAS SMS allowed" 指示)
几个关键点:
如果没有签约NAS SMS会怎样?
AMF在Registration Accept中不会包含SMS指示,后续UE发短信时就不能走NAS通道,只能尝试其他方式(如SMS over IP / IMS)。
sequenceDiagram
participant UE as 📱 UE
participant RAN as 📡 gNB
participant AMF as 🔵 AMF
participant SMSF as 🟠 SMSF
participant SMSC as 📮 SMSC
Note over UE: 用户点击"发送"
UE->>RAN: RRC UL Information Transfer
Note right of UE: NAS Transport(UL)<br/>Payload = RP-DATA(MO)<br/>内含 SMS-SUBMIT TPDU
RAN->>AMF: N2 Uplink NAS Transport
AMF->>SMSF: N20 SMS Submit Request
Note right of AMF: 转发RP-DATA<br/>带上SUPI等用户标识
SMSF->>SMSF: 验证签约<br/>检查发送权限
SMSF->>SMSC: MAP_forwardSM<br/>(或Diameter等价消息)
SMSC-->>SMSF: MAP_forwardSM ACK
Note right of SMSC: SMSC已存储短信<br/>等待投递给接收方
SMSF-->>AMF: N20 SMS Submit Report
AMF->>RAN: N2 Downlink NAS Transport
RAN-->>UE: RRC DL Information Transfer
Note left of UE: NAS Transport(DL)<br/>Payload = RP-ACK(MO)
Note over UE: 显示"已发送"✅
关键时序解读:
步骤1-2:UE构造RP-DATA消息(内含实际的短信内容),把它放进NAS Transport容器中,通过RRC发给gNB,gNB转发给AMF。AMF是NAS信令的终点——它拆开NAS外层,看到里面的RP-DATA,知道这是一条短信。
步骤3:AMF通过N20接口(即Nsmsf_SMService_Uplink)把RP-DATA转发给SMSF。AMF完全不解析RP消息内容,它只是一个忠实的搬运工。
步骤4-5:SMSF做两件事——先验证用户有没有权限发短信(查签约数据),然后把RP-DATA转换成传统MAP/Diameter格式发给SMSC。这一步是协议转换的关键点。
步骤6-8:SMSC确认后,确认消息原路返回,最终UE收到RP-ACK,显示"已发送"。
接收短信的流程稍微复杂一些,因为手机可能在空闲态(CM-IDLE),需要先唤醒。
sequenceDiagram
participant SMSC as 📮 SMSC
participant SMSF as 🟠 SMSF
participant AMF as 🔵 AMF
participant RAN as 📡 gNB
participant UE as 📱 UE
Note over SMSC: 收到发给某用户的短信
SMSC->>SMSF: MAP_deliverSM<br/>(通过SMS-GMSC路由)
SMSF->>AMF: N20 SMS Deliver Request
Note right of SMSF: 通过N1N2 Message Transfer<br/>请求AMF投递给UE
alt UE在CM-IDLE状态
AMF->>RAN: Paging(寻呼)
RAN->>UE: 寻呼消息
UE->>RAN: Service Request
RAN->>AMF: N2 Initial UE Message
Note right of AMF: UE进入CM-CONNECTED
end
AMF->>RAN: N2 Downlink NAS Transport
Note right of AMF: NAS Transport(DL)<br/>Payload = RP-DATA(MT)<br/>内含 SMS-DELIVER TPDU
RAN-->>UE: RRC DL Information Transfer
Note over UE: 显示新短信通知 📩
UE->>RAN: RRC UL Information Transfer
Note right of UE: NAS Transport(UL)<br/>Payload = RP-ACK(MT)
RAN->>AMF: N2 Uplink NAS Transport
AMF-->>SMSF: N20 SMS Deliver Report
SMSF-->>SMSC: MAP_deliverSM Response
空闲态接收短信的代价:
当UE处于CM-IDLE状态时,AMF必须先发起寻呼,让UE回到CM-CONNECTED状态才能投递NAS消息。这意味着收短信会触发一次寻呼+Service Request的完整流程。这在空口上增加了一些时延,但对于短信这种低频业务来说完全可以接受。
| 维度 | SMS over NAS (5G) | SMS over SGs (4G) | SMS over IP (IMS) |
|---|---|---|---|
| 传输层 | NAS信令面 | CS域信令面(经SGs) | SIP over IP |
| 需要IMS | ❌ | ❌ | ✅ |
| 需要CS域 | ❌ | ✅(MSC) | ❌ |
| 需要SMSF | ✅ | ❌ | ❌ |
| 延迟 | 低(纯信令) | 中(可能涉及回落) | 依赖IP传输质量 |
| 可靠性 | 高(NAS安全保护) | 高(CS域成熟) | 依赖IMS注册状态 |
| 5G SA支持 | ✅ 原生支持 | ❌ 不支持 | ✅ 通过IMS |
| 适用场景 | 5G SA运营商 | 4G+2G/3G运营商 | 已部署IMS的运营商 |
| 对终端要求 | 支持5G NAS SMS | 支持CSFB | 支持IMS SMS |
| 与语音耦合 | 无 | 与CSFB绑定 | 与VoLTE/VoNR绑定 |
一个常见的疑问是:都2026年了,谁还用短信?
答案比想象中重要得多:
SMS over NAS继承了5G NAS的完整安全体系:
| 安全特性 | 说明 |
|---|---|
| 加密 | NAS消息体使用AES或SNOW 3G加密,短信内容在空口不可窥探 |
| 完整性保护 | 每条NAS消息附带MAC校验,防止篡改 |
| 防重放 | NAS安全上下文中的计数器防止消息被重放 |
| 用户隐私 | SUPI在空口被加密为SUCI,保护用户身份 |
这一点比传统的SMS over SGs要强得多——2G/3G的A5/1加密早就被证明不安全,而5G NAS加密是现代密码学级别的保护。
当用户报告"发不出短信"时,典型的排查思路:
第一步:检查注册流程
在AMF侧查看Registration Accept消息,确认是否包含"NAS SMS allowed"指示。如果没有,问题出在签约或SMSF选择上。
第二步:检查MO-SMS流程
用Wireshark或tcpdump在N20接口抓包,看AMF是否向SMSF发送了N20 SMS Submit Request。如果AMF发出了但SMSF没有应答,说明SMSF有问题(可能是与SMSC的接口故障)。
第三步:检查MT-SMS流程
如果用户收不到短信,检查SMSF是否向AMF发送了N20 SMS Deliver Request。如果SMSF没发,问题可能在SMSC到SMSF之间。
| 故障现象 | 可能原因 | 排查点 |
|---|---|---|
| 发送失败,UE收到RP-ERROR | 用户未签约SMS over NAS | UDM签约数据 |
| 发送无响应(超时) | SMSF不可达或SMSC接口故障 | N20接口抓包 |
| 能发不能收 | SMSF未向AMF激活该用户 | 检查Activate流程 |
| 收短信触发回落到4G | 终端不支持SMS over NAS | 终端能力检查 |
| 短信内容乱码 | 编码协商失败 | TPDU中的DCS字段 |
陷阱:UE显示"已发送"但对方没收到。
很多工程师看到UE收到RP-ACK就认为短信已经成功送达了——实际上RP-ACK只意味着SMSC收到了这条短信,不代表接收方已经收到。SMSC收到后会尝试投递给接收方,如果接收方关机,SMSC会暂存并在用户开机后重试。所以"已发送"的准确含义是"SMSC已入库",而不是"对方已阅"。
回顾整个SMS over NAS的设计,有几个深层次的"为什么"值得思考:
为什么不新建一个SMS专用的无线承载?
因为短信的数据量极小(一条SMS最多140字节),为它专门建立一个无线承载(DRB)太浪费了。NAS信令连接本来就在,搭个便车最经济。
为什么不用PDU Session传短信(像上网数据一样)?
PDU Session需要先建立会话、分配IP地址、建立GTP隧道——整个流程至少增加5-6条信令。对于140字节的短信来说,这个开销完全不合理。而且,有些物联网终端根本没有PDU Session,但需要收短信(比如远程配置)。
为什么需要SMSF这个新网元?
因为AMF和SMSC之间说着不同的"语言"——AMF只懂5G NAS和SBI(Service Based Interface),SMSC只懂MAP/Diameter。需要一个"翻译官"在中间做协议转换。把翻译功能独立为SMSF,遵循了5GC的服务化架构(SBA)理念——每个NF只做一件事,做好一件事。
Q1: SMS over NAS和SMS over IP可以同时使用吗?
A: 可以共存但不能同时用于同一条短信。终端可以同时注册IMS(用于语音和SMS over IP)和NAS SMS。通常运营商配置优先级——如果IMS可用,优先走SMS over IP(因为它走用户面,对信令面负载更小);如果IMS不可用,回退到SMS over NAS。这种"双保险"机制提高了短信的可靠性。
Q2: SMS over NAS支持短信Concatenation(长短信拼接)吗?
A: 支持。长短信在TPDU层被分割成多个片段(使用UDH中的Concatenation IE),每个片段独立通过RP-DATA和NAS Transport传输。接收端在TPDU层完成重组。这个过程对NAS层完全透明——NAS只管搬运,不管内容。
Q3: 5G NSA(非独立组网)能用SMS over NAS吗?
A: 5G NSA(Option 3/3a/3x)的UE注册在EPC中,由MME管理,因此使用的是4G的SMS方案(SMS over SGs或SMS over IP)。只有5G SA(Stand Alone)的UE注册在5GC中,由AMF管理,才能使用SMS over NAS。这是NSA和SA的一个重要区别。
Q4: SMSF是必选网元吗?运营商不部署SMSF会怎样?
A: SMSF只在运营商提供SMS over NAS服务时才需要。如果运营商只提供SMS over IP(通过IMS),则不需要部署SMSF。但如果运营商有5G SA网络且需要提供短信服务(验证码、应急通知等),就必须部署SMSF或等效的解决方案。
Q5: SMS over NAS的时延大概是多少?
A: 典型的端到端时延在1-3秒范围内(UE发出到对端UE收到RP-ACK确认)。其中NAS信令传输约100-300ms,SMSF处理约100-200ms,SMSC存储转发约500ms-1s,寻呼唤醒(如果接收方空闲态)约200-500ms。相比SMS over SGs(可能涉及回落时延),NAS方式更快更稳定。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
