你点了一份外卖,平台承诺「30分钟送达,超时赔券」;你又寄了一份文件,快递员说「次日达,丢件照价赔偿」。这两句承诺看似平常,背后其实是一套精密的资源分配与优先级体系:为什么送你这份外卖的骑手不被临时抽走去送别单?为什么你的保价件不会被塞进爆仓的网点?
移动网络每天都在回答同样的问题。一条5G网络里同时跑着语音通话、直播视频、网页浏览、工厂机械臂控制指令——它们对时延、速率、丢包的要求天差地别。网络凭什么区别对待?答案就是两套机制:QoS(服务质量)负责「调度差异」,网络切片负责「资源隔离」。本文从设计动机讲到运行机制,带你看懂5G是如何写下并兑现一份份「服务承诺书」的。
先建立一个直觉。假设一条高速公路平均时速80公里,听起来不错。但这路上跑着三种车:
如果高速公路管理方对三种车一视同仁,结果就是救护车被堵在车流里——「平均服务质量」对任何一类业务都是灾难。所以管理方需要做三件事:
5G的QoS体系正是这三件事的工程化:分类叫 QoS流(QoS Flow),承诺指标写在 5QI 里,调度规则由空口调度器执行,而网络切片则是更激进的方案——干脆给救护车修一条专用车道。
4G时代,QoS的最小单位是承载(EPS Bearer):一条默认承载管所有普通业务,想给语音单独的QoS,得专门走一套「专有承载建立」流程。这套机制能用,但有两个别扭之处:一是承载建立信令重、粒度粗,同一个承载里的视频和网页只能共享一套QoS;二是UE侧对承载的QoS规则感知有限,主要靠网络侧在空口绑定。
5G换了一个更彻底的思路:QoS不再是「管道属性」,而是「每个数据流的属性」。一个PDU会话(你可以理解为手机与数据网络之间的一条总管道)内部,可以同时存在多个QoS流,每条流有自己的QFI编号(QoS Flow Identifier)和独立的承诺书:
flowchart TB
subgraph APP["手机上的应用"]
A1["微信语音通话"]
A2["短视频App"]
A3["后台网页更新"]
end
subgraph PDU["同一个PDU会话"]
F1["QoS流1 QFI=1 5QI1 语音GBR"]
F2["QoS流2 QFI=7 5QI7 互动视频"]
F3["QoS流3 QFI=9 5QI9 默认尽力"]
end
A1 -->|"QoS规则匹配包过滤器"| F1
A2 -->|"QoS规则匹配包过滤器"| F2
A3 -->|"默认规则兜底"| F3
F1 -->|"打上QFI标记发往空口"| R["gNB空口调度器"]
F2 -->|"打上QFI标记发往空口"| R
F3 -->|"打上QFI标记发往空口"| R
R -->|"按各流承诺调度发送"| U["UPF出口发往互联网"]
为什么这样设计?因为业务对QoS的需求是「流级」的,不是「管道级」的。你手机上同一个App里,视频播放和评论刷新就该有不同的待遇——前者要时延保证,后者无所谓。把QoS的最小单位从管道细化到流,网络才能做「外科手术式」的精准调度。
QoS流本身是个逻辑概念,真正让它在网络里「可见」的是QFI标记。每个属于某QoS流的数据包,都会被贴上对应的QFI,就像员工进园区要刷工牌——保安(gNB调度器)看到工牌号,就知道该给你什么待遇:走快速通道还是普通通道、允许迟到几分钟、丢了东西赔多少。
这里有个5G的关键新增:空口协议栈专门为此加了一层 SDAP(业务数据适配协议),它只干两件事——给数据包标记QFI,以及支持反射QoS(后面细讲)。4G没有这一层,这是5G与4G在协议栈上最直观的区别之一。
设想每次建一条语音流,核心网都要向基站描述:「时延要100毫秒以内、丢包率千分之一以下、优先级20、重传预算这样配……」参数又多又容易配错。5G的做法和麦当劳套餐编号一样:给每种典型的QoS组合起个编号,说「5QI 1」,全网设备都懂。这个编号背后绑定着一组标准化的QoS特性:
下表是几条最常用的标准5QI(数值为标准定义的公开默认值,工程中可直接记忆):
| 5QI | 资源类型 | 优先级 | PDB | PELR | 典型业务 |
|---|---|---|---|---|---|
| 1 | GBR | 20 | 100 ms | 10⁻² | 会话式语音(VoNR/VoLTE) |
| 2 | GBR | 40 | 150 ms | 10⁻³ | 会话式实时视频 |
| 3 | GBR | 30 | 50 ms | 10⁻³ | 实时游戏、遥控驾驶 |
| 65 | GBR | 7 | 75 ms | 10⁻² | 关键任务对讲语音 |
| 5 | Non-GBR | 10 | 100 ms | 10⁻⁶ | IMS信令 |
| 7 | Non-GBR | 20 | 100 ms | 10⁻³ | 语音视频、交互游戏 |
| 9 | Non-GBR | 90 | 300 ms | 10⁻⁶ | 默认流(绝大多数上网流量) |
| 80 | Non-GBR | 68 | 10 ms | 10⁻⁶ | 低时延增强移动宽带(AR等) |
| 82 | 延迟关键GBR | 19 | 10 ms | 10⁻⁴ | 智能电网配电、5G车联网 |
读这张表要抓住几个「设计为什么如此」的要点:
为什么语音(5QI 1)的丢包率允许10⁻²,而信令(5QI 5)要10⁻⁶? 因为人耳对偶发的语音帧丢失有很强的容错(插件帧补偿、人脑脑补),但对信令丢失零容忍——一条注册信令丢了,整个会话就废了。承诺指标反映的是业务的真实痛点,而不是「越高越好」。
为什么默认流是5QI 9,优先级反而是全场最低的90? 因为它是兜底选手:不承诺速率、不承诺时延,网络有富余就多给,紧张就先委屈它。上网、下载、后台同步都属于这一类。这也回答了一个经典疑问——为什么你的手机平时网速波动大?因为你跑在5QI 9上,本来就没有任何硬承诺。
除了这套标准套餐,标准还允许运营商自定义5QI区间(取值256以上的编号),把私有业务(比如专网集群对讲)封装成自己的套餐。标准允许多种实现,具体配置以各厂家官方文档为准。
5QI不是摆设,它会被翻译成空口调度器的具体行为。最核心的机制是把PDB当作每包的倒计时deadline:
$$P{T_{delay} > PDB} \leq 2\%$$
即网络要保证98%的数据包在PDB内送达。调度器内心戏是这样的:
flowchart TD
P["下行包到达gNB缓存"] --> Q["按QFI进入对应流队列"]
Q --> T{"查5QI特性表"}
T -->|"PDB换算成倒计时"| S["记录每包剩余期限"]
T -->|"优先级换算调度权重"| W["决定排队先后"]
T -->|"PELR换算重传预算"| H["配置HARQ与RLC行为"]
S --> D{"包即将超期?"}
D -->|"是"| X["立即优先发送或直接丢弃"]
D -->|"否"| W
W --> E["物理层为其分配PRB资源"]
注意一个反直觉的细节:对时延敏感的流,「主动丢包」有时比「慢吞吞送达」更正确。一段实时语音里迟到200毫秒的包,对听者毫无价值,还占着队列——不如丢掉重传或干脆跳过。所以调度器经常面临的选择不是「发不发」,而是「发还是丢」。PDB越紧的流(如5QI 82的10毫秒),这种生死抉择越频繁。
这是整个QoS体系最核心的一组概念,用酒店类比最贴切:
两者的参数组和行为差异如下:
| 对比项 | GBR流 | Non-GBR流 |
|---|---|---|
| 建立方式 | 需要准入控制,可能被拒绝 | 基本随建随用 |
| 速率承诺 | GBR(保证)+ MFBR(上限) | 仅MFBR上限(5G新增能力) |
| 资源紧张时 | 保障GBR部分,优先发送 | 先被牺牲、被限速 |
| 会话级约束 | EBR约束所有GBR流之和 | Session-AMBR约束总速率 |
| 典型场景 | 语音、实时游戏、工业控制 | 上网、下载、后台同步 |
几个参数名的含义用一句话说清:
$$r_{send} \le \min(MFBR_i,\ Session\text{-}AMBR)$$
当网络资源不足以接纳一条新的GBR流时,需要一个裁决者。这就是 ARP(分配与保持优先级) 的职责,取值1~15(1最高),它带两个独立属性:能否抢占别人、能否被别人抢占。很像医院急诊分诊:重伤员(ARP高)可以要求插队,且不该被后来的普通患者挤掉。裁决过程如下:
flowchart TB
R["核心网请求建立GBR流"] --> A["gNB执行准入检查"]
A --> C{"剩余资源够兑现GBR保底?"}
C -->|"够"| G["准入成功 下发空口配置"]
C -->|"不够"| P{"新流ARP允许抢占?"}
P -->|"允许且找到被抢占者"| Q["拆掉低ARP的已建流 腾出资源"]
P -->|"不允许或没有可抢对象"| F["拒绝建立 业务降级或回落"]
Q --> G
一个必须澄清的高频误解:ARP只用于准入和抢占决策,不参与日常的数据调度。日常调度看的是5QI里的优先级;ARP是「分诊台」,不是「诊室医生」。两者数值越低优先级越高这一点倒是共通的——这也是工程师最容易记反的地方。
现网中最直观的例子是VoNR通话:拨号时网络要为语音建立一条5QI 1的GBR流,如果当时小区资源紧张且抢占失败,通话可能直接建立失败,或触发语音回落机制。你偶尔遇到的「5G信号满格却打不出电话」,背后很可能就是一次GBR准入失败。
5G把QoS参数分成两层,各司其职:
gNB是两者的「翻译官」:它收到核心网的承诺书后,必须换算成空口能执行的物理配置。比如PDB 100毫秒的语音流,gNB会倒推出「逻辑信道最多允许多少毫秒的排队等待」,进而影响调度周期和资源预留策略。
还有一个精巧的设计值得一提。传统方式下,每建立一条流,核心网都要发专用信令告诉UE「上行发这类包时打QFI=X」。如果业务流成千上万(物联网场景),信令开销惊人。5G的解法叫反射QoS(Reflective QoS):
flowchart TD
D["下行数据包带RQI指示且QFI=7"] --> U["UE识别到RQI标记"]
U --> R["UE自动生成反向QoS规则"]
R --> S["后续同类上行包自动打QFI=7"]
S --> B["全程无需专用RRC信令"]
UE观察下行包的QFI标记和特征(源/目的地址、端口号),自己反推出上行包该怎么打标——就像新员工观察老员工怎么对接客户,跟着学就行,不用领导逐个开会布置。这就是SDAP层RQI比特的全部意义:用用户面的一比特,省掉了控制面的一次信令交互。核心网通过5QI参数组里的RQA(反射QoS指示)来开启这个机制。
看到这里你可能会问:QoS流已经这么精细了,为什么还需要切片?
因为QoS本质上仍是共享资源上的优先级游戏——救护车再优先,它也跑在大家共用的那条路上。极端拥塞时,再高的优先级也难保时延;而且QoS无法承诺「这片计算资源只属于你」。对电网配电、远程手术这类场景,需要的不是「优先」,而是物理或逻辑上的专属隔离。
网络切片就是答案:把一张物理网络「切」成多张端到端的逻辑网络,每张切片拥有(全部或部分的)专属无线资源、传输通道和核心网网元。类比:QoS是商场大堂里的VIP优先排队,切片是直接包下一个宴会厅。
每个切片用 S-NSSAI 标识,它由两部分组成:
为什么SST要做标准化?因为切片选择发生在漫游和跨厂商场景——你的手机漫游到外地,拜访地网络必须认识「SST=2意味着这条会话要低时延保障」。SD则纯属运营商内部的事,漫游设备无需理解。
切片与PDU会话的绑定关系是理解架构的钥匙:一个PDU会话只能属于一个S-NSSAI。想同时用两个切片?那就建两个PDU会话。手机如何决定哪个App走哪个切片?靠URSP(UE路由选择策略)——核心网提前下发给手机的「导航规则」:
flowchart TB
U["UE本地保存URSP策略"] --> M{"某个App发起联网"}
M -->|"匹配URSP规则 需SST=2"| PA["建立PDU会话A 请求切片2"]
M -->|"无匹配规则走默认"| PB["建立PDU会话B 默认切片"]
PA --> N["核心网侧切片选择与签约校验"]
N --> C1["切片2实例 独立UPF 边缘部署"]
PB --> C2["默认切片实例 公共UPF池"]
图中的「核心网侧切片选择」由专门的选片网元完成,它会核对三件事:该切片在拜访地/归属地是否可用、用户签约数据里是否订购了这个切片、当前是否有该切片的服务实例。三者任一不满足,请求都会被拒——这也是现网切片业务开不通时最常见的三类根因。
最后把两套机制的关系钉死:切片负责「隔离」,QoS流负责「调度」,两者是嵌套关系。切片内部依然跑着多条不同5QI的QoS流——比如一张URLLC切片里,控制指令流(5QI 82)仍比状态上报流优先。一句话总结:切片回答「谁的地盘」,QoS回答「地盘上谁先走」。
| 维度 | QoS流 | 网络切片 |
|---|---|---|
| 粒度 | 单条业务流 | 端到端逻辑子网 |
| 手段 | 优先级调度、速率承诺 | 资源隔离、专属网元 |
| 隔离强度 | 软(共享资源) | 硬/逻辑硬(独立实例) |
| 标识 | QFI + 5QI | S-NSSAI(SST+SD) |
| 典型用途 | 语音保障、游戏加速 | 电网专网、赛事保障、企业专网 |
排查「网速慢」先看限速链。用户投诉上网慢,优先级最高的检查项是:用户签约的Session-AMBR是多少(很多套餐限速就改这一个值)、是否触发了达量限速策略、以及流是否确实跑在5QI 9上。抓包时在N3接口的GTP-U扩展头里能直接看到QFI——如果语音包没打上QFI 1,说明GBR流根本没建起来。
VoNR拨号失败的定位入口。信令跟踪里看GBR流建立请求的接受/拒绝消息:拒绝往往伴随准入失败原因。这时该看的不是无线信号,而是小区当时的GBR资源占用和ARP抢占配置。5G信号满格与语音能用是两回事——信号满格只说明覆盖好,不代表有空余资源兑现GBR承诺。
切片业务的经典故障三板斧。切片开不通时按顺序查:①UE注册信令里的requested NSSAI与网络返回的allowed NSSAI是否一致(网络拒绝了哪个切片);②用户签约数据里是否包含该S-NSSAI(没订购=直接拒);③URSP规则是否把流量导错了会话。第一板斧看接入,第二板斧看签约,第三板斧看路由——绝大多数切片问题跑不出这个范围。
一个调试陷阱:看到QoS规则下发成功就以为万事大吉。NAS层的承诺要经过gNB的「翻译」才能落地,如果无线侧配置的逻辑信道优先级与5QI优先级方向相反(数值大的反而配了高优先级),核心网侧看起来一切正常,用户感知却完全不对。跨层核对,是QoS问题定位的基本功。
Q: 5QI和4G的QCI是什么关系?迁移时怎么对应? A: 5QI可以理解为QCI的扩展版。4G的QCI 1(语音GBR)、QCI 5(IMS信令)、QCI 9(默认)的时延/丢包/优先级取值,与5G的5QI 1、5、9基本一致,便于语音从VoLTE平滑演进到VoNR。5G在此基础上增加了延迟关键GBR类型、更大的自定义编号区间、以及对Non-GBR流设置MFBR的能力——这些是QCI做不到的。
Q: 为什么5G要用QoS流替代4G的专有承载机制? A: 核心动机是解耦。4G里QoS和承载绑定,给一条业务流单独的QoS要走完整的专有承载建立信令,重且慢。5G把「QoS属性」和「数据传输路径」分开:QoS流是纯逻辑概念,靠QFI标记随包走,增删一条流不需要动底层传输通道。这让网络可以支撑海量并发小流(物联网),也让UE第一次显式地「读懂」自己的QoS规则(QoS规则直接下发给UE),排障时两端能对上账。
Q: 网络切片和为企业开的VPN/专线是一回事吗? A: 不是。VPN/专线解决的是数据加密与逻辑通道分离,底层资源仍是共享的;切片解决的是资源的专属与隔离——无线资源份额、传输硬管道、独立的核心网用户面实例,甚至独立的运维域。可以说切片包含了类专线的能力,但反过来不成立:一条VPN流量跑在公共切片的5QI 9上,拥塞时照样被挤。
Q: 手机怎么知道自己该用哪个切片?用户能手动选吗? A: 靠核心网下发的URSP策略自动决策:App的特征(包名、域名等)匹配到哪条规则,就建/用对应切片的PDU会话;没有匹配就走默认切片。普通用户无需也通常无法手动选择——URSP由运营商和行业客户配置,这正是切片商业模式的入口(企业为自己员工/设备订购专用切片规则)。部分调试工具可以查看URSP下发内容,但改动需要运营商侧配合。
Q: 反射QoS既然省信令,为什么不全面替代显式信令下发? A: 反射QoS的前提是「上下行流量对称可推断」,靠包过滤器反向匹配。但很多业务上下行特征不对称(如纯推送类、地址转换场景),推断规则可能出错或产生歧义;且出错后的纠错仍需显式信令兜底。所以标准把它设计成可选优化(由RQA参数按流开启),而不是唯一路径——省信令与保正确之间,选择了让运营商按业务特征自己权衡。
说明:本轮撰写环境中外部检索工具不可用,以下为基于既有公开资料的稳定权威链接;文中5QI/SST等具体数值为标准公开定义值,工程应用请以官方文档为准。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。