#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements.  See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.0  (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# *      http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# *      contact@openairinterface.org
# */

# 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)



