☰
5G云卡动态分配:基于信道容量计算的基带资源调度实践
2026/10/1 3:19:21 网站建设 项目流程

干过无线网络优化和云化基带资源调度的朋友,应该都有过这种体验:核心网侧风平浪静,到了无线侧可能就是一场灾难。去年我在一个大型体育场馆做容量保障,晚高峰还没开始,监控大屏上一个热门小区的PRB利用率已经顶到98%,可用户上报速率却连1Mbps都不到,投诉电话一个接一个。反观隔壁小区,PRB利用率只有20%出头,一张云卡资源就闲在那里。问题出在哪儿?出在我们给小区配的云卡资源是静态的,压根没跟着无线信道的实际容量走。

这个项目做下来,核心就一句话:把信道容量计算作为云卡分配的依据,让基带资源池里每一张卡都流向真正需要它的地方。这里面的链路长得很——从SINR测量、CQI上报,到MCS/TBS映射,再到以容量为输入的分配算法,最后落成云卡动态调整的执行动作,每一步都有值得拆的细节。这篇就按我们实际落地时的技术主线,把原理、实现和场景预判一次说清楚。

1. 云卡分配为什么必须"算着来":容量感知的必要性

1.1 先把"云卡"这个概念对齐:它不是一块铁板卡

云卡不是一个标准协议术语,但在近几年的C-RAN和云化基带演进里,大家已经习惯用"云化基带板卡/云卡"来指代运行在通用服务器或专用加速器上的虚拟基带处理单元。把它简单理解成基带资源池里的一种资源抽象就够了,抽象的核心字段包括:计算算力(CPU核数/虚拟核数)、内存带宽、加速器DSP资源、前传接口带宽,以及最重要的时延预算。

比如一张云卡可以被定义成"2个vCPU + 4GB内存 + 一定量的LDPC编码加速资源 + 10Gbps前传带宽",这些资源打包成一个可调度的实例,分配给一个或多个小区使用。这种形态的好处是弹性:小区忙时可以给它加卡,闲时可以回收。但这也带来了一个根本问题——按什么标准来加、来减、来分配?如果标准选错了,整个调度系统就只是个花架子。

1.2 静态配额和"按用户数分卡"为什么会在真实无线环境里失效

最早的云化资源池沿用了传统BBU时代的静态配额思路:每小区固定分配一块板卡的资源,忙时加板卡,闲时不管。这种思路在话务模型稳定、用户分布均匀的时期问题不大,但进入5G时代后用户环境变得太快了。

我举一个实测里反复出现的典型场景。两个小区共用一个云资源池,一个覆盖室内密集办公区,一个覆盖室外主干道。按用户数来分,室内小区在线用户数更多,分到的云卡资源自然更多。可实际测试结果,反而是用户较少的室外小区吞吐更高、时延更低。原因在于室内场景的信道离散度极大:有些用户在窗边,SINR能到20dB以上,有些用户坐在建筑核心区,SINR是负数。高SINR用户少,低SINR用户多,云卡资源虽然多,但大量算力被花在了低效的重复传、降级调度上。室外小区虽然用户少,信道普遍干净,每单位算力能转化的吞吐反而更高。

这就是典型的"资源量到位了,容量没到位"。PRB利用率高,不代表真实吞吐高;云卡分配得多,不代表用户就快。任何不看信道条件的分配策略,本质上都是在盲人摸象。

1.3 用容量计算把"资源分配"替换成"容量分配"

既然静态配额失效,那正确的抽象应该是什么?我当时的判断是:把分配对象从"资源量"换成"容量"。

逻辑很简单——在无线侧决定业务体验的不是某些分配了多少算力,而是"在当前信道条件下,用这些算力能挤出多少吞吐、压低多少时延"。信道容量计算恰好充当了这座桥梁:它把物理层的信道信息(SINR、干扰、BLER)转换成一个调度系统可以直接消费的元数据,类似"每张云卡在当前无线条件下能转化成多少Mbps"。

