################################################################################
#   OpenAirInterface
#   Copyright(c) 1999 - 2014 Eurecom
#
#    OpenAirInterface is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) anylater version.
#
#
#    OpenAirInterface is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with OpenAirInterface.The full GNU General Public License is
#    included in this distribution in the file called "COPYING". If not,
#    see <http://www.gnu.org/licenses/>.
#
#  Contact Information
#  OpenAirInterface Admin: openair_admin@eurecom.fr
#  OpenAirInterface Tech : openair_tech@eurecom.fr
#  OpenAirInterface Dev  : openair4g-devel@eurecom.fr
#
#  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
#
################################################################################
# file example_oaisim_enb_ue_mme_virtual.txt
# brief
# author Lionel Gauthier

TODO: a document file, PDF for example, with nice pictures, etc
This example shows how to generate and launch enb, 1 ue (NAS still not virtualized in UE) in virtualised mode, mme_gw, hss executables on the same host:

################
Configuration
################
freediameter 1.2.0 (not 1.1.5, 1.1.6,...) has to be installed and patched (done by check_install_oai_software() calling install_freediameter_from_source() in script build_helper)

Config File:
/etc/hosts must contain the fqdn of the MME and HSS (same since both run on the same host):
(assuming the realm is openair4G.eur)
127.0.0.1       localhost
127.0.1.1       yang.openair4G.eur yang
...

################
BUILDING, RUNNING
################

Building HSS:
yang@yang:~/openair4G/trunk/cmake_targets$ tools/build_hss -c --connect-to-mme yang.openair4G.eur -t -T --realm openair4G.eur

Configuring the HSS:
In oai_db (easier for newbies to access HSS database through http://127.0.0.1/phpmyadmin)
    In table mmeidentity, enter the record corresponding to your MME:
           (idmmeidentity, mmehost, mmerealm)
    In table pdn, enter the record allowing an IMSI to connect to an APN
    In table users, enter the record corresponding to your USIM card.     

Running the HSS:
yang@yang:~/openair4G/trunk/cmake_targets$ sudo tools/run_hss -g



Building the MME-GW:
yang@yang:~/openair4G/trunk/cmake_targets/tools$ ./build_epc -c -d -t -T --s6a-server

Configuring the MME-GW:
  You can configure in file openair4G/trunk/cmake_targets/tools/epc.local.enb.conf.in the following parameters:
  MCC/MNC of your network
  SGI interface (outgoing interface of the S/P-GW)
  Integrity algorithms, Ciphering algorithms
  Please note that DNS addresses are hardcoded in source code (TODO in list).

Running the MME-GW:
yang@yang:~/openair4G/trunk/cmake_targets/tools$ sudo ./run_epc -l -g  -K



Building eNB:
yang@yang:~/openair4G/trunk/cmake_targets$ ./build_oai --oaisim

Configuring the eNB:
  The default configuration file for the eNB is trunk/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_mme.conf

Running eNB:
yang@yang:~/openair4G/trunk/cmake_targets$ tools/run_enb_ue_virt_s1 -m /tmp -K /tmp/enb_ue_virt_s1_itti.log


Putting some IP UL/DL traffic in the bearer:
ping -s 1000 -m 1 192.168.12.100 -I oip1
 

################
Tools available:
###############

1) itti_analyser (list messages exchanged between protocol layers)
2) xforms (Layer 1)
3) mscgen (under construction, but can give some results now)
    (http://www.mcternan.me.uk/mscgen/)
    We use the software to generate sequence diagrams
    with traces generated during the execution of the eNB.
    After the enb execution:
    yang@yang:...$ cd /tmp
    yang@yang:/tmp$ /home/yang/openair4G/trunk/targets/SCRIPTS/msc_gen.py
    The results are located in the current directory (/tmp in this example) in a folder. The name of the folder 
    is the current date (for example: 2015-04-08_20.34.10).
    The results are input files for the mscgen tool containing events or messages and the 
    corresponding generated png files.
4) vcd (timing mesurements)