让我们搭建一个EPC核心网玩玩
其实,本来的计划时搭建一个5GC+gNodeB,但是因为施工队没空帮忙过来安装5G BBU,刚好手头上有之前单位采购用来做测试佰才邦4G皮基站设备,因此打算先部署一个EPC核心网来尝试一下接入eNodeB设备看看。
概述
OAI的源码分为两部分,分别为EPC和eNodeB,这里由于我使用了成品eNodeB设备,因此不需要搭建额外的eNodeB网元设备。EPC跑起来后直接在eNodeB设置好MME的S1接口地址即可。OAI的EPC核心网包含:MME,SPWG(PGW和SGW合设),HSS等网元,HSS的采用Mysql数据库作为UE的数据存储单元。
我的设备及网络拓扑
我在Mac上用VirtualBox虚拟化了一台Ubuntu16.04的虚拟机作为EPC,eNodeB设备采用Baicells Neutrino 小型室内基站
我的网络拓扑结构很简单,但是不是官网推荐的EPC采用双网卡连接的方式,1台千兆路由器挂1台千兆交换机,交换机再下挂1台EPC虚拟机和1台eNodeB。
EPC IP:192.168.123.153
eNodeB IP:192.168.123.110
宿主MAC IP:192.168.123.230
开搞
按照官方推荐的系统,这里采用了ubuntu16.04 版本,OAI官方推荐使用4.7.7-oaiepc内核,但是我第一次使用默认的generic也可以成功编译,但是为了一次顺利编译,建议还是使用官方推荐的内核版本。这里我给出更换内核的版本,但是为了图方便,我这里使用默认的generic内核。
更换Ubuntu内核版本
git clone https://gitlab.eurecom.fr/oai/linux-4.7.x.git
cd linux-4.7.x
sudo dpkg -i linux-headers-4.7.7-oaiepc_4.7.7-oaiepc-10.00.Custom_amd64.deb linux-image-4.7.7-oaiepc_4.7.7-oaiepc-10.00.Custom_amd64.deb
sudo reboot
注意:gitlab.eurecom.fr 非常的慢,若没有梯子,可能需要耐心等等!(MLGB)
git OAI EPC源码
注意:gitlab.eurecom.fr现在已经不对外直接开放,需要账号才能git下来,我之前尝试从CSDN大神那边直接下载他提供的源码进行编译,但是在编译SPGW源码时候仍旧会提示要从eurecom.fr上git源码来编译,若直接跳过会导致编译失败。
我在网上搜索找到一个账号和密码,但这里为了隐私不方便直接提供,各位要是有需求,可以留下邮箱地址,我这边发过去。
git clone https://gitlab.eurecom.fr/oai/openair-cn.git
git代码执行一下步骤
cd ~/openair-cn
git checkout -b v0.5.0
修改本机host
先使用hostname命令查看ubuntu的host名称,我的hostname是 epc
hostname
接下来修改host文件
sudo vim /etc/hosts
127.0.1.1 epc.openair4G.eur epc #这一行的两个epc都要改成你的主机名
127.0.1.1 hss.openair4G.eur hss
需要将默认的2条host注释掉。修改完成后再执行hostname -f命令查看是否生效。
安装mysql数据库
sudo apt-get install mysql-server mysql-client
安装过程中需要设置mysql数据库密码
安装Apache2
sudo apt-get install apache2
安装后访问下ubuntu的ip地址,看看能否访问apache的默认页面
安装PHP
主要用于驱动mysql的web管理软件phpmyadmin,如果您不需要,也可以不安装。
sudo apt-get install php7.0
sudo apt-get install libapache2-mod-php7.0
sudo service apache2 restart
安装 phpmyadmin
sudo apt-get install phpmyadmin
sudo ln -s /usr/share/phpmyadmin /var/www/html
安装过程中需要管理密码,安装完成后在IP/phpmyadmin就可以访问了,用户名为root,密码为刚才您设置的密码。
编译EPC源码
在openair-cn目录下执行
cd openair-cn
git checkout develop
git pull
编译MME
cd openair-cn/scripts
./build_mme -i
编译过程需要盯着,并不是一步到底的过程,需要一路按y。编译过程中需要安装freeDiameter协议,从外网下载,会比较慢,需要耐心等待。
编译HSS
cd openair-cn/scripts
./build_hss -i
编译SPGW
cd openair-cn/scripts
./build_spgw -i
主要SPGW的编译过程中需要输入gitlab.eurecom.fr的账号和密码,直接跳过会导致编译失败。
拷贝EPC配置文件
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
配置MME,HSS和SPGW配置信息
-
查看ubuntu的网卡信息和ip地址
ifconfig
我这里配置了2张网卡,请忽略enp0s8的这张网卡 -
配置MME参数
sudo vim /usr/local/etc/oai/mme.conf
记录这里MCC、MNC和TAC,在后面配置eNodeB是需要配置一样信息。
MME_INTERFACE_NAME_FOR_S1_MME = "enp0s3"; # YOUR NETWORK CONFIG HERE MME_IPV4_ADDRESS_FOR_S1_MME = "192.168.123.153/24"; # YOUR NETWORK CONFIG HERE
修改成自己ubuntu的网卡和ip地址,我的网卡是enp0s3,ip地址为:192.168.123.153
-
配置SPGW参数
sudo vim /usr/local/etc/oai/spgw.conf
修改
GW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "enp0s3"; SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP = "192.168.123.153/24"; PGW_INTERFACE_NAME_FOR_SGI = "enp0s3"; PGW_IPV4_ADDRESS_FOR_SGI = "192.168.123.153/24"#这里配置少了一条,需要手动配置
-
HSS freediameter 配置
sudo vim /usr/local/etc/oai/freeDiameter/hss_fd.conf
Identity = "hss.openair4G.eur"; Realm = "openair4G.eur";
确保以上信息配置一致
-
MME freediameter 配置
sudo vim /usr/local/etc/oai/freeDiameter/mme_fd.conf
Identity = "epc.openair4G.eur";#修改为你的host名称 Realm = "openair4G.eur"; ConnectPeer= "hss.openair4G.eur" { ConnectTo = "127.0.0.1"; No_SCTP ; No_IPv6; Prefer_TCP; No_TLS; port = 3868; realm = "openair4G.eur";};
-
修改HSS配置
sudo vim /usr/local/etc/oai/hss.conf
MYSQL_user = "root"; # mysql数据库用户名 MYSQL_pass = "cnmbdgfw"; # mysql数据库密码,数据你安装数据库是的密码
编译EPC
注册证书
cd /openair-cn/scripts ./check_hss_s6a_certificate /usr/local/etc/oai/freeDiameter/ hss.openair4G.eur ./check_mme_s6a_certificate /usr/local/etc/oai/freeDiameter/ epc.openair4G.eur #这里的epc要改成自己的主机名
编译HSS
cd /openair-cn/scripts
sudo ./build_hss -c
将HSS信息导入mysql数据库
./run_hss -i ~/openair-cn/src/oai_hss/db/oai_db.sql
注意:这条命令只需要执行这一次。运行这条命令后,hss已开始运行,此时可以使用ctrl+c中断运行。
编译MME
cd /openair-cn/scripts
sudo ./build_mme
编译SPGW
cd ~/openair-cn/scripts
sudo ./build_spgw
运行 EPC
依次启动HSS,MME和SPGW等网元
./run_hss
./run_mme
./run_spgw
修改mmeidentity信息
浏览器登录到 http://ip/phpmyadmin
使用mysql的root和你之前设置密码登录,修改mmeidentity信息。可以将yang.openair4G.eur 这条数据修改为 epc.openair4G.eur,这里epc修改成你的hostname
接入eNbodeB设备
我这里使用了佰才邦的成品商用基站设备,因此不需要在额外配置eNodeB ,只需要配置下基站MME地址,PLNM,TAC等信息即可。
在路由器内找到分配给eNodeB,使用admin登录
设置完成重启设备,等待设备重启完成后,查看MME log
写在最后
在配置完成EPC后,连接eNodeB后MME没有检测到eNbodeB设备,由于调试的时候已经是凌晨,第二天还要上班,后面因为其他事情耽搁了,就没在调试。
11月6日周日,百无聊赖,重新在windows的笔记本上用虚拟机再跑了一起,就正常连接了。
之前存在问题主要是:
- 由于EPC对网络要求较高,之前调试时在家,为了方便宿主机使用了wifi接入,换成千兆有线接入就正常。
- 尽量保障局域网内的网络简单可靠。
下个计划
找白卡和写卡器进行测试
你好,请问你用小基站搭建过吗?比如爱立信ENC-nRBS01,FBS3211等.
小基站跟皮基站不一样,小基站没有ENB功能,有测试过用华为的3900+book小基站,但因为license、没有网管及版本问题,就没调试起来。
求gitlab.eurecom.fr账号
有遇到过手机附着后spgw就崩溃的情况吗?
genl_socket_talk: No such file or directory
000360 00122:950825 7FEACCD89700 TRACE SPGW-A penair-cn/src/sgw/sgw_handlers.c:0752 Leaving sgw_handle_sgi_endpoint_deleted() (rc=0)
*** Error in `spgw’: double free or corruption (out): 0x00007feabc003840 ***
======= Backtrace: =========
一样,后面我放弃了,用了nextepc
老哥求gitlab.eurecom.fr账号
老哥求gitlab.eurecom.fr账号
271076810@qq.com
今天才看到留言,已发你邮箱了