红联Linux门户
Linux帮助

Ubuntu 17.04安装OpenAirInterface(OAI)教程

发布时间:2017-06-28 09:36:58来源:blog.csdn.net/jxwxg作者:jxwxg
国外有一个大神写了一个基于Ubuntu 17.04安装OAI eNB,UE和EPC一整套系统的教程。原文链接https://open-cells.com/index.php/2017/06/07/openair-single-machine-ubuntu-17-04-after-major-epc-update/ 。笔者亲测有效,整套系统可以在 5M 带宽下成功运行。原文有一个小地方有问题,笔者对此略微做了修改,现把教程复制到下文,权当分享。干货,绝对不坑。
 
OpenAir, single machine Ubuntu 17.04, after major EPC update
(updated: 2017, June 7th)
This document explains how to install and configure OAI EPC+eNB on one single Ubuntu 17.04 64 bits machine connected with a regular UE (a Huawei E3272), routing the UE traffic to internet.
We use EPC after a major contribution in May 2017: a lot of code has been modified, all directories names were changes, configuration parameters names/values changed.
The description uses a USRP B210 board, a Lime SDR page is provided separately.
We also explain how to simplify, fix existing issues, to make a single computer as a full LTE network: EPC+eNB.
Known limitations fixed in the hereafter description
OAI EPC require kernel >= 4.7, so we have to use Ubuntu 17.04
We already pushed some enhancements in OAI, nevertheless some more are required
GTP UDP ports are in conflict for eNB and SGW
Useless link between OAI and the Ubuntu/Linux hostname removed
Several simplifications and precisions to make easier and reliable installations
 
Install Ubuntu
Prepare a machine: a 4 actual cores, no hyper-threading.
All other configuration in OAI Wiki (C1 states, …) describes is about useless.
Download Ubuntu 17.04 64 bits version iso file
create a usb key to boot on it
install Ubuntu: choose to install Third party SW, and to upgrade all packages while installing
do: apt update; apt upgrade until the machine is up-to-date
install git and configure your identification in git:
sudo apt install git 
git config –global user.name “Laurent”
git config –global user.email “laurent.thomas@open-cells.com”
Add the OAI repository as authorized remote system
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
if you are upset with sudo password, add this line in /etc/sudoers
xxxxxx ALL=(ALL) NOPASSWD: ALL (xxxxxx is your login name)
sudo will not ask anymore for a password
 
Install USRP drivers
Ettus has not yet released their driver for Ubuntu 17.04, we take it from source:
sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-mako doxygen python-docutils python-requests cmake build-essential
git clone git://github.com/EttusResearch/uhd.git
cd uhd; mkdir host/build; cd host/build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install
sudo ldconfig
sudo /usr/lib/uhd/utils/uhd_images_downloader.py
 
Download our modifications
download: http://open-cells.com/d5138782a8739209ec5760865b1e53b0/opencells-mods.tgz
extract the data: tar xf opencells-mods.tgz
 
Download & Compile the eNB on 17.04
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
cd openairinterface5g
git checkout develop
We tested with commit 7580d021d387cc63fcf6ecbb97a87b816676a06f  Tue Jun 6 17:59:32 2017 +0200
As we already tested and merged in develop updates for Ubuntu 17.04
A few more updates are required for Ubuntu 17.04
replace the file cmake_targets/tools/build_helper by the file in our archive:
 
cp opencells-mods/cmake_targets/tools/build_helper cmake_targets/tools/build_helper
Now, you should be able to build as usual the eNB
source oaienv# configure the shell
./cmake_targets/build_oai -I   # install SW packages from internet
./cmake_targets/build_oai  -w USRP –eNB –UE # compile eNB
 
Download and patch EPC
First, clone OAI EPC:
git clone https://gitlab.eurecom.fr/oai/openair-cn.git
cd openair-cn
git checkout develop
(we used: commit 67180ca07c3f543fb6efde13bfdd88ec153185c7 Date: Tue May 30 10:16:31 2017 +0200)
Add Ubuntu 17.04 for compilation and fix some bugs
cp opencells-mods/build/tools/build_helper  build/tools/build_helper
备注:原文上一条命令有误,笔者按照作者意图进行了修改
patch -i opencells-mods/src/common/common_defs.h.patch src/common/common_defs.h
patch -i opencells-mods/src/oai_mme/oai_mme.c.patch src/oai_mme/oai_mme.c
patch -i opencells-mods/src/oai_hss/utils/hss_config.c.patch src/oai_hss/utils/hss_config.c
Remove link between Linux host name and LTE diameter protocol configuration
patch -i opencells-mods/src/s6a/s6a_peer.c.patch src/s6a/s6a_peer.c
Add usage of the input address for the SGW input socket
patch -i opencells-mods/src/gtpv1-u/gtp_mod_kernel.c.patch src/gtpv1-u/gtp_mod_kernel.c
patch -i opencells-mods/src/gtpv1-u/gtp_mod_kernel.h.patch src/gtpv1-u/gtp_mod_kernel.h
patch -i opencells-mods/src/gtpv1-u/gtpv1u_task.c.patch src/gtpv1-u/gtpv1u_task.c
No kernel module patch is required anymore: generic Ubuntu kernel 17.04 works fine with OAI
 
