想象一家只有一张手术台的医院。病人源源不断地涌进来:有人是救护车送来的心梗患者,有人只是扭伤了脚踝,还有人办了VIP预约、提前锁定了今天的手术间。
门口的分诊台必须不停地做决定:下一台手术给谁?给病情最危急的?给等得最久的?还是给出钱最多的?这个分诊台每分钟都要重新排一次队,而它的每一次决定,直接决定了这家医院是「高效运转」还是「有人死于排队」。
蜂窝网络的基站,就是这家医院。空气中的无线资源就是那张唯一的手术台,而门口的分诊台,就是空口调度器(Scheduler)。你手机上每一次刷屏、每一通VoLTE电话、每一条微信,都要在分诊台前排队,等它点名。
上一轮我们讲过5QI——它是网络对业务许下的「服务承诺书」。但承诺书只是纸面文章,真正把承诺变成现实的,是调度器在每一个毫秒里做的资源分配决策。这一篇我们就拆开这个分诊台:它怎么排队、怎么算账、床位不够时怎么办、急救车来了谁该让路。
先回答一个更根本的问题:为什么需要调度?有线网络为什么不谈这个?
因为空气是无法分割的共享介质。一根光纤可以给每个用户拉一条专线,但基站的发射功率和频谱是全体用户共享的。基站能做的,是把时间轴和频率轴切成无数个小格子,然后把这些格子动态地「出租」给不同的用户:
这个「时间×频率」的二维网格,就是基站手里全部的可分配家底。每一个slot,调度器都要决定:这几百个PRB格子,这一毫秒租给谁、各租几格。
$$R \approx \frac{N_{\text{PRB}} \times b_{\text{MCS}}}{T_{\text{slot}}}$$
一个用户能拿到多快的速率,约等于「分到的格子数 × 每个格子装多少比特 ÷ 时间片长度」。前一项是调度器决定的,后一项由信道质量决定——你的网速,本质上是你从分诊台那里「租」到了多少格子。
调度器不是排一次队就完事,它像一个永不打盹的分诊护士,每个slot重复同一套流程:
flowchart TD
A["slot开始 调度器醒来"] --> B["收集三路输入"]
B --> C["信道质量报告"]
B --> D["缓存状态报告"]
B --> E["QoS需求与历史吞吐"]
C --> F["计算优先级分数"]
D --> F
E --> F
F --> G["排序 分配PRB与MCS"]
G --> H["下发调度命令"]
H --> I["UE按时频格子收发"]
I --> A
三路输入分别对应三个问题:
三路信息汇总后,调度器给每个用户算一个优先级分数,排序,然后「点名」:某用户拿哪些PRB、用什么调制编码方式(MCS),通过下行控制信道广播出去。整个循环快到什么程度?每毫秒(甚至更短的slot)来一遍,一秒钟做几百到上千次这种决策。
理解了这个循环,你就理解了现网排障的一条主线:凡是「有人慢」的问题,都要问一句——是格子没分到(调度),还是格子装不下比特(信道),还是根本没货可送(源头)?
分诊台按什么规则打分?教科书上有三种经典策略,它们构成了一个「效率—公平」的光谱。
第一种:轮询(Round Robin)——完全不看病情,按登记顺序轮流上手术台。绝对公平,但对信号差的边缘用户,同样一格时间产出的比特极少,宝贵的手术台被低效使用。
第二种:最大载干比(Max C/I)——永远给信道最好的用户做手术。小区总吞吐量最大化,但站在小区边缘的用户可能永远轮不上——这叫「饿死」。它是纯粹的效率主义,也是马太效应的极端:强者愈强,弱者出局。
第三种:比例公平(Proportional Fair,PF)——现实世界的折中大师,也是蜂窝网络最经典的算法。它的打分公式非常简洁:
$$k^{*}=\arg\max_{i}\ \frac{r_i(t)}{R_i(t)}$$
分子 $r_i(t)$ 是用户此刻信道能支持的速度,分母 $R_i(t)$ 是这个用户最近一段时间实际吃到的平均速度。直觉翻译过来就是:「谁最近吃亏,且此刻机会好,就优先点谁。」
平均吞吐量用滑动平均更新:
$$R_i(t+1)=\left(1-\frac{1}{T}\right)R_i(t)+\frac{1}{T}\,r_i(t)\cdot\mathbf{1}_{\text{被调度}}$$
被点到的用户,分母变大,下次优先级自动下降;长期没被点到的用户,分母缩小,分数自然涨上去。没有人被饿死,也没有人永久霸台。
| 算法 | 直觉类比 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 轮询 RR | 按挂号顺序叫号 | 实现极简,绝对公平 | 不看信道,边缘用户浪费格子 | 概念基准、极简系统 |
| 最大载干比 | 先救最容易救活的 | 小区总吞吐最大化 | 边缘用户被饿死 | 用户全在近点的场景 |
| 比例公平 PF | 谁吃亏谁优先 | 吞吐与公平兼得,利用多用户分集 | 算法复杂,参数需调优 | 蜂窝网络事实标准 |
PF还暗藏一个精妙的设计红利:多用户分集。小区里几十个用户,各人的信道快衰落彼此独立——这一毫秒A的信号正好处于波峰,下一毫秒轮到B。调度器永远挑「波峰上的人」,等于把每个用户的衰落波动都变成了系统的增益。用户越多,波峰选得越准,小区总容量反而越大。人多不是负担,反而是资源——这是无线系统设计里最反直觉、也最优雅的一条原理。
排队哲学解决的是「怎么分蛋糕」,但急诊室还有个更尖锐的问题:心梗病人不能排队。
你打电话时,语音包每20毫秒产生一个,迟到超过预算这段对话就废了;工业控制的指令、急救电话,都是「等不起」的业务。于是系统把业务分成两类:
| 维度 | GBR(保障比特速率) | Non-GBR(非保障) |
|---|---|---|
| 急诊室类比 | 提前锁定的手术间 | 大堂散座,先到先坐 |
| 速率承诺 | 有保底速率(GFBR),网络欠你 | 无保底,尽力而为 |
| 资源不够时 | 要么拒绝新请求,要么抢占旧流 | 一律排队,被分得更少 |
| 拥塞时待遇 | 保障期内优先供给 | 首先被挤压的对象 |
| 速率上限 | 保底之外还有最大速率(MFBR) | 受会话级/终端级聚合上限(AMBR)约束 |
| 典型业务 | VoLTE/VoNR语音、紧急呼叫、专网切片业务 | 上网、视频、下载、IM |
关键在于理解GBR承诺的物理实现方式:它不是给这个业务焊死一条专用信道,而是调度器层面的一个「保底权重」——调度器记账本上写着「这个流每秒必须喂饱多少比特」,分配时间格子和PRB时优先兑现,兑现完的富余能力大家照旧共享。标准也允许多种具体实现,行为细节以各厂家官方文档为准。
这里有个最容易犯的理解错误:GBR≠独占。正因为它是「记账承诺」而非「物理专道」,网络才能在没有语音通话时把资源全部让给数据业务——如果每个GBR都真刀真枪划走一块固定资源,小区容量早就被空转的「预订」吃光了。承诺制的精髓,是只在你真正使用时才占用。
GBR承诺一旦给出,网络就要认账。所以每当一个新的GBR请求(比如你拨出一通VoNR电话)到达基站时,基站要先算账:
$$\sum_{i\,\in\,\text{已接纳GBR}} GFBR_i \;+\; GFBR_{\text{新}} \;\le\; C_{\text{可承诺}}$$
右边的 $C_{\text{可承诺}}$ 不是小区的峰值容量,而是一个保守得多的预算值——它要考虑邻区干扰、负载波动、预留余量。毕竟对急诊室来说,「收下病人后才发现没能力手术」比「拒收」严重得多。
账算不平,进入第二道闸门——优先级仲裁,也就是ARP(分配与保持优先级)登场。每个GBR请求都随身带着一张「优先级身份证」,三个字段:
| ARP参数 | 含义 | 急诊室类比 |
|---|---|---|
| 优先级等级 | 1~15,数字越小越优先 | 分诊等级:一级抢救还是三级普通 |
| 可抢占能力 | 我挤不过别人时,能否清走别人 | 急救车有没有鸣笛闯行的权利 |
| 可被抢占脆弱性 | 我是否允许被更高优先级清走 | 我是否同意危急时让出床位 |
完整的准入决策链如下:
flowchart TD
A["新GBR请求到达基站"] --> B{"小区资源还有富余吗"}
B -->|有富余| C["接纳 承诺保障速率"]
B -->|没富余| D{"请求带可抢占权利吗"}
D -->|没有| E["拒绝 通话建立失败"]
D -->|有| F{"有低优先级且可被抢占的流吗"}
F -->|有| G["清退旧流 资源腾给新流"]
F -->|没有| E
三个要点值得咀嚼:
其一,拒绝是特性,不是故障。一个已经超载的小区,硬塞进新的GBR流,结果不是新电话通了,而是原有几通电话的保障全部破产——全员掉话。「宁拒不滥」是保障体系的自我保护,就像三甲医院急诊满员时引导病人转院,比收进来治一半强。
其二,抢占是稀缺特权。典型的场景:公共紧急呼叫(如警用、应急通信)带有最高优先级和可抢占能力,进入一个满负荷小区时,可以把普通商业用户的GBR流清退。这是网络设计里明确写好的「生命通道」。
其三,Non-GBR不参与这套博弈。大堂里的散客不会被「抢占」清出去——他们只是被分到更少的资源。散客的去留由无线链路质量决定,不由优先级仲裁决定。
把上面的决策树放到真实信令流里看一遍。假设小区已经满载,此时一通高优先级语音打进来:
sequenceDiagram
participant U1 as 新来电UE
participant CN as 核心网
participant BS as 基站
participant U2 as 旧语音UE
U1->>CN: 请求建立语音GBR承载
CN->>BS: 下发QoS与优先级参数
BS->>BS: 算账 资源不足
BS->>U2: 抢占 释放低优先级GBR
BS->>CN: 资源腾出 接纳新承载
CN->>U1: 承载建立成功
Note over U2: 旧通话被强制中断
整个链条在几十毫秒内走完。注意被抢占的用户(U2)不是「被降速」——它的GBR承载被直接释放,如果那是一通语音,表现为通话突然中断。这就是为什么现网上「偶发单通掉话」的排查清单里,永远有一条:查基站日志里的抢占事件计数器。
4G时代,承诺的破产往往表现为用户无感地掉话。5G补上了一块温柔的拼图:通知控制。
基站在接纳GBR流时保留一个「反悔权」:当无线环境恶化(用户走进电梯、邻区突发大流量)导致承诺的保底速率维持不住时,基站会先向网络发通知,声明「我暂时兑现不了这份承诺了」,然后这个流被临时按Non-GBR对待;等环境恢复,再自动恢复保障。
对上层应用来说,这是巨大的体验差异:从「突然断线」变成「提前收到降级预告」。视频通话App收到速率回落后可以主动降低分辨率,而不是等着丢包重传把画面打成马赛克。这体现了网络设计理念的一次进化:与其无声地违约,不如有声地降级。
对一线工程师,这套原理就藏在日常的指标和日志里:
1. PRB利用率(PRB Utilization)——这是「手术台占用率」。下行PRB利用率长期高于某个阈值,意味着调度器没有腾挪空间:Non-GBR用户速率集体下滑、GBR准入失败率上升。扩容决策的核心依据就是它。
2. CQI分布——PF公式里,分子是CQI。如果你发现某小区用户的CQI整体偏低但RSRP正常,问题多半在干扰而不是覆盖——信号「满格」(RSRP好)和「信道好」(SINR好)是两回事,前者是你离分诊台的距离,后者是手术台旁的噪音。
3. 调度请求(SR)失败——上行方向,手机没有「格子」就无法发数据,必须先发调度请求申请。SR失败说明连「举手」的机会都没抢到,通常是控制信道资源耗尽——海量连接场景下,这比业务信道拥塞更早出现。
4. 掉话排查中的抢占计数器——偶发掉话、VoLTE/VoNR建立失败,第一反应之一就是查准入拒绝计数和抢占事件。如果拒绝集中发生在忙时忙区,那是容量问题;如果是零星出现,要查邻区干扰或参数配置。
5. 限速的真正位置——用户投诉「被限速」,多数情况执行者是核心网用户面网元上的聚合最大比特速率(AMBR)门限,跟空口调度器无关。把「限速」当成调度问题去查无线参数,是新手常走的弯路。
误解一:「GBR承诺=专用物理通道」。前面说过,它是调度器账本上的保底权重,不是预划的固定资源。半持久调度等优化手段可以让命令下发更省,但本质上资源仍是动态共享的。
误解二:「信号满格就该快」。网速 = 分到的格子 × 每格装多少比特。满格只说明第一项的天花板高;小区拥塞时PF会把格子摊薄给所有人,人人分得少。满格却慢,先查小区负载,再查干扰。
误解三:「准入拒绝=无线问题」。准入是资源逻辑判断,发生在基站的控制面。信号完美的用户也会被拒——如果小区的GBR预算已被占满。排查时要区分「 RF问题」和「容量问题」,两者的药方完全不同。
误解四:「抢占随时会踢掉我的视频会议」。抢占只作用于GBR流,而且要看双方的身份卡——你是「可被抢占脆弱」的高优先级流才可能被清。普通上网流量永远只是「被分少」,不会「被踢掉」。
陷阱:把时延都归罪于空口排队。数据包在基站的发送队列里排队只是时延的一种来源;手机和服务器侧的缓冲区膨胀会造成另一类时延。前者调度器有QoS意识、能按预算管理,后者通常没有。排障时要先用分段抓包定位时延发生在哪一段,再对症下药。
回到那间急诊室。整个系统设计的灵魂,其实是一组环环相扣的取舍:
空气是最公平也最残酷的资源:人人可用,人人争抢。蜂窝网络几十年的演进,本质上就是把这个分诊台做得越来越快、越来越聪明、越来越有温度。下次你拨打一通清晰流畅的电话时,不妨想想:就在那几十毫秒里,有一台每秒运算上千次的分诊机器,刚刚为你算完一笔账。
Q: GBR承载和「专线」是一回事吗? A: 不是。专线是物理或逻辑上的独占管道,无论有没有流量都占着资源;GBR是调度器层面的速率承诺,只在有数据要发时才实际占用格子,空闲时资源让给其他人。一个是「包间常年在册」,一个是「预约到号才上桌」。
Q: 空口调度造成的排队时延,和缓冲膨胀(bufferbloat)是一回事吗? A: 不是。空口排队发生在基站的发送队列,调度器有QoS意识,会按时延预算给紧急包插队;缓冲膨胀发生在收发两端的缓冲区,是「队列越长、时延越大」的被动后果,通常没有QoS感知。两者排障手段完全不同:前者查PRB利用率和调度参数,后者查缓冲区尺寸和拥塞控制行为。
Q: 为什么我信号满格,还是感觉被限速? A: 三种可能要分层看:运营商套餐限速多在核心网用户面以AMBR门限执行,与空口无关;小区拥塞时比例公平算法会把格子摊薄,人人变慢;干扰导致CQI低时,每个格子装的比特也少。满格只代表RSRP好,而网速取决于负载、干扰和调度策略的合力。
Q: Non-GBR业务会被抢占踢下线吗? A: 不会。抢占机制只作用于GBR类有保障的流,而且要求发起方有「可抢占能力」、受害方有「可被抢占脆弱性」。Non-GBR流在拥塞时只会被分到更少的资源,它的去留由无线链路质量(如失步、切换失败)决定,不由优先级仲裁决定。
Q: Wi-Fi没有调度器,为什么也能多人共享? A: Wi-Fi用的是CSMA/CA——分布式、竞争式的「先听后说」:谁也没指挥谁,大家互相监听、随机退避、碰撞了重来。这在小范围低负载时简单高效;而蜂窝网络是中心化调度,由基站统一指挥,在高负载、大范围、多业务混合场景下能把公平和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 等场景全覆盖。
