一、协议栈概述:基站协议栈到底是什么?
大家好,我是老张。做通信这行十几年了,每次带新人时,第一个问题总是:「基站协议栈到底是个啥?」
嗯,这个问题问得好。说白了,协议栈就是一套通信规则的总和。它规定了基站和手机之间怎么「说话」、怎么「听懂对方」。你想想看,手机和基站之间要传数据、要发信号、要协调资源,没有一套统一的规则,那不就乱套了吗?
我个人习惯把协议栈比作一个「翻译官团队」。从底层到顶层,每一层各司其职,把复杂的事情拆解成一个个小任务。我在项目中遇到过不少同事,一上来就扎进代码细节,结果越看越糊涂。其实,先搞懂分层架构,后面就顺了。
1.1 LTE/NR 协议栈的分层架构
先看一张经典的协议栈分层图。LTE 和 NR 都遵循 3GPP 规范,分层思路基本一致,只是 NR 在灵活性和性能上做了大幅增强。
| 层级 | 名称 | 主要功能 | 典型协议 |
|---|---|---|---|
| L3 | 网络层 | 连接管理、移动性管理、承载控制 | RRC, NAS |
| L2 | 数据链路层 | 调度、重传、复用、HARQ | MAC, RLC, PDCP |
| L1 | 物理层 | 编码调制、OFDM、MIMO、射频处理 | PHY |
为什么会这样分?因为每一层只关心自己的事。L1 管「怎么发出去」,L2 管「怎么发得稳」,L3 管「发给谁、什么时候发」。这种解耦设计,让开发和维护都轻松很多。
L1 — 物理层
物理层是协议栈的「手脚」。它负责把二进制比特流变成电磁波发出去。LTE 用 OFDMA,NR 更进一步,支持更灵活的 numerology 和更大的带宽。我记得有一次调试 NR 的 PDSCH 解调,发现星座图总是偏的,查了半天原来是频偏估计的算法参数没配对。嗯,物理层的坑,往往藏在细节里。
L2 — 数据链路层
L2 分三个子层:MAC、RLC、PDCP。我建议你按「调度→重传→加密」这个顺序去理解。
- MAC 层:负责调度。谁在什么时候用多少资源,都是 MAC 说了算。NR 的 MAC 比 LTE 灵活得多,支持更细粒度的调度周期。
- RLC 层:负责分段和重传。数据包太大?RLC 帮你切。丢了?RLC 帮你补。有三种模式:TM、UM、AM,项目中 AM 模式用得最多。
- PDCP 层:负责加密、完整性保护和头压缩。说白了,就是让数据更安全、更省带宽。
我曾经在项目中遇到一个诡异的问题:VoLTE 通话时断时续。查了三天,最后发现是 RLC 层的重传定时器配得太短,导致频繁触发重传,反而把信道搞拥塞了。避坑指南:L2 的参数配置,一定要结合无线环境来调,不能照搬默认值。
L3 — 网络层
L3 主要是 RRC 层。它管的是「连接」本身。手机开机后怎么接入?小区切换怎么决策?这些都是 RRC 的事。
RRC 有三种状态:IDLE、INACTIVE、CONNECTED。NR 引入了 INACTIVE 状态,这是 LTE 没有的。好处是手机可以快速恢复连接,省电又省信令。我个人觉得,这是 NR 协议栈里最巧妙的设计之一。
1.2 协议栈在基站中的位置与作用
基站不是只有协议栈。它还有射频单元、基带处理、高层接口等等。协议栈处在中间层,往上对接核心网,往下驱动射频硬件。
你可以这样理解:
- 往上:协议栈通过 S1(LTE)或 NG(NR)接口跟核心网通信。核心网发来的用户数据,协议栈要把它封装成空口能传的格式。
- 往下:协议栈把处理好的数据交给基带芯片,基带芯片再控制射频单元发出去。
说白了,协议栈就是「翻译官」和「调度员」的结合体。它既要理解核心网的指令,又要指挥硬件干活。
1.3 从 LTE 到 NR:协议栈的演进
NR 协议栈不是推倒重来的。它继承了 LTE 的很多设计,但做了几个关键改进:
- 更灵活的 numerology:子载波间隔不再是固定的 15kHz,可以选 30、60、120kHz。这带来了更低的时延和更高的频谱效率。
- 更细粒度的调度:NR 支持 mini-slot,调度粒度从 1ms 降到了 0.125ms。这对 URLLC 场景至关重要。
- 更高效的节能机制:INACTIVE 状态、DRX 增强、BWP 技术,都是 NR 的亮点。
我记得刚做 NR 协议栈时,最不习惯的就是 numerology 的灵活性。LTE 里参数都是写死的,NR 里几乎每个参数都可以配。调试起来确实麻烦,但带来的性能提升也是实实在在的。
1.4 小结
协议栈是基站软件的「灵魂」。没有它,硬件再强也白搭。理解分层架构,是入门的第一步。后面我们会深入每一层的细节,包括代码实现、算法优化、调试技巧。
下一章,我们聊聊 L1 物理层的具体实现。到时候我会分享一些我在 NR 物理层调试中踩过的坑,保证让你少走弯路。
公众号:蓝海资料掘金营,微信deep3321