首页 › deep-tech › 不发信令,手机自学QoS规则

通信原理科普系列(第4轮):QoS与切片原理方向

根据要求,我已完成素材准备(相关资料包与知识储备),以下为成稿:

不发信令,手机自学QoS规则:反射式QoS原理

一、一条上行包的“人生抉择”

想象手机里同时跑着两个业务:微信视频通话和浏览器网页。此刻你对着屏幕说了一句话,麦克风采样出的几十毫秒语音包要从天线发出去;同一瞬间,浏览器还在下载一张配图。这些数据从同一根天线、同一块频谱、同一个基站发出——凭什么语音包能插队,而网页包要老实排队?

答案在于每个包出门前都要回答一个问题:“我是谁?”——更准确地说,是“我属于哪条服务质量流?”。这个答案决定了它在基站的调度队列里排在第几位、允许的最大时延是多少、超时会怎样。

在4G时代,这个答案几乎总是由网络主动通知的:运营商核心网判断“这个用户在打VoLTE电话”,于是发起专有承载建立流程,网络和手机之间来回跑好几条信令,把“语音包走哪条承载、什么参数”写进手机的规则表。这套机制可靠,但很贵——每一条业务流,都要一次专门的信令往返。

5G里藏着第三种方式,也是最低调的一种:手机自己偷学。网络根本不发任何专门信令,手机盯着下行数据包的“标签”,照猫画虎地给上行包打上同样的标签。这就是本文的主角——反射式QoS(Reflective QoS)。

它是5G服务化设计哲学的一个精致样本:能用数据面顺路捎带的信息,就不要动用控制面专门跑一趟。

二、30秒复习:QFI标签系统

先快速补一点背景(更系统的架构展开可参考本系列此前关于QoS流设计的文章,这里只取本文需要的最小集)。

5G把“服务质量”从4G的“承载”改成了“流”:一条PDU会话里可以有很多条QoS流(QoS Flow),每条流有一个编号,叫QFI(QoS Flow Identifier)。网络给每条流配一套参数——时延预算、丢包率上限、优先级、限速值——就像给每条流发了一张“服务承诺书”。

关键机制在于:数据包出门前要带上自己的QFI标签,网络沿途各节点——手机、基站、用户面网关——看到标签,就知道该按哪本“承诺书”对待它。

那么问题来了:手机发出的每个上行包,标签是谁打的?依据是什么?这就是下一节“QoS规则”要回答的。

三、解剖一条QoS规则

手机里存着一张QoS规则表(QoS Rules)。每条规则长这样:

如果一个上行包匹配〈某组过滤条件〉,那么把它送进〈某条QoS流,即打上某QFI〉(或者直接丢弃)。

用生活类比:小区门禁规则——“车牌尾号001的车走东门,快递员走西门登记,其余车辆走北门”。过滤条件就是“车牌尾号001”,动作就是“走东门”。

过滤条件最常用的是IP五元组:源IP地址、目的IP地址、源端口、目的端口、协议号。比如“目的地址是某视频服务器、目的端口443”的一组条件,就能把刷视频的流量从千军万马里挑出来。

规则表里必然有一条特殊的默认规则:过滤条件为“匹配一切”(match-all),动作是送进默认QoS流。它是兜底条款——任何没有专用规则照顾的包,都从它这里过,保证没有包会“无路可走”。

于是手机发每个上行包的逻辑,就是一棵简单的决策树:

flowchart TD
    A["应用产出上行包"] --> B["上行QoS引擎查规则表"]
    B --> C{"命中专用规则?"}
    C -->|是| D["打上对应QFI"]
    C -->|否| E["默认规则兜底"]
    D --> F["SDAP层封装标签"]
    E --> F
    F --> G["gNB按QFI选无线承载"]

注意图中的SDAP层——它是5G新加的一层薄协议,专职干“打标签/读标签”这件事。记住它,后面讲“为什么4G做不到反射QoS”时它是关键。

剩下的问题是:规则表里的专用规则,是从哪来的?

四、规则的三种来路

这是全文的核心分岔口。专用规则进入手机,只有三条路:

flowchart TD
    A["上行专用规则的三个来源"] --> B["默认规则<br/>会话建立时自带"]
    A --> C["显式信令<br/>网络主动下发"]
    A --> D["反射式学习<br/>手机照抄下行"]
    B --> E["兜底一切流量"]
    C --> F["适合高保障业务<br/>如语音通话"]
    D --> G["适合规则稳定的业务<br/>如视频流"]
