首页 › deep-tech › 5G SDAP层:QoS映射的新桥梁

5G SDAP层:QoS映射的新桥梁

从一个快递分拣中心说起

想象一个巨大的快递分拣中心。卡车从全国各地运来包裹,每个包裹上都贴着不同颜色的标签——红色代表加急,蓝色代表普通,绿色代表冷链。分拣中心的任务,就是把这些五颜六色的包裹分配到不同类型配送车上:加急车、普通车、冷链车。

在5G网络中,SDAP层就是这个"分拣中心"。包裹就是你的数据包(视频流、语音、网页浏览……),颜色标签就是QFI(QoS Flow Identifier),配送车就是DRB(数据无线承载)。SDAP站在数据进入无线链路的最后一道关卡,决定"这个数据包该上哪辆车"。

如果你在4G(LTE)时代工作过,可能会问:4G没有SDAP层,数据不照样传输吗?为什么5G非要加这一层?

答案藏在5G对QoS架构的彻底重构里。

为什么5G需要SDAP——从"管道"到"流"的范式变革

4G的QoS架构:一个承载一根管

4G LTE的QoS基本单位是EPS Bearer(演进分组系统承载)。每个EPS Bearer是一根从手机到PGW的完整"管道",拥有独立的QoS参数(QCI、ARP、GBR/MBR)。这根管道穿过无线侧(Uu接口)、传输侧(S1-U接口)、核心网侧(S5/S8接口),端到端绑死。

4G: 一个EPS Bearer = 一根端到端管道
手机 ────[EPS Bearer 1 (QCI=1 VoLTE)]──── eNodeB ────[EPS Bearer 1]──── SGW ────[EPS Bearer 1]──── PGW
手机 ────[EPS Bearer 2 (QCI=9 Internet)]─── eNodeB ────[EPS Bearer 2]──── SGW ────[EPS Bearer 2]──── PGW

这套架构的问题在于:太僵硬。想加一种新的QoS级别?得新建一整根管道,涉及NAS信令、RRC信令、GTP隧道建立——信令开销大、时延长。手机同时用10种业务?理论上可能需要10个EPS Bearer,资源浪费严重。

5G的QoS架构:解耦与灵活

5G用QoS Flow取代了EPS Bearer,作为QoS的最细粒度。一个PDU Session(相当于4G的PDN Connection)内可以包含任意多个QoS Flow,它们共享同一根N3 GTP隧道,仅靠QFI标签区分。

graph LR
    subgraph "4G LTE QoS架构"
        A1[手机] -->|EPS Bearer 1<br/>QCI=1 VoLTE| B1[eNodeB]
        A1 -->|EPS Bearer 2<br/>QCI=9 上网| B1
        A1 -->|EPS Bearer 3<br/>QCI=6 视频| B1
        B1 -->|各自独立GTP隧道| C1[SGW/PGW]
    end

    subgraph "5G NR QoS架构"
        A2[手机] -->|DRB 1<br/>QFI=1语音+QFI=6视频| B2[gNB]
        A2 -->|DRB 2<br/>QFI=9上网+QFI=7下载| B2
        B2 -->|共享N3隧道<br/>QFI在GTP头中| C2[UPF]
    end

    style A1 fill:#ffcccc
    style A2 fill:#ccffcc

核心区别在于:5G把"QoS管理"和"传输隧道"解耦了。多个QoS Flow可以复用一条隧道,也可以映射到同一个无线承载。这种灵活性需要一个专门的协议层来管理映射关系——这就是SDAP存在的理由。

SDAP的两大使命

SDAP(Service Data Adaptation Protocol,服务数据适配协议)只有两个核心功能:

功能 说明
QoS Flow → DRB映射 决定每个QoS Flow的数据包走哪个无线承载
QFI标记 在数据包中写入或读取QoS Flow Identifier

简洁到极致。但正是这种简洁,支撑了5G灵活的QoS架构。

SDAP在协议栈中的位置

SDAP是5G NR协议栈中唯一的新增层(相比4G)。它位于用户面协议栈的最顶端,紧贴在应用数据之下、PDCP之上:

