The text has been updated in all those files. modified: README.txt modified: cmake_targets/CMakeLists.txt modified: cmake_targets/at_commands/CMakeLists.txt modified: cmake_targets/autotests/core.py modified: cmake_targets/autotests/log.py modified: cmake_targets/autotests/openair.py modified: cmake_targets/autotests/run_exec_autotests.bash modified: cmake_targets/autotests/run_exec_lte-softmodem_tests.py modified: cmake_targets/autotests/tools/configure_cots_bandrich_ue.py modified: cmake_targets/autotests/tools/configure_cots_huaweiE398_ue.py modified: cmake_targets/autotests/tools/configure_usrpb210.py modified: cmake_targets/autotests/tools/find_usb_path.bash modified: cmake_targets/autotests/tools/free_mem.bash modified: cmake_targets/autotests/tools/iperf3_script modified: cmake_targets/autotests/tools/iperf3_script_phone modified: cmake_targets/autotests/tools/iperf_script modified: cmake_targets/autotests/tools/iperf_script_phone modified: cmake_targets/autotests/tools/lib_autotest.py modified: cmake_targets/autotests/tools/search_repl.py modified: cmake_targets/build_oai modified: cmake_targets/tools/asn1tostruct.py modified: cmake_targets/tools/build_helper modified: cmake_targets/tools/build_test_epc_tools modified: cmake_targets/tools/example_enb_exmimo_mme_hss.txt modified: cmake_targets/tools/example_oaisim_enb_ue_mme_virtual.txt modified: cmake_targets/tools/indent_source_code modified: cmake_targets/tools/init_exmimo2 modified: cmake_targets/tools/init_nas_nos1 modified: cmake_targets/tools/perf_oai.bash modified: cmake_targets/tools/run_enb_s1_exmimo modified: cmake_targets/tools/run_enb_s1_usrp modified: cmake_targets/tools/run_enb_ue_virt_noS1 modified: cmake_targets/tools/run_enb_ue_virt_s1 modified: openair2/DOCS/TEMPLATES/README/Readme.doxy modified: openair2/DOCS/TEMPLATES/README/readme.txt modified: openair2/Makefile modified: openair2/UTIL/OCG/Readme.doxy modified: openair2/UTIL/OCG/readme.txt modified: openair2/UTIL/OSD/recep.php modified: openair2/X2AP/MESSAGES/ASN1/asn1tostruct.py modified: openair3/DOCS/DOXYGEN/Makefile.am modified: openair3/DOCS/Latex/EPC/Makefile modified: openair3/DOCS/Makefile.am modified: openair3/GTPV1-U/Makefile.am modified: openair3/GTPV1-U/Makefile.eNB modified: openair3/NAS/TEST/AS_SIMULATOR/Makefile modified: openair3/NAS/TEST/NETWORK/Makefile modified: openair3/NAS/TEST/USER/Makefile modified: openair3/NAS/TOOLS/Makefile modified: openair3/NAS/UE/API/USER/Makefile modified: openair3/NAS/UE/API/USER/tst/Makefile modified: openair3/NAS/UE/API/USIM/Makefile modified: openair3/S1AP/MESSAGES/ASN1/asn1tostruct.py modified: openair3/TEST/Makefile.am modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/gpib_send.cc modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_config_exmimo.cc modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_get_frame.cc modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_get_num_detected_cards.cc modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_send_frame.cc modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_stop.cc modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_stop_without_reset.cc modified: targets/PROJECTS/E-MBMS/build_all.bash modified: targets/PROJECTS/E-MBMS/start_enb.bash modified: targets/PROJECTS/E-MBMS/start_ue.bash modified: targets/PROJECTS/E-MBMS/utils.bash modified: targets/PROJECTS/GENERIC-LTE-EPC/interfaces.bash modified: targets/PROJECTS/GENERIC-LTE-EPC/networks.bash modified: targets/PROJECTS/GENERIC-LTE-EPC/start_enb_and_ue_virt.bash modified: targets/PROJECTS/GENERIC-LTE-EPC/start_ue.bash modified: targets/PROJECTS/GENERIC-LTE-EPC/utils.bash modified: targets/PROJECTS/GENERIC-LTE-EPC/virtual_box.bash modified: targets/SCRIPTS/install_asn1c_0.9.24.modified.bash modified: targets/TEST/OAI/case01.py modified: targets/TEST/OAI/case02.py modified: targets/TEST/OAI/case03.py modified: targets/TEST/OAI/case04.py modified: targets/TEST/OAI/case05.py modified: targets/TEST/OAI/case11.py modified: targets/TEST/OAI/case12.py modified: targets/TEST/OAI/case13.py modified: targets/TEST/OAI/core.py modified: targets/TEST/OAI/log.py modified: targets/TEST/OAI/openair.py modified: targets/TEST/OAI/test01.py modified: targets/TEST/OAI/test02.py modified: targets/TEST/PDCP/readme.txt modified: targets/build_helper.bash modified: targets/build_oai.bash modified: targets/perf_oai.bash
302 lines
12 KiB
Bash
Executable File
302 lines
12 KiB
Bash
Executable File
#/*
|
|
# * 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 networks.bash
|
|
# brief
|
|
# author Lionel Gauthier
|
|
# company Eurecom
|
|
# email: lionel.gauthier@eurecom.fr
|
|
#
|
|
|
|
|
|
# example: netcalc 192.168.12.100 255.255.255.0
|
|
netcalc(){
|
|
local IFS='.' ip i
|
|
local -a oct msk
|
|
|
|
read -ra oct <<<"$1"
|
|
read -ra msk <<<"$2"
|
|
|
|
for i in ${!oct[@]}; do
|
|
ip+=( "$(( oct[i] & msk[i] ))" )
|
|
done
|
|
|
|
echo "${ip[*]}"
|
|
}
|
|
|
|
|
|
|
|
build_enb_vlan_network() {
|
|
# create vlan interface
|
|
is_vlan_interface $ENB_INTERFACE_NAME_FOR_S1_MME
|
|
if [ $? -eq 1 ]; then
|
|
delete_vlan_interface $ENB_INTERFACE_NAME_FOR_S1_MME
|
|
sync
|
|
create_vlan_interface $ENB_INTERFACE_NAME_FOR_S1_MME
|
|
sync
|
|
set_interface_up $ENB_INTERFACE_NAME_FOR_S1_MME $ENB_IPV4_ADDRESS_FOR_S1_MME $ENB_IPV4_NETMASK_FOR_S1_MME
|
|
else
|
|
echo_fatal "BAD INTERFACE NAME FOR ENB S1-MME $ENB_INTERFACE_NAME_FOR_S1_MME"' (waiting for ethx.y, wlanx.y or wifix.y)'
|
|
fi;
|
|
|
|
is_vlan_interface $ENB_INTERFACE_NAME_FOR_S1U
|
|
if [ $? -eq 1 ]; then
|
|
delete_vlan_interface $ENB_INTERFACE_NAME_FOR_S1U
|
|
sync
|
|
create_vlan_interface $ENB_INTERFACE_NAME_FOR_S1U
|
|
sync
|
|
set_interface_up $ENB_INTERFACE_NAME_FOR_S1U $ENB_IPV4_ADDRESS_FOR_S1U $ENB_IPV4_NETMASK_FOR_S1U
|
|
sync
|
|
else
|
|
echo_fatal "BAD INTERFACE NAME FOR ENB S1U $ENB_INTERFACE_NAME_FOR_S1U"' (waiting for ethx.y, wlanx.y or wifix.y)'
|
|
fi;
|
|
}
|
|
|
|
clean_enb_vlan_network() {
|
|
is_vlan_interface $ENB_INTERFACE_NAME_FOR_S1_MME
|
|
if [ $? -eq 1 ]; then
|
|
echo_success "Found VLAN interface $ENB_INTERFACE_NAME_FOR_S1_MME ... deleting"
|
|
delete_vlan_interface $ENB_INTERFACE_NAME_FOR_S1_MME
|
|
fi;
|
|
|
|
is_vlan_interface $ENB_INTERFACE_NAME_FOR_S1U
|
|
if [ $? -eq 1 ]; then
|
|
echo_success "Found VLAN interface $ENB_INTERFACE_NAME_FOR_S1U ... deleting"
|
|
delete_vlan_interface $ENB_INTERFACE_NAME_FOR_S1U
|
|
fi;
|
|
sync;
|
|
clean_network
|
|
}
|
|
|
|
|
|
|
|
build_mme_spgw_vlan_network() {
|
|
# hss.eur
|
|
# |
|
|
# +-----------+ +-----------+ v +----------+
|
|
# | eNB +------+ VLAN 1+------+ MME +----+ +---+ HSS |
|
|
# | |ethx.1+------------------+ethy.1| | +------+ | |
|
|
# | +------+ +------+ +----+ +---+ |
|
|
# | |ethx.2+-------+ | | +----------+
|
|
# | +------+ | +-+-------+-+
|
|
# | | | | s11mme|
|
|
# | | | +---+---+
|
|
# | | | (optional)| VLAN 3
|
|
# +-----------+ | +---+---+
|
|
# | | s11sgw| router.eur
|
|
# | +-+-------+-+ | +--------------+
|
|
# | | S+P-GW | v | ROUTER |
|
|
# | VLAN2 +------+ +-------+ +----+ +----+
|
|
# +----------+ethy.2| |sgi +-...-+ | | +---...Internet
|
|
# +------+ +-------+ +----+ +----+
|
|
# | | 11 VLANS | |
|
|
# +-----------+ ids=[5..15] +--------------+
|
|
|
|
bash_exec "modprobe 8021q"
|
|
|
|
# create vlan interface
|
|
is_vlan_interface $MME_INTERFACE_NAME_FOR_S1_MME
|
|
if [ $? -eq 1 ]; then
|
|
delete_vlan_interface $MME_INTERFACE_NAME_FOR_S1_MME
|
|
sync
|
|
create_vlan_interface $MME_INTERFACE_NAME_FOR_S1_MME
|
|
sync
|
|
set_interface_up $MME_INTERFACE_NAME_FOR_S1_MME $MME_IPV4_ADDRESS_FOR_S1_MME $MME_IPV4_NETMASK_FOR_S1_MME
|
|
else
|
|
echo_fatal "BAD INTERFACE NAME FOR SGW S1-MME $MME_INTERFACE_NAME_FOR_S1_MME"' (waiting for ethx.y, wlanx.y or wifix.y)'
|
|
fi;
|
|
|
|
is_vlan_interface $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
|
|
if [ $? -eq 1 ]; then
|
|
delete_vlan_interface $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
|
|
sync
|
|
create_vlan_interface $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
|
|
sync
|
|
set_interface_up $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP $SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP $SGW_IPV4_NETMASK_FOR_S1U_S12_S4_UP
|
|
else
|
|
echo_fatal "BAD INTERFACE NAME FOR SGW S1U $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP"' (waiting for ethx.y, wlanx.y or wifix.y)'
|
|
fi;
|
|
|
|
#
|
|
is_real_interface $PGW_INTERFACE_NAME_FOR_SGI
|
|
if [ $? -eq 1 ]; then
|
|
create_sgi_vlans
|
|
else
|
|
echo_warning "SGI interface disabled by config file"
|
|
fi
|
|
}
|
|
|
|
clean_epc_vlan_network() {
|
|
|
|
bash_exec "modprobe 8021q"
|
|
|
|
delete_vlan_interface $MME_INTERFACE_NAME_FOR_S1_MME
|
|
delete_vlan_interface $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
|
|
|
|
for i in 5 6 7 8 9 10 11 12 13 14 15
|
|
do
|
|
# delete vlan interface
|
|
delete_vlan_interface $PGW_INTERFACE_NAME_FOR_SGI.$i
|
|
done
|
|
clean_network
|
|
}
|
|
|
|
|
|
# arg1 is IF1 IP addr
|
|
# arg2 is IF2 IP addr
|
|
test_local_iperf() {
|
|
|
|
TRY_NO=3
|
|
|
|
until [ $TRY_NO -lt 1 ]; do
|
|
iperf --bind $1 -u -s 2>&1 > /dev/null &
|
|
iperf --bind $2 -u --num 1K -c $1 2>&1 | grep -i WARNING > /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
pkill iperf 2>&1 > /dev/null
|
|
echo_warning "NETWORK TEST FAILED between $1 and $2"
|
|
else
|
|
echo_success "NETWORK TEST SUCCESS between $1 and $2"
|
|
pkill iperf 2>&1 > /dev/null
|
|
return
|
|
fi
|
|
let TRY_NO-=1
|
|
pkill iperf 2>&1 > /dev/null
|
|
done
|
|
echo_fatal "FATAL: NETWORK TEST FAILED between $1 and $2"
|
|
}
|
|
|
|
test_network() {
|
|
|
|
# TEST INTERFACES
|
|
if [ "a${MME_INTERFACE_NAME_FOR_S1_MME:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $MME_IPV4_ADDRESS_FOR_S1_MME > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $MME_INTERFACE_NAME_FOR_S1_MME ERROR, ADDRESS IS $MME_IPV4_ADDRESS_FOR_S1_MME $LINENO"; fi;
|
|
fi
|
|
|
|
if [ "a${SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP ERROR, ADDRESS IS $SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP $LINENO"; fi;
|
|
fi
|
|
|
|
if [ "a${ENB_INTERFACE_NAME_FOR_S1_MME:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $ENB_IPV4_ADDRESS_FOR_S1_MME > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $ENB_INTERFACE_NAME_FOR_S1_MME ADDR ERROR, ADDRESS IS $ENB_IPV4_ADDRESS_FOR_S1_MME $LINENO"; fi;
|
|
fi
|
|
|
|
if [ "a${ENB_INTERFACE_NAME_FOR_S1U:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $ENB_IPV4_ADDRESS_FOR_S1U > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $ENB_INTERFACE_NAME_FOR_S1U ERROR, ADDRESS IS $ENB_IPV4_ADDRESS_FOR_S1U $LINENO"; fi;
|
|
fi
|
|
|
|
if [ "a${MME_INTERFACE_NAME_FOR_S11_MME:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $MME_IPV4_ADDRESS_FOR_S11_MME > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $MME_INTERFACE_NAME_FOR_S11_MME ERROR, ADDRESS IS $MME_IPV4_ADDRESS_FOR_S11_MME $LINENO"; fi;
|
|
fi
|
|
|
|
if [ "a${SGW_INTERFACE_NAME_FOR_S11:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $SGW_IPV4_ADDRESS_FOR_S11 > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $SGW_INTERFACE_NAME_FOR_S11 ERROR, ADDRESS IS $SGW_IPV4_ADDRESS_FOR_S11 $LINENO"; fi;
|
|
fi
|
|
|
|
if [ "a${MME_INTERFACE_NAME_FOR_S6A:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $MME_IPV4_ADDRESS_FOR_S6A > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $MME_INTERFACE_NAME_FOR_S6A ERROR, ADDRESS IS $MME_IPV4_ADDRESS_FOR_S6A $LINENO"; fi;
|
|
fi
|
|
|
|
if [ "a${HSS_INTERFACE_NAME_FOR_S6A:0:4}" != "anone" ]; then
|
|
ping -q -c 1 $HSS_IPV4_ADDRESS_FOR_S6A > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then echo_fatal "PING INTERFACE $HSS_INTERFACE_NAME_FOR_S6A ERROR, ADDRESS IS $HSS_IPV4_ADDRESS_FOR_S6A $LINENO"; fi;
|
|
fi
|
|
|
|
## TEST NETWORK BETWEEN ENB-MME-SP-GW
|
|
|
|
if [ "a${MME_INTERFACE_NAME_FOR_S1_MME:0:4}" != "anone" ] && [ "a${ENB_INTERFACE_NAME_FOR_S1_MME:0:4}" != "anone" ]; then
|
|
test_local_iperf $ENB_IPV4_ADDRESS_FOR_S1_MME $MME_IPV4_ADDRESS_FOR_S1_MME
|
|
fi
|
|
|
|
if [ "a${ENB_INTERFACE_NAME_FOR_S1U:0:4}" != "anone" ] && [ "a${SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP:0:4}" != "anone" ]; then
|
|
test_local_iperf $ENB_IPV4_ADDRESS_FOR_S1U $SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP
|
|
fi
|
|
|
|
if [ "a${MME_INTERFACE_NAME_FOR_S11_MME:0:4}" != "anone" ] && [ "a${SGW_INTERFACE_NAME_FOR_S11:0:4}" != "anone" ]; then
|
|
test_local_iperf $MME_IPV4_ADDRESS_FOR_S11_MME $SGW_IPV4_ADDRESS_FOR_S11
|
|
fi
|
|
|
|
if [ "a${MME_INTERFACE_NAME_FOR_S6A:0:4}" != "anone" ] && [ "a${HSS_INTERFACE_NAME_FOR_S6A:0:4}" != "anone" ]; then
|
|
test_local_iperf $MME_IPV4_ADDRESS_FOR_S6A $HSS_IPV4_ADDRESS_FOR_S6A
|
|
fi
|
|
|
|
# Get MAC address of router.eur
|
|
ping -c 1 hss.eur > /dev/null || { echo_fatal "hss.eur does not respond to ping" >&2 ; }
|
|
ping -c 1 router.eur > /dev/null || { echo_fatal "router.eur does not respond to ping" >&2 ; }
|
|
return 0
|
|
}
|
|
|
|
clean_network() {
|
|
interfaces=`ifconfig | grep HWaddr | cut -d " " -f1-2 | tr -d '\n'`
|
|
for interface in $interfaces
|
|
do
|
|
|
|
is_vlan_interface $interface
|
|
if [ $? -eq 1 ]; then
|
|
echo_success "Found VLAN interface $interface ... deleting"
|
|
delete_vlan_interface $interface
|
|
fi
|
|
done
|
|
}
|
|
|
|
|
|
delete_sgi_vlans() {
|
|
|
|
for i in 5 6 7 8 9 10 11 12 13 14 15
|
|
do
|
|
delete_vlan_interface $PGW_INTERFACE_NAME_FOR_SGI.$i
|
|
done
|
|
}
|
|
|
|
|
|
|
|
create_sgi_vlans() {
|
|
|
|
get_mac_router
|
|
|
|
bash_exec "modprobe 8021q"
|
|
|
|
bash_exec "ip link set $PGW_INTERFACE_NAME_FOR_SGI promisc on"
|
|
|
|
for i in 5 6 7 8 9 10 11 12 13 14 15
|
|
do
|
|
# create vlan interface
|
|
delete_vlan_interface $PGW_INTERFACE_NAME_FOR_SGI.$i
|
|
sync
|
|
create_vlan_interface $PGW_INTERFACE_NAME_FOR_SGI.$i
|
|
sync
|
|
# configure vlan interface
|
|
base=200
|
|
NET=$(( $i + $base ))
|
|
set_interface_up $PGW_INTERFACE_NAME_FOR_SGI.$i "10.0."$NET".2" 24
|
|
|
|
done
|
|
}
|
|
|
|
|
|
|