Go to file
Sukchan Lee 460fafe071 update README 2017-09-29 23:25:45 +09:00
lib fix the compile error for Ubuntu 17.04(Zesty) 2017-09-29 12:55:12 +00:00
src Porting Done for CentOS 2017-09-29 12:22:03 +00:00
support update config 2017-09-29 10:57:00 +09:00
test done for freeDiameter using autotools 2017-09-29 10:10:55 +09:00
webui upgrade next.js v3 2017-09-24 12:25:32 +09:00
INSTALL.md initial code for diameter gx 2017-08-12 21:51:02 +09:00
LICENSE add LICENSE 2017-04-18 12:20:02 +09:00
Makefile.am done for freeDiameter using autotools 2017-09-29 10:10:55 +09:00
README.md update README 2017-09-29 23:25:45 +09:00
acinclude.m4 add compile flags check 2017-02-08 12:48:35 +09:00
configure.ac Porting Done for CentOS 2017-09-29 12:22:03 +00:00
main.c improve testcode terminate routine. 2017-08-03 10:18:45 +09:00

README.md

title order page
Installation 2 guides

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
sudo apt-get -y install autoconf libtool pkg-config
sudo apt-get -y install libsctp-dev libssl-dev
sudo apt-get -y install libgnutls-dev libgcrypt-dev
sudo apt-get -y install libmongoc-dev libbson-dev
sudo apt-get -y install 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)


title: Web Setup order: 3 page: guides

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.


title: Network Configuration order: 4 page: guides

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)


title: Running NextEPC order: 5 page: guides

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.