graph TB
    subgraph "5G NR 用户面协议栈"
        APP[应用层数据<br/>视频/语音/网页/下载]
        SDAP["<b>SDAP层</b><br/>QoS Flow → DRB映射<br/>QFI标记"]
        PDCP[PDCP层<br/>加密/完整性保护/头压缩]
        RLC[RLC层<br/>分段/ARQ]
        MAC[MAC层<br/>复用/调度]
        PHY[物理层<br/>调制/发射]
    end

    APP --> SDAP --> PDCP --> RLC --> MAC --> PHY

    style SDAP fill:#4CAF50,color:white,stroke:#333

注意几个关键点: - SDAP只在用户面存在,控制面(SRB)不经过SDAP - 每个PDU Session对应一个SDAP实体 - 每个SDAP实体管理该PDU Session内所有QoS Flow到DRB的映射

QoS Flow到DRB的映射规则

映射铁律

SDAP的映射遵循三条不可违反的铁律:

$$ \text{Rule 1: } QoSFlow_i \rightarrow DRB_j \quad \text{(一个QoS Flow只映射到一个DRB)} $$

$$ \text{Rule 2: } DRB_j \rightarrow {QoSFlow_1, QoSFlow_2, ..., QoSFlow_n} \quad \text{(一个DRB可承载多个QoS Flow)} $$

$$ \text{Rule 3: } \exists DRB_{default} \in \text{PDU Session} \quad \text{(每个PDU Session至少有一个默认DRB)} $$

用日常类比来理解:

映射方式的分类

SDAP支持两种映射方式,这是5G相对于4G的重大创新:

graph TD
    A[QoS Flow → DRB 映射方式] --> B[显式映射<br/>Explicit Mapping]
    A --> C[反射式映射<br/>Reflective Mapping]

    B --> B1["gNB通过RRC信令<br/>直接告诉UE映射规则"]
    B --> B2["适用:所有QoS Flow类型"]
    B --> B3["信令开销:较大"]

    C --> C1["UE从下行数据包中<br/>自行学习映射关系"]
    C --> C2["适用:Non-GBR类型QoS Flow"]
    C --> C3["信令开销:极小"]

    style B fill:#2196F3,color:white
    style C fill:#FF9800,color:white

方式一:显式映射(Explicit Mapping)

这是最直观的方式。gNB通过RRC Reconfiguration消息中的SDAP-Config信元,明确告诉UE"QFI=X的流量走DRB=Y"。

RRC配置中包含的关键参数:

参数 含义
mappedQoSFlowsToAdd 新增映射到此DRB的QFI列表
mappedQoSFlowsToRelease 从此DRB移除映射的QFI列表
sdap-HeaderDL 下行SDAP头:present(启用)或 absent(禁用)
sdap-HeaderUL 上行SDAP头:present或absent
defaultDRB 此DRB是否为默认DRB
reflectiveQoS 是否启用反射式QoS

方式二:反射式映射(Reflective Mapping)

这是5G最巧妙的QoS机制之一。核心思想:UE通过观察下行数据的映射关系,自动学习上行应该怎么映射。

工作流程: 1. gNB在下行数据包的SDAP头中设置 RDI=1(Reflective QoS flow to DRB mapping Indication) 2. UE收到后,记录"QFI=X的下行数据走了DRB=Y" 3. UE创建一条反射式QoS规则:当上行有QFI=X的数据时,也走DRB=Y 4. 这条规则有定时器保护,超时未刷新则自动删除

反射式映射的精妙之处在于:完全不需要上行信令。gNB只需在下行数据包中打个标记,UE就"心领神会"地照做。

完整的映射判断流程

当一个QoS Flow的数据包到达SDAP实体时,SDAP按以下优先级决定映射到哪个DRB:

优先级 条件 动作
1 有显式RRC配置的QoS Flow → DRB映射 使用配置的DRB
2 有反射式映射规则(且未超时) 使用反射学习到的DRB
3 以上均无 使用默认DRB

这个设计哲学非常清晰:显式配置优先,自主学习次之,兜底机制保底。

SDAP的头部结构——1字节的简洁之美

SDAP头部只有两种长度:1字节或2字节(扩展QFI场景)。在最常用的1字节格式中:

SDAP Data PDU Header (1 byte):
┌─────┬──────────────────────┬─────┐
│  R  │    QFI (6 bits)      │ RDI │
│ 1bit│                      │1bit │
└─────┴──────────────────────┴─────┘