维度 默认规则 显式信令下发 反射式学习
谁决定内容 签约数据+会话建立参数 核心网策略决定,网络下发 手机自己从下行包归纳
信令开销 会话建立时顺带1次 每条流一次专门交互 零
生效速度 会话建立即生效 需一次信令往返 下一个包就能生效
适用业务 一切未识别流量 语音、实时游戏等高保障业务 IP地址端口稳定的流媒体、数据同步等
失效方式 会话释放 网络显式修改或删除 重启丢失、网络清除
类比 小区通用门禁 保安逐条告知贵宾规则 熟客看别人怎么走就学会了

显式信令那条路,就是4G专有承载的直系后代,逻辑一脉相承。而反射式是5G的新物种——手机没有任何人教,纯靠观察下行流量自学成才。

它凭什么能学对?

五、反射式QoS:一场自上而下的“抄作业”

5.1 学习过程全貌

先看完整时序,再解释为什么它数学上必然正确:

sequenceDiagram
    participant App as 视频应用
    participant UE as 手机QoS引擎
    participant NW as 网络侧
    App->>UE: 产出上行确认包
    UE->>NW: 无规则命中 走默认流
    NW->>UE: 下行视频包 携带QFI=7
    Note over UE: 发现陌生QFI 提取包特征
    UE->>NW: 存为上行规则 待命
    App->>UE: 再次产出上行包
    UE->>NW: 命中新规则 打QFI=7
    Note over UE,NW: 上下行对称 规则就此巩固

拆开看每一步:

第一步,网络打标。 用户面网关在下行数据包上贴QFI标签,这个标签随包一路传到手机的SDAP层。绝大多数包——比如你网页浏览的默认流量——带的都是默认QFI,手机看了等于没看。但如果网络决策“这个用户的这条视频流要单独服务”,下行包上就会出现一个非默认的QFI。对手机来说,这就是一句不用额外信令的“悄悄话”:注意,这个包不一样。

第二步,手机归纳。 手机SDAP层发现陌生QFI后,把这个包的五元组特征提取出来,做一次“镜像翻转”——下行包的目的地址+目的端口,正是未来上行包的源地址+源端口。翻转后存成一条上行过滤规则,对应的动作就是刚才看到的那个QFI。

第三步,上行照抄。 之后这个应用发上行包(TCP确认、视频上传等),QoS引擎一查规则表,命中刚才自学的规则,于是上行包也打上QFI=7。从此这条流上下行享受同一套服务质量,而网络自始至终没有为它发过任何一条专门的信令。

5.2 为什么“抄下行”必然抄得对?

这是反射式QoS最漂亮的设计点,值得停下来想清楚:手机凭什么确信,下行包的标签也该贴在上行包上?

根本原因:一条业务流的五元组,天生是上下行对称的。 你和某视频服务器之间的会话,下行方向是〈我:随机端口 ← 服务器:443〉,上行方向必然是〈我:随机端口 → 服务器:443〉——同一对地址端口,方向互换而已。网络给这条流打上特殊QFI时,服务的对象本来就是“这条会话”整体,而非单方向。

所以手机做的镜像翻转,不是猜测,而是唯一可能的正确答案。这就像你给客服打了个电话,客服用专線回复了你;你回拨时自然也该走这条专线——因为“这条线”本来就是为你们俩之间的会话开的,不存在第二个人的问题。

5.3 规则的一生

自学的规则也有一套完整的生命周期管理:

flowchart TD
    A["收到下行包"] --> B{"QFI与默认不同?"}
    B -->|是| C["提取五元组镜像翻转"]
    B -->|否| E["沿用既有规则"]
    C --> D["存为上行规则"]
    D --> F["上行包查规则表"]
    E --> F
    F --> G{"被网络清除或失效?"}
    G -->|否| F
    G -->|是| H["删除规则 回落默认流"]
    H --> A

三个值得注意的细节:

网络随时可以纠偏。 反射学习不等于网络失控——网络可以随时用显式信令覆盖或清除手机自学的规则。反射是“省信令的常态路径”,显式信令是“随时可用的强制手段”,二者不是二选一,而是主备关系。

