EPC User Guide
EPC_User_Guide
EPC_User_Guide
EPC_User_Guide
EPC_User_Guide
EPC_User_Guide
User Manual: Pdf
Open the PDF directly: View PDF
.
Page Count: 40
| Download | |
| Open PDF In Browser | View PDF |
EPC User’s Guide
Editor:
Deliverable nature:
Due date:
Delivery date:
Version:
Total number of pages:
Reviewed by:
Keywords:
EURECOM
Public
August, 2016
0.12
40
EPC, LTE, MME, S-GW, P-GW, HSS, S1AP, DIAMETER
Abstract
The deliverable presents the EPC developed by EURECOM, its configuration, installation testing and
running.
List of authors
Company
EURECOM
OPEN CELLS
Page 2 of (40)
Authors
Christian BONNET, Lionel GAUTHIER, Rohit GUPTA, Florian
KALTENBERGER, Raymond KNOPP, Adlen Ksentini, Navid NIKAIEN,
Cedric ROUX.
Laurent THOMAS.
©
History
Modified by
Date
Version
Comments
Lionel GAUTHIER
09/06/2015
0.1
Initial Draft
Lionel GAUTHIER
11/06/2015
0.2
Minor corrections
Lionel GAUTHIER
20/07/2015
0.3
Changes in dir and file names for git repo
Lionel GAUTHIER
29/07/2015
0.4
Minor corrections (build, get sources from git)
Lionel GAUTHIER
09/09/2015
0.5
Minor corrections (build_epc script)
Lionel GAUTHIER
21/09/2015
0.6
History, GTP-U installation for EPC
Lionel GAUTHIER
14/12/2015
0.7
Removed epc config file when eNB and EPC are
co-located, added description of S1AP scenario
replay
Lionel GAUTHIER
22/02/2016
0.8
Move from docx with embedded Visio drawings
to odt format. Align the documentation to tag
v0.2.0 of develop and master branches on
https://gitlab.eurecom.fr/oai/openair-cn
Lionel GAUTHIER
06/04/2016
0.9
Align the documentation to commit
5e1289bd506f33a1bbf196d55c86641021ccca70
of “unstable” branch
https://gitlab.eurecom.fr/oai/openair-cn
Lionel GAUTHIER
07/05/2016
0,10
Updated section “S1AP scenario replay”
Lionel GAUTHIER
07/25/2016
0.11
Add generation of certificates
Lionel GAUTHIER
08/03/2016
0.12
Updated for GTP kernel 4.7.
Page 3 of (40)
©
Table of Contents
Table of Contents
Introduction...........................................................................................................................................8
Overview............................................................................................................................................8
Deployment scenario..........................................................................................................................8
EPC Installation...................................................................................................................................10
Operating system..............................................................................................................................10
EPC source code..............................................................................................................................10
Get the code without login............................................................................................................10
Get the code with login (contributors)..........................................................................................10
Additional software..........................................................................................................................11
The Better String Library (http://bstring.sourceforge.net/)..................................................................12
Libgtpnl...............................................................................................................................................12
HSS..................................................................................................................................................13
HSS pre-installation......................................................................................................................13
Mysql server installation..........................................................................................................13
Phpmyadmin installation details..............................................................................................13
HSS configuration........................................................................................................................15
Step 1.......................................................................................................................................15
Step 2.......................................................................................................................................16
Step 3.......................................................................................................................................16
Step 4.......................................................................................................................................16
HSS build.....................................................................................................................................16
HSS run........................................................................................................................................17
First run....................................................................................................................................17
Later runs.................................................................................................................................20
MME................................................................................................................................................21
MME pre-installation...................................................................................................................21
MME configuration......................................................................................................................21
Step 1.......................................................................................................................................21
MME section...........................................................................................................................21
SGW section............................................................................................................................24
Step 2.......................................................................................................................................24
Step 3.......................................................................................................................................24
MME build...................................................................................................................................25
Before MME first run...................................................................................................................25
MME run......................................................................................................................................25
SP_GW............................................................................................................................................26
SP-GW pre-installation.................................................................................................................26
SP-GW configuration...................................................................................................................26
Step 1.......................................................................................................................................26
SGW section............................................................................................................................26
Network interfaces section............................................................................................................26
PGW section............................................................................................................................27
Page 4 of (40)
©
SPGW run.....................................................................................................................................28
Supported scenarios in EPC.................................................................................................................29
E-UTRAN Initial attach...................................................................................................................29
Attach with IMSI..........................................................................................................................29
Attach with GUTI.........................................................................................................................29
Tracking Area Update procedures....................................................................................................29
Routing Area Update procedures......................................................................................................29
Service Request procedures..............................................................................................................29
UE triggered Service Request.......................................................................................................29
Network triggered Service Request..............................................................................................29
S1 Release procedure.......................................................................................................................29
GUTI Reallocation procedure..........................................................................................................29
Detach procedure.............................................................................................................................29
UE-Initiated Detach procedure for E-UTRAN.............................................................................29
MME-Initiated Detach procedure for E-UTRAN.........................................................................29
HSS-Initiated Detach procedure for E-UTRAN...........................................................................29
HSS User Profile management function procedure..........................................................................29
Bearer deactivation...........................................................................................................................30
PDN GW initiated bearer deactivation.........................................................................................30
MME initiated Dedicated Bearer Deactivation.............................................................................30
Intra E-UTRAN handover................................................................................................................30
Annex A: Tools for observing, debugging...........................................................................................31
Wireshark/tshark..............................................................................................................................31
Mscgen.............................................................................................................................................31
S1AP scenario replay.......................................................................................................................33
Overall process.............................................................................................................................33
Step0: Install required software on the “scenario replay”testbed..................................................33
openairinterface5g installation.................................................................................................33
openair-cn installation..............................................................................................................34
openair-cn-scenarios installation..............................................................................................34
Step1: Flowchart of network capture on S1-C..............................................................................34
Step2: Generate a generic scenario...............................................................................................37
Step3: Create configuration files for the “scenario replay” testbed...............................................37
Replay a S1AP generic scenario...................................................................................................39
Annex B: GTP fragmentation..............................................................................................................40
Page 5 of (40)
©
Index of Tables
Table 1: 3rd party software.......................................................................................................12
Table 2: HSS configuration fields............................................................................................16
Table 3: SQL Table structure mmeidentity...............................................................................18
Table 4: SQL Table structure pdn.............................................................................................19
Table 5: SQL Table structure users...........................................................................................20
Table 6: MME configuration main section...............................................................................22
Table 7: MME configuration subsection ITTI.........................................................................22
Table 8: MME configuration subsection S6a...........................................................................22
Table 9: MME configuration subsection SCTP.......................................................................22
Table 10: MME configuration subsection S1AP......................................................................22
Table 11: MME configuration subsection GUMMEI...............................................................22
Table 12: MME configuration subsection TAI LIST...............................................................23
Table 13: MME configuration subsection NAS.......................................................................23
Table 14: MME configuration subsection Network Interfaces................................................23
Table 15: MME configuration subsection Network Interfaces................................................24
Table 16: MME configuration section SGW............................................................................24
Table 17: S-GW configuration subsection Network Interfaces................................................26
Table 18: MME configuration subsection ITTI.......................................................................27
Table 19: MME configuration subsection Network Interfaces................................................27
Table 20: P-GW configuration main section............................................................................27
Table 21: P-GW configuration subsection Network Interfaces................................................28
Table 22: P-GW configuration subsection IP Address Pool Selection.....................................28
Page 6 of (40)
©
Abbreviations
3GPP
Third Generation Partnership Project.
APN
Access Point Name.
CIDR
Classless Inter-Domain Routing.
eNB
e Node B.
EPC
Evolved Packet Core.
EPS
Evolved Packet System.
FQDN
Fully qualified domain name.
HSS
Home Subscriber Server.
IMEI
International Mobile Station Equipment Identity.
IMEISV
International Mobile Station Equipment Identity Software
Version.
LTE
Long Term Evolution.
MME
Mobility Management Entity.
MSISDN
Mobile Station International Subscriber Directory Number.
NW
Network.
P-GW
PDN Gateway, Packet Data Network Gateway.
PDN
Packet Data Network.
QoS
Quality of Service.
SCTP
Stream Control Transmission Protocol.
S-GW
Serving Gateway.
SIM
Subscriber Identity Module.
TCP
Transmission Control Protocol.
USIM
Universal Subscriber Identity Module.
Page 7 of (40)
©
1
Introduction
1.1
Overview
The EURECOM EPC is a bundle of software components that provides the MME, S+P-GW, HSS functions of
the LTE core EPC architecture (http://www.3gpp.org/DynaReport/23002.htm).
Network function Implemented in openair-cn
HSS
Implemented in openairinterface5g
Not implemented, not interfaced
-d
S6
S6-a
S10
MME
S11
S1-U
SGW
S3
S5/S8
SGSN
c
Gx
PGW
PCRF
Gx
S1-C
S4
eNB
SGI
Figure 1 EURECOM core network entities overview
The link to other network entities such as a SGSN, PCRF is actually studied.
1.2
Deployment scenario
One deployment scenario is considered with the EURECOM EPC.
Actually the SGW and the PGW are merged together, there is no S5/S8 interfaces between the two functional
entities.
The MME is a network entity that can be deployed on its own host or can be co-located with any other LTE
network entity (SPGW, HSS). Even if it works we do not recommand the deployment of the MME on a eNB.
The SPGW is a network entity that can be deployed on its own host or can be co-located with the MME or/and
with the HSS.
Page 8 of (40)
©
hss executable or
hssd daemon
HSS
S6-a
mme executable or
mmed daemon
S1-C
MME
S11
spgw executable or
spgwd daemon
S1-U
SGW
PGW
SGI
GTPU kernel module
Figure 2 EPC Deployment view
Page 9 of (40)
©
2
EPC Installation
2.1
Operating system
The EPC software has only been tested on UBUNTU 14.04x64 LINUX distribution on Intel x86 64 bits
platforms. Actually on the host running the SP-GW, the GTPv1-U implementation requires that your host run a
kernel version greater or equal to 4.7 (we use 4.7-rc7).
2.2
EPC source code
Important!
In this document OPENAIRCN_DIR is the path to the EPC source code top directory (i.e. openair-cn
working directory).
It is assumed that you are logged onto your machine(s) as a non root user and you configured your system
to be a sudoer user.
The EPC software can be obtained from our git server. You will need a git client to get the sources.
If git is not installed on your computer, execute in a shell the following command (Ubuntu):
user@host:~ sudo apt-get install git
Configure git with your name/email address (only important if you are developer and want to checkin code to
Git):
git config --global user.name "Your Name"
git config --global user.email "Your email address"
Add a certificate from gitlab.eurecom.fr to your Ubuntu 14.04 installation (you need to be root user):
root@host:~# echo -n | openssl s_client -showcerts -connect gitlab.eurecom.fr:443 2>/dev/null
|
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt
Important!
In this document OPENAIRCN_DIR is the path to the EPC source code top directory (i.e. openair-cn working
directory).
2.2.1
Get the code without login
In order to checkout the Git repository (for OAI Users without login to gitlab server)
user@host:~ git clone https://gitlab.eurecom.fr/oai/openair-cn.git
2.2.2
Get the code with login (contributors)
In order to check out the Git repository (for OAI Developers/admins with login to gitlab server)
Please send an email to openair_tech@eurecom.fr to be added to the repository as a developer (only important
for users who want to commit code to the repository). If you do not have an account on gitlab.eurecom.fr, please
register yourself to gitlab.eurecom.fr.
Checkout with using ssh keys:
Page 10 of (40)
©
You will need to put your ssh keys in https://gitlab.eurecom.fr/profile/keys to access to the git repo. Once that is
done, checkout the git repository using:
git clone git@gitlab.eurecom.fr:oai/openair-cn.git
Checkout with user name/password prompt:
git clone https://YOUR_USERNAME@gitlab.eurecom.fr/oai/openair-cn.git
2.3
Additional software
Some software installations have to be done prior to build the core network entities.
Please find for information, bellow a summary of third party software included in source tree or that must be
installed prior to EPC components compilation.
Installed software
MME entity
S/P-GW entity
HSS entity
Licence
UBUNTU packages
Removed packages:
build/dev/debug tools:
autoconf, automake, bison,
build-essential, cmake,
cmake-curses-gui, doxygen,
doxygen-gui, flex, gccxml,
gdb, git, pkg-config,
subversion.
Removed packages:
Removed packages:
...
libgnutls-dev
'libgnutlsxx2?' nettle-dev
nettle-bin.
build/dev/debug tools:
autoconf automake bison
build-essential cmake
cmake-curses-gui
doxygen doxygen-gui
flex gccxml gdb git pkgconfig subversion
valgrind Kcachegrind.
libgnutls-dev 'libgnutlsxx2?'
nettle-dev nettle-bin.
Libraries:
guile-2.0-dev libconfig8dev libgcrypt11-dev
libgmp-dev libhogweed2
libgtk-3-dev libidn2-0dev libidn11-dev
libpthread-stubs0-dev
libsctp1 libsctp-dev
libssl-dev libtool libxml2
libxml2-dev mscgen
openssl python.
Nettle
(ftp://ftp.lysator.liu.se
/pub/security/lsh/nettl
e-2.5.tar.gz)
Gnutls
(ftp://ftp.gnutls.org/g
crypt/gnutls/v3.1/gnu
tls-3.1.23.tar.xz)
Page 11 of (40)
Yes
Dependancy:
autoconf automake buildessential
libtasn1-6-dev libtasn1-6dbg libp11-kit-dev
libp11-kit0-dbg libtspidev libtspi1 libidn2-0-dev
libidn11-dev
build/dev/debug tools:
autoconf automake
bison build-essential
cmake cmake-cursesgui doxygen doxygengui flex gdb pkg-config.
git subversion.
Libraries:
libconfig8-dev
libgcrypt11-dev libidn20-dev libidn11-dev
libmysqlclient-dev
libpthread-stubs0-dev
libsctp1 libsctp-dev
libssl-dev libtool mysqlclient mysql-server
openssl.
Network tools:
ethtool iperf iproute vlan
tshark
Others:
check phpmyadmin
python-dev pythonpexpect unzip
Yes
Dependancy:
autoconf automake buildessential libgmp-dev.
libgnutls-dev
'libgnutlsxx2?' nettledev nettle-bin.
Others:
phpmyadmin pythonpexpect
No
Yes
LGPL
No
Yes
LGPLv2.1+
©
Installed software
MME entity
S/P-GW entity
HSS entity
Licence
FreeDiameter
(http://www.freediam
eter.net/hg/freeDiame
ter/archive/1.2.0.tar.g
z)
Yes
Dependancy:
autoconf automake bison
build-essential cmake
cmake-curses-gui
debhelper flex g++ gcc
gdb libgcrypt-dev
libidn11-dev
libmysqlclient-dev libpqdev libsctp1 libsctp-dev
libxml2-dev mercurial
python-dev ssl-cert swig
No
Yes
BSD
3
clause
license.
Check
subdirs
for
copyright
informations:
extensions/dict_sip
/*
extensions/app_sip
/*
extensions/app_rad
gw/rgwx_sip.c
extensions/app_dia
meap/*
extensions/dict_mip
6a/*
extensions/dict_mi
p6i/*
extensions/dict_na
s_mipv6/*
extensions/dict_rfc
5777/*
Asn1c
Yes
No
No
BSD 2-Clause
Licence
(https://github.com/vl
m/asn1c/trunk
revision 1516)
Dependancy:
SRC/UTILS/tree.h
autoconf automake bison
build-essential flex gcc
libtool
Yes
Yes
No
SRC/UTILS/queue.h
Yes
Yes
No
SRC/UTILS/LFDS/li
blfds6.1.1.
(http://liblfds.org/)
SRC/GTPV2C/nwgtpv2c-0.11
xtables_addons
patched for OAI
(https://gitlab.eureco
m.fr/oai/xtablesaddons-oai.git)
Yes
Yes
No
BSD 2-Clause
Licence
BSD 3-Clause
Licence
No license
Yes
Yes
No
Free licence
No
Yes
No
GPLv2
Yes
autoconf automake buildessential dkms iptables
iptables-dev linux-headers.
Run a kernel version equal
to 3.19 (we use 3.19.0-28)
Yes
No
BSD 3-Clause
Licence
No
Yes
No
GNU
LESSER
GENERAL
PUBLIC
LICENSE
Dependancy:
The Better String
Library
(http://bstring.sourcef
orge.net/)
Libgtpnl
(http://git.osmocom.o
rg/libgtpnl/)
Version 2.1
Table 1: 3rd party software
Page 12 of (40)
©
These softwares will mostly be installed by helper scripts, this will be described in following sections.
2.4
2.4.1
HSS
HSS pre-installation
In OPENAIRCN_DIR/SCRIPTS directory, execute the following command:
user@hss-host:~/openair-cn/SCRIPTS$ ./build_hss -i
This command will install the required softwares on your host.
Find bellow some hints for some interactive software installations (mysql-server, phpmyadmin).
2.4.1.1
Mysql server installation
Enter here a password for root user, lets call it MS_PW_ROOT.
Figure 3 Mysql installation root password
Figure 4 Mysql installation root password repeat
The mysql-server installation process ends here.
2.4.1.2
Phpmyadmin installation details
You should prefer the easiest way
Page 13 of (40)
©
Figure 5 Phpmyadmin installation conf DB
Enter here the MS_PW_ROOT.:
Figure 6 Phpmyadmin installation DB admin password
Please, enter here what will be the phpmyadmin application password, lets call it MS_PW_PHP:
Figure 7 Phpmyadmin installation application password
Figure 8 Phpmyadmin installation application password confirmation
Choose the web server that has to be configured: Apache.
Page 14 of (40)
©
Figure 9 Phpmyadmin installation web server selection
2.4.2
HSS configuration
In this section is describd the step by step configuration of the HSS, any parameter can be customized upon your
need (mysql server address, mySQL user name, mySQL password, HSS OP key, location of freeDiameter
configuration file, realm).
A template of the HSS configuration file can be found at OPENAIRCN_DIR/ETC/hss.conf. This configuration
file follows the libconfig file syntax (http://www.hyperrealm.com/libconfig).
Content of OPENAIRCN_DIR/ETC/hss.conf:
HSS :
{
## MySQL mandatory options
MYSQL_server = "127.0.0.1";
MYSQL_user
= "@MYSQL_user@";
MYSQL_pass
= "@MYSQL_pass@";
MYSQL_db
= "oai_db";
## HSS options
OPERATOR_key = "1006020f0a478bf6b699f15c062e42b3"; # OP key for oai_db.sql
RANDOM = "true";
## Freediameter options
FD_conf = "/usr/local/etc/oai/freeDiameter/hss_fd.conf";
};
2.4.2.1
Step 1
Copy the file OPENAIRCN_DIR/ETC/hss.conf in /usr/local/etc/oai directory:
user@hss-host:~/openair-cn/SCRIPTS$ sudo mkdir -p /usr/local/etc/oai/freeDiameter
user@hss-host:~/openair-cn/SCRIPTS$ sudo cp $OPENAIRCN_DIR/ETC/hss.conf \
/usr/local/etc/oai
Please take care of the permissions of your hss.conf file.
Then customize your copied HSS configuration file:
Parameter
Type
MYSQL_server
String
IP address of the MySQL server instance where the HSS DB is stored.
MYSQL_user
String, user login
HSS administrator login, could be “hssadmin”.
Page 15 of (40)
©
MYSQL_pass
String, password
HSS administrator password, should be MS_PW_PHP.
MYSQL_db
String, database name
Database name, default is oai_db for EURECOM subscribers.
OPERATOR_key
String
Operator key in plain text.
RANDOM
String, allowed values
“yes”, “no”.
Default value is “true”. Set false when you want to capture or replay S1-C scenarios.
FD_conf
String
Path to HSS freeDiameter configuration file.
Table 2: HSS configuration fields
2.4.2.2
Step 2
Copy the files OPENAIRCN_DIR/ETC/hss_fd.conf, OPENAIRCN_DIR/ETC/acl.conf in
/usr/local/etc/oai/freeDiameter directory:
user@hss-host:~/openair-cn/SCRIPTS$
sudo
cp
$OPENAIRCN_DIR/ETC/acl.conf
$OPENAIRCN_DIR/ETC/hss_fd.conf /usr/local/etc/oai/freeDiameter
Please take care of the permissions of your configuration files.
Then customize your copied hss_fd.conf, acl.conf configuration files if necessary, if you follow this document,
it should not be necessary, otherwise please refer to freeDiameter documentation.
2.4.2.3
Step 3
A FQDN has to be set for the HSS (see hss_fd.conf). An easy way to do that is to fill this FQDN in the /etc/hosts
file:
For example on a host with hostname 'yang':
yang@yang:$ cat /etc/hosts
127.0.0.1
localhost
127.0.1.1
yang.openair4G.eur yang
127.0.1.1
hss.openair4G.eur hss
2.4.2.4
#Your hostname here
Step 4
Generate HSS certificates:
user@hss-host:~/openair-cn/SCRIPTS$
./check_hss_s6a_certificate /usr/local/etc/oai/freeDiameter hss.openair4G.eur
2.4.3
HSS build
HSS can be built in two different ways: an executable that can run in a controlling terminal, or a daemon that
run in the background.
In OPENAIRCN_DIR/SCRIPTS directory, depending on the chosen target execute the following command:
user@hss-host:~/openair-cn/SCRIPTS$ ./build_hss --clean --debug
or
user@hss-host:~/openair-cn/SCRIPTS$ ./build_hss --clean --debug --daemon
This command will compile the right target oai_hss or oai_hssd.
Page 16 of (40)
©
HSS run
2.4.4
In OPENAIRCN_DIR/SCRIPTS directory, a helper script called run_hss is provided for running the HSS.
Here are the run_hss options:
./run_hss -h
Usage: run_hss [OPTION]...
Run the HSS executable (experimental).
Options:
Mandatory arguments to long options are mandatory for short options too.
-c, --config-file filename
Config file to be used by HSS if you don't want to use the
default one: /usr/local/etc/oai/hss.conf
-e, --export-db filename
Export current database to a SQL file, file prefix is
$OPENAIRCN_DIR/SRC/OAI_HSS/db. (useful for replaying test scenarios)
-D, --daemon
Run the daemon.
-i, --import-db
filename
Import SQL file to current database, file prefix is
$OPENAIRCN_DIR/SRC/OAI_HSS/db. (useful for replaying test scenarios or restoring original
database content)
-I, --install-hss-files
Install HSS config files.
-g, --gdb
Run with GDB.
-h, --help
Print this help.
-k, --kill
Kill the running local HSS.
2.4.4.1
2.4.4.1.1
First run
Customize HSS database content
SQL operations (display, update, export, etc) can be done easily with the help of phpMyAdmin, you have to
open the following URL with your browser: http://yourhsshost/phpmyadmin.
Otherwise you can use any other MySQL tool, script compatible with MySQL.
The steps for adding a subscriber are the following:
- Add your MME(s) in table mmeidentity
- Add subscriber(s) in table users
user.imsi=IMSI of your USIM.
user.msisdn= MSISDN of your USIM (unused).
users.imei=NULL
users.imei_sv=NULL
users.ms_ps_status=’PURGED’
users.rau_tau_timer=120
users.ue_ambr_ul=50000000
users.ue_ambr_dl=100000000
users.access_restriction=47
users.mme_cap=0
Page 17 of (40)
©
users.mmeidentity_idmmeidentity=’your MME key’
users.RFSP-Index=1
users.urrp_mme=0
users.sqn=’your USIM programmed SQN’
users.rand=0
users.OPc=’the OPc key’ (will be computed by the oai_hss executable)
- Add subscriber(s) in table pdn.
Table mmeidentity:
Structure:
Field
Type
Null
Key
Default
Extra
idmmeidentity
int(11)
NO
PRI
NULL
auto_increment
mmehost
varchar(255)
YES
NULL
mmerealm
varchar(200)
YES
NULL
UE-Reachability
tinyint(1)
NO
NULL
Table 3: SQL Table structure mmeidentity
Column idmmeIdentity is the primary key of a MME.
Column mmehost contains the FQDN of a MME.
Column mmerealm contains the realm of a MME.
Example of content:
+---------------+------------------------+---------------+-----------------+
| idmmeidentity | mmehost
| mmerealm
| UE-Reachability |
+---------------+------------------------+---------------+-----------------+
|
2 | yang.openair4G.eur
| openair4G.eur |
0 |
|
1 | ng40-erc.openair4G.eur | openair4G.eur |
0 |
|
3 | ABEILLE.openair4G.eur | openair4G.eur |
0 |
+---------------+------------------------+---------------+-----------------+
Table pdn:
This table contains mainly the association between a subscriber (users_imsi) and a APN (apn), and its QOS
parameters.
Structure:
Field
Type
Null
Key
Default
Extra
id
int(11)
NO
PRI
NULL
auto_increment
apn
varchar(60)
NO
NULL
pdn_type
enum('IPv4','IPv6','IPv4v6','IPv4_or_IPv6')
NO
NULL
pdn_ipv4
varchar(15)
YES
NULL
0.0.0.0
pdn_ipv6
varchar(45)
YES
NULL
0:0:0:0:0:0:0:0
aggregate_ambr_ul
int(10) unsigned
YES
50000000
aggregate_ambr_dl
int(10) unsigned
YES
100000000
Page 18 of (40)
©
pgw_id
int(11)
NO
PRI
users_imsi
varchar(15)
NO
PRI
NULL
qci
tinyint(3) unsigned
NO
9
priority_level
tinyint(3) unsigned
NO
15
pre_emp_cap
enum('ENABLED','DISABLED')
YES
DISABLED
pre_emp_vul
enum('ENABLED','DISABLED')
YES
DISABLED
LIPA-Permissions
enum('LIPA-prohibited','LIPA-only','LIPAconditional')
YES
LIPA-only
Table 4: SQL Table structure pdn
Column id is the primary key of a pdn entry.
Column pdn_type contains the type of PDN, actually only IPv4 is supported.
Column pdn_ipv4 contains the IPv4 address of the PDN (unused).
Column pdn_ipv6 contains the IPv6 address of the PDN (unused).
Column aggregate_ambr_ul TODO
Column aggregate_ambr_dl TODO
Column pgw_id TODO
Column users_imsi TODO
Column qci TODO
Column priority_level TODO
Column pre_emp_capability TODO
Column pre_emp_vulnerability TODO
Column LIPA_Permissions TODO
Table users
This table contains mainly the informations about a subscriber: its IMSI, IMEI, key LTE K, SQN, operator key
OP, QOS parameters, the last known MME identity where the subscriber registered.
Structure:
Field
Type
Null
Key
Default
imsi
varchar(15)
NO
PRI
NULL
msisdn
varchar(46)
YES
NULL
imei
varchar(15)
YES
NULL
imei_sv
varchar(2)
YES
NULL
ms_ps_status
enum('PURGED','NOT_PURGED')
YES
PURGED
rau_tau_timer
int(10) unsigned
YES
120
ue_ambr_ul
bigint(20) unsigned
YES
50000000
ue_ambr_dl
bigint(20) unsigned
YES
100000000
access_restriction
int(10) unsigned
YES
60
mme_cap
int(10) unsigned zerofill
YES
NULL
mmeidentity_idmmeidentity
int(11)
NO
key
varbinary(16)
NO
0
RFSP-Index
smallint(5) unsigned
NO
1
Page 19 of (40)
PRI
Extra
0
©
urrp_mme
tinyint(1)
NO
0
sqn
bigint(20) unsigned zerofill
NO
NULL
rand
varbinary(16)
NO
NULL
OPc
varbinary(16)
YES
NULL
Table 5: SQL Table structure users
TODO column description.
2.4.4.2
Later runs
By default (otherwise you know what you are doing) for all following runs of the HSS, use:
user@hss-host:~/openair-cn/SCRIPTS$ ./run_hss
or
user@hss-host:~/openair-cn/SCRIPTS$ ./run_hss --daemon
Page 20 of (40)
©
2.5
2.5.1
MME
MME pre-installation
In OPENAIRCN_DIR/SCRIPTS directory, execute the following command:
user@mme-host:~/openair-cn/SCRIPTS$ ./build_mme -i
This command will install the required softwares on your host.
2.5.2
MME configuration
A template of the MME configuration file can be found at OPENAIRCN_DIR/ETC/mme.conf. This
configuration file follows the libconfig file syntax (http://www.hyperrealm.com/libconfig).
2.5.2.1
Step 1
Copy the file OPENAIRCN_DIR/ETC/mme.conf in /usr/local/etc/oai directory:
user@mme-host:~/openair-cn/SCRIPTS$ sudo mkdir -p /usr/local/etc/oai/freeDiameter
user@mme-host:~/openair-cn/SCRIPTS$
/usr/local/etc/oai
sudo
cp
$OPENAIRCN_DIR/ETC/mme.conf
Please take care of the permissions of your mme.conf file.
Then customize your copied MME configuration file:
2.5.2.2
MME section
Parameter
Type
RUN_MODE
String
Allowed values: “OTHER”, “TEST”. Set “OTHER” for normal operations,
set “TEST” for S1C scenario player.
REALM
String
Diameter realm of the MME, default is openair4G.eur.
MAXENB
Num/Integer
Maximum number of eNB that can connect to MME.
MAXUE
Num/Integer
For debug purpose, used to restrict the number of served UEs the MME can
handle.
RELATIVE_CAPACITY
Num/Integer
Even though this parameter is not used by the MME for controlling the
MME load balancing within a pool (at least for now), the parameter has to
be forwarded to the eNB during association procedure. Values going from 0
to 255, (Default value is 15)
MME_STATISTIC_TIMER
Num/Integer
Displayed statistic period in logs.
EMERGENCY_ATTACH_SUPPORTED
String
Actually only “no” is supported
UNAUTHENTICATED_IMSI_SUPPORTED
String
Actually only “no” is supported
EPS_NETWORK_FEATURE_SUPPORT_IMS_V
OICE_OVER_PS_SESSION_IN_S1
EPS_NETWORK_FEATURE_SUPPORT_EMER
GENCY_BEARER_SERVICES_IN_S1_MODE
EPS_NETWORK_FEATURE_SUPPORT_LOCA
TION_SERVICES_VIA_EPC
String
Actually only “no” is supported
String
Actually only “no” is supported
String
Actually only “no” is supported
Page 21 of (40)
©
EPS_NETWORK_FEATURE_SUPPORT_EXTE
NDED_SERVICE_REQUEST
IP_CAPABILITY
String
Actually only “no” is supported
String
Actually only IPV4 is supported, (Choice between IPV4, IPV4V6,
IPV4ORV6)
Table 6: MME configuration main section
2.5.2.2.1
INTERTASK_INTERFACE subsection
Parameter
Type
ITTI_QUEUE_SIZE
Num/Integer
Upper bound for the message queue size expressed in bytes (all messages exchanged by tasks have the
same size). Restrict the number of messages in queues or detect a possible MME overload.
Table 7: MME configuration subsection ITTI
2.5.2.2.2
S6A subsection
Parameter
Type
S6A_CONF
String
FreeDiameter MME config file path, default value is
“/usr/local/etc/oai/freeDiameter/mme_fd.conf”.
HSS_HOSTNAME
String
HSS hostname, default value is “hss”.
Table 8: MME configuration subsection S6a
2.5.2.2.3
SCTP subsection
Parameter
Type
SCTP_INSTREAMS
Num/Integer
Maximum number of SCTP input streams allowed for a S1-C connection.
SCTP_OUTSTREAMS
Num/Integer
Maximum number of SCTP output streams allowed for a S1-C connection.
Table 9: MME configuration subsection SCTP
2.5.2.2.4
S1AP subsection
Parameter
Type
S1AP_OUTCOME_TIMER
Num/Integer
Once an outcome is sent from MME to eNB, the MME locally starts a timer to abort the
procedure and release UE context if the expected answer to this outcome is not received at the
expiry of this timer. This timer is expressed in seconds. (Default value = 5 seconds)
Table 10: MME configuration subsection S1AP
2.5.2.2.5
GUMMEI LIST subsection
This section contains the GUMMEIs of the MME, actually only one GUMMEI is supported.
Parameter
Type
{MCC, MNC,
MME_GID,
MME_CODE}
String/String/String/String
Mobile country code of GUMMEI, Mobile network code of GUMMEI, MME group ID
of GUMMEI, MME code of GUMMEI
Table 11: MME configuration subsection GUMMEI
Page 22 of (40)
©
2.5.2.2.6
TAI LIST subsection
The content of this section should be consistent with content of GUMMEI LIST section (MCC/MNC)
Parameter
Type
{MCC/MNC/TAC}
String/String/String
Each entry of the list is a triplet of a MCC, MNC and TAC. There can be up to 16
tracking areas identity set in this list. Actually we do not support shared networks, so
the MCC/MNC field should all be equal among the list
Table 12: MME configuration subsection TAI LIST
2.5.2.2.7
NAS subsection
Parameter
Type
ORDERED_SUPPORTED_INTEGRITY_ALGORITHM_LIST
Array of String
Preference list in decreasing order of supported integrity
algorithms, actually supported integrity algorithms are
EIA0, EIA1, EIA2
ORDERED_SUPPORTED_CIPHERING_ALGORITHM_LIST
Array of String
Preference list in decreasing order of supported integrity
algorithms, actually supported integrity algorithms are
EEA0, EEA1, EEA2
T3402
Integer
EMM timer, duration in minutes.
T3412
Integer
EMM timer, duration in minutes.
T3485
Integer
ESM timer, duration in seconds, unused (TODO).
T3486
Integer
ESM timer, duration in seconds, unused (TODO).
T3489
Integer
ESM timer, duration in seconds, unused (TODO).
T3495
Integer
ESM timer, duration in seconds, unused (TODO).
Table 13: MME configuration subsection NAS
2.5.2.2.8
Network interfaces subsection
Parameter
Type
MME_INTERFACE_NAME_FOR_S1_MME
String
Interface name for S1-MME (S1-C), this interface name can
be a real ethernet interface or a virtual ethernet interface. The
script run_mme can configure it and bring it up if you
provide the -i/--set-nw-interfaces option.
MME_IPV4_ADDRESS_FOR_S1_MME
String, CIDR
Binded address for S1-MME
MME_INTERFACE_NAME_FOR_S11_MME
String
Interface name for S11, this interface name can be a real
ethernet interface or a virtual ethernet interface. The script
run_mme can configure it and bring it up if you provide the
-i/--set-nw-interfaces option.
MME_IPV4_ADDRESS_FOR_S11_MME
String, CIDR
Binded address for S11.
Table 14: MME configuration subsection Network Interfaces
2.5.2.2.9
Logging subsection
Parameter
Type
OUTPUT
String
Page 23 of (40)
choice in { "CONSOLE", "UNBUFFERED_CONSOLE", "`path to file`",
"`IPv4@`:`TCP port num`"}.
Choise "CONSOLE" means that logs go to STDOUT, STDERR in a manner
that even if multiple concurrent threads dump a lot of logs, traces cannot
©
overlap (the cost here is that we need buffering).
Choice "UNBUFFERED_CONSOLE" means that logs go directly to
STDOUT, STDERR, traces may overlap.
Choice "`path to file`", for example “/tmp/mme.log” is a file receiving the
dump of logs without overlaping traces.
Choice "`IPv4@`:`TCP port num`" (for example “192.168.12.17:6789”)
dump the logs towards a TCP server. The logs cat be easily displayed or
dumped into a file with netcat (nc -kl 6789).
COLOR
String
Choice in { "yes", "no" } means use of ANSI styling codes or no. TODO
SCTP_LOG_LEVEL
String
S1AP_LOG_LEVEL
String
Log level choice in { "EMERGENCY", "ALERT", "CRITICAL", "ERROR",
"WARNING", "NOTICE", "INFO", "DEBUG", "TRACE"}
Idem as above
NAS_LOG_LEVEL
String
Idem as above
MME_APP_LOG_LEVEL
String
Idem as above
S6A_LOG_LEVEL
String
Idem as above
UTIL_LOG_LEVEL
String
Idem as above
MSC_LOG_LEVEL
String
Idem as above
ITTI_LOG_LEVEL
String
Idem as above
ASN1_VERBOSITY
String
Choice in {“none”, “info”, “annoying”}
Table 15: MME configuration subsection Network Interfaces
2.5.2.3
SGW section
The PGW, SGW selections are not implemented yet, so we need a mechanism that replace these selection: yet,
we only support one PDN, one PGW, one SGW.
2.5.2.3.1
Network interfaces subsection
Parameter
Type
SGW_IPV4_ADDRESS_FOR_S11
String, CIDR
Binded SGW address for S11.
Table 16: MME configuration section SGW
2.5.2.4
Step 2
Copy the file OPENAIRCN_DIR/ETC/mme_fd.conf in /usr/local/etc/oai/freeDiameter directory:
user@hss-host:~/openair-cn/SCRIPTS$ sudo mkdir -p /usr/local/etc/oai/freeDiameter
user@hss-host:~/openair-cn/SCRIPTS$
/usr/local/etc/oai/freeDiameter
sudo
cp
$OPENAIRCN_DIR/ETC/mme_fd.conf
Please take care of the permissions of your configuration files.
Then customize your copied mme_fd.conf configuration files (Identity value, realm), please refer to
freeDiameter documentation.
2.5.2.5
Step 3
A FQDN has to be set for the MME (see mme_fd.conf). An easy way to do that is to set this FQDN in the
/etc/hosts file:
For example on a host with hostname 'yang':
yang@yang:$ cat /etc/hosts
Page 24 of (40)
©
127.0.0.1
localhost
127.0.1.1
yang.openair4G.eur yang # MME host
127.0.1.1
hss.openair4G.eur hss # HSS located on MME host
2.5.3
MME build
MME can be built in two different ways: an executable that can run in a controlling terminal, or a daemon that
run in the background.
In OPENAIRCN_DIR/SCRIPTS directory, depending on the chosen target execute the following command:
user@mme-host:~/openair-cn/SCRIPTS$ ./build_mme --clean
or
user@mme-host:~/openair-cn/SCRIPTS$ ./build_mme --clean
--daemon
This command will compile the right target oai_mme or oai_mmed.
2.5.4
Before MME first run
Prior the first run of the MME, you will have to generate certificates:
user@hsshost:~/openaircn/SCRIPTS$./check_mme_s6a_certificate
/usr/local/etc/oai/freeDiameter yang.openair4G.eur
2.5.5
MME run
In OPENAIRCN_DIR/SCRIPTS directory, a helper script called run_mme is provided for running the MME.
user@hss-host:~/openair-cn/SCRIPTS$ ./run_mme
or
user@hss-host:~/openair-cn/SCRIPTS$ ./run_mme --daemon
Page 25 of (40)
©
2.6
2.6.1
SP_GW
SP-GW pre-installation
First install a 4.7 linux kernel, even from source from kernel.org, then select gtp to be compiled as a module,
and install the kernel and modules and boot on the 4.7 kernel
For example only
in your linux 4.7+ source tree:
make oldconfig
in .config, check that gtp is built as a module : CONFIG_GTP=m
make -jX
make modules_install
make install
Install libgtpnl from http://git.osmocom.org/libgtpnl/ and any software dependancy.
In OPENAIRCN_DIR/SCRIPTS directory, execute the following command:
user@mme-host:~/openair-cn/SCRIPTS$ ./build_spgw -i
This command will install the required softwares on your host.
2.6.2
SP-GW configuration
A template of the SP-GW configuration file can be found at OPENAIRCN_DIR/ETC/spgw.conf. This
configuration file follows the libconfig file syntax (http://www.hyperrealm.com/libconfig).
2.6.2.1
Step 1
Copy the file OPENAIRCN_DIR/ETC/mme.conf in /usr/local/etc/oai directory:
user@mme-host:~/openair-cn/SCRIPTS$ sudo mkdir -p /usr/local/etc/oai
user@mme-host:~/openair-cn/SCRIPTS$
/usr/local/etc/oai
sudo
cp
$OPENAIRCN_DIR/ETC/spgw.conf
Please take care of the permissions of your spgw.conf file.
Then customize your copied SP-GW configuration file:
2.6.2.2
2.6.3
SGW section
Network interfaces section
Parameter
Type
SGW_INTERFACE_NAME_FOR_S11
String
Interface name for S11.
SGW_IPV4_ADDRESS_FOR_S11
String, CIDR notation
Binded address for S11.
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
String
Interface name for S1-U, this interface name can be a real
Page 26 of (40)
©
ethernet interface or a virtual ethernet interface. The script
run_spgw can configure it and bring it up if you provide the
-i/--set-nw-interfaces option.
SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
String, CIDR notation
Binded address for S1-U
SGW_IPV4_PORT_FOR_S1U_S12_S4_UP
Num/Integer
Port number for S1-U (IANA), Should be 2152
SGW_INTERFACE_NAME_FOR_S5_S8_UP
String,
Interface name for S5 or S8, set to “none” because unused
SGW_IPV4_ADDRESS_FOR_S5_S8_UP
String, CIDR notation
Binded address for S5 or S8, set to 0.0.0.0/xx because
unused
Table 17: S-GW configuration subsection Network Interfaces
2.6.3.1.1
INTERTASK_INTERFACE subsection
Parameter
Type
ITTI_QUEUE_SIZE
Num/Integer
Upper bound for the message queue size expressed in bytes (all messages exchanged by tasks have the
same size). Restrict the number of messages in queues or detect a possible overload.
Table 18: MME configuration subsection ITTI
2.6.3.1.2
Logging subsection
Parameter
Type
OUTPUT
String
choice in { "CONSOLE", "SYSLOG", "`path to file`", "`IPv4@`:`TCP port
num`"}.
Choise "CONSOLE" means that logs go to STDOUT, STDERR.
Choice "`path to file`", for example “/tmp/spgw.log” is a file receiving the
dump of logs.
Choice "`IPv4@`:`TCP port num`" (for example “192.168.12.18:6789”)
dump the logs towards a TCP server. The logs cat be easily displayed or
dumped into a file with netcat (nc -kl 6789).
THREAD_SAFE
String
Choice in { "yes", "no" }, yes means that logs cannot overlaps on output.
COLOR
String
Choice in { "yes", "no" } means use of ANSI styling codes or no. TODO
UDP_LOG_LEVEL
String
GTPV1U_LOG_LEVEL
String
Log level choice in { "EMERGENCY", "ALERT", "CRITICAL", "ERROR",
"WARNING", "NOTICE", "INFO", "DEBUG", "TRACE"}
Idem as above
GTPV2C_LOG_LEVEL
String
Idem as above
SPGW_APP_LOG_LEVEL
String
Idem as above
S11_LOG_LEVEL
String
Idem as above
Table 19: MME configuration subsection Network Interfaces
2.6.3.2
2.6.3.2.1
PGW section
Main section
Parameter
Type
DEFAULT_DNS_IPV4_ADDRESS
String, IPv4 dot decimal
IPv4 address of primary default DNS that can be queried by UEs
DEFAULT_DNS_SEC_IPV4_ADDRE
SS
String, IPv4 dot decimal
IPv4 address of secondary default DNS that can be queried by UEs
FORCE_PUSH_PROTOCOL_CONFI
String
Non standard feature, normally should be set to "no", but you may need to
Page 27 of (40)
©
GURATION_OPTIONS
UE_MTU
set to yes for UE that do not explicitly request a PDN address through NAS
signalling, MTU, DNS are also pushed even if not requested.
UE MTU to be pushed in protocol configuration options if option
“FORCE_PUSH_PROTOCOL_CONFIGURATION_OPTIONS”is set
to “yes”
Integer
Table 20: P-GW configuration main section
2.6.3.2.2
Network interfaces section
Parameter
Type
PGW_INTERFACE_NAME_FOR_S5_S8
String
Interface name for S5 or S8, “none” because unused
PGW_INTERFACE_NAME_FOR_SGI
String
Interface name for SGi
PGW_MASQUERADE_SGI
String
Should outgoing UE IPv4 traffic be masqueraded (source NAT), “yes” or
“no”.
UE_TCP_MSS_CLAMPING
String
Choice in { "yes", "no" }, “yes” should be choose if you are unable to set
the MTU on the S1U path to a value greater or equal to 1536.
If set to “yes”, then PGW_INTERFACE_NAME_FOR_S5_S8 should be
set to the same value as SGW_IPV4_PORT_FOR_S1U_S12_S4_UP.
Table 21: P-GW configuration subsection Network Interfaces
2.6.3.2.3
IP Address Pool section
Parameter
Type
IPV4_LIST
String, CIDR notation
List of IPv4 netmasks that designate a list of available IPv4 addresses for Ues.
Actually only one pool of IP addresses is supported.
Table 22: P-GW configuration subsection IP Address Pool Selection
2.6.4
SPGW run
In OPENAIRCN_DIR/SCRIPTS directory, a helper script called run_spgw is provided for running the SPGW.
user@hss-host:~/openair-cn/SCRIPTS$ ./run_spgw -r
or
user@hss-host:~/openair-cn/SCRIPTS$ ./run_spgw -r --daemon
Page 28 of (40)
©
3
Supported scenarios in EPC
3.1
3.1.1
E-UTRAN Initial attach
Attach with IMSI
TODO Add MSCGEN SEQ diagram
3.1.2
Attach with GUTI
TODO Add MSCGEN SEQ diagram
3.2
Tracking Area Update procedures
TODO Add MSCGEN SEQ diagram
3.3
Routing Area Update procedures
Not supported yet.
3.4
3.4.1
Service Request procedures
UE triggered Service Request
TODO Add MSCGEN SEQ diagram
3.4.2
Network triggered Service Request
Not supported yet.
3.5
S1 Release procedure
TODO Add MSCGEN SEQ diagram
3.6
GUTI Reallocation procedure
Not supported yet.
3.7
3.7.1
Detach procedure
UE-Initiated Detach procedure for E-UTRAN
TODO Add MSCGEN SEQ diagram
3.7.2
MME-Initiated Detach procedure for E-UTRAN
3.7.3
HSS-Initiated Detach procedure for E-UTRAN
Not supported.
3.8
HSS User Profile management function procedure
Not supported.
Page 29 of (40)
©
3.9
3.9.1
Bearer deactivation
PDN GW initiated bearer deactivation
Not supported
3.9.2
MME initiated Dedicated Bearer Deactivation
Not supported yet
3.10
Intra E-UTRAN handover
Not supported yet
Page 30 of (40)
©
4
Annex A: Tools for observing, debugging.
4.1
Wireshark/tshark
You can launch wireshark instances on S1 (filter s1ap, gtpu), S6A (filter diameter, if TCP is the undelying
protocol, you can select a TCP packet relative to the DIAMETER exchange and the select decode as
DIAMETER).
4.2
Mscgen
Extract from http://www.mcternan.me.uk/mscgen/: “Mscgen is a small program that parses Message Sequence
Chart descriptions and produces PNG, SVG, EPS or server side image maps (ismaps) as the output. Message
Sequence Charts (MSCs) are a way of representing entities and interactions over some time period”…” Mscgen
aims to provide a simple text language that is clear to create, edit and understand, which can also be transformed
into common image formats for display or printing.”…
Openair use mscgen to offer another view of events (SDUs, timers, etc) that happens inside an executable and
also (still under development) PDUs exchanged between protocol entities.
Openair HSS don't have the msgen feature.
Important:
Check that mscgen traces are configured for being generated (CFLAG MESSAGE_CHART_GENERATOR set
to true in OPENAIRCN_DIR/BUILD/MME/CMakeLists.template)
You have to instruct the mme executable to dump the ITTI messages to a file with the argument -m
path_to_directory. The mscgen files will be located under the specified directory, in a directory containing the
time of the generated traces (text and png files).
Example:
Page 31 of (40)
©
Figure 9 Mscgen output example
Page 32 of (40)
©
4.3
S1AP scenario replay
The aim of this tool is helping for MME bug reports, MME development, non-regression test, debug
purpose, it allows to replay without the help of any eNB(s) or UE(s) a S1AP scenario previously
captured as a pcap dumped file.
4.3.1
Overall process
Capture a
scenario on
S1-C
network
Build a
generic
scenario
Replay
scenario
Scenario
resource
files
Figure 10 Workflow of scenario replay
In order to replay a scenario, a scenario has to be played/captured (step 1), then the captured artefacts
have to processed in order to generate a generic scenario (step 2) ready to be replayed on any other
testbed (step 3).
4.3.2
Step0: Install required software on the “scenario replay”testbed
Note: If your “scenario replay” testbed and the “scenario capture testbed are the same” then step into
section 4.3.2.1“openairinterface5g installation” only.
For the ease of all operations, the targeted testbed is only one host called here “testbed”.
On
the
host
“testbed”,
clone
all
3
git
repositories
:
openairinterface5g
(git@gitlab.eurecom.fr:oai/openairinterface5g.git
or
https://gitlab.eurecom.fr/oai/openairinterface5g.git),
openair-cn-scenarios
(git@gitlab.eurecom.fr:oai/openair-cn-scenarios.git
or
https://gitlab.eurecom.fr/oai/openair-cnscenarios.git)
and
openair-cn
(git@gitlab.eurecom.fr:oai/openair-cn.git
or
https://gitlab.eurecom.fr/oai/openair-cn.git).
4.3.2.1
openairinterface5g installation
In the directory openairinterface5g:
user@testbed:~/openairinterface5g$ source .oaienv
user@testbed:~/openairinterface5g$ cd cmake_targets
Page 33 of (40)
©
user@testbed:~/cmake_targets$ ./build_oai -I --install-optional-packages
user@testbed:~/cmake_targets$ cd tools
user@testbed:~/tools$ ./build_test_epc_tools --clean --debug
4.3.2.2
openair-cn installation
In openair-cn directory:
user@testbed:~/openair-cn/SCRIPTS$ cd SCRIPTS
user@testbed:~/openair-cn/SCRIPTS$ ./build_hss --check-installed-software
user@testbed:~/openair-cn/SCRIPTS$ ./build_mme –check-installed-software
user@testbed:~/openair-cn/SCRIPTS$ ./build_mme --install-gtpu-kernel-module
user@testbed:~/openair-cn/SCRIPTS$ ./build_spgw –check-installed-software
user@testbed:~/openair-cn/SCRIPTS$ ./build_mme --clean --daemon
user@testbed:~/openair-cn/SCRIPTS$ ./build_spgw --clean --daemon
user@testbed:~/openair-cn/SCRIPTS$ ./build_hss --clean --daemon
4.3.2.3
openair-cn-scenarios installation
You should set an environment variable OPENAIRCN_DIR pointing to openair-cn directory,
otherwise you will be later prompted for openair-cn directory location.
For example:
user@testbed:~$ echo 'export OPENAIRCN_DIR=/home/user/openair-cn' >> ~/.bashrc
4.3.3
Step1: Flowchart of network capture on S1-C
The goal of this step is to capture a SCTP/S1AP trace that we want to be able to replay.
Step a: Run HSS
The HSS database has first to be configured for not generating randoms in security algorithms,
otherwise we will not be able to replay trace coming from UE(s).
In the HSS configuration file /usr/local/etc/oai/hss.conf, set RANDOM to false:
RANDOM = "false";
In order to be able to replay the scenario in the same conditions, the initial content of the database has
to be saved.
The extra argument that has to be passed in addition to other arguments to the run_hss script is:
--export-db /tmp/hss_db.sql
Step b: run MME
No change here compared to standard case.
Step c: run SP-GW
No change here compared to standard case.
Step d: start a pcap-ng capture on S1-C
Page 34 of (40)
©
This step is not automated, you have to start on your own a tool to capture the network traffic on the
S1-C network. (you can use wireshark).
VERY IMPORTANT 1: PLEASE filter the packets with the following filter string:
“s1ap or sctp.chunk_type == INIT or sctp.chunk_type == INIT_ACK or sctp.chunk_type ==
COOKIE_ECHO or sctp.chunk_type == COOKIE_ACK”.
VERY IMPORTANT 2: We need the scenario from the beginning, that means the we need to have the
SCTP INIT and SCTP INIT_ACK messages captured, so you must start the capture before lauching
the eNB(s).
Step e: start the eNB(s)
The eNB config files will be used later to make a scenario independent of IP addresses.
Step f: run your scenario
Step g: save the captured scenario
At the end of this process please save in a created subdirectory
scenarios/SCENARIOS/S1 whose name reflects the test case success or failure:
of
openair-cn-
-
The eNB(s) config file(s) with the name “enb.conf”
-
The MME config file with the name “mme.conf”
-
The MME freeDiameter config file with the name “mme_fd.conf”
-
The SPGW config file with the name “spgw.conf”
-
The exported database SQL file with the name “hss_db.sql”.
-
The pcap-ng file containing all SCTP and S1AP traffic (filtered with “s1ap or sctp.chunk_type
== INIT or sctp.chunk_type == INIT_ACK or sctp.chunk_type == COOKIE_ECHO or
sctp.chunk_type == COOKIE_ACK”) occurred on S1-C network with the name “s1.pcapng”.
-
The HSS and mySQL security parameters in a file named hss_credentials.txt:
OPERATOR_KEY="youroperatorkey"
MYSQL_USER="yourdbuser"
MYSQL_PASSWORD="yourdbpassword"
Page 35 of (40)
©
Begin
hss.conf
hss_fd.conf
acl.conf
Input
Start
HSS
mme.conf
mme_fd.conf
Input
Start
MME
spgw.conf
Input
Start
SPGW
Exported hss_db.sql
Start
PCAP capture Captured s1.pcapng
on S1-C
enb.conf
Input
Start
eNB
END
Figure 11 Workflow of scenario capture
Page 36 of (40)
©
The files listed in the flowchart figure are part of the “scenario resource files”, that means that if you
want to replay the captured S1-C scenario, they will have to be saved in a created subdirectory of
openair-cn-scenarios/SCENARIOS/S1 (on your personal git branch for most cases).
4.3.4
Step2: Generate a generic scenario
The scenario captured as a pcap file now have to be transformed in a XML file with abstracted IP
addresses.
In openair-cn-scenarios/SCRIPTS, run the following command:
user@testbed:~/openair-cn-scenarios/SCRIPTS$ ./s1_prepare_test_scenarios
This command generates a copy of the S1-C pcap scenario, but with abstract IP addresses, for
example:
...
...
s1.pcapng
s1.pdml
enb.conf
Replace IP src
and dst
addresses
with generic IP
addresses
s1.xml
Figure 12 Captured scenario to generic scenario
Step3: Create configuration files for the “scenario replay” testbed
4.3.5
You have to create the network plan for the “scenario replay” testbed. The configuration files of the
LTE network entities (eNB, MME, SPGW, HSS) will be a merge of the “scenario capture” testbed
configuration files and the “scenario replay” network plan.
“Scenario capture”
configuration files
LTE parameters
(TAIs, PLMNs, etc)
“Scenario replay”
IP addresses, NW
testbed network plan
interfaces, FQDNs
+ configured FQDNs
(MME, HSS)
“Scenario replay”
configuration files
Figure 13 Scenario replay configuration files
Page 37 of (40)
©
Here is the network plan used by EURECOM for replaying scenarios.
Network namespace
Default network namespace
enb-test
HSS
lo 127.0.0.1
S6-a
DB server
lo 127.0.0.1
S1-C
s1cenb
192.171.1.1/24
MME
s1cmme
192.171.1.2/24 s11mme
192.171.11.1/24
s1uenb
S11
Scenario 192.171.10.1/24
Player
s11sgw
192.171.11.2/24
S1-U
SGW
PGW
s1usgw
192.171.10.2/24
SGI
None
0.0.0.0
Figure 14 Proposed “replay network plan”
Page 38 of (40)
©
After the creation of the 3 configuration files for the 3 network entities, the content of the scenario
directory should look like this example:
user@testbed:~/EURECOM/openair-cn-scenarios/SCENARIOS/S1/NR_TESTS/PON_POFF$ ls -1
enb.conf
enb.replay.conf
enb.replay.run_options.txt
hss_credentials.txt
hss_db.replay.sql
hss_db.sql
hss_fd.conf
mme.conf
mme_fd.conf
mme.replay.conf
s1.html
s1.pcapng
s1.pdml
s1.xml
spgw.conf
spgw.replay.conf
test_epc_generate_scenario.history
4.3.6
Replay a S1AP generic scenario
For replaying a scenario open a terminal and go into directory openair-cn-scenarios/SCRIPTS and
run the following command:
user@testbed:~/EURECOM/openair-cn-scenarios/SCRIPTS$ ./s1_run_test_scenario -S
/home/eurecom/EURECOM/openair-cn-scenarios/SCENARIOS/S1/NR_TESTS/PON_POFF
Page 39 of (40)
©
5
Annex B: GTP fragmentation.
In order to avoid GTP fragmentation on the S1-U link, we strongly suggest to increase the MTU of
S1-U network interfaces to at least 1536 (1536 + 8*x x in [0..N]).
Justification:
- IP fragmentation has an extra cost in network bandwidth, time and CPU.
- 3GPP TS 36.300 section 4.5 IP fragmentation:
Fragmentation function in IP layer on S1 and X2 shall be supported.
Configuration of S1-U (X2-U) link MTU in the eNB according to the MTU of the network
domain the node belongs to shall be considered as a choice at network deployment. The
network may employ various methods to handle IP fragmentation, but the specific methods to
use are implementation dependant.
Here is an example of a testbed successfully tested at EURECOM:
OAI eNB
S1-C, S1-U:
ETH0: 192.168.11.213
S1-C, S1-U:
ETH3: 192.168.11.17
MTU=1536...9200
Are OK
RTL 8111/8168/8411
PCI express gigabit ethernet controller
(MTU max = 9200)
Ubuntu 14.04.4
Kernel 3.19.0-28-lowlatency x86_64
Core i7-4470R@3.20Ghz
GB-BXi7-4770R
OAI MME
OAI HSS
OAI SPGW
No NAT configured
NO TCP MSS clamping
SGi:
ETH0: 192.168.15.17
ETH1: 192.168.15.175
MTU=1500
DLINK DUB-E100
USB/ethernet adapter,
Old grey package models
ROUTER
SNAT
NAT configured
Routing Ues traffic:
172.16.0.0/12 via 192.168.15.17 dev eth1
Ubuntu 14.04.4
Kernel 4.7-rc7 x86_64
Quad core i7 950@3.07 GHz
Desktop
UE is Nexus 5.
Page 40 of (40)
©
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Page Count : 40 Language : en-US Author : Christian Bonnet Creator : Writer Producer : LibreOffice 4.2 Create Date : 2016:08:04 10:32:06+02:00EXIF Metadata provided by EXIF.tools