SDAP Data PDU Header (2 bytes, 扩展QFI):
┌─────┬──────────┬─────┬─────┬──────────────────┐
│  R  │ QFI(6bit)│ RDI │  EI │ Extended QFI(8bit)│
└─────┴──────────┴─────┴─────┴──────────────────┘
字段 比特数 说明
QFI 6 QoS Flow Identifier,范围0~63,标识数据包属于哪个QoS Flow
RDI 1 Reflective QoS flow to DRB mapping Indication,置1时UE创建反射式映射规则
R 1 保留位
EI 1 Extension Indicator,置1时表示有扩展QFI字节
Extended QFI 8 扩展QFI,范围0~255(Release 17+支持更多QoS Flow)

关键细节:SDAP头部可以被完全省略。当DRB只承载一个QoS Flow时,SDAP头配置为absent,省下每包1字节的 overhead。这在高速业务(如视频流)中能节省可观的带宽。

End-Marker控制PDU

SDAP只有一种控制PDU:End-Marker。当某个QoS Flow从DRB-A切换到DRB-B时,UE在DRB-A上发送End-Marker,告诉gNB"这个QoS Flow在DRB-A上结束了,后续数据请看DRB-B"。这保证了映射切换时不丢包、不乱序。

SDAP的完整工作流程

让我们跟踪一个数据包从应用到空口的完整旅程:

sequenceDiagram
    participant App as 应用层
    participant SDAP as SDAP层
    participant PDCP as PDCP层
    participant RLC as RLC层
    participant MAC as MAC层

    Note over App,MAC: 场景:手机同时进行视频通话和下载文件

    App->>SDAP: 视频数据包(QFI=1,GBR)
    SDAP->>SDAP: 查找映射规则<br/>QFI=1 → DRB 1(显式配置)
    SDAP->>SDAP: 添加SDAP头:QFI=1
    SDAP->>PDCP: 映射到DRB 1

    App->>SDAP: 文件下载数据包(QFI=9,Non-GBR)
    SDAP->>SDAP: 查找映射规则<br/>QFI=9 → 无显式配置<br/>检查反射式规则
    alt 有反射式规则
        SDAP->>SDAP: 使用反射学习到的DRB
    else 无反射式规则
        SDAP->>SDAP: 使用默认DRB
    end
    SDAP->>SDAP: 添加SDAP头:QFI=9
    SDAP->>PDCP: 映射到默认DRB

    Note over PDCP,MAC: 后续PDCP/RLC/MAC层处理<br/>加密→分段→复用→调度→发射

    PDCP->>RLC: DRB 1数据(加密后)
    PDCP->>RLC: 默认DRB数据(加密后)
    RLC->>MAC: 逻辑信道DTCH复用
    MAC->>MAC: 调度与TBS组装

映射切换场景

当网络侧决定调整映射关系时(如负载均衡、QoS策略变更),流程如下:

  1. gNB通过RRC Reconfiguration修改mappedQoSFlowsToAdd/Release
  2. UE收到后更新映射表
  3. 如果某个QoS Flow从DRB-A移到DRB-B: - UE在DRB-A上发送End-Marker控制PDU - 后续该QoS Flow的数据走DRB-B
  4. gNB收到End-Marker后,知道映射切换完成

5G与4G QoS架构的全面对比

维度 4G LTE(EPS Bearer) 5G NR(QoS Flow + SDAP)
QoS粒度 承载级(EPS Bearer) 流级(QoS Flow),更细
映射协议 无专门层,靠NAS/E-RAB管理 专门SDAP层
映射灵活性 1 Bearer绑定1套QoS参数 多QoS Flow可复用1个DRB
上行映射学习 不支持,完全依赖NAS信令 支持反射式映射,省信令
隧道效率 每个Bearer独立GTP隧道 多QoS Flow共享N3隧道
新业务QoS建立 需新建Bearer(信令重) 在已有PDU Session内加Flow(信令轻)
QoS标识范围 QCI 0~9(9个标准化值) 5QI 0~255+(更多标准化值+扩展)
SDAP头开销 无 0~2字节(可省略)