重启即失忆。 自学的规则存在内存里,手机重启、会话重建后全部清零,等下一批下行包来了重新学。这没关系——学习成本几乎为零,丢了再学就是。

它有个“开关”。 反射式QoS不是全网默认开启的。会话建立时,网络会告诉手机这个会话是否启用反射机制(以及学习规则的保持定时器)。这是签约和网络策略共同决定的——运营商要对“哪些用户、哪些业务可以免信令”有明确的控制权。

六、为什么这样设计:信令经济学

如果反射式QoS只是省几条信令,那不过是小聪明。把它放回5G的设计目标里,才能看到真正的分量。

6.1 一笔账:信令是按“流”收费的

显式方式下,信令规模有个粗略的乘法关系:

$$S_{\text{显式}} = N_{\text{设备}} \times B_{\text{流数}} \times U_{\text{变更次数}}$$

其中 $N$ 是联网设备数,$B$ 是平均每设备的并发业务流数,$U$ 是每条流生命周期内的规则变更次数。

做一次示意演算:一座城市1000万台活跃终端,平均每台2条并发业务流,每条流每天因移动、切换、业务变化触发1次规则更新——

$$S_{\text{显式}} = 10^7 \times 2 \times 1 = 2 \times 10^7 \text{ 次/天}$$

每天2000万次专门的QoS信令。而每一次都不只是“发条消息”那么简单:它可能唤醒空口、触发无线连接建立、占用控制面处理资源。对满屏都是“低数据量、小包、周期性”报数的物联网终端来说,控制面信令开销甚至可能超过它们的数据流量本身——这就是4G时代讨论过的“信令风暴”问题的变体。

反射式QoS把这个乘式的最后一项直接归零:学习不花信令,标签是搭数据包的顺风车。

6.2 为什么“偷学”在这个时代才成立

有人会问:这主意为什么不早用?答案是它需要两个前提同时成立:

前提一:流的特征要稳定。 反射学习的前提是“从下行包归纳出的规则,对上行包长期有效”。现代互联网的业务形态恰好满足——视频流、直播、云盘同步,都是“连上一台服务器持续传输”的模式,五元组在整条流生命周期里几乎不变。学习一次,命中成千上万个包,摊薄后成本趋近于零。

前提二:空口要有一层专门“搬运标签”的协议。 这就是SDAP层的意义。4G的协议栈里没有专门为每包携带QoS标识的位置,标签只能“绑定”在承载上;5G把标签直接塞进了每个包的头部,标签和管道解耦,手机才有得学。可以说,SDAP是反射式QoS的物理前提——这也是为什么同样的思路在4G时代玩不起来。

6.3 更大的图景:控制面信息的数据面化

反射式QoS是5G一条设计哲学的单点体现:能用用户面顺路携带的信息,绝不单独跑控制面。同一家族的做法你其实见过很多——TCP头里的窗口通告替代了专门的“速率协商信令”,时间戳选项替代了专门的“时延测量协议”。数据本身走过的路,就是信息最廉价的传播介质。

七、边界:什么时候“抄”不了

反射式QoS不是万能钥匙,它的能力边界由“过滤器能否对称翻转”决定:

过滤器类型 举例 手机能否反射学习 原因
IP五元组 服务器IP+端口443 能 上下行天然对称,镜像翻转即可
应用标识符 “某短视频App的流量” 不能 手机没有“应用识别”能力,无从归纳
基于SDF簇的复合条件 多条流合并服务 不能 单包特征归纳不出“簇”的概念

换句话说,反射式QoS的甜蜜区是:网络用IP五元组做过滤、且五元组稳定的单条业务流。对于需要“按应用识别”来区分流量的场景(比如同一服务器的不同业务),网络只能退回显式信令——或者干脆由运营商在手机里预装策略。

另外两个工程边界:

八、现网体现与调试视角

原理讲完,落到工程师日常。

哪里能观察到它? 抓UE与核心网之间的NAS信令时,如果一条视频类业务的QoS流建立过程“安静得反常”——没有看到对应的QoS规则下发消息,但用户面里这条流的包却带着非默认QFI在跑——那就是反射式QoS在工作。反过来,如果你期望某条流走专用QoS,但空口里它始终落在默认承载上,先别怀疑调度器,第一步要确认的是会话有没有启用反射、以及下行包是否真的带了QFI标签。

