# openairinterface **Repository Path**: nr-mirror-stack/openairinterface ## Basic Information - **Project Name**: openairinterface - **Description**: OAI 2024.w12 Mirror - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-02 - **Last Updated**: 2024-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Linux简单操作上手指南 按下`Ctrl+Alt+T`打开Ubuntu默认的终端模拟器(之后简称为终端)。在终端中,可以输入一些常用的指令以实现各种功能。常用的一些指令如下: - ifconfig: 用于查看当前的网络情况 - clear: 清空当前的终端模拟器中的屏幕内容 - cd: 更改当前终端模拟器目录。 ## 实验一:配置Free5GC核心网 0. 由于一些网络访问的原因,官方的Free5GC的代码访问与下载可能受限。因此本实验中已安装了最新的稳定版本`v3.3.0`的Free5GC核心网,感兴趣的同学可以参考[官方安装教程](https://free5gc.org/guide/3-install-free5gc/)自己下载并编译(此步骤需要删除现有Free5GC,不建议)。 1. 你可以通过按下`win+E`键打开文件浏览器,进入free5gc文件夹。在开始前,需要在你的终端里输入如下命令完成数据的接受转发设置(涉及多行命令最好一行一行输入): ```bash sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -o <上网网卡名称> -j MASQUERADE sudo systemctl stop ufw sudo iptables -I FORWARD 1 -j ACCEPT ``` 其中的上网网卡名称可以通过在终端中输入`ifconfig`命令并回车即可查看: ![image-20240410202746366](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410202746366.png) 这里由于我是使用wlo1无线网卡进行上网的,所以我的上网网卡为`wlo1`,对应的IP地址为`192.168.0.103`。 2. 在终端中输入`ifconfig`命令并回车即可查看网络连接状态,记录下当前运行free5gc的主机ip地址与上网网卡名称。编辑Free5gC文件夹中`config`文件夹的`amfcfg.yaml`、`smfcfg.yaml`以及`upfcfg.yaml`: - 修改`amfcfg.yaml`中的`ngapIpList`的地址为当前主机上网网卡的ip地址(下列修改内容相同)。 - 修改`smfcfg.yaml`中的`N3`接口`endpoints`的ip地址。 - 修改`upfcfg.yaml`中的`ifList`中的`addr`的ip地址。 另外,如果需要检查MCC和MNC是否和466、92对应上。 3. 运行Free5GC网页控制台。你需要打开终端,进入到free5GC项目目录,然后输入: ```bash cd /webconsole sudo ./bin/webconsole ``` 网页控制端就会运行在127.0.0.1:5000这里。其中的用户名是`admin`,密码是`free5gc`。 4. 启动核心网。在free5gc的目录下,终端运行: ```bash sudo ./run.sh ``` 对应的,如果要关闭核心网,则在按下终端按下`ctrl+c`后再输入 ```bash sudo ./force_kill.sh ``` 以确保完全关闭。 5. 添加用户订阅信息。这个要和模拟UE的信息对应上,具体而言是openairinterface文件夹中的`openair3/UICC/usim_interface.c`中的第四十行左右的位置: ![image-20240410202159935](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410202159935.png) 在你的网页控制台中,右上角有一个`New Subscriber`的按钮,点击即可新建订阅用户: ![image-20240410203546326](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410203546326.png) 其中的PLMN ID是46692,IMSI除了前五位不要改后面可以改成自己的学号中的数字部分,但保证位数是15位即可,同时保证和你的模拟UE信息对应上就即可。添加完后拉到最下方点击submit按钮即可完成订阅用户的信息添加。 ![image-20240410203632950](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410203632950.png) ## 实验二:仿真UE连接 上一步中我们配置好了核心网,接下来我们要进入openairinterface文件夹运行模拟基站以及模拟UE。 1. OAI是使用CMake编译的大型C语言项目,在使用其程序前需要修改与编译代码。本次代码需要修改一处地方,即`openair3/NAS/NR_UE/nr_nas_msg_sim.c`中约454行。将`if 0` 变更为 `if 1`,然后保存。![image-20240410204322105](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410204322105.png)随后,我们切换到OAI的目录下,使用如下命令进行编译: ```bash cd openairinterface cd cmake_targets/ sudo ./build_oai -w USRP --gNB --nrUE --ninja ``` 编译完成后,会有绿色的`BUILD SHOULD BE SUCCESSFUL`的字样提醒。 2. 创建新的命名空间。输入如下指令,根据自身情况进行替换: ```bash sudo ip netns delete ueNameSpace2 sudo ip link delete v-eth2 sudo ip netns add ueNameSpace2 sudo ip link add v-eth2 type veth peer name v-ue2 sudo ip link set v-ue2 netns ueNameSpace2 sudo ip addr add 10.201.1.1/24 dev v-eth2 sudo ip link set v-eth2 up sudo iptables -t nat -A POSTROUTING -s 10.201.1.0/255.255.255.0 -o {你上网的网卡名称} -j MASQUERADE sudo iptables -A FORWARD -i {你上网的网卡名称} -o v-eth2 -j ACCEPT sudo iptables -A FORWARD -o {你上网的网卡名称} -i v-eth2 -j ACCEPT sudo ip netns exec ueNameSpace2 ip link set dev lo up sudo ip netns exec ueNameSpace2 ip addr add 10.201.1.2/24 dev v-ue2 sudo ip netns exec ueNameSpace2 ip link set v-ue2 up ``` 3. 修改配置文件。找到`targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf`,修改`amf_ip_address`中的ipv4字段为你的主机上网IP;同时修改下方`NETWORK_INTERFACES`中的字段: ![image-20240410205117105](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410205117105.png) 4. 启动基站:终端输入如下命令: ```bash cd ~/openairinterface cd cmake_targets/ran_build/build sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --rfsim --sa ``` 此时应该可以观察到有NGAP信令传输,建立基站与核心网AMF的连接: ![image-20240410205333697](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410205333697.png) 5. 接入模拟UE。另开一个终端输入如下命令: ```bash sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --sa --rfsim ``` 观察基站与模拟UE的终端输出信息: ![image-20240410210116133](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410210116133.png) 观察核心网可观测到该模拟UE以连接进核心网。 ![image-20240410210150971](C:\Users\cybercolyce\AppData\Roaming\Typora\typora-user-images\image-20240410210150971.png) 如果要完成扩展题3,那么需要修改基站配置文件中的amf地址为目标主机的ip地址;网络接口部分中的网口更改为自身上网的网口,IP改为运行基站的IP。同时需要在运行基站得主机上执行: ```bash sudo route add -net 10.60.0.0 netmask 255.255.255.0 gw <运行核心网得IP地址> ``` 同时核心网主机要执行: ```bash sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -o <上网网卡名称> -j MASQUERADE sudo systemctl stop ufw sudo iptables -I FORWARD 1 -j ACCEPT ``` ## 实验三(扩展):真实UE与射频连接演示 对于感兴趣且实验二已完成的同学,可考虑使用真实射频设备接入。你需要重新启动电脑已完成该实验。 ## Free5GC配置 ``` sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -o <上网网卡> -j MASQUERADE sudo iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400 sudo systemctl stop ufw sudo systemctl disable ufw ``` ## OAI配置 ```bash sudo ip netns delete ueNameSpace2 sudo ip link delete v-eth2 sudo ip netns add ueNameSpace2 sudo ip link add v-eth2 type veth peer name v-ue2 sudo ip link set v-ue2 netns ueNameSpace2 sudo ip addr add 10.201.1.1/24 dev v-eth2 sudo ip link set v-eth2 up sudo iptables -t nat -A POSTROUTING -s 10.201.1.0/255.255.255.0 -o eno1 -j MASQUERADE sudo iptables -A FORWARD -i eno1 -o upfgtp -j ACCEPT sudo iptables -A FORWARD -o eno1 -i upfgtp -j ACCEPT sudo ip netns exec ueNameSpace2 ip link set dev lo up sudo ip netns exec ueNameSpace2 ip addr add 10.201.1.2/24 dev v-ue2 sudo ip netns exec ueNameSpace2 ip link set v-ue2 up ``` 切换到对应位置进行命令执行。 ```bash sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --sa -E --continuous-tx ``` ### UE配置 UE需要使用烧录信息的白卡提前写入,当前手机的信息为: ```bash imsi:466920000000001 K*:00112233445566778899aabbccddeeff OPc:000102030405060708090a0b0c0d0e0f ``` 需要配置APN。