有了这个元数据,分配问题就变得非常清晰——不是均匀分配,不是按用户数分配,而是按容量缺口和边际收益分配。这也是为什么后面的算法设计、工程实现全部都要围绕"容量估计是否准确"来展开的原因。容量算得不准,算法再漂亮也是空中楼阁。

2. 信道容量计算:从香农公式到可执行的上报链路

2.1 香农极限和真实系统的gap:到底差在哪

做容量计算,第一反应肯定是香农公式:

C = B × log2(1 + SINR)

B是带宽,SINR是信号与干扰加噪声比。这条式子给出了信道容量的理论上限,但它和真实网络能力之间有一道不可忽视的gap。真实系统的调制编码方式是离散的阶梯,不是连续可调的。以NR为例,PDSCH的MCS索引是有限个档位,每一档对应固定的调制阶数和码率,从QPSK一路到256QAM。系统实际能跑的速率,必须落在一个具体的MCS档位上,不可能是香农公式算出来的那个连续值。

所以我的建议是:云卡分配系统里不要直接用香农公式的瞬时输出作为容量值,要用"MCS阶梯校准后的可达速率"作为容量估计。这条原则在后面整个算法设计中都是基调。理论极限可以用于容量上限推算和预规划,但实时调度必须以可实现速率为准。

2.2 SINR → CQI → MCS → TBS → 吞吐量的完整换算链路

具体落地时,容量计算的输入并不是直接拿频谱仪去测SINR,而是走一条现成的链路:UE测量参考信号,上报CSI(包含CQI、PMI、RI),网络侧根据CQI选择MCS,再结合分配的PRB数查出TBS(传输块大小),最终得出速率。

我把这条链路拆成几步,每一环都容易出问题:

  • UE侧测量:UE基于CRS或CSI-RS做信道估计,这个测出来的SINR是用户实际感受的信道质量,比理论仿真值靠谱得多。
  • CQI上报:UE把SINR映射成CQI索引(0~15档)。不同档位对应不同的调制方式和码率。
  • MCS选择:基站/集中调度器根据CQI决定本次传输用的MCS索引。
  • TBS查表:根据MCS和实际调度的PRB数量,从协议表里查出TBS大小。
  • 吞吐折算:TBS除以传输时间间隔(如1ms)就是该链路的瞬时峰值速率。

这里给一组粗略对应关系(经验值,不同厂家实现有差异,但量级可信):

SINR区间(dB)粗略CQI调制方式大致效率趋势
0~52~5QPSK偏低,适合覆盖边缘
5~106~916QAM中低档
10~1510~1364QAM中高档
15~20+13~15256QAM高档,接近峰值

这张表对应的算力消耗差异非常大。同样一个PRB,256QAM模式下调制解调的计算量比QPSK明显高出一截,更别提高阶MIMO的检测复杂度。所以云卡分配系统里,容量计算不只是决定"该不该加卡",还要为"加多大的算力卡"提供依据——这一点很容易被忽略。

2.3 BLER校准:容量计算不能只盯着瞬时SINR

信道是时变的。UE上报CQI到集中控制器做出分配决策,再到业务真正执行,中间隔着几十毫秒。如果完全按瞬时SINR计算容量,结果经常会过于乐观或过于悲观。我见过不少容量预估方案就栽在这上面——按瞬时SINR算出好几百Mbps的容量,实际一跑只有一半。

工程上通常用两种手段校准:一是加平滑窗口,对CQI/SINR做时间维度上的平均或分位数统计,而不是用瞬时值;二是引入外环调整,以实测BLER(块误差率)反向修正MCS选择。eMBB业务的目标BLER一般设在10%左右,URLLC则要求1%以下。BLER过高说明MCS选乐观了,需要降档;BLER异常低说明有余量,可以升档。

我把经过校准后的有效容量写成这样一个简单模型:

C_eff = (1 - BLER) × R(MCS, PRB)

其中R是从MCS和PRB数查表得到的标称速率。云卡分配算法拿到的应当是C_eff,而不是R。一个很常见的误判是:两个小区标称速率相同,但一个BLER长期在2%,另一个长期在15%,前者有效容量明显更高。如果分配系统不看BLER,就会把资源浪费在大量重传的小区上。

