手把手教会你搭建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的方式上外网。
参考文献