在WSL2上搭建OAI SA E2E 测试场景

手把手教会你搭建SA E2E测试全套场景

背景介绍

上一篇文章介绍了用oai-cn5g-fed + UERANSIM搭建了一整套E2E的测试场景,但是5RAN和UE用的是模拟器,这次想用OAI的openairinterface5g项目的源代码替换掉UERANSIM实现整套用OAI的东西进行搭建。

第一步,5G SA Core Network部署

上篇文章已经介绍核心网的部署步骤,这里把用到的几个命令和需要修改的参数再列一次

#启动核心网:
python3 core-network.py --type start-mini --scenario 2
#添加UE的数据到mysql,这里要注意
docker exec -it mysql /bin/bash
mysql -uroot -plinux -D oai_db
INSERT INTO users VALUES ('208950000000031','380561234567','55000000000001',NULL,'PURGED',50,40000000,100000000,47,0000000000,1,0xfec86ba6eb707ed08905757b1bb44b8f,0,0,0x40,'ebd07771ace8677a',0xC42449363BBAD02B66D16BC975D77CC1);
#重启mysql
docker restart mysql

上面有3个地方要注意:

  • 208950000000031 这串数字是UE imsi,其中 208=MCC 95=MNC
  • fec86ba6eb707ed08905757b1bb44b8f对应的是UE的key
  • 63bfa50ee6523365ff14c1f45f88737d对应的UE的opc

第二步, 编译5GRAN和UE

#下载openairinterface5g官方源代码
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
#切换到开发分支
git checkout develop
#执行环境编译要用到的环境变量
cd openairinterface5g/
source oaienv
#编译要用到的模块, I表示创建依赖关系,-w SIMU表示用RF simulator,nrUE表示UE,gNB表示接入网
cd cmake_targets/
./build_oai -I -w SIMU --nrUE --gNB
#编译成功之后,会在对应目录下生成要用到的nr-softmodem和nr-uesoftmodem文件以及其他相关文件
root@brian-homebook:/home/briachen/OAI/openairinterface5g/cmake_targets/ran_build/build# ls
CMakeCache.txt       libLIB_NAS_SIMUE.a      libPHY_RU.a           libldpc.so              nr-cuup
CMakeFiles           libLIB_NAS_UE.a         libSCHED_LIB.a        libldpc_optim.so        nr-softmodem
Makefile             libMAC_NR_COMMON.a      libSCHED_NR_LIB.a     libldpc_optim8seg.so    nr-uesoftmodem
cmake_install.cmake  libMISC_NFAPI_NR_LIB.a  libSCHED_NR_UE_LIB.a  libldpc_orig.so         nrL1_UE_stats-0.log
common               libNFAPI_COMMON_LIB.a   libSCHED_RU_LIB.a     liblte_rrc.a            nrL1_stats.log
doc                  libNFAPI_LIB.a          libSCTP_CLIENT.a      libm2ap.a               nrMAC_stats.log
ldpc                 libNFAPI_PNF_LIB.a      libSECU_CN.a          libm3ap.a               nrRRC_stats.log
libCONFIG_LIB.a      libNFAPI_USER_LIB.a     libSECU_OSA.a         libngap.a               openair2
libGTPV1U.a          libNFAPI_VNF_LIB.a      libSIMU.a             libnr_rrc.a             openair3
libHASHTABLE.a       libNR_L2_UE.a           libUTIL.a             liboai_eth_transpro.so  rbconfig.raw
libITTI.a            libPHY.a                libcoding.so          liboai_transpro.so      reconfig.raw
libL2_LTE_NR.a       libPHY_COMMON.a         libdfts.so            libparams_libconfig.so
libL2_NR.a           libPHY_NR.a             libe1_if.a            librfsimulator.so
libL2_UE_LTE_NR.a    libPHY_NR_COMMON.a      libe1_pdcp_if.a       libs1ap.a
libLIB_5GNAS_GNB.a   libPHY_NR_UE.a          libf1ap.a             libx2ap.a

第三步,核对以及修改amf/5GRAN/UE的配置

  • UE配置文件ue.conf中的配置
uicc0 = {
imsi = "208990000007487";                  #与mysql中加入的UE数据中的imsi一致
key = "fec86ba6eb707ed08905757b1bb44b8f";  #与mysql中的key一致
opc= "C42449363BBAD02B66D16BC975D77CC1";   #与mysql中的opc一致
dnn= "oai";                                #无需改动
nssai_sst=1;                               #无需改动,网络分片参数
nssai_sd=1;                                #无需改动,网络分片参数
}
  • 5GRAN配置文件中要修改的参数
// Tracking area code, 0x0000 and 0xfffe are reserved values
#TAC值,要跟amf中的TAC一致
tracking_area_code  =  1; 
#mcc和mnc改成ue参数中的208/95,因为源代码的配置文件也是用这个
plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; sd = 0x1; }) });
  • amf配置文件中要修改的参数,配置文件在amf的container起来之后,进去在/openair-amf/etc/amf.conf
  GUAMI:
  {
    #MCC/MNC与RAN和UE中一致
    MCC = "208"; MNC = "95"; RegionID = "128"; AMFSetID = "1"; AMFPointer = "1"
  }

  SERVED_GUAMI_LIST = (
    #MCC/MNC与RAN和UE中一致
    {MCC = "208"; MNC = "95"; RegionID = "128"; AMFSetID = "1"; AMFPointer = "0"}
    #48bits <MCC><MNC><RegionID><AMFSetID><AMFPointer>
  );

  PLMN_SUPPORT_LIST = ({
    #MCC/MNC与RAN和UE中一致,TAC与5GRAN中的一致,SST/SD只要5GRAN和UE中能命中list的一项
    MCC = "208"; MNC = "95"; TAC = 0xa000;
    SLICE_SUPPORT_LIST = (
      {SST = 1; SD = "0xFFFFFF"}
      ,{SST = 1;SD = "1"}
      ,{SST = 222;SD = "123"}
     )
  });

第四步,安装抓包工具wirshark和tshark

#安装工具
sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt update
sudo apt install wireshark
sudo apt install tshark
#抓包命令 -f过滤报文,-w存储文件
sudo tshark -i demo-oai \
     -f "not arp and not port 53 and not host archive.ubuntu.com and not host security.ubuntu.com" \
     -w /tmp/5gcn-mini-deployment-nrf.pcap

第五步,运行各个模块

记住这些模块运行有顺序,先运行核心网,再运行5GRAN,最后运行UE,运行之前先打开一个窗口,把抓包命令先运行起来

* python3 core-network.py --type start-mini --scenario 2
* RFSIMULATOR=server ./nr-softmodem --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --rfsim --gNBs.[0].min_rxtxtime 6
* RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem -r 106 --band 78 -C 3619200000 --rfsim --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf

UE接入核心网并且成功ping通外网

UE接入成功的NGAP消息

通过ifconfig可以看到一个oaitun_ue1的interface,可以参照上文用ping的方式上外网。
参考文献

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容