3. 分配算法选型与落地:从贪心优先到强化学习

3.1 把分配问题写成数学模型:目标函数和硬约束

容量计算拿到手后,下一步就是把"云卡分配"变成一个可计算的优化问题。我们的做法是先建一个最小化、可解释的数学模型,再谈算法。

假设资源池里有N张云卡,服务M个小区。设分配变量x_i表示第i个小区获得的云卡数量,每个小区在这些云卡功率下能达到的有效容量是C_eff_i(x_i)。优化的目标不是简单最大化总吞吐,那样会导致信道好的小区把所有资源吃光、边缘用户彻底没救,用户体验会很难看。

我们选的是比例公平效用函数:

maximize Σ_i Σ_j log(R_j / T_j)

R_j是用户j当前的可达速率,T_j是用户j的历史平均吞吐。这个目标天然折中:信道好、T_j低的用户有更高优先级,信道差但长期饥饿的用户也不会被完全饿死。整个函数可以等价地理解成"让每个用户吃亏的程度尽量均衡"。

硬约束则包括:

  • 算力上限:所有小区的分配总和不能超过资源池总算力。
  • 时延预算:每个小区分配的云卡资源,必须保证调度时延和服务质量在目标范围内。
  • 前传带宽上限:云卡的前传接口带宽不能超限。
  • 隔离约束:某些切片或高安全等级业务不允许与其他小区共享同一张物理卡。

这些约束看着琐碎,但任何一个在算法里被忽略,落生产环境时都会变成事故。

3.2 贪心优先级算法:工程上最稳妥的第一版

资源池规模不大、小区数量在几十个量级时,我的建议是先做贪心优先级,不急着上强化学习。贪心方法的思路很直观:每次迭代找"增量收益最大且需求最迫切"的小区,给它加一张云卡,直到资源耗尽。

伪代码大概长这样:

def allocate_cloud_cards(cells, pool): allocated = {} while pool.available > 0: candidates = [] for cell in cells: # 边际收益:给该小区多分配一张云卡能增加的容量 marginal = cell.effective_capacity(allocated[cell] + 1) \ - cell.effective_capacity(allocated[cell]) # 需求度:当前容量与目标容量的差距 demand = max(0, cell.target_capacity - cell.effective_capacity(allocated[cell])) candidates.append((cell, demand * marginal)) best_cell = max(candidates, key=lambda x: x[1])[0] pool.allocate_to(best_cell) allocated[best_cell] += 1 return allocated

这个算法的好处有三个:计算开销几乎可以忽略(几十个小区的场景,一轮迭代毫秒级完成);可解释性强,出问题能直接搬出"当时每个小区边际收益是多少"来复盘;调试方便,不需要训练阶段和仿真环境。

它的缺点也明显:每次只做一步前瞻,无法考虑"这次给A加卡,会不会导致后面B完全没卡可加"的长远权衡。不过对第一版系统来说,这个缺点完全可以通过"需求度+边际收益"排序来对冲,因为它已经包含了当前状态下的优先级信息。

注意:贪心算法里最容易翻车的是边际收益的计算方式。如果直接把每张云卡的算力当成均质资源来处理,边际收益算出来全是常数,排序就变成了纯按需求度排,退化成"按人头分卡",又绕回老路上了。务必把容量函数做成随分配卡数递增但边际递减的形态。

3.3 强化学习路线:状态空间变大后的选择

小区数量上百、用户动态性强、业务类型混合时,贪心算法的一步前瞻就不够看了。我们后续测试过把决策换成强化学习,整个建模思路和贪心完全不同。

  • 状态:每个小区的有效容量估计、在线用户数、平均排队时延、当前占用云卡数。
  • 动作:每次决策是给某个小区增加一张云卡、减少一张云卡,还是保持不动。
  • 奖励:比例公平效用函数的变化量,再减去时延违约惩罚项。

训练使用DQN或A2C这类深度强化学习框架都可以。状态空间不大时DQN够用,小区数量上百时A2C的稳定性更好。训练数据先用仿真环境生成——把典型场景的信道模型、用户分布、业务模型都参数化,做domain randomization(域随机化),让智能体见过足够多样的环境,避免训练和真实环境分布不一致导致泛化失败。