这个对比揭示了一个核心设计哲学的转变:4G是"粗管子"思维,5G是"细标签"思维。在5G中,网络不再是为一类业务建一根管,而是在一根共享管道里用标签区分不同业务,由SDAP层完成精细化的标签到管道映射。

实战连接:工程师哪里会用到SDAP知识

1. 信令抓包分析

在分析5G用户面问题时,SDAP层的信息可以帮助你判断: - 数据包是否被映射到了正确的DRB - 反射式QoS是否生效(检查RDI位) - QFI值是否与核心网下发的QoS Profile一致

调试技巧:如果发现某个业务的QoS不达标,用Wireshark解析SDAP头,确认QFI→DRB映射是否正确。常见问题是默认DRB承载了本该走专用DRB的GBR业务。

2. DRB数量优化

gNB会控制DRB的数量(典型最多8个DRB/PDU Session)。多个QoS Flow复用DRB时,需要确保QoS特性相近的Flow被分到一起。如果调度器不能在同一TTI内公平地服务差异大的Flow,就可能导致QoS劣化。

3. 反射式QoS故障排查

反射式映射依赖定时器(典型值数十秒)。如果下行数据流长时间中断,反射式规则可能超时被删,导致上行数据回退到默认DRB。在视频通话场景中,这可能表现为短暂的上行质量下降。

4. EPS Fallback场景的特殊处理

当5G语音回退到4G时,5G的QoS Flow映射需要转换为4G的EPS Bearer映射。SDAP层在切换过程中会被"移除",QoS Flow → DRB的映射关系转为EPS Bearer的 TFT规则。理解这个转换过程,对排查语音回退问题至关重要。

常见问题

Q: 为什么4G不需要SDAP层,5G就非要加一个?

A: 4G的EPS Bearer架构中,QoS和无线承载是"绑死"的——一个Bearer就是一条从手机到PGW的完整管道,QoS参数随管道走,不需要额外映射。5G将QoS Flow和DRB解耦,多个QoS Flow可以复用同一个DRB、同一条N3隧道,因此需要一个"翻译层"来管理"哪个Flow走哪个DRB"——这就是SDAP。

Q: 反射式QoS和显式QoS可以同时使用吗?

A: 可以。同一个PDU Session内,部分QoS Flow用显式映射(如GBR业务),部分用反射式映射(如Non-GBR业务)。但反射式映射只能用于Non-GBR类型的QoS Flow,GBR业务必须走显式映射,因为GBR对资源保障有严格要求,不能依赖"自学"。

Q: 默认DRB有什么特殊之处?

A: 默认DRB是"兜底承载"。任何没有被显式或反射式映射到特定DRB的QoS Flow,都会走默认DRB。每个PDU Session必须有且仅有一个默认DRB,它在PDU Session建立时随第一个DRB一起创建,直到PDU Session释放才消失。在RRC信令中,SDAP-Config的defaultDRB标志标识了它。

Q: SDAP头什么时候可以省略?

A: 当一个DRB只承载一个QoS Flow时,SDAP头可以被禁用(配置为absent)。因为只有一个Flow,不需要QFI来区分——所有经过这个DRB的数据必然属于那个唯一的QoS Flow。这在高速业务(如视频流)中每包省1字节,累积效果可观。

Q: SDAP的End-Marker PDU在什么场景下会用到?

A: 当某个QoS Flow的映射从一个DRB切换到另一个DRB时(如gNB负载均衡调整映射),UE在旧DRB上发送End-Marker。gNB收到后知道该QoS Flow在旧DRB上结束了,后续数据应从新DRB接收。没有End-Marker,gNB可能误以为旧DRB上还有数据在路上,导致映射切换不干净。

参考来源

  1. 5G NR SDAP - Devopedia — SDAP层全面概述,包含QoS Flow映射和反射式QoS详解
  2. 5G SDAP Protocol: Release 18 Reference Guide | 3GLTEInfo — Release 18 SDAP协议参考,含完整信元说明
  3. QoS Flow到DRB映射 - 知乎 — 映射规则与判断流程的中文技术解析
  4. 5G QoS Flow到DRB映射规则详解 - 百家号 — Non-GBR与GBR映射规则的详细判别
  5. SDAP Layer | OPENAIRINTERFACE | DeepWiki — 开源实现中的SDAP层代码解读

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入