首页 › deep-tech › 急诊室法则:空口调度与准入

急诊室法则:空口调度与准入原理

一、从一间急诊室说起

想象一家只有一张手术台的医院。病人源源不断地涌进来:有人是救护车送来的心梗患者,有人只是扭伤了脚踝,还有人办了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

三路输入分别对应三个问题:

  1. 「你现在状态怎么样?」——手机持续测量信道,周期性上报信道质量指示(CQI)。信号好、干扰低,就能用高阶调制,一个格子装更多比特;
  2. 「你有没有货要送?」——手机通过缓存状态报告(BSR)告诉基站:我这里排队了多少字节待发。没货的用户排第一也没意义;
  3. 「你该得到多少?」——这个连接的QoS需求(时延预算、保障速率)和它最近实际吃到的吞吐量。

三路信息汇总后,调度器给每个用户算一个优先级分数,排序,然后「点名」:某用户拿哪些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。调度器永远挑「波峰上的人」,等于把每个用户的衰落波动都变成了系统的增益。用户越多,波峰选得越准,小区总容量反而越大。人多不是负担,反而是资源——这是无线系统设计里最反直觉、也最优雅的一条原理。

五、GBR与Non-GBR:包间与大堂的分餐制

排队哲学解决的是「怎么分蛋糕」,但急诊室还有个更尖锐的问题:心梗病人不能排队。

你打电话时,语音包每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承载被直接释放,如果那是一通语音,表现为通话突然中断。这就是为什么现网上「偶发单通掉话」的排查清单里,永远有一条:查基站日志里的抢占事件计数器。

八、NR的温柔一刀:先打招呼,再降级

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做得精细得多。一个是自助餐厅,一个是配餐到桌的医院。

参考来源

  1. Proportional-fair scheduler - Wikipedia — 比例公平调度器的度量公式、平均吞吐量更新机制与多用户分集直觉
  2. Channel-dependent scheduling - Wikipedia — 信道依赖调度框架,轮询/最大载干比/比例公平三种算法的对比与权衡
  3. Quality of service - Wikipedia — 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学通信知识星球海报-扫码加入