接入真实环境时,我的建议是先用一段时间的真实采集数据做回放测试,确认智能体给出的分配策略在"上帝视角"下优于贪心基线后再灰度上线。直接上生产环境的风险在于,强化学习策略的决策边界不透明,万一它在某个罕见业务场景下抽风,排查起来非常痛苦。

3.4 两条路线的取舍:不是非黑即白

很多项目会纠结"到底用贪心还是强化学习",其实这两条路线不是替代关系,而是演进关系。我给一张对比表:

对比项贪心/优先级强化学习
计算开销极低,毫秒级推理开销可控,训练开销大
可解释性高,可直接审计每步决策偏低,需要额外做决策归因
冷启动免训练,部署即用需要仿真训练和回放验证
动态环境适应靠更新需求度间接适应可端到端学习动态规律
运维难度低较高,需要监控模型漂移
推荐阶段第一版、小规模规模化后的演进方向

我们实际落地时的路线是:第一版跑贪心,跑通全链路、积累三个月的容量数据和分配日志之后,再把这些数据作为训练集去做强化学习版本,用历史数据离线对比,确认收益后再切流量。这比自己上来就硬上RL稳妥得多。

4. 工程实现的三座山:时延预算、无感迁移与回退策略

4.1 一条分配指令的端到端时延预算

算法想得再漂亮,工程执行跟不上就是白搭。云卡分配不是一次性配置下发,而是持续控制环路。你需要对"从信道测量到云卡资源生效"的端到端时延有精确预算。

我拆一个典型流程:

  • 测量与上报:UE测量周期通常5~40ms,CQI周期上报可能10~80ms。
  • 汇聚计算:集中控制器采集各小区的容量估计,约10~20ms。
  • 决策执行:贪心算法1~10ms,强化学习推理20~100ms。
  • 配置下发:经网管或控制面协议下发到云卡管理面,约20~50ms。
  • 资源生效:虚拟卡实例化或权重调整,约10~50ms。

单次控制环的端到端时延粗算在50~200ms之间。这个量级意味着云卡的调整周期不适合做到毫秒级,工程上我推荐按秒级周期(比如1~5秒)做一次决策和动作,既避免了乒乓效应,也给系统留足了稳定时间。

4.2 "先建后拆"的迁移流程,比你想的重要得多

云卡分配真正执行的时候,最忌讳的操作是:对一个正在承载业务的小区直接减小资源配额甚至撤销云卡实例。这等于让用户业务在高负载状态下强制搬迁,必然掉线、卡顿、闪断。

正确流程必须遵循"先建后拆"原则:

  1. 在资源池其他位置创建满足目标配置的新云卡实例,完成配置加载和参数同步。
  2. 将业务或小区负荷切换到新实例上,切换过程和切换后保持一段观察时间。
  3. 确认新实例运行稳定、指标达标后,再释放旧云卡资源。
  4. 旧资源释放前保留足够长的冷却期,避免切换引发的问题立刻摧毁新实例。

这套流程确实会多消耗一段时间的双份资源,但它是保证业务不中断的底线。我在项目里见过有人为了省资源跳过先建后拆,结果切换瞬间业务闪断,投诉升级到集团层面,省下来的那点算力钱完全不够赔。

4.3 配置漂移、对账机制与回退兜底

云卡系统的配置链路长,经过网管、控制器、虚拟化平台多个层级,配置漂移是大概率事件。经常出现的情况是:控制器认为某小区已经分配了3张卡,但虚拟化平台显示实际只有2张实例在运行。这种状态不一致如果不处理,后续算法决策全部建立在一个错误的世界观上。

我们采用的办法是定期reconcile(对账):控制面每隔一段时间(如30秒),把"期望配置"和"实际生效配置"拉齐比对,发现差异先告警再自动纠正,纠正不成功就进入人工介入流程。

