聚焦 3GPP TS 23.501 §5.32、TS 23.502 §4.12.2、TS 23.503 §6.1.3 与 TS 24.193 §6.1.3 的 Multi-Access PDU Session 信令与 ATSSS 规则分发机制。
5G 体系架构里,一个 UE 同时挂着 3GPP 接入(NR)和非 3GPP 接入(N3IWF/TNGF 之后的 Wi-Fi)是常态。早期方案(如"ANDSF + IFOM")只能做粗粒度的策略下发,真正决定哪一条业务流走哪个接入、何时切换、能否同时双发,一直缺乏统一框架。
ATSSS(Access Traffic Steering, Switching and Splitting,接入业务流的引导/切换/分流)在 Rel-16 引入,核心目标是:让 5GC 把"一个 PDU 会话"建在"两条接入腿"上,并由网络侧(SMF+PCF)统一下发规则,UE 和 UPF 各自按规则做逐流(per-flow)、甚至逐包(per-packet)的上下行分发决策。它不是简单的"Wi-Fi 卸载",而是把双接入当成一个逻辑会话的资源池来调度。
ATSSS 的三个动词各有含义:
理解这三个动作的差别,是理解后文 Steering Mode 设计的关键。
ATSSS 的载体是 Multi-Access PDU(MA PDU)Session。它的关键特征用一句话概括:一个 PDU Session ID、一个公共 SMF、一个公共 UPF(PSA)、一个公共 IP 地址,但下挂两条 N3 用户面隧道,分别通向 3GPP 接入和非 3GPP 接入。
flowchart TB
UE["UE\n(ATSSS-LL + MPTCP Client + PMF)"]
NR[("gNB / NG-RAN")]
N3IWF[("N3IWF / TNGF\n(Wi-Fi 接入)")]
AMF["AMF\n(两条 N1/N2)"]
SMF["SMF(公共)\n下发 ATSSS Rules"]
UPF["UPF-PSA(公共)\nMPTCP Proxy + ATSSS-LL + PMF"]
PCF["PCF\nPCC + ATSSS Policy"]
UDM["UDM\nATSSS 订阅数据"]
DN["DN / Internet\n(单个 N6)"]
UE -- N3(3GPP leg) --> NR --> AMF
UE -- NWu(非3GPP leg) --> N3IWF --> AMF
AMF <-->|N11/Nsmf| SMF
SMF <-->|Npcf| PCF
SMF <-->|Nudm| UDM
SMF -- N4 --> UPF
UPF -- N6 --> DN
这里有几个容易踩坑的设计点:
ATSSS 定义了两种执行分发的"功能",二者并存,由 ATSSS 规则决定对哪条业务流用哪一种。这是理解整套机制最绕的地方,必须分清"Mode(模式,做什么)"和"Functionality(功能,用什么手段做)"。
| 维度 | MPTCP Functionality | ATSSS-LL(Lower Layer) |
|---|---|---|
| 工作层级 | 传输层(TCP 之上,多路径) | IP/以太网层之下(逐流/逐包) |
| 适用业务流 | 仅 TCP 流 | 所有 IP/Ethernet/Unstructured 流 |
| UE 要求 | UE 支持 MPTCP 协议栈 | UE 支持 ATSSS-LL 功能 |
| UPF 要求 | UPF 内置 MPTCP Proxy(MAF) | UPF 内置 ATSSS-LL |
| Splitting 能力 | 天然支持(多条 subflow) | Rel-16 仅 Active-Standby/Smallest Delay;Rel-17 起支持 Load-Balancing 与逐包分流 |
| 切换粒度 | TCP 连接级 | 包级 |
| 适配性 | 不感知 UDP/QUIC | 可处理任何流量 |
设计意图:TCP 流天然适合用 MPTCP 做多路径,标准、成熟、不需要 5GC 介入每包决策;而 UDP(尤其是 QUIC、实时媒体)无法套 MPTCP,只能靠 ATSSS-LL 在低层逐包转发。两者互补,ATSSS 规则里会显式指明本条流走哪个功能。
值得注意 Rel-17 的重要增强(Work Item ATSSS_Ph2/Ph3):ATSSS-LL 从只能做"主备 + 最小时延"扩展到支持 Load-Balancing 与 Splitting,这意味着非 TCP 业务(如视频、QUIC)也能按比例双发,大幅提升了 ATSSS 的实用价值。
Steering Mode 描述"按什么策略分发",定义在 TS 23.501 §5.32.2:
| Mode | 行为 | 典型场景 |
|---|---|---|
| Active-Standby | 主用一条腿,备用腿待命;主用失败切换 | 接入冗余/备份 |
| Smallest Delay | 实时测量 RTT,选时延最小的腿 | 交互式、低时延业务 |
| Load-Balancing | 按百分比把流量分到两条腿 | 提升吞吐、聚合带宽 |
| Priority-based | 优先用高优先级腿,不可用才降级 | 计费/运营商策略偏好 |
四种 Mode 与两种 Functionality 是正交组合:例如"Load-Balancing + ATSSS-LL"=逐包按比例双发;"Load-Balancing + MPTCP"=多 TCP 子流按权重;"Active-Standby + ATSSS-LL"=主用腿故障时逐流切换到备用腿。
ATSSS 规则由 SMF 生成(在 PCF 下发的 PCC 规则基础上),分别通过 N1(5GSM 消息,见 TS 24.193 §6.1.3)发给 UE、通过 N4(见 TS 29.244)发给 UPF。两侧规则保持一致,才能保证上下行分发决策对齐。
flowchart TD
subgraph RULE["ATSSS Rule"]
R1["Rule Precedence\n(规则优先级)"]
R2["Traffic Description\n(SDF filter / App ID)"]
R3{"Steering Mode\nActive-Standby / Smallest Delay\nLoad-Balancing / Priority-based"}
R4["Steering Functionality\nMPTCP / ATSSS-LL"]
R5["Steering Parameters\n(百分比/优先级/主备)"]
R6["DNS Query Handling\n(可选)"]
end
RULE -->|N1 5GSM| UE["UE 执行上行分发"]
RULE -->|N4 PDR/FAR| UPF["UPF 执行下行分发"]
| ATSSS Rule 主要 IE | 含义 | 示例取值 |
|---|---|---|
| Rule Precedence | 多条规则匹配时的优先级 | 1~255,数值小优先 |
| Traffic Description | 业务流模板(SDF 滤波器或 OS App Id) | 五元组 / App=video |
| Steering Mode | 分发模式 | Load-Balancing |
| Steering Functionality | 执行功能 | MPTCP, ATSSS-LL |
| Steering Parameters | 模式参数 | 3GPP=70%, non-3GPP=30% |
| LB Percentage | 负载均衡比例 | (access, percent) 列表 |
| Path Preference | 优先级链 | 3GPP → non-3GPP |
特别地,Load-Balancing 的百分比不是静态的:SMF/PCF 可下发"autonomous load-balancing"指示,允许 UE 和 UPF 根据实测接入质量在约束区间内自主调整比例,这依赖下文的 PMF。
MA PDU 会话通过两次"UE 发起的 PDU 会话建立"分别在两条接入腿上完成。第一次是 Request type = "initial request" + MA PDU session request = "MA PDU request",建立会话本体;第二次在另一条腿上是 Request type = "existing PDU session" + MA PDU request,把第二条腿挂到同一会话上。
sequenceDiagram
participant UE
participant AMF as AMF
participant SMF as SMF
participant UDM as UDM
participant PCF as PCF
participant UPF as UPF-PSA
participant RAN as gNB / N3IWF
Note over UE,RAN: ① 第一条腿:3GPP,initial request + MA PDU request
UE->>AMF: NAS PDU Session Establishment Request<br/>(PDU Session ID, DNN, MA PDU request="MA PDU request",<br/>Request type="initial request", UE ATSSS Cap)
AMF->>SMF: Nsmf_PDUSession_CreateSMContext<br/>(含 MA PDU request, access type=3GPP)
SMF->>UDM: Nudm_SDM_Get(ATSSS 订阅 / 会话订阅)
SMF->>UDM: Nudm_SDM_Subscribe(订阅变更通知)
SMF->>PCF: Npcf_SMPolicyControl_Create
PCF-->>SMF: PCC Rules + ATSSS Policy(Mode/Func)
SMF->>UPF: N4 Session Establishment Request<br/>(ATSSS Rules + 3GPP leg PDR/FAR)
UPF-->>SMF: N4 Response(CN F-TEID)
SMF->>AMF: Namf_Communication_N1N2MessageTransfer<br/>N1: PDU Estab Accept + ATSSS Rules<br/>N2: PDU Session Resource Setup
AMF->>RAN: N2 PDU Session Resource Setup Request(+ NAS PDU)
RAN->>UE: RRC Reconfiguration(DRB 建立)
UE-->>RAN: RRC Reconfiguration Complete
RAN-->>AMF: N2 PDU Session Resource Setup Response(AN F-TEID)
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext(AN tunnel)
SMF->>UPF: N4 Modification(绑定 AN tunnel@3GPP)
Note over UE,RAN: ② 第二条腿:非3GPP,existing PDU session
UE->>AMF: NAS PDU Session Establishment Request<br/>(同 PDU Session ID, MA PDU request,<br/>Request type="existing PDU session")
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext(add 非3GPP access)
SMF->>UPF: N4 Modification(新增 non-3GPP leg PDR/FAR)
SMF->>AMF: Namf_Communication_N1N2MessageTransfer(N2@N3IWF)
AMF->>RAN: N2 via N3IWF(IPsec Child SA 建立)
RAN-->>AMF: N2 Response(AN tunnel@non-3GPP)
AMF->>SMF: UpdateSMContext(AN tunnel@non-3GPP)
SMF->>UPF: N4 Modification(绑定 AN tunnel@non-3GPP)
Note over UE,UPF: 双腿就绪,UE/UPF 按 ATSSS Rules 分发上下行
MA PDU session request(NAS):这是 UE 把"普通 PDU 会话"升级为"MA PDU 会话"的开关。SMF 一旦看到它且订阅允许,就会按 MA PDU 模式处理——选一个能同时服务两条腿的 PSA,分配公共 IP。Request type:决定这是"建会话本体"(initial)还是"挂第二条腿"(existing PDU session)。第二次复用同一 PDU Session ID,SMF 据此识别为同一会话的扩展,而非新建。UE ATSSS Capability(NAS):UE 上报自己支持哪些 Steering Functionality(MPTCP / ATSSS-LL)和哪些 Mode。PCF 据此生成与 UE 能力匹配的 ATSSS Policy。ATSSS Rules:在 PDU Session Establishment Accept 中下发给 UE;若后续策略变化,SMF 通过 PDU Session Modification Command 更新。Smallest Delay 和 Load-Balancing 都需要实时知道每条腿的质量,这是 PMF(Performance Measurement Function) 的职责(TS 23.501 §5.32.4)。PMF 在 UE 和 UPF 两侧都有,通过持续探测得到每条接入腿的 RTT。
flowchart LR
subgraph M["PMF 测量循环"]
UPF2["UPF PMF"] --|下行探测包| A3["3GPP leg"]
UPF2 --|下行探测包| AN["non-3GPP leg"]
A3 --|上行回应| UE2["UE PMF\n→ RTT_3GPP"]
AN --|上行回应| UE2
UE2 --|按 Smallest Delay / LB 比例| DEC{"上行分发决策"}
DEC --> A3
DEC --> AN
end
PMF 的设计要点:
把上面这些放在一起看,ATSSS 的设计哲学有三层值得玩味:
PDU Session Establishment Request 的"Request type"字段和"MA PDU session request"标志位识别。Wireshark 的 5GSM dissector 会显示 Request type: initial request 与 MA PDU session request: MA PDU request (1)。ATSSS Rules 作为 5GSM 信息元素出现在 Accept / Modification Command 中。| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| MA PDU 会话建立被拒(带原因值) | UDM 无 ATSSS 订阅 / UE 能力不匹配 | 查 UDM 订阅、NAS 中的 UE ATSSS Capability |
| 只有一条腿有流量 | Steering Mode=Active-Standby 且主用腿正常 | 确认是否预期行为;若非预期,查 ATSSS Rule 的 Mode |
| Splitting 不生效 | UPF/UE 不支持 ATSSS-LL Splitting(Rel-16)或规则未下发 | 查 UE/UPF 版本(Rel-17+ 才支持 LL Splitting) |
| 切换延迟大 | PMF 探测周期长 / 备用腿未提前建好 | 调整 PMF 周期,确认第二条腿 IPsec SA 已就绪 |
| 上下行分流不一致 | UE 与 UPF 的 ATSSS Rules 不一致 | 对比 N1 下发与 N4 下发的规则版本号 |
| ## 常见问题 |
Q1: MA PDU 会话和两个独立的 PDU 会话(3GPP 一个、Wi-Fi 一个)有什么本质区别? A: 根本区别在于"公共 PSA + 公共 IP"。两个独立会话各有各的 PSA 和 IP,应用层看到两个源 IP,无法做同一流的 Splitting/双发,切换时 TCP 连接会断。MA PDU 会话保证对应用层是一个连续的 IP,从而能逐流/逐包分发并保证连续性。
Q2: 为什么 Rel-16 的 ATSSS-LL 不能做 Load-Balancing/Splitting,只能做主备和最小时延? A: Rel-16 的 ATSSS-LL 定位为低层逐流引导,只决定"这条流走哪条腿",不拆包;真正的按比例双发当时只由 MPTCP 承担(仅限 TCP)。Rel-17 才把逐包 Splitting 能力补进 ATSSS-LL,让 UDP/QUIC 也能双发。
Q3: ATSSS 和 EPS 时代的 IFOM/Mapcon 是什么关系? A: IFOM/Mapcon 是基于 DSMIPv6 的早期多接入方案,粒度粗、依赖 UE 自主决策、缺乏网络统一控制。ATSSS 是 5GC 原生方案,由 SMF/PCF 集中下发规则、UE/UPF 分布执行,粒度到流/包,可视为对前者的全面替代与增强。
Q4: MA PDU 会话必须同时建立在两条腿上吗? A: 不必。可以先用 initial request 建成单腿的 MA PDU 会话(此时等价于普通会话但带 MA 属性),待 UE 注册到另一接入后再用 existing PDU session 挂上第二条腿。会话本身始终只有一个。
Q5: 下行分流在 UPF 怎么决定走哪条腿? A: UPF 按 N4 下发的 PDR/FAR,匹配到对应 ATSSS Rule 后,依 Mode 与 PMF 测得的下行质量/比例,把包送入对应接入腿的 N3 隧道。与 UE 的上行决策规则一致,从而保证双向分流协调。
本文由「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 等场景全覆盖。
