1. 5QI这层抽象到底解决了什么问题
1.1 从“一堆参数”到“一个号码”的收敛设计
5QI(5G QoS Identifier,5G服务质量标识)取值范围是0到255的整数,被写进NAS消息、NGAP消息和RRC重配置里,串联起核心网、接入网和终端三方的资源分配动作。很多刚入行的同行第一次看到配置里写着“5QI=9”,第一反应都是“这数字到底啥意思”,翻完规范又被那张密密麻麻的映射表劝退。我当初也一样,直到有一次做端到端时延排障,才真正明白这个字段的设计意图。
如果没有5QI这层抽象,每建一条承载,核心网都得和接入网、终端逐个协商时延预算、丢包率上限、优先级、是否保底速率、突发量等一大堆参数。信令开销大不说,三方对同一组参数的理解稍有偏差,端到端行为就会跑偏。5QI干的事情,本质上是把常用参数组合预先“打包”成一个索引号——就像餐厅把几十种配菜组合成套餐编号,点单的人报个号,后厨就知道该放哪些料、按什么火候做。核心网说“这条流用5QI=2”,接入网查表就知道“哦,这是会话视频,PDB 150毫秒,PER 10的负3次方,优先级40”,终端也能据此调整自己的上行调度策略。
这种收敛设计带来的直接好处是互通性。不同厂家的核心网、基站、终端,只要都支持同一套标准化的5QI映射表,QoS语义就能对齐。它同时也留了扩展口子:标准化表覆盖不到的场景,运营商可以用预配置值或者动态参数来实现,不会把整个体系锁死。我在实际项目里见过太多“参数不统一导致承载建不起来”的案例,回过头看,5QI这套号码化的思路确实省掉了大量联调成本。
1.2 三类资源类型的边界与选择逻辑
拆解5QI表之前,得先把资源类型这个概念弄清楚。标准化表把5QI分成三大类:GBR(Guaranteed Bit Rate,保证比特率)、Non-GBR(非保证比特率)、Delay-Critical GBR(时延关键保证比特率)。这三类的差异不是性能高低,而是对网络资源的“承诺方式”不同。
GBR类在建立时就必须明确保证流比特率(GFBR)和最大流比特率(MFBR),网络要为这条流预留资源。语音通话、实时视频会议这类业务,一旦带宽被挤占,用户体验会断崖式下跌,所以必须用GBR。代价是资源利用率低——预留了但没用满的部分,别的流也抢不走。Non-GBR类不预留资源,网络只承诺“尽力而为”,适合网页浏览、文件下载这类能容忍速率波动的业务,资源利用率高,但高峰期可能被挤压。Delay-Critical GBR是后来补充的一类,专门服务工业控制、远程驾驶这类“时延比带宽更要命”的场景,它同样预留资源,但对PDB的要求压到了5到30毫秒这个量级。
选型的核心逻辑是:先问业务最怕什么。怕断音掉话,走GBR;怕时延抖动导致控制失步,走Delay-Critical GBR;只是怕慢一点但能等,走Non-GBR。我见过有项目把视频监控硬塞进Non-GBR,结果高峰时段画面卡成幻灯片,后来改成GBR类5QI才稳住。也有反过来的例子,把普通办公流量配成GBR,白白占着资源不放,浪费得让人心疼。资源类型选错,后面参数调得再细也救不回来。
1.3 5QI、ARP、QFI三者的分工
很多人会把5QI和QFI搞混,其实它们分工很清楚。5QI描述“这条流需要什么样的服务质量”,是特征模板;QFI(QoS Flow Identifier,QoS流标识)是这条流在当前会话里的本地编号,范围1到63,由SMF分配,用来在接入网和终端之间指认具体是哪条流;ARP(Allocation and Retention Priority,分配保留优先级)管的是“资源不够时谁让路”,包含优先级数值、抢占能力和被抢占属性三个维度。
三者组合起来才构成完整的QoS profile。同一条PDU会话里可以有多条QoS Flow,每条流有自己的QFI和5QI,但ARP可能相同也可能不同。举个实际配置的例子:一条默认流用5QI=9、ARP优先级8、不可抢占;一条语音流用5QI=1、ARP优先级2、可抢占别人。资源紧张时,语音流可以抢默认流的资源,但反过来不行。这个组合关系在配置模板里必须写清楚,否则抢占逻辑会乱套。
需要强调的是,5QI本身不含ARP信息。标准化表里给的“默认优先级”是资源调度优先级,和ARP优先级是两个维度。前者影响同一个基站内不同流之间的调度顺序,后者影响跨基站、跨会话的资源抢占决策。把这两个概念混为一谈,是新手配置时最常见的错误之一。
2. 标准化5QI表逐项拆解
2.1 表结构与必看字段
标准化5QI表的核心字段包括:5QI值、资源类型、默认优先级、PDB(Packet Delay Budget,包延迟预算)、PER(Packet Error Rate,包错误率)、默认最大数据突发量、默认平均窗口,以及示例业务场景。下面这张表摘录了几个最常用的取值,数值以公开技术规范的现行版本为准,不同版本可能有细微调整,配置时以设备厂商实际支持的版本为准。
| 5QI值 | 资源类型 | 默认优先级 | PDB(ms) | PER | 典型业务场景 |
|---|---|---|---|---|---|
| 1 | GBR | 20 | 100 | 10^-2 | 会话语音 |
| 2 | GBR | 40 | 150 | 10^-3 | 会话视频 |
| 3 | GBR | 30 | 50 | 10^-3 | 实时游戏、V2X |
| 4 | GBR | 50 | 300 | 10^-6 | 非会话视频(缓冲流) |
| 5 | Non-GBR | 10 | 100 | 10^-6 | IMS信令 |
| 6 | Non-GBR | 60 | 300 | 10^-6 | TCP信令(视频缓冲) |
| 7 | Non-GBR | 70 | 100 | 10^-3 | 语音、视频、游戏 |
| 8 | Non-GBR | 80 | 300 | 10^-6 | TCP信令(网页浏览) |
| 9 | Non-GBR | 90 | 300 | 10^-6 | 默认承载 |
| 65 | GBR | 7 | 75 | 10^-2 | 关键任务语音 |
| 66 | GBR | 20 | 100 | 10^-2 | 关键任务非会话视频 |
| 67 | GBR | 15 | 100 | 10^-3 | 关键任务会话视频 |
| 70 | GBR | 55 | 200 | 10^-6 | 时延敏感视频 |
| 75 | Non-GBR | 25 | 50 | 10^-3 | V2X消息 |
| 79 | Non-GBR | 65 | 50 | 10^-6 | 低时延eMBB |
| 80 | Non-GBR | 68 | 10 | 10^-6 | 低时延eMBB(极低时延) |
| 82 | Delay-Critical GBR | 19 | 10 | 10^-4 | 离散自动化 |
| 83 | Delay-Critical GBR | 22 | 10 | 10^-4 | 离散自动化 |
| 84 | Delay-Critical GBR | 24 | 30 | 10^-5 | 智能运输 |
| 85 | Delay-Critical GBR | 21 | 5 | 10^-5 | 智能运输 |
| 86 | Delay-Critical GBR | 18 | 5 | 10^-4 | 远程控制 |
看这张表要抓三个关键点。第一,优先级数值越小优先级越高,1最高,127最低,标准化表里出现的值都在1到90之间,说明标准化场景整体优先级偏高。第二,PDB是端到端预算,不是某一跳的时延,包含核心网、传输、接入网、终端处理的全链路,后面讲拆分时会细说。第三,PER和PDB往往成对出现,时延压得越紧,允许的丢包率通常留得越宽,给调度器留出重传余量。
2.2 GBR家族:1到4号5QI的具体用途
5QI 1是会话语音的标杆配置,PDB 100毫秒、PER 10的负2次方、优先级20。为什么语音的丢包率允许到百分之一?因为语音编码本身有丢包隐藏机制,偶尔丢一两个包听感上不明显,反倒是时延超过100毫秒会让人感觉“对方反应慢半拍”。100毫秒这个数字也不是随便定的,它大致对应人耳对交互延迟的容忍阈值,再扣掉编解码和网络传输的固定开销,留给空口调度的预算就那么多了。
5QI 2给会话视频用,PDB放宽到150毫秒、PER收紧到10的负3次方。视频对丢包比语音敏感,一个关键帧丢了可能整段画面花屏,所以错误率要求更严;但人对视频延迟的容忍度比语音高,150毫秒的预算就够用。5QI 3面向实时游戏和部分V2X场景,PDB压到50毫秒,优先级提到30,游戏操作对时延最敏感,一次卡顿就能毁掉体验。5QI 4是非会话视频,PDB 300毫秒、PER 10的负6次方,典型的视频点播和缓冲流,允许较大的时延容差,但几乎不允许丢包——缓冲流丢一个包就是画面一个马赛克。
这四个GBR取值构成了实时业务的基底。实际配置时要注意,5QI只是模板,真正建流时还要指定GFBR和MFBR。5QI 1不告诉你语音编码速率是多少,你得根据实际编解码器(比如自适应多速率编码的几种档位)算出GFBR,再乘个余量作为MFBR。我一般按“GFBR等于业务稳态速率、MFBR等于稳态速率的1.5到2倍”来配,突发大的业务取高一点,平稳的业务取低一点。
2.3 Non-GBR家族:5到9号的典型搭配
Non-GBR这一组里,5QI 5和5QI 9是两个极端。5QI 5专供IMS信令,优先级10、PDB 100毫秒、PER 10的负6次方,优先级高得离谱,因为它承载的是呼叫建立、切换控制这类信令,信令丢了或晚了,整个会话都建不起来。5QI 9是默认承载的标配,优先级90、PDB 300毫秒、PER 10的负6次方,几乎是最低的调度优先级,业务上什么都能装,但什么也抢不过别人。
5QI 6、7、8三个值的分工很有意思。5QI 6和5QI 8都标注为TCP信令类,PDB 300毫秒、PER 10的负6次方,区别在优先级:6是60,8是80。前者更偏向视频缓冲这类对时延稍敏感的非实时业务,后者更偏向网页浏览这类纯尽力而为的业务。5QI 7则是Non-GBR里的“优等生”,优先级70、PDB 100毫秒、PER 10的负3次方,适合那些没申请GBR但又不甘心被当普通流量处理的业务,比如部分企业办公应用。
这里有个实操经验:默认承载必须用Non-GBR类5QI,而且一个PDU会话只能有一条默认QoS Flow。有些项目为了省事,把默认流也配上GBR参数,结果建流时被核心网直接拒绝。默认流的定位是“兜底通道”,会话建立时先有它,其他专用流再往上挂,所以它不能占用预留资源。
2.4 Delay-Critical GBR家族:82到86的时延极限
Delay-Critical GBR是三类资源里最“年轻”的,专门解决工业场景“时延预算小于20毫秒”的诉求。5QI 82和83都把PDB压到10毫秒、PER 10的负4次方,区别只在优先级(19和22),前者用于离散自动化里的运动控制,后者用于更一般的周期性控制回路。5QI 84和85面向智能运输,PDB分别是30毫秒和5毫秒,5QI 85的5毫秒预算基本是空口调度的物理极限附近,只有极短调度周期配极窄带宽才能做到。5QI 86面向远程控制,PDB 5毫秒、PER 10的负4次方、优先级18,优先级比85还高,因为远程控制一旦超时就是安全事故。
配置这类5QI时,光靠改参数没用,必须配合接入网的调度策略一起调。比如把调度周期从常规的1毫秒级压到0.5毫秒甚至更短,关闭部分省电特性,预留专用频域资源。我参与过一个模拟产线控制项目,最初只把5QI改成82,端到端时延还是20多毫秒下不来,后来发现是基站侧没开短调度周期,改完之后才压到12毫秒左右。Delay-Critical GBR不是“配了就有”,它是一整套接入网能力的开关。
2.5 优先级数值与PDB的配对逻辑
细看这张表会发现一个规律:优先级高不代表PDB一定低。5QI 5的优先级是10,比5QI 3的30高得多,但PDB是100毫秒对50毫秒。原因是优先级管的是“排队时谁先走”,PDB管的是“总共允许多久送到”,两者解决的是不同阶段的问题。信令流优先级高,是因为它一旦排在数据后面就会拖慢整个会话建立,但它本身的数据量小,不需要极低的时延预算。游戏流优先级没那么高,但对总时延敏感,所以PDB压得低。
这个逻辑在自定义5QI时特别有用。假设你要给一类“数据量小但要求快速响应”的业务配参数,可以学5QI 5的思路:优先级拉到高位,PDB给中等预算,PER适度放宽。反过来,数据量大但对时延不敏感的业务,优先级放低、PDB放宽、PER收紧,避免重传拖垮整体效率。参数之间是配合关系,不是单调关系,这一点想明白了,自定义配置就不会瞎调。
3. 从5QI到QoS Flow的落地链路
3.1 QFI分配规则与5QI的绑定关系
5QI是特征模板,QFI是实例编号,两者的关系是“模板可以复用,实例各自独立”。一条PDU会话里,SMF根据PCC规则为每个业务数据流创建QoS Flow,分配一个QFI,同时指定这条流用哪个5QI。同一个5QI可以用在多条QoS Flow上,比如会话里既有一条5QI=1的语音流,也可能有另一条5QI=1的语音流承载不同的媒体成分;但一个QFI只对应一条QoS Flow的一个5QI值,不能中途偷偷换模板而不走修改流程。
QFI的取值范围是1到63,其中QFI=0保留不用。SMF分配时要保证在同一个PDU会话内唯一。实际配置里常见的坑是:不同PDU会话的QFI可以重复,终端侧要靠“PDU会话ID加QFI”两级索引来定位流,如果只按QFI查表就会串流。我在一次模拟多会话测试里就遇到过,两个会话都用QFI=1,终端侧映射表没做两级索引,结果视频流被错误地塞进了语音DRB,现象是语音断续、视频花屏同时出现,排查了大半天才定位到映射表设计缺陷。
默认QoS Flow有特殊规则:每个PDU会话必须有一条默认QoS Flow,且它的QFI在会话生命周期内不变。默认流通常配Non-GBR的5QI(最常见是9),负责承载没有专门规则匹配的流量。专用QoS Flow可以按需建立和释放,默认流不行。配置模板里最好把默认流的QFI固定成1,方便排障时快速识别。
3.2 PDB在核心网与接入网之间的拆分
标准化表给的PDB是端到端预算,落地时要拆成CN PDB(核心网部分)和AN PDB(接入网部分)。拆分比例没有强制规定,行业里常见的做法是核心网侧分20到50毫秒,剩下的留给接入网。拆分的依据是各部分实际能提供的时延能力:核心网内部转发路径相对固定,时延可控;接入网受空口调度、重传、切换影响,波动大,所以要留足余量。
以5QI 1的100毫秒PDB为例,一种常见拆分是CN PDB 30毫秒、AN PDB 70毫秒。接入网拿到70毫秒的AN PDB后,再往下拆成调度周期、HARQ重传轮次、上行授权等待等子预算。如果某段链路实际时延超了预算,端到端就会不达标,但现象往往表现为“某个5QI的业务时延偏高”,而不是直接报错。排查时要从核心网用户面抓包测单向时延,再对照空口日志看调度等待时间,一段一段卡,才能定位是哪部分吃掉了预算。
有个容易忽略的点:PDB不含终端和服务器之间的应用层处理时间。规范定义的PDB边界是终端到用户面锚点之间。如果业务方抱怨“端到端延迟200毫秒”,而你的5QI 1配置的PDB是100毫秒,别急着怀疑网络,先确认应用侧和传输侧各占了多少。我见过好几次把应用层编码延迟算进网络预算里,白白调了一轮参数。
3.3 DRB映射与SDAP头的处理
QoS Flow到了接入网,要映射到DRB(Data Radio Bearer,数据无线承载)上才能走空口。这个映射由SDAP(Service Data Adaptation Protocol,服务数据适配协议)层负责,核心动作是给下行数据包打上QFI标签,终端侧SDAP再按QFI把包分发到对应的QoS Flow。映射规则由基站配置,基本逻辑是:相同5QI、相同SDAP配置的QoS Flow可以复用同一个DRB,默认QoS Flow必须有专门承载它的DRB。
下面这段简化逻辑能说明映射决策的大致思路,实际实现要复杂得多,但核心判断就这几步:
# 简化的QoS Flow到DRB映射决策 def select_drb_for_qos_flow(new_flow, existing_drbs): # 优先复用:相同5QI且SDAP配置一致 for drb in existing_drbs: if drb.five_qi == new_flow.five_qi and drb.sdap_header == "present": return drb # 默认QoS Flow必须有独立DRB承载 if new_flow.is_default: return allocate_drb(new_flow, dedicated=True) # 无可用匹配时新建DRB return allocate_drb(new_flow)复用DRB能省空口资源,但把时延特性差异大的流塞进同一个DRB会互相干扰。比如把5QI 1的语音和5QI 9的默认流映射到同一个DRB,调度器只能按一个策略处理,语音的时延优势就没了。我的经验是:GBR类和Delay-Critical GBR类各走各的DRB,Non-GBR类里的高优先级流(如5QI 5、7)单独建DRB,其余低优先级流可以合并。DRB数量不是越多越好,每个DRB都有信令和维护开销,一般单会话控制在4到8个比较合理。
4. 动态配置与信令流程实操
4.1 PDU会话建立时的QoS协商路径
动态配置的起点是PDU会话建立。终端发起会话请求,AMF收到后转给SMF,SMF向PCF请求PCC规则,PCF根据签约信息和业务策略下发规则,规则里就包含5QI和ARP。SMF据此分配QFI、构建QoS Flow列表,再通过NGAP的会话资源建立请求发给基站。基站做接纳控制,决定哪些QoS Flow能建、哪些要拒绝或降级,然后把结果回给SMF,SMF最终通过NAS消息把授权的QoS规则同步给终端。
这条链路上每一步都可能出问题。PCF规则配错,5QI给了一个基站不支持的预配置值,基站直接拒绝;基站资源不足,GBR流建不起来,SMF要决定是降级还是释放;终端侧QoS规则解析失败,流建了但终端不会用。排查时我一般按“PCF规则→SMF分配→NGAP消息→RRC配置→终端日志”的顺序倒查,哪一步断了就停在哪一步深挖。抓包重点看NAS消息里的授权QoS规则列表和NGAP消息里的QoS Flow建立请求列表,两个列表的5QI和QFI要能对上。
4.2 QoS Flow的修改与释放
会话建好之后,业务变化会触发QoS修改。比如视频从标清切到高清,PCF下发新规则,SMF发起QoS Flow修改流程,通过NGAP通知基站调整GFBR/MFBR。基站可以接受、可以部分接受,也可以拒绝。基站拒绝的场景很常见,尤其是GBR流扩容时资源不够,这时SMF要么保持原参数,要么把流释放掉让业务重新协商。
实际操作里有个细节要注意:修改5QI值时,QFI通常保持不变。也就是说同一条QoS Flow可以换模板,但流本身不重建。这样做的好处是终端侧的映射关系不用大改,坏处是如果新旧5QI的资源类型不同(比如从Non-GBR改成GBR),基站要重新做接纳控制,处理不好会出现“流还在但资源没跟上”的中间态。配置模板里最好把这种跨资源类型的修改单独标记,触发时重点监控。
释放流程相对简单,SMF发起、基站执行、终端清理映射。但释放顺序有讲究:先释放专用QoS Flow,最后释放默认QoS Flow,反过来的话默认流没了,剩下的专用流会失去兜底通道,终端行为可能异常。我见过一次因为释放顺序错误导致终端本地还留着映射表项,后续重建会话时QFI冲突,只能靠重启终端解决。
4.3 反射式QoS的配置要点与风险
反射式QoS(Reflective QoS,RQoS)是一种“让终端自己看着办”的机制:下行包带了反射式QoS指示,终端据此自动为对应的上行流建立QoS规则,不用核心网再发信令。它的价值在于减少信令开销,适合上下行业务特征高度对称的场景,比如视频通话。
启用RQoS要同时满足几个条件:核心网在会话或流级别开启反射式QoS属性,基站下发的SDAP头里带RQI指示,终端支持并开启该功能。三个条件缺一个,机制就不生效。风险在于终端自建的规则可能和网络侧预期不一致,尤其是多业务并发时,终端按自己的理解映射上行流,可能把低优先级业务抬到高优先级DRB上。配置时建议对RQoS做范围限制,只对特定5QI或特定业务类型开启,别一股脑全开。
我的做法是:先在模拟环境里开RQoS跑一轮多业务并发,抓终端侧的上行映射日志,确认自建规则和网络侧策略一致,再放到现网小范围验证。直接全量开启的代价,可能是上行资源被错误抢占而找不到原因,排查成本远高于省下来的那点信令。
5. 常见问题排查与实战经验
5.1 典型问题速查表
| 现象 | 可能原因 | 排查动作 |
|---|---|---|
| GBR流建立失败 | 基站资源不足或5QI不支持 | 查NGAP拒绝原因、核对基站能力集 |
| 时延不达标 | PDB拆分不合理或调度周期太长 | 分段测单向时延、检查调度配置 |
| 速率上不去 | MFBR配置过低或空口拥塞 | 核对GFBR/MFBR、看空口PRB利用率 |
| 语音断续 | 语音流被映射到低优先级DRB | 检查SDAP映射表和DRB配置 |
| 上行映射错乱 | RQoS规则冲突 | 抓终端上行日志、限制RQoS范围 |
| 默认流建不起来 | 默认流错配成GBR类5QI | 核对默认流5QI是否为Non-GBR |
这张表是我从多个模拟项目的问题记录里整理出来的,覆盖了八成以上的常见故障。实际排查时先按现象定位到行,再按排查动作逐项确认,比盲目翻日志效率高得多。
5.2 抓包与日志里的关键字段
NAS层的PDU会话建立接受消息里,重点看授权QoS规则,每条规则包含规则标识、QFI、5QI、ARP、是否默认规则。NGAP层的会话资源建立请求里,重点看QoS Flow建立请求列表,每条包含QFI、5QI、ARP、GBR参数(如果有)。RRC层的重配置消息里,重点看SDAP配置和DRB配置,确认哪个QFI映射到哪个DRB、SDAP头是否启用。
抓包工具有个使用技巧:NAS消息往往被封在NGAP的透明容器里,直接看NGAP层看不到5QI,得先解出NAS再解析。我一般用两级解码的方式,先解NGAP拿到NAS PDU,再单独解NAS,两个结果对着看。RRC侧同理,SDAP配置在RRC重配置的无线资源配置里,不在NAS里,别找错地方。
日志侧要关注基站侧的接纳控制记录和终端侧的QoS规则应用记录。前者告诉你“为什么这条流建不起来”,后者告诉你“建起来的流终端到底怎么用的”。两边对不上,问题多半在映射环节。
5.3 踩坑心得与参数规划建议
第一个坑是把5QI当成唯一决定因素。5QI只是模板,GFBR、MFBR、ARP、MDBV这些参数配不好,模板再对也没用。我见过一个项目死磕5QI选型,从1换到65再换到67,时延纹丝不动,最后发现是MFBR配得太低导致调度器不敢给资源。参数是一套组合拳,别只盯一个。
第二个坑是忽略版本差异。不同版本的规范对同一5QI值的定义可能有微调,不同厂商设备支持的5QI集合也不完全一样。配置前先确认基站和核心网各自支持哪些5QI值,预配置值(128到254区间)更是各家自定义,跨厂家互通时最容易出问题。我的习惯是在项目启动阶段就拉一张“三方支持的5QI交集表”,只在这个交集里选值。
第三个坑是动态修改不留回退路径。QoS修改失败时,如果原配置没备份,流可能直接断掉。配置模板里给每条QoS Flow保留修改前的参数快照,修改失败自动回退,这个机制在多业务并发场景里救过我好几次。
参数规划上,我的一般原则是:实时业务优先用标准化5QI,减少联调成本;行业专网场景用预配置5QI做定制,但要把参数写进配置文件而不是口头约定;Delay-Critical GBR类只在接入网调度能力跟得上的前提下启用,否则配了也是摆设。5QI到QoS特征的映射表看起来复杂,拆开之后无非是资源类型、优先级、时延、错误率四个维度的组合,把这四个维度和业务诉求对上号,配置就不会跑偏。