回退机制也必须前置设计。我给系统设了硬性安全阈值:任何一次云卡调整动作执行后,如果目标小区吞吐下降超过25%,或BLER抬升超过设定值,系统自动回滚到调整前的配置快照。回滚前必须提前保存快照,快照内容包括各小区的云卡配额、MCS偏置、流量权重等关键参数。没有快照的回退策略等于没有回退策略。

这块内容看着没有算法那么"高级",但真实运维中,云卡分配系统能不能稳定跑三个月不事故,拼的就是这些工程细节。

5. 应用场景与演进方向:从潮汐调度到算网协同

5.1 容量热点潮汐:大型场馆、交通枢纽、写字楼午高峰

容量驱动的云卡分配,最直接的应用场景就是应对容量潮汐。大型体育场馆在有比赛和没比赛时,业务量可能差几十倍;交通枢纽在工作日和节假日、早晚高峰之间也有明显波峰波谷;写字楼午休一小时和下班两小时,是小区容量需求的高地。

这类场景的共同特征是"需求可预测"。结合票务数据、排班信息、历史流量统计,可以在波峰来临前15~30分钟完成云卡的预扩容,结束前再按容量收缩。分配系统要做的是三层配合:预测层提前给预分配层信号,预分配层在波峰来临前建好资源,在线决策层在真实运行中做微调。只靠实时反应,效果会大打折扣,因为时延预算在那里摆着。

5.2 多业务差异化保障:eMBB、URLLC、mMTC混合

5G时代一张网里同时跑大带宽、低时延、海量连接三类业务,容量计算的角度完全不同。eMBB看的是平均吞吐,容量越大越好;URLLC看的是边缘速率和时延边界,追求的是"最差情况也不出格";mMTC看的是连接密度,对单用户速率毫无要求。

云卡分配策略可以相应分层:给URLLC切片预留一定比例的专用云卡,保证极端负载下低时延业务不被大流量业务挤垮;mMTC业务对算力消耗极低,可以在剩余容量里捎带;eMBB则完全走容量驱动的动态分配。这里的容量计算要细化到业务粒度,不能只看小区总容量,得看"每个切片在当前信道条件下能分到多少有效容量"。

5.3 节能视角:容量收缩与资源关断的结合

还有一个容易被忽视的方向是节能。无线网络到了凌晨,业务量极低,大多数小区的容量需求只有高峰期的十分之一。容量驱动的云卡分配系统可以自然地把多个低负载小区合并到少数几张云卡上,释放出的物理服务器进入深度休眠状态,整机的功耗直接降下来。

这项实践在运营商侧的价值非常大。我们做过测算,在低业务时段合理收缩云卡资源并关闭空闲物理机,功耗节省可以到两位数百分比。但有两个前提:收缩策略必须预留一定的突发余量,避免突然有用户大量接入时资源池被瞬间打满;同时要配合快速唤醒机制,能在1分钟内恢复足够的算力来应对突发的容量需求。

5.4 下一步演进:AI预测、数字孪生与算网协同

最后聊几个方向上被验证有潜力、但我们还没完全走通的部分。第一个是AI时间序列预测:把历史容量数据、客流数据、天气数据都喂给预测模型,云卡分配从事后响应变成事前预判,体验和效率都会再上一级台阶。第二个是数字孪生:在仿真孪生环境里先跑一遍策略、验证效果和风险,再把可用方案下发到真实网络,相当于给分配动作上了双保险。第三个是算网协同:无线侧的容量计算不再只服务于云卡分配,而是和边缘计算节点的负载联动,一张云卡的归属同时考虑无线信道的可达容量和边缘业务的算力需求,这对未来的低时延业务融合场景很有价值。


我在实际部署这套系统时最深的一个体会是:算法本身不是瓶颈,瓶颈在于"容量估计的可信度"和"执行动作的安全性"这两个看着不性感的环节。容量估计算得不准,再多花哨的算法都是空中楼阁;执行流程不安全,一次事故就能让整个项目退回解放前。所以我的建议很直接——不管最终目标多宏大,第一版务必要从可信的容量测量和安全的资源迁移做起,跑通闭环、积累数据,再谈智能和优化。先把地基夯实,上面的楼才能盖得稳。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询