free5gc + OAI gNB + OAI nrUE

网络拓扑:
[free5gc核心网] --网线-- [OAI gNB/eNB ---- 127.0.0.1::4043 ---- OAI UE]
一台Ubuntu运行free5gc充当核心网,另一台Ubuntu主机运行OAI gNB和模拟UE。在Ubuntu 20.04.6LTS版本可行。

Free5GC安装见 free5gc+ueransim文章

OAI基站与射频仿真的安装与使用

下载编译源码

cd ~
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
cd ~/openairinterface5g/cmake_targets
./build_oai -I --gNB --nrUE -w SIMU --ninja
  • -I: 安装所有的必需库,一般来说只需要安装一次。
  • -w: 用于选择射频设备前端。可选USRP或者SIMU,后者是单独构建RFSimulator,前者是除了USRP外也同时构建RFSimulator,所以一般我们选择USRP。
  • –gNB: 用于构建nr-softmodem和nr-cuup的可执行文件以及其所需的库。
  • –nrUE: 用于构建nr-uesoftmodem的可执行文件以及其所需的库。
  • –ninja: 使用ninja构建工具,可以加速编译过程。
  • -c: 清空工作区,并强制进行一个完全的构建。

RF Simulator

RF Simulator测试是指,在没有真实的RF板的情况下,使用RF Simulator替代真实的RF板子,进进行OAI功能性测试。当然,性能可能要比有真实的RF板时差很多。

在RF Simulator的情况下有,:

  • “noS1” mode:在这种模式下,没有核心网,形成基站和UE之间的传输通道,在两侧进行数据传输数据。通过TUN接口注入/接收用户平面流量,而不是随机生成

  • “phy-test” mode:在这种模式下,在每个MAC层调度周期内,基站随机的发送一些DL下行数据,而UE随机地发送一些UL上行数据。

系统架构说明:

  • 如果Linx-1(UE)和Linux-2(基站)是同一个服务器,则IP数据包不会通过oaitun_enb1和oaitun_ue1这两个物理接口的驱动,直接被IP层间直接路由,从而导致数据包不会经过空口协议栈。

  • 网络接口oaitun_ue1,是UE可执行程序nr-uesoftmodem创建的接口驱动,它调用UE的空口协议栈进行数据包的收发。

  • 网络接口oaitun_enb1,是基站可执行程序nr-softmodem创建的接口驱动,它调用基站的空口协议栈进行数据包的收发。

无核心网仿真测试

配置文件名称说明

  • cu/du/gnb/enb:指明设备的部署类型
  • sa:5G独立部署,接入核心网时使用
  • bandxx:频段
  • fr1 or fr2:5G 频谱区间
  • tmx:传输模式
  • PRB: 分配给SCH信道的PRB个数
  • usrpbxxx:OAI支持的实际RF硬件的型号。
运行基站
cd cmake_targets/ran_build/build
sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.106PRB.usrpn300.conf --parallel-config PARALLEL_SINGLE_THREAD --rfsim --phy-test --noS1 --nokrnmod 1
  • RFSIMULATOR=server:设定基站的RFSIMULATOR为TCP server

  • ./nr-softmodem:NR 基站可执行程序

  • –parallel-config PARALLEL_SINGLE_THREAD:创建独立的并行线程

  • –rfsim:采用RFSIMULATOR,而不是正式的RF硬件

  • –phy-test:启动基站的phy test功能,这种功能,每一次调度周期,基站会随机产生一些DL下行数据进行发送。

  • –nokrnmod 1:没有核心网时设置该flag

  • -d:图形显示星座图或其他结果 (Window端需要使用MobaXterm这样的远程终端)

  • -O选项指明配置文件的全路径

  • 在 gNB 中,–sa 标志执行以下操作:RRC根据配置文件对SIB1进行编码,通过NR-BCCH-DL-SCH传输。

  • do-ra 用于在无竞争模式下运行NR随机访问过程,为了运行RA, gNB和UE都需要——do-ra标志。

sudo ./nr-uesoftmodem --rfsim --phy-test --noS1 --nokrnmod 1 --rfsimulator.serveraddr 127.0.0.1

