Go to file
Sukchan Lee 081f8c8808 MongoDB re-connect using systemd 2017-10-31 12:29:39 +00:00
debian MongoDB re-connect using systemd 2017-10-31 12:29:39 +00:00
lib MongoDB re-connect using systemd 2017-10-31 12:29:39 +00:00
src MongoDB re-connect using systemd 2017-10-31 12:29:39 +00:00
support MongoDB re-connect using systemd 2017-10-31 12:29:39 +00:00
test debian packaging is initially done. 2017-10-27 16:15:14 +00:00
webui fix the bug when profile is changes 2017-10-25 12:45:08 +09:00
.gitignore update debian rule for override_dh_auto_test 2017-10-28 10:09:44 +00:00
LICENSE add LICENSE 2017-04-18 12:20:02 +09:00
Makefile.am Upload Launchpad PPA for Ubuntu 17.10 i386 2017-10-30 13:34:17 +00:00
README.md fix errta in README 2017-10-09 11:07:58 +09:00
acinclude.m4 Logrotate is added. But more test is needed 2017-10-24 19:14:09 +09:00
configure.ac update logrotate and newsyslog following previous modification 2017-10-29 20:16:18 +09:00
main.c MongoDB re-connect using systemd 2017-10-31 12:29:39 +00:00

README.md

Building NextEPC

This post will guide you on how to get installed with NextEPC. To date, NextEPC has been compiled and tested on GNU/Linux distributions(Debian, Ubuntu, Fedora, OpenSUSE) and FreeBSD.

We will describe this guide using Ubuntu 16.04 LTS (Xenial). You'll need to install Ubuntu if you don't have it installed already. To get the latest Ubuntu version, please visit the official Ubuntu website: https://www.ubuntu.com/download/.

Install the dependencies for building the source

The first step is to use apt-get to install all depedencies.

sudo apt-get -y install git gcc flex bison make autoconf libtool pkg-config libsctp-dev libssl-dev libgnutls-dev libgcrypt-dev libmongoc-dev libbson-dev mongodb

Retrieve the latest version of the source package

git clone https://github.com/acetcom/nextepc

Configure the build

cd nextepc
test -f configure || autoreconf -iv
CFLAGS='-O2' ./configure --prefix=`pwd`/install

Compiling

Hopefully, once you have completed the autotools configuration, you only need to run:

make -j `nproc`

Installing

Once the compilation is complete, you can install in the configured paths with:

make install

(this might require sudo depending on the configured target directories)

Web Setup

NextEPC is configured with Mongo DB, which manages Subscriber Information mainly, and Configuration File made in JSON format.

The configuration file can be modified using a general editor such as vi or emacs, but Subscriber Information can be managed properly using Mongo DB Client.

NextEPC provides Web User Interface solely designed to manage Subscriber Information in an easy way without using Mongo DB Client. Let's how to install it from now on.

Install Node.js and NPM

To get the latest Node.js and NPM version, you can visit the official Node.js website: https://nodesjs.org/en/download/.

Or, you can install Node.js and NPM on Ubuntu as follows:

sudo apt-get -y install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get -y install nodejs

Install the dependencies for building the source

The first step is to use npm to install all depedencies.

cd nextepc/webui
npm install

Build Web User Interface

npm run build

Running Web Server

npm run start

Login with default account

Use Web Browser to connect it. http://localhost:3000

  • Username : admin
  • Password : 1423

Then, you can change your password in Account Menu.

Network Configuration

NextEPC consists of five nodes such as MME, SGW, PGW, HSS and PCRF. Basically, each node can be installed in a physically separate host or in the same host.

We will run these five nodes that make up NextEPC in a Single Host. The reason is why it is the easiest way to understand how to configure NextEPC network.

IP Configuration

In order to run MME, HSS, SGW, PGW, and PCRF on a Single Host, IP address is set by using IP aliasing.

sudo ifconfig eth1:hss 10.1.35.214/24 up
sudo ifconfig eth1:mme 10.1.35.215/24 up
sudo ifconfig eth1:sgw_s5 10.1.35.216/24 up
sudo ifconfig eth1:sgw_s11 10.1.35.217/24 up
sudo ifconfig eth1:pcrf 10.1.35.218/24 up
sudo ifconfig eth1:pgw 10.1.35.219/24 up

Setup for Data Path

Use the TUN Driver to make Data Path to be used by the PGW.

sudo ip tuntap add name pgwtun mode tun
sudo ifconfig pgwtun 45.45.0.1/16 up

Check Configuration File

A configuration file is located etc/nextepc.conf from the installed paths. If you need to change the IP address for a particular problem, you should modify XXXX_IPV4 field in the configuration file.

For example, if you want the IP aliasing address of PGW to be 10.1.35.254, PGW.NETWORK.S5C_IPV4 and PGW_NETWORK.S5U_IPV4 field should be updated like the followings.

  PGW :
  {
    FD_CONF_PATH : "/etc/freeDiameter

    NETWORK :
    {
      S5C_IPV4: "10.1.35.254",
      S5U_IPV4: "10.1.35.254"
    }

    TUNNEL:
    {
      DEV_NAME: "pgwtun"
    }

    IP_POOL :
    {
      CIDR: 45.45.45.0/24
    }

    DNS :
    {
      PRIMARY_IPV4: "8.8.8.8",
      SECONDARY_IPV4: "4.4.4.4"
    }
  }

Testing Network Configuration

Once you are done, run the testing script.

./test/testepc

You can see the simulated packet through Wireshark. (FILTER : s1ap || gtpv2 || diameter)

Running NextEPC

Update GUMMEI and TAI

The followings are the GUMMEI and TAI of the MME currently set to Default. Your eNodeB will also have a PLMN ID and TAC set. Refer to these parameters to change the setting of MME or eNodeB.

GUMMEI:
{
  PLMN_ID : 
  {
    MCC : "001",
    MNC : "01"
  }
  MME_GID : 2,
  MME_CODE : 1
},
TAI:
{
  PLMN_ID :
  {
    MCC: "001",
    MNC: "01",
  }
  TAC: 12345
}

For reference, MME can set several GUMMEI and TAI as JSON array notation as follows.

GUMMEI:
[
  {
    PLMN_ID : 
    {
      MCC : "001",
      MNC : "01"
    }
    MME_GID : 2,
    MME_CODE : 1
  },
  {
    PLMN_ID : 
    {
      MCC : "005",
      MNC : "05"
    }
    MME_GID : 5,
    MME_CODE : 6
  },
]
TAI:
[
  {
    PLMN_ID :
    {
      MCC: "001",
      MNC: "01",
    }
    TAC: 12345
  },
  {
    PLMN_ID :
    {
      MCC: "005",
      MNC: "05",
    }
    TAC: 6789
  }
]

Register Subscriber Information

There is only one setting for this guide. The Subscriber Information required for HSS should be registered in Mongo DB. Let's run the Web User Interface with npm run start as mentioned eariler.

Connect http://localhost:3000 using Web Browser.

  • Go to Subscriber Menu
  • Click + Button to add Subscriber Information
  • Fill IMSI, Security(K, OP, AMF), APN in the Form
  • Click the SAVE Button

Running NextEPC

Generally, to use NextEPC in several hosts, you must use an independent daemon called mmed, sgwd, pgwd, hssd, and pcrfd.

However, we are preparing a more convenient daemon named epcd. It enables to service all five nodes of NextEPC.

./epcd

Turn on your eNodeB and Mobile. Check Wireshark!

Hopefully, you can see the real packet for TAU/Service Request, Dedicated Bearer, Multiple APN, and S1/X2-Handover.