Install third party SW for EPC
cd openair-cn; source oaienv; cd scripts
./build_hss -i
Do you want to install freeDiameter 1.2.0 ?: yes
set your MySQL password and remember it!
Answer yes to install: freeDiameter 1.2.0
phpmyadmin:
choose light or apache as you prefer
Configure database for phpmyadmin with dbconfig-common: yes
password: same as MySQL for simplicity
We don’t use phpmyadmin later in this procedure, nevertheless we tested successfully also with it
Install 3PP SW for mme and spgw
./build_mme -i
Do you want to install freeDiameter 1.2.0: no
Do you want to install asn1c rev 1516 patched? <y/N>: no
Do you want to install libgtpnl ? <y/N>: yes
wireshark permissions: as you prefer
./build_spgw -i
Do you want to install libgtpnl ? <y/N>: no
 
Compile the EPC nodes
No difficulty found in this phase.
cd openair-cn; source oaienv; cd scripts
./build_hss
./build_mme
./build_spgw
 
Our Network setup description
I’ve made a simple configuration for this all-in-one setup.
Each node is on a separate IP address, this address is used for all it’s interfaces. In our case of all-in-one, we take addresses on the loopback: this will be fine on all your machines.
HSS is on localhost: 127.0.0.1
eNB is on 127.0.0.10
MME is on 127.0.0.20
SPGW is on 127.0.0.30
 
The LTE diameter configuration is now isolated from linux hostname.
realm for our EPC: “OpenAir5G.Alliance”, so, full distinguish names (FQDN) are: hss.OpenAir5G.Alliance, mme.OpenAir5G.Alliance
Install this configuration for eNB
In your eNB configuration file, the network is now fixed, as lo interface always exists and our computer internal addresses also:
////////// MME parameters:
mme_ip_address = ( { ipv4 = "127.0.0.20";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES : 
{
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.10/8";
ENB_INTERFACE_NAME_FOR_S1U = "lo";
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.10/8";
ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
In the eNB config file, you need also to set the MCC and MNC as per your SIM card:
tracking_area_code = “1”;
mobile_country_code = “208”;
mobile_network_code = “92”;
And obviously, your radio parameters.
Wwe tested with USRP B210 and two parameter files: 10MHz band, 20MHz band, Huawei E3272 UE, a cavity duplexer a simple antenna, about 1 meter distance UE/eNB antenna.
openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf
 
Install this configuration for EPC
For the EPC, we install in OAI default directory: /usr/local/etc/oai
sudo mkdir -p /usr/local/etc/oai
sudo cp -rp opencells-mods/config_epc/* /usr/local/etc/oai
Then, you should generate the cyphering certificates:
cd openair-cn; source oaienv; cd scripts
./check_hss_s6a_certificate /usr/local/etc/oai/freeDiameter hss.OpenAir5G.Alliance
./check_mme_s6a_certificate /usr/local/etc/oai/freeDiameter mme.OpenAir5G.Alliance
Only the SGi output to internet need to be configured.
In /usr/local/etc/oai/spgw.conf,
your should set the Ethernet interface that is connected to Internet, and,
to tell to the PGW to implement NAPT for the UE traffic
PGW_INTERFACE_NAME_FOR_SGI = "enp3s0"; 
PGW_MASQUERADE_SGI = "yes";
For the SIM card, you’ll have more to do:
SIM MCC/MNC should be duplicated
eNB: See above in eNB configuration chapter
MME
file: /usr/local/etc/oai/mme.conf to update
GUMMEI_LIST = ( MCC=”208″ ; MNC=”92″; MME_GID=”4″ ; MME_CODE=”1″; } );
TAI_LIST = ({MCC=”208″ ; MNC=”92″; TAC = “1”; } );
HSS
Configure the password for MySQL
in /usr/local/etc/oai/hss.conf, set password as the password you created during MySQL installation
A HSS database in text is in: opencells-mods/opencells_db.sql
It is pre-configured with the mme id
A SIM user in network 001/01 (the test network defined by 3GGP) is already created.
10 users is network 208/92 (a French test network) are also created
Each time you import this db, it erases the entire database
(example: you set mysql password to “linux”)
./hss_db_import 127.0.0.1 root linux oai_db opencells-mods/opencells_db.sql
We use to modify the db by updating this file with regular text editor,
then we re-load the entire database,
but, if you prefer, usage of http://localhost/phpmyadmin is fine
The important values to set are:
table pdn:
all IMSI are listed, with the APN: these values are in UE/USIM
table users:
all IMSI, key (Ki) and OPc must be the same in USIM card
Sqn increments automatically  when the UE authenticate in both USIM and HSS DB: it should be set as per USIM internal incrementation
SIM card update
Open cells UICC and card reader will  be supported
 
Final test and verification
open 4 terminal windows
1.in first window
cd openair-cn; source oaienv; cd SCRIPTS; ./run_hss
2.in second window
cd openair-cn; source oaienv; cd SCRIPTS; ./run_mme
3.in third window
cd openair-cn; source oaienv; cd SCRIPTS; sudo -E ./run_spgw
4.in last windows
sudo bash
cd openairinterface5g; source oaienv
./cmake_targets/lte_build_oai/build/lte-softmodem -d -O <your config file>
5.Connect the UE, it should attach to network and be able to reach internet through OAI network
We re-built this procedure from scratch and tested two machines: i5-4570 and i5-6600K.
On the i5-4570, at maximum traffic, the eNB is stable on 10MHz band at full user data speed.
On the i5-6600K, we obtain stable performance at maximum traffic over 20MHz, transmission mode 1 (SISO), one single UE over-the-air 1 meter distance:
Ubuntu 17.04安装OpenAirInterface(OAI)教程
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31763.html