No need for GTPURH kernel module (work done in GTPUAH, will change module name later). still classification with iptables mark, conntrack. Tested with EPC local to eNB, test with remote EPC after this commit. Added srb1 parameters in enb config file, Correction of mscgen traces git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7413 818b1a75-f10b-46b9-bf7c-635c3b92a50f
217 lines
7.1 KiB
Bash
Executable File
217 lines
7.1 KiB
Bash
Executable File
#!/bin/bash
|
|
################################################################################
|
|
# 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) any later 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 start_enb_ue_virt_noS1
|
|
# brief
|
|
# author Lionel Gauthier
|
|
# company Eurecom
|
|
# email: lionel.gauthier@eurecom.fr
|
|
###########################################
|
|
# INPUT OF THIS SCRIPT:
|
|
# THE DIRECTORY WHERE ARE LOCATED THE CONFIGURATION FILES
|
|
#########################################
|
|
# This script start ENB+UE (all in one executable, on one host)
|
|
# eNB is in standalone mode, it does not require a MME.
|
|
|
|
|
|
|
|
###########################################################
|
|
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
|
|
. $THIS_SCRIPT_PATH/build_helper
|
|
###########################################################
|
|
|
|
|
|
|
|
|
|
function help()
|
|
{
|
|
echo_error " "
|
|
echo_error "Usage: start_enb_ue_virt_noS1 [OPTION]..."
|
|
echo_error "Run the eNB and/or UE executable with no hardware."
|
|
echo_error " "
|
|
echo_error "Options:"
|
|
echo_error "Mandatory arguments to long options are mandatory for short options too."
|
|
echo_error " -c, -C, --config-file eNB_config_file eNB config file, (see $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF)"
|
|
echo_error " Default eNB config file if not set is $1"
|
|
echo_error " -g, --gdb Run with GDB."
|
|
echo_error " -h, --help Print this help."
|
|
echo_error " -K, --itti-dump-file filename ITTI dump file containing all ITTI events occuring during EPC runtime.(can omit file name if last argument)"
|
|
echo_error " -m, --mscgen directory Generate mscgen output files in a directory"
|
|
echo_error " -V, --vcd Dump timings of processing in a GTKWave compliant file format."
|
|
echo_error " -x, --xforms Run XFORMS scope windows."
|
|
}
|
|
|
|
|
|
|
|
function main()
|
|
{
|
|
set_openair_env
|
|
cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
|
|
|
|
local -i run_gdb=0
|
|
local -i run_mscgen=0
|
|
local exe_arguments=""
|
|
local DEFAULT_CONFIG_FILE_ENB=$OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf
|
|
local CONFIG_FILE_ENB=$DEFAULT_CONFIG_FILE_ENB
|
|
local MSC_DIR="/tmp"
|
|
|
|
until [ -z "$1" ]
|
|
do
|
|
case "$1" in
|
|
-c | -C | --config-file)
|
|
CONFIG_FILE_ENB=$2
|
|
# may be relative path
|
|
if [ -f $(dirname $(readlink -f $0))/$CONFIG_FILE ]; then
|
|
CONFIG_FILE_ENB=$(dirname $(readlink -f $0))/$CONFIG_FILE
|
|
echo "setting config file to: $CONFIG_FILE"
|
|
CONFIG_FILE_ACCESS_OK=1
|
|
else
|
|
# may be absolute path
|
|
if [ -f $CONFIG_FILE_ENB ]; then
|
|
echo "setting config file to: $CONFIG_FILE_ENB"
|
|
else
|
|
echo_fatal "config file $CONFIG_FILE_ENB not found"
|
|
fi
|
|
fi
|
|
shift 2;
|
|
;;
|
|
-g | --gdb)
|
|
run_gdb=1
|
|
echo "setting GDB flag to: $GDB"
|
|
shift;
|
|
;;
|
|
-h | --help)
|
|
help $DEFAULT_CONFIG_FILE_ENB
|
|
shift;
|
|
exit 0
|
|
;;
|
|
-K | --itti-dump-file)
|
|
ITTI_DUMP_FILE=$2
|
|
# can omit file name if last arg on the line
|
|
if [ "x$ITTI_DUMP_FILE" = "x" ]; then
|
|
ITTI_DUMP_FILE="/tmp/itti_enb_ue_s1.log"
|
|
shift 1;
|
|
else
|
|
shift 2;
|
|
fi
|
|
echo "setting ITTI dump file to: $ITTI_DUMP_FILE"
|
|
exe_arguments="$exe_arguments -K $ITTI_DUMP_FILE"
|
|
;;
|
|
|
|
-m | --mscgen)
|
|
MSC_DIR=$2
|
|
# can omit file name if last arg on the line
|
|
if [ -d "$MSC_DIR" ]; then
|
|
echo "setting mscgen log files to dir: $MSC_DIR"
|
|
run_mscgen=1
|
|
shift 2;
|
|
else
|
|
echo_error "Mscgen log dir does not exist"
|
|
exit -1
|
|
fi
|
|
;;
|
|
|
|
-V | --vcd)
|
|
"setting gtk-wave output"
|
|
exe_arguments="$exe_arguments -V /tmp/oai_gtk_wave.vcd"
|
|
shift ;
|
|
;;
|
|
*)
|
|
echo "Unknown option $1"
|
|
help
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# may use default config file
|
|
exe_arguments="$exe_arguments --enb-conf $CONFIG_FILE_ENB"
|
|
|
|
|
|
##################################################
|
|
# LAUNCH eNB + UE executable
|
|
##################################################
|
|
$SUDO pkill oaisim
|
|
$SUDO rmmod nasmesh > /dev/null 2>&1
|
|
|
|
echo_success "Bringup UE interface..."
|
|
$SUDO insmod $OPENAIR_DIR/targets/bin/nasmesh.ko
|
|
sync
|
|
|
|
echo "bring up oai0 interface for enb"
|
|
$SUDO ifconfig oai0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255
|
|
sync
|
|
echo "bring up oai1 interface for ue 1"
|
|
$SUDO ifconfig oai1 10.0.2.2 netmask 255.255.255.0 broadcast 10.0.2.255
|
|
sync
|
|
|
|
# enb -> ue1
|
|
$OPENAIR_DIR/targets/bin/rb_tool -a -c0 -i0 -z0 -s 10.0.1.1 -t 10.0.1.2 -r 1
|
|
# ue1 -> enb
|
|
$OPENAIR_DIR/targets/bin/rb_tool -a -c0 -i1 -z0 -s 10.0.2.2 -t 10.0.2.1 -r 1
|
|
|
|
|
|
exe_arguments="$exe_arguments -s15 -AAWGN -b1 -u1"
|
|
|
|
cd $OPENAIR_DIR/targets/bin
|
|
|
|
|
|
if [ $run_mscgen -eq 1 ]; then
|
|
$SUDO rm -f /tmp/openair.msc.*
|
|
fi
|
|
|
|
if [ $run_gdb -eq 0 ]; then
|
|
exec $SUDO $OPENAIR_DIR/targets/bin/oaisim_nos1 $exe_arguments | tee /tmp/enb_ue_nos1.log.txt
|
|
else
|
|
touch ~/.gdb_enb_ue_nos1
|
|
chmod 777 ~/.gdb_enb_ue_nos1
|
|
echo "file $OPENAIR_DIR/targets/bin/oaisim_nos1" > ~/.gdb_enb_ue_nos1
|
|
echo "set args $exe_arguments" >> ~/.gdb_enb_ue_nos1
|
|
echo "run" >> ~/.gdb_enb_ue_nos1
|
|
cat ~/.gdb_enb_ue_nos1
|
|
$SUDO gdb -n -x ~/.gdb_enb_ue_nos1
|
|
fi
|
|
|
|
if [ $run_mscgen -eq 1 ]; then
|
|
cd $MSC_DIR
|
|
last_created_file=`ls -t mscgen* | head -1 | tr -d ':'`
|
|
$OPENAIR_DIR/targets/SCRIPTS/msc_gen.py --profile E_UTRAN
|
|
sync
|
|
last_created_file2=`ls -t mscgen* | head -1 | tr -d ':'`
|
|
|
|
if [ x"$last_created_file" != x"$last_created_file2" ]; then
|
|
if [ -f ./$last_created_file2/oai_mscgen_page_0.png ]; then
|
|
command -v eog 2>/dev/null && eog ./$last_created_file2/oai_mscgen_page_0.png
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
main "$@"
|