srsRAN 是SRS开发的开源 4G 软件无线电套件。
srsRAN套件包括:
- srsUE - 具有原型 5G 功能的全栈 SDR 4G UE 应用程序
- srsENB - 全栈 SDR 4G eNodeB 应用程序
- srsEPC——具有 MME、HSS 和 S/P-GW 的轻量级 4G 核心网络实现
安装系统
Ubuntu 20.04
USRP B210
sudo add-apt-repository ppa:ettusresearch/uhd
sudo apt-get update
sudo apt-get install libuhd-dev uhd-host
//镜像下载
sudo uhd_images_downloader
//查找设备
sudo uhd_find_devices
//查看设备信息
sudo uhd_usrp_probe
srsRAN
sudo add-apt-repository ppa:softwareradiosystems/srsran
sudo apt-get update
sudo apt-get install srsran -y
运行 srsUE
srsUE 是一款 4G LTE UE 调制解调器,其原型 5G NR 功能完全以软件实现。srsUE 以应用程序的形式运行在基于 Linux 的标准操作系统上,可连接到任何 LTE 网络并提供具有高速移动连接的标准网络接口。
运行
开一个终端,运行:
sudo srsue
软然后开一个终端去ping基站
ping 172.16.0.1
就可以看到UE发信号了。
配置UE得参数,配置:ue.conf
sudo srsue ~/.config/srsran/ue.conf
srsUE 默认使用虚拟 USIM 卡,参数来自ue.conf。这些参数包括:
ALGO - 要使用的身份验证算法(MILENAGE 或 XOR)
IMSI——USIM 的唯一标识符
K - EPC 中与 HSS 共享的密钥
OP 或 OPc - 操作员代码(仅用于 MILENAGE 算法)
要成功连接到网络,这些参数需要与 EPC 的 HSS 中的参数相匹配。MILENAGE 是大多数网络中使用的算法,XOR 算法主要由测试设备和测试 USIM 卡使用。OP 是网络范围的运营商代码,OPc 是 USIM 特定的加密运营商代码 - 两者都受 srsUE 支持。
终端架构
srsUE应用程序包括第1层、第2层和第3层,如上图所示。
物理层 (PHY) 位于 UE 协议栈的底层,通过空中接口传输来自 MAC 的所有信息。它负责链路自适应、功率控制、小区搜索和小区测量。
媒体访问控制 (MAC) 层将一个或多个逻辑信道之间的数据复用为传输块 (TB),然后将其传递到 PHY 层或从 PHY 层传递出去。MAC 负责与 eNodeB 进行控制和调度信息交换、重传和纠错 (HARQ) 以及逻辑信道之间的优先级处理。
无线链路控制 (RLC) 层可以以三种模式之一运行:透明模式 ™、非确认模式 (UM) 和确认模式 (AM)。RLC 管理多个逻辑信道或承载器,每个逻辑信道或承载器都以这三种模式之一运行。透明模式承载器只需通过 RLC 传递数据。非确认模式承载器执行数据单元的连接、分段和重组、重新排序和重复检测。确认模式承载器还执行丢失数据单元的重新传输和重新分段。
分组数据汇聚协议 (PDCP) 层负责控制和数据平面流量的加密、控制平面流量的完整性保护、重复丢弃以及控制和数据平面流量到/从 RRC 层和 GW 层的按顺序传送。如果支持,PDCP 层还会执行 IP 数据的报头压缩 (ROHC)。
无线资源控制 (RRC) 层管理 UE 和 eNodeB 之间的控制平面交换。它使用网络广播的系统信息来配置 UE 的较低层,并处理与 eNodeB 的 RRC 连接的建立、维护和释放。RRC 管理小区搜索以支持小区选择以及小区测量报告和相邻小区之间切换的移动性控制。RRC 还负责处理和响应来自网络的寻呼消息。最后,RRC 管理密钥管理的安全功能以及无线承载的建立、配置、维护和释放。
非接入层 (NAS) 层管理 UE 与核心网络 (EPC) 内的实体之间的控制平面交换。它控制 PLMN 选择并管理网络附加程序,与 EPC 交换标识和身份验证信息。NAS 负责建立和维护 UE 与 EPC 内的 PDN 网关之间的 IP 连接。
srsUE 中的网关 (GW) 层负责创建和维护 TUN 虚拟网络内核接口,模拟 Linux 操作系统中的网络层设备。GW 层允许 srsUE 作为用户空间应用程序运行,并使用数据平面 IP 数据包进行操作。
SRS UE具有以下特点:
LTE 版本 10 与版本 15 的功能一致
原型 5G NSA 和 SA 支持
TDD 和 FDD 配置
测试的 LTE 带宽:1.4、3、5、10、15 和 20 MHz
测试的 5G SA 带宽:5、10、15 和 20 MHz
传输模式 1(单天线)、2(发射分集)、3(CCD)和 4(闭环空间复用)
可手动配置 DL/UL 载波频率
支持XOR/Milenage认证的软USIM
通过 PC/SC 支持硬 USIM
Snow3G 和 AES 完整性/加密支持
Linux OS 的 TUN 虚拟网络内核接口集成
具有每层日志级别和十六进制转储的详细日志系统
MAC 和 NAS 层 wireshark 数据包捕获
命令行跟踪指标
详细输入配置文件
演进型多媒体广播和多播服务 (eMBMS)
基于频率的 ZF 和 MMSE 均衡器
Intel SSE4.1/AVX2 (+150 Mbps) 中提供高度优化的 Turbo 解码器
EPA、EVA 和 ETU 3GPP 信道的信道模拟器
QoS 支持
20 MHz MIMO TM3/TM4 或 2xCA 配置下 150 Mbps DL(QAM256 下 195 Mbps)
20 MHz SISO 配置下 DL 为 75 Mbps(QAM256 配置下为 98 Mbps)
10 MHz SISO 配置下 36 Mbps DL
支持 Ettus USRP B2x0/X3x0 系列、BladeRF、LimeSDR
运行 srsENB 和 srsEPC
运行
请开两个终端,第一个运行:
sudo srsepc
第二个运行:
sudo srsenb
可以通过配置文件配置 eNodeb : enb.conf此配置文件提供与小区配置、工作频率、传输功率级别、日志级别等相关的参数。要使用已安装的配置文件运行 srsENB,请使用。sudo srsenb ~/.config/srsran/enb.conf
除了顶层配置文件之外,srsENB 还使用单独的文件来配置 SIB(sib.conf)、无线电资源(rr.conf)和数据承载(drb.conf)。这些附加配置文件列在顶层 enb.conf 中的 [enb_files] 下,并为每个文件提供默认值。
一个关键的 eNodeB 参数是 enb.mme_addr,它指定核心网络 MME 的 IP 地址。默认配置假设 srsEPC 在同一台机器上运行。
srsENB LTE eNodeB 具有以下特点:
LTE 版本 10 与版本 15 的功能一致
原型 5G NR 支持 5G NSA 和 SA
FDD 配置
测试带宽:1.4、3、5、10、15 和 20 MHz
传输模式 1(单天线)、2(发射分集)、3(CCD)和 4(闭环空间复用)
基于频率的 ZF 和 MMSE 均衡器
演进型多媒体广播和多播服务 (eMBMS)
Intel SSE4.1/AVX2 (+150 Mbps) 中提供高度优化的 Turbo 解码器
具有每层日志级别和十六进制转储的详细日志系统
MAC层wireshark抓包
命令行跟踪指标
详细输入配置文件
EPA、EVA 和 ETU 3GPP 信道的信道模拟器
基于 ZeroMQ 的 I/Q 伪 RF 驱动程序
ENB 内和 ENB 间 (S1) 移动性支持
具有类似 FAPI 的 C++ API 的比例公平和循环 MAC 调度程序
SR 支持
支持定期和非定期 CQI 反馈
标准 S1AP 和 GTP-U 接口至核心网络
20 MHz MIMO TM3/TM4 下行速率为 150 Mbps,商用 UE 可实现(QAM256 下行速率为 195 Mbps)
采用 SISO 配置,使用商用 UE,下行速率为 75 Mbps
商用 UE 在 20 MHz 下实现 50 Mbps UL
用户平面加密
srsEPC 是完整 LTE 核心网络 (EPC) 的轻量级实现。srsEPC 应用程序以单个二进制文件运行,但提供家庭用户服务 (HSS)、移动管理实体 (MME)、服务网关 (S-GW) 和分组数据网络网关 (P-GW) 等关键 EPC 组件。srsEPC 应用程序不适用于部署,但可用于测试。
上图说明了EPC的主要组件以及它们之间的主要接口。
HSS:归属用户服务(HSS)是用户数据库。它存储用户 ID、密钥、使用限制等信息。它负责对用户访问网络进行身份验证和授权。
MME:移动管理实体 (MME) 是网络中的主要控制元素。它处理移动性和附加控制消息。它还负责寻呼空闲模式下的 UE。
S-GW:S-GW 是用户的主要数据平面网关,因为它为 UE 提供移动锚点。它充当 IP 路由器,帮助在 eNB 和 P-GW 之间建立 GTP 会话。
P-GW:分组网关 (P-GW) 是与外部网络的接触点。它强制执行用户会话的 QoS 参数。
为了提供完整的端到端 LTE 网络,请将 srsEPC 与 srsENB 和 srsUE 一起使用。
为了使 UE 能够连接到互联网,必须进行 IP 伪装。如果没有伪装,Linux 内核将不会执行从一个子网到另一个子网的数据包转发。
为了实现此功能,您可以运行一个便捷脚本,其中out_interface是将 PC 连接到互联网的接口。
sudo srsepc_if_masq <out_interface>
参考
https://www.srslte.com/4g