基站RFSIMULATOR的IP地址,如果在同一个Linux服务器上,可以使用127.0.0.1。

UE 在 --sa 模式下的命令行参数:

  • -C:下行链路载波频率,单位 Hz(默认值 0)
  • –CO:上行链路 FDD 频率偏移,单位 Hz(默认值 0)
  • –numerology:数字索引(默认值 1)
  • -r:以 RB 表示的带宽(默认值 106)
  • –band:NR 波段编号(默认值 78)
  • –ssb:SSB 起始子载波(默认值 512)
    -E: 降低采用频率(3/4的采样率),只有在20M带宽时有效。

在 UE 处,–sa 标志将解码 SIB1 并启动 SA 的 5G NR 初始接入程序:

  • 5G-NR RRC 连接设置
  • NAS 认证和安全
  • 5G-NR AS 安全程序
  • 5G-NR RRC 重配置
  • 开始下行和上行数据传输
  • 基站可以与核心网连接
运行结果

ping包收到相应数据,因为Linx-1(UE)和Linux-2(基站)是同一个服务器,IP数据包不会通过oaitun_enb1和oaitun_ue1这两个物理接口的驱动,直接被IP层间直接路由,从而导致数据包不会经过空口协议栈。通过netstat -tulnp 查看端口状态。
在这里插入图片描述

free5gc核心网+OAI仿真

核心网配置
 修改对应的AMF,SMF,UPF网元里的plmn与IP地址(与free5gc+ueransim中类似)
配置ue和gNB

