Ubuntu 17.04 安装 OpenAirInterface (OAI)教程

Ubuntu 17.04 安装 OpenAirInterface (OAI)教程


  国外有一个大神写了一个基于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 带宽下成功运行。原文有一个小地方有问题,笔者对此略微做了修改,现把教程复制到下文,权当分享。方便无法翻墙的同学学习。

  干货,绝对不坑。


  如果在安装依赖库过程中出现如下错误

cloning to '/opt/ssh'...
fatal:unable to access'https://gist.github.com/2190472.git/' : Failed to connect to gist.github.comport 443: Connection timed out


  则用vim打开 build_helper文件,即 vim tools/build_helper  注释下面两行代码

$SUDO rm -fr /opt/ssh
$SUDO git clonehttps://gist.github.com/2190472.git /opt/ssh




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: patches

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:


  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值