02 - OAI(OpenAirInterface)核心网搭建过程 - 研0

  • 环境要求:Ubuntu 16.04 LTS / CentOS 7 / Ubuntu 14.04 LTS

本文以Ubuntu 16.04.3 LTS 为例,硬件环境为core i7 6500U,16GB DDR3@1600

…广告:…
2019年OAI workshop将在北京举办,会议注册现已开放:http://oaiws2019.mikecrm.com/ESouuhz
欢迎参加本次峰会。

OAI接入网搭建:https://blog.csdn.net/BUPTOctopus/article/details/81561607
srsLTE搭建:https://blog.csdn.net/BUPTOctopus/article/details/82997806
OAI核心网最新(2019.1)develop分支搭建:
https://blog.csdn.net/BUPTOctopus/article/details/85932474
(已支持多MME,多基站及X2切换等)
OAI接入网5G NR分支(2019.3,暂未完善)搭建:


第零章:可选

  • 0.1 切换至Ubuntu 低延迟内核
sudo apt-get install linux-lowlatency
sudo apt-get install linux-image-`uname -r | cut -d- -f1-2`-lowlatency
sudo apt-get install linux-headers-`uname -r | cut -d- -f1-2`-lowlatency
sudo reboot
  • 0.2 关闭睿频
sudo apt-get install cpufrequtils
sudo vi /etc/default/cpufrequtils

添加:GOVERNOR="performance"

sudo update-rc.d ondemand disable
sudo /etc/init.d/cpufrequtils restart
cpufreq-info
#查看睿频是否成功关闭(频率变动极小)
  • 0.3 删除BIOS中的所有电源管理功能(睡眠状态,特别是C状态)
sudo vi /etc/default/grub
#在末尾添加:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable"
GRUB_CMDLINE_LINUX_DEFAULT="quiet processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll"

sudo vi /etc/modprobe.d/blacklist.conf
#在末未添加:(将Intel的电源管理加入黑名单)
blacklist intel_powerclamp

sudo reboot

2018.9更新:

  • 以下步骤我写了几个脚本和工具
    https://github.com/KujouOct/kujoutool.git
    脚本里需要修改的地方:
    ./check_mme_s6a_certificate /usr/local/etc/oai/freeDiameter/ hostname.openair4G.eur需要修改hostname
    路径按需修改。

2018.12更新:
接入网连接核心网出现sctp refused 111 错误的原因:linux内核bug,更换4.15.2.*内核可解决。


第一章 FQDN Configuration

  • 1.1 查看主机名
cat /etc/hostname
  • 1.2 在 /etc/hosts 中进行修改
sudo vim /etc/hosts
127.0.0.1     localhost     
127.0.1.1     yourhostname.openair4G.eur      yourhostname
127.0.1.1     hss.openair4G.eur               hss

第二章 核心网基础文件下载

  • 2.1 安装git
sudo apt-get update
sudo apt-get install subversion git
  • 2.2 Add a certificate from gitlab.eurecom.fr to your Ubuntu
echo -n | openssl s_client -showcerts -connect gitlab.eurecom.fr:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt 
  • 2.3 Disable certificate check completely if you do not have root access to /etc/ssl directory
git config --global http.sslverify false
  • 2.4 核心网基本文件下载
//新版
sudo git clone https://github.com/OPENAIRINTERFACE/openair-cn.git

//史前的旧版
#git clone https://gitlab.eurecom.fr/oai/openair-cn.git

//2018.08.16测试可用的版本,但不推荐使用
#sudo git clone https://github.com/herlesupreeth/openair-cn-new
###  ↑使用develop分支,手动安装apache2和php7.0,并用openair-cn分支的配置文件和run_hss来装数据库。对接华为基站测试完成。

第三章 Configure EPC machine

  • 3.1 Copy the EPC config files in /usr/local/etc/oai
cd openair-cn
sudo git checkout v0.5.0
//较老,功能少,但稳定,develop分支见另一篇
sudo git pull

sudo mkdir -p /usr/local/etc/oai/freeDiameter
sudo cp ~/openair-cn/etc/mme.conf /usr/local/etc/oai
sudo cp ~/openair-cn/etc/hss.conf /usr/local/etc/oai
sudo cp ~/openair-cn/etc/spgw.conf /usr/local/etc/oai
sudo cp ~/openair-cn/etc/acl.conf /usr/local/etc/oai/freeDiameter
sudo cp ~/openair-cn/etc/mme_fd.conf /usr/local/etc/oai/freeDiameter
sudo cp ~/openair-cn/etc/hss_fd.conf /usr/local/etc/oai/freeDiameter
  • 3.2 install certificates
cd  ~/openair-cn/scripts
sudo ./check_hss_s6a_certificate /usr/local/etc/oai/freeDiameter/ hss.openair4G.eur
sudo ./check_mme_s6a_certificate /usr/local/etc/oai/freeDiameter/ hostname.openair4G.eur

注意:
1、修改hostname
2、在某些服务器上可能出现这两个check脚本并没有正确执行的问题,将导致证书错误无法运行hss和mme,请检查/usr/local/etc/oai/freeDiameter目录下hss.cert.pem和mme.cert.pem等文件是否是新生成的,如果不是手动删除掉这两个文件然后再次执行上述./check命令。

第四章 HSS (build , config and run)

  • 4.1 build HSS
cd openair-cn
sudo git checkout v0.5.0   #新版
sudo git pull
cd scripts
sudo ./build_hss  -i

注1: -i 表示安装missing packages,一般运行一次 -i即可
注2: 可以在openair-cn/build/tools/build_helper 中添加对于Ubuntu18.04的支持
注3: 在运行./build_hss -i 时会安装MySQL和pypmyadmin。一般设置MySQL的用户名为 root ,密码为 linux ; phpmyadmin 的用户名为 root ,密码为 linux.安装成功后在浏览器中输入: http://127.0.0.1/phpmyadmin 如果成功安装MySQL和phpmyadmin的话,便可以输入phpmyadmin的用户名和密码访问数据库。