OAI tag:2023.w20
可参考官方文档TESTING_5GSA_setup.md
gNB的一般配置文件格式参照targets/PROJECTS/GENERIC-NR-5GC/CONF/*.conf中的格式修改,修改内容有如下几个关键点:plmn中的mmcmnc;以及amf对应的ip地址和gNB和amf之间的接口地址网卡名称

plmn_list = ({ mcc = 466; mnc = 92; mnc_length = 2; snssaiList = ({ sst = 1 }) });
...
mf_ip_address      = ( { ipv4       = "192.168.202.128"; //核心网的ip地址
                                      ipv6       = "192:168:30::17";
                                      active     = "yes";	//这个不用管
                                      preference = "ipv4";
                                    }
                                  );

         NETWORK_INTERFACES :
            {
                GNB_INTERFACE_NAME_FOR_NG_AMF            = "ens33";				//gNB主机上网的网卡名称
                GNB_IPV4_ADDRESS_FOR_NG_AMF              = "192.168.202.130";	//gNB主机上网的IP地址
                GNB_INTERFACE_NAME_FOR_NGU               = "ens33";				//gNB主机上网的网卡名称
                GNB_IPV4_ADDRESS_FOR_NGU                 = "192.168.202.130";	/gNB主机上网的IP地址
                GNB_PORT_FOR_S1U                         = 2152; # Spec 2152
            };

UE的配置比较简单,只要和WebConsole中对应起来即可:

#define UICC_PARAMS_DESC {                                              \
      {"imsi",             "USIM IMSI\n",          0,         .strptr=&uicc->imsiStr,              .defstrval="466920000000003",           TYPE_STRING,    0 }, \
      {"nmc_size"          "number of digits in NMC", 0,      .iptr=&uicc->nmc_size,               .defintval=2,         TYPE_INT,       0 }, \
      {"key",              "USIM Ki\n",            0,         .strptr=&uicc->keyStr,               .defstrval="8baf473f2f8fd09487cccbd7097c6862", TYPE_STRING,    0 }, \
      {"opc",              "USIM OPc\n",           0,         .strptr=&uicc->opcStr,               .defstrval="8e27b6af0e692e750f32667a3b14605d", TYPE_STRING,    0 }, \
      {"amf",              "USIM amf\n",           0,         .strptr=&uicc->amfStr,               .defstrval="8000",    TYPE_STRING,    0 }, \
      {"sqn",              "USIM sqn\n",           0,         .strptr=&uicc->sqnStr,               .defstrval="16f3b3f70fc9",  TYPE_STRING,    0 }, \
      {"dnn",              "UE dnn (apn)\n",       0,         .strptr=&uicc->dnnStr,               .defstrval="internet",     TYPE_STRING,    0 }, \
      {"nssai_sst",        "UE nssai\n",           0,         .iptr=&uicc->nssai_sst,              .defintval=1,    TYPE_INT,    0 }, \
      {"nssai_sd",         "UE nssai\n",           0,         .iptr=&uicc->nssai_sd,               .defintval=0x010203,  TYPE_INT,       0 }, \
      {"imeisv",           "IMEISV\n",             0,         .strptr=&uicc->imeisvStr,            .defstrval="6754567890123413",           TYPE_STRING,    0 }, \
  };000000

需要注意的是nssai_sd使用的是十六进制数,修改完成后需要重新编译nrUE,./build_oai --nrUE --ninja

运行基站
sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --rfsim --sa
运行UE仿真
cd ~/openairinterface5g
source oaienv
cd cmake_targets/ran_build/build
sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • RSRP:Reference Signal Receiving Power,参考信号接收功率。
    它是在某个Symbol(符号)内承载参考信号的所有RE(资源元素)上接收到的信号功率的平均值。范围在-44与-140之间,越大越好。

  • RSSI:Received Signal Strength Indication,接收的信号强度指示。它随距离的增大而衰减,通常为负值,该值越接近零说明信号强度越高。RSSI持续过低,说明基站收到的上行信号太弱,可能导致解调失败。RSSI持续过高,说明收到的上行信号太强,相互之间的干扰太大,也影响信号解调。

  • RSRQ:Reference Signal Receiving Quality,参考信号接收质量。它是RSRP和RSSI的比值,范围在-3于-19.5之间,越大越好。它主要是根据信号质量来对不同LTE候选小区进行排序。这种测量用作切换和小区重选决定的输入。

  • SINR:Signal to Interference plus Noise Ratio,信号与干扰加噪声比。它表示接收到的有用信号的强度与接收到的干扰信号(噪声和干扰)的强度的比值。

  • CQI-Channel Quality Indication,信道质量指示,指示意味着CQI信息来自于终端的测量,然后汇报给基站,因此,CQI一般指的是下行信道质量。基站MAC层调度器,会根据UE反馈的CQI信息,选择合适的调度算法和下行数据块大小,以保证UE在不同的无线环境下获取最佳的下行性能。

遇到的问题

在这里插入图片描述

可能与版本有关,更换更早版本后能够正常运行。
以上是在虚拟机下基于两个主机的组网流程;在双系统单台电脑下进行组网,会出现IP接口被占用等问题,猜测需要使用docker搭建核心网,再进行相关配置才能成功组网。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OAI (OpenAirInterface) GNB(Node B)配置文件是用于配置无线通信基站的文件。GNB5G网络中的关键基础设施,它负责与移动设备进行通信并提供无线网络服务。 GNB配置文件包含了GNB所需的各种参数和设置,以确保其正常运行和与其他网络元素的互操作性。这些配置文件由网络运营商或网络工程师根据具体的网络需求进行编写和定制。 GNB配置文件中的参数包括但不限于: 1. 射频参数:如频段、载波频率、功率等,用于确定GNB的无线信号传输参数; 2. 网络参数:如移动国家码(MCC)、移动网络码(MNC)、跟踪区域码(TAC)等,用于标识和管理GNB所在的无线网络; 3. 安全参数:如安全算法、密钥等,用于保障通信的安全性; 4. 连接参数:如邻区定义、同步设置等,用于与其他相邻基站和网络节点之间的连接与协调; 5. 配置参数:如系统带宽、天线配置等,用于调整GNB的工作方式和性能。 配置文件的编写和修改通常需要专业的知识和工具来完成。一旦配置文件完成,它可以通过网络传输或物理介质的方式加载到GNB设备中。GNB设备在启动时将读取这些配置文件,并根据文件中的参数进行相关的初始化和设置,从而实现无线通信基站的正常工作。 总之,GNB配置文件是用于配置和管理5G网络中无线通信基站的重要文件,它包含了各种参数和设置,用于确保基站的正常运行和与其他网络元素的协调。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值