第3章 LTE空口抓包原理:从物理层到信令的可视化

各位好,我是老周。这一章咱们聊聊空口抓包到底是怎么一回事。很多朋友一开始接触LTE空口抓包,总觉得这东西很神秘——无线信号看不见摸不着,怎么抓?抓到了又怎么看?

其实说白了,空口抓包就是把UE和eNodeB之间通过无线电波传输的数据,重新还原成我们能看懂的信令和业务数据。今天我就把这里面的门道,一条一条掰开讲清楚。

3.1 空口接口(Uu)的特点

Uu接口是UE和eNodeB之间的无线接口。它跟有线接口最大的区别是什么?我总结了三句话:

  • 共享介质:所有用户共用同一段频谱,靠时间和频率来区分
  • 不可靠传输:信号会衰减、会干扰、会多径
  • 动态调度:资源分配是毫秒级变化的

我在项目里遇到过一种情况:某地基站覆盖正常,但用户总掉线。用探针一抓才发现,是邻区同频干扰导致PUCCH解调失败。这种问题,光看核心网日志根本查不出来。

核心要点:空口抓包的价值,就在于它能还原无线侧的真实状态。你看到的不是"用户掉线了",而是"用户在哪一毫秒、哪个RB上、因为什么原因掉线了"。

3.2 UE与eNodeB之间的信令流程

UE从开机到正常通信,要经历一套完整的信令流程。我习惯把它分成三个阶段:

阶段 主要流程 关键消息
小区搜索 UE同步下行,读取MIB/SIB PSS/SSS, PBCH, PDSCH(SIB1/SIB2)
随机接入 UE发起RRC连接请求 Msg1~Msg4, RRCConnectionRequest
连接建立 RRC连接建立+NAS附着 RRCConnectionSetup, AttachRequest

你想想看,如果UE连不上网,问题出在哪个阶段?抓包一看就清楚:

  • 如果抓不到PSS/SSS,说明小区搜索失败——可能是频点配错了
  • 如果Msg1发了但收不到Msg2,说明随机接入冲突——PRACH资源不够
  • 如果RRC Setup Complete没发出去,说明上行同步有问题——TA没调好

我的习惯:每次排查接入问题,先看RRC连接建立成功率。如果低于95%,直接抓空口看Msg3和Msg4的时序。我曾经用这个方法,半小时定位了一个基站因为PRACH配置参数错误导致30%用户无法接入的问题。

3.3 空口抓包硬件

做空口抓包,硬件是绕不开的坎。市面上主流的方案有三种,我分别说说它们的优缺点。

3.3.1 USRP(通用软件无线电外设)

USRP是业界用得最多的方案。它本质上是一个射频前端+ADC/DAC+FPGA的组合体,通过USB或网线连到电脑上,由软件做基带处理。

  • 优点:带宽大(最高56MHz),支持全双工,社区生态好
  • 缺点:贵(B210要一万多),需要高性能电脑
  • 适用场景:实验室测试、协议栈开发、教学演示

3.3.2 LimeSDR

LimeSDR是近几年的新选择,性价比很高。它用LMS7002M芯片,覆盖100kHz到3.8GHz。

  • 优点:便宜(两三千块),开源,支持MIMO
  • 缺点:驱动不太稳定,采样率有限(最高30.72MHz)
  • 适用场景:个人学习、小规模测试

3.3.3 专用探针

这是运营商和设备商用的方案。比如Anritsu的MD8430A、Rohde & Schwarz的TSMW。它们把射频接收、基带处理、协议解析集成在一个盒子里。

  • 优点:即插即用,解析深度高,支持多小区同时抓
  • 缺点:贵得离谱(几十万起步)
  • 适用场景:现网优化、故障排查、KPI验证

避坑指南:我曾经用LimeSDR在实验室抓包,结果发现抓到的数据总是丢包。折腾了两天,最后发现是USB3.0线质量不行,换了一根屏蔽线就好了。所以,硬件选型时别忘了线缆和天线这些"小配件"。

3.4 空口抓包软件

硬件只是耳朵,软件才是大脑。下面这三套软件,是我用得最多的。

3.4.1 OpenLTE

OpenLTE是一个开源的LTE实现,包含eNodeB和UE的代码。它也能用来做空口抓包。

  • 用lte_scope工具可以看时频资源图
  • 用lte_fdd_dl_scan可以扫描下行信号
  • 输出是二进制IQ数据,需要配合Wireshark解析
# 用OpenLTE抓下行数据
$ lte_fdd_dl_scan -f 1850.0e6 -g 40 -o capture.iq
# 然后用Wireshark打开
$ wireshark -r capture.pcap

3.4.2 srsLTE(现为srsRAN)

srsLTE是目前最活跃的开源LTE软件栈。它的srsue和srsenb都支持抓包功能。

  • 支持实时抓包,输出pcap文件
  • 可以同时抓上下行
  • 配合Wireshark的LTE dissector,直接看信令
# srsLTE抓包示例
$ srsue --rf.dl_freq=1850.0e6 --rf.srate=11.52e6 --pcap.enable=true --pcap.filename=ue_capture.pcap

我的推荐:如果你刚开始学,我建议用srsLTE+USRP B210的组合。这套方案我用了三年,稳定可靠,社区支持也好。遇到问题去GitHub提issue,一般两天内有人回复。

3.4.3 Wireshark配合

Wireshark是协议分析的终点站。它内置了LTE的协议解析器,支持MAC、RLC、PDCP、RRC、NAS等层级的解析。

用Wireshark看空口数据,有几个技巧:

  • 用lte-rrc过滤RRC消息
  • 用lte-nas过滤NAS消息
  • 用lte-mac.ue_id过滤特定UE
  • 用Follow LTE Stream追踪完整信令流程

小技巧:Wireshark的LTE dissector默认只解析部分消息。如果你发现某些消息显示为"Malformed Packet",别慌。去Preferences -> Protocols -> LTE-PDCCH,把"Decode PDCCH"打开,很多问题就解决了。

3.5 知识体系总览

下面这张图,是我自己画的空口抓包知识体系。它把硬件、软件、协议三个维度串在了一起。

LTE空口抓包知识体系 空口接口(Uu) 抓包硬件 抓包软件 共享介质 不可靠传输 动态调度 USRP LimeSDR 专用探针 OpenLTE srsLTE/srsRAN Wireshark UE ↔ eNodeB 信令流程 小区搜索 随机接入 连接建立 核心逻辑: 硬件负责接收射频信号 → 软件负责基带处理和协议解析 → Wireshark负责可视化呈现

这张图把本章的核心内容串起来了。你从左边看起:空口接口的特点决定了抓包的难点;中间是硬件选型,不同场景选不同设备;右边是软件工具链,从原始IQ数据到最终的信令消息。

一句话总结:空口抓包 = 硬件把无线信号变成数字IQ + 软件把IQ变成协议消息 + Wireshark把消息变成可读的信令流程。这三环缺一不可。