如果访问不成功,运行命令:

sudo apt-get install phpmyadmin
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo /etc/init.d/apache2 reload

此时,应该就能访问了。

  • 4.2 修改 /usr/local/etc/oai/hss.conf 内容
sudo vim  /usr/local/etc/oai/hss.conf

@MYSQL_user@改为你的用户名(比如root)
@MYSQL_pass@改为你的密码(比如linux)

  • 4.3 compile & run HSS
cd ~/openair-cn
cd scripts
sudo ./build_hss -c
sudo ./run_hss -i ~/openair-cn/src/oai_hss/db/oai_db.sql 
(上面这步会安装数据库,不要多次运行,再次运行会重装数据库)

HSS 运行结果:
02 - OAI(OpenAirInterface)核心网搭建过程 - 研0_第1张图片

  • 4.4 配置数据库
    浏览器访问 http://127.0.0.1/phpmyadmin ,输入用户名和密码,在oai_db数据库里修改/增加一会儿要进行测试的SIM卡信息,例如SIM卡是208930100001111,key值为8baf473f2f8fd09487cccbd7097c6862,
    OPc为e734f8734007d6c5ce7a0508809e7e9c
    则:
mmeidentity 里添加yourhostname.openair4G.eur项
users里修改imsi=208930100001111的key值为8baf473f2f8fd09487cccbd7097c6862
users里修改OPc为e734f8734007d6c5ce7a0508809e7e9c
同时修改它的mmeidentity_idmmeidentity为你刚刚在mmeidentity里添加的新项的ID。

或者用命令行:(key是mysql的关键字,好奇前辈是怎么写进去的……)

sudo mysql -u root -p
use oai_db;
select * from mmeidentity;
update mmeidentity set mmehost="kujou.openair4G.eur" where idmmeidentity=6;
update users set mmeidentity_idmmeidentity=6 where imsi=208930100001111;

第五章 MME (config , build , run)

  • 5.1 修改 /usr/local/etc/oai/mme.conf 中的内容
sudo vim /usr/local/etc/oai/mme.conf

NETWORK_INTERFACS中将MME_INTERFACE_NAME_FOR_S1_MME网卡和IP改为自己的;
下面的MME_INTERFACE_NAME_FOR_S11_MME网卡用lo,地址改为自己的。

  • 5.2修改 /usr/local/etc/oai/freeDiameter/mme_fd.conf的内容
sudo vim /usr/local/etc/oai/freeDiameter/mme_fd.conf

identity的yang.openair4G.eur 改为yourhostname.openair4G.eur

  • 5.3 compile & run MME (注意: 先运行HSS)
sudo ./build_mme  -i
sudo ./build_mme  -c
sudo ./run_mme

MME运行结果:
02 - OAI(OpenAirInterface)核心网搭建过程 - 研0_第2张图片
注意,如果mme的IP没有配置正确,会报以下错误:

02 - OAI(OpenAirInterface)核心网搭建过程 - 研0_第3张图片

第六章 SPGW (config , build , run)

  • 6.1 修改 /usr/local/etc/oai/spgw.conf 内容
sudo vim /usr/local/etc/oai/spgw.conf

02 - OAI(OpenAirInterface)核心网搭建过程 - 研0_第4张图片
同理,SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP改成自己的。
PGW_INTERFACE改成自己的。
PGW_MASQUERADE_SGI改为yes。
注意: 172.16.0.0/12自己可以不用修改,这是用来后面给UE动态分配IP用的

  • 6.2 compile & run SPGW
sudo ./build_spgw -i
sudo ./build_spgw -c
sudo ./run_spgw

SPGW运行结果(得先运行HSS)

02 - OAI(OpenAirInterface)核心网搭建过程 - 研0_第5张图片

  • 7.1 jio本
    一键启动核心网的脚本
#!/bin/sh
YOURNAME='kujou'
while :
do
  stillRunning=$(ps -A | grep "run_hss" |grep -v "grep")
  if [ "$stillRunning" ] ; then
    echo "HSS was already started by another way" 
  else
  pkill -9 hss
    pkill -9 mme
    pkill -9 spgw
    echo "HSS was not started" 
    echo "Starting service ..." 
    /home/$YOURNAME/openair-cn/scripts/run_hss &
  fi
  
  sleep 2  

  stillRunning=$(ps -A | grep "run_mme" |grep -v "grep")
  if [ "$stillRunning" ] ; then
    echo "MME was already started by another way" 
    
  else
  pkill -9 hss
    pkill -9 mme
    pkill -9 spgw
    echo "MME was not started" 
    echo "Starting service ..." 
    /home/$YOURNAME/openair-cn/scripts/run_mme &
    
  fi

  sleep 2

  stillRunning=$(ps -A | grep "run_spgw" |grep -v "grep")
  if [ "$stillRunning" ] ; then
    echo "SPGW was already started by another way" 

  else
  pkill -9 hss
    pkill -9 mme
    pkill -9 spgw
    echo "SPGW was not started" 
    echo "Starting service ..." 
    /home/$YOURNAME/openair-cn/scripts/run_spgw &
    
  fi
  sleep 6
done


一键关闭核心网的脚本

#!/bin/bash

sudo pkill -9 hss

sudo pkill -9 mme

sudo pkill -9 spgw

sudo ps -A | grep hss
sudo ps -A | grep mme
sudo ps -A | grep spgw


02 - OAI(OpenAirInterface)核心网搭建过程 - 研0_第6张图片

你可能感兴趣的:(基础,-,研0)