常见调试陷阱:

  1. 下行没打标,上行自然没规则。 现网排查“这条流QoS没生效”时,最常见根因不在手机,而在上游:用户面网关的检测规则没配对,下行包根本没带非默认QFI,手机无从学起。从数据流的源头查起,顺序是网关→基站→手机。
  2. 会话没开反射,学得再好也白学。 反射是会话级开关。排查前先确认该会话的建立参数里是否允许反射——这是签约与运营商策略共同决定的。
  3. NAT与代理环境的规则漂移。 反射规则建立在五元组稳定的前提上。如果业务路径中间有地址转换或代理,手机看到的服务器地址可能与网络侧检测规则看到的地址不一致,学到的规则会错位甚至反复失效。企业专网和漫游场景里要多留个心眼。
  4. 把“手机自学”误判为“网络失控”。 反射规则虽然本地产生,但网络保有随时用显式信令覆盖的权力。看到手机本地规则和网络策略不一致时,优先怀疑是时序问题(旧规则尚未被新信令清除),而非机制失效。

最后提醒一句边界认知:反射规则在终端侧的缓存时长、老化策略等细节,标准只给出了框架和开关,具体实现允许各厂家有不同的取舍,排障时以对应设备与终端厂商的官方文档为准。

九、收个尾

反射式QoS的精髓,用一句话概括:网络不告诉手机规则,网络只是示范——手机看着下行包的标签,自己推出上行包的规则。它的正确性建立在业务流五元组上下行对称这个朴素事实上,它的经济性建立在“数据包是最廉价的信使”这个设计直觉上。

从4G到5G,QoS体系最大的进化不是参数变多了,而是信息的传递方式变聪明了:能搭便车的信令绝不专车接送。理解了这一点,你再去看5G体系里许多其他设计——会话与切片的选择机制、终端侧的策略路由——会发现它们共享着同一套底层逻辑:把智能下沉到数据经过的每一个节点,让系统在没有中心指挥的情况下也能各就各位。


常见问题

Q: 反射式QoS和显式信令QoS是什么关系?可以同时用吗? A: 是主备与常态的关系,不是二选一。同一个会话里,有的流用显式信令(如语音通话的专用流),有的流靠反射学习(如普通视频流);而且网络随时可以用显式信令覆盖手机自学的规则。反射只是“省信令的默认路径”,控制权始终在网络手里。

Q: 手机重启后,学到的QoS规则还在吗? A: 不在。反射规则存于内存,重启或会话重建后清零。但这不构成问题——学习本身零成本,下一批下行包到达后几毫秒内就能重新学出来。

Q: 为什么4G不搞反射式QoS,是想不到吗? A: 主要是机制前提不具备。4G的QoS标签绑定在承载上,协议栈中没有让每个数据包单独携带QoS标识的位置,手机“无标可读”;5G新增的SDAP层把QFI写进每个包头,标签与管道解耦,反射学习才有了物理基础。

Q: 反射式QoS会不会让运营商失去对用户QoS的控制? A: 不会。反射是否启用是会话级的开关,由签约数据和运营商策略决定;开启后网络仍可随时下发或清除规则。手机学到的只是“标签的抄写方式”,而不是“服务等级的定价权”——参数承诺书始终由网络签发。

Q: 哪些业务最适合走反射式QoS? A: IP五元组稳定、生命周期长、流量量级大的业务收益最高——视频点播、直播、云盘同步、后台数据备份等。反之,按应用识别才能区分流量、或地址经历NAT转换的场景,就不适合依赖反射。


参考来源

说明:本文撰写时在线检索通道受限,以下为该主题公认的稳定技术参考入口,读者可按站内导航查阅5G QoS相关章节,页面细节以站点最新内容为准。文中机制描述均基于公开发布的5G标准体系框架整理。

  1. ShareTechnote: 5G QoS — 通信工程师广泛使用的参考站点,5G QoS章节含QoS流、QoS规则与反射式QoS的工程视角讲解
  2. Wikipedia: 5G — 5G网络架构总览词条,可查SDAP与服务质量架构的背景脉络
  3. Wikipedia: Quality of service — 服务质量通用原理词条,含跨代际的QoS机制对比
  4. 《5G核心网原理与实践》,爱卫生著 — 国内5G核心网体系化教材,QoS流与终端策略章节可作延伸阅读

本文由「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学通信知识星球海报-扫码加入