two BSC, two MSC

Change-Id: Id63238983379408b55eee16f05ee92ff5252f0ae
This commit is contained in:
Neels Hofmeyr 2019-03-12 21:06:35 +01:00
parent 177a837823
commit 2e627d5678
10 changed files with 365 additions and 32 deletions

View File

@ -2,7 +2,8 @@ ETH_DEV=eth0
APN_DEV=apn0
TO_RAN_IP="192.168.178.74"
TO_RAN_IU_IP="192.168.178.82"
TO_RAN_IP2="192.168.178.82"
TO_RAN_IU_IP="${TO_RAN_IP2}"
TO_SIP_IP=${TO_RAN_IP}
STATSD_IP="127.0.0.1"
@ -10,8 +11,13 @@ STATSD_IP="127.0.0.1"
MCC=262
MNC=42
MCC2=901
MNC2=70
TCH_TYPE1=TCH/F
TCH_TYPE=TCH/F
BSC_CODEC_LIST="fr3"
BTS_BAND=GSM-1800
BTS_LAC=23
@ -32,7 +38,7 @@ BTS0_NSEI="${BTSn_NSVCI}"
# according to osmo-bsc vty, BVCI must be >= 2
BTS0_BVCI="100${BTSn}"
BTS0_BAND=${BTS_BAND}
BTS0_LAC=${BTS_LAC}
BTS0_LAC=42
BTS0_MAX_POWER_RED=${BTS_MAX_POWER_RED}
BTS0_NOMINAL_POWER=${BTS_200mW}
BTS0_CODEC_SUPPORT=${BTS_CODEC_SUPPORT}
@ -49,20 +55,35 @@ BTS1_NSVCI=${BTSn}
BTS1_NSEI="${BTSn_NSVCI}"
BTS1_BVCI="100${BTSn}"
BTS1_BAND=${BTS_BAND}
BTS1_LAC=${BTS_LAC}
BTS1_LAC=70
BTS1_MAX_POWER_RED=${BTS_MAX_POWER_RED}
BTS1_NOMINAL_POWER=${BTS_200mW}
BTS1_CODEC_SUPPORT=${BTS_CODEC_SUPPORT}
HLR_IP=127.0.0.1
HLRPROXY_IP=127.0.0.23
HLRPROXY_PROXY_IP=127.0.0.42
HLR_VTY_CTRL_IP=127.0.0.1
HLR2_IP=127.0.0.2
HLR2_VTY_CTRL_IP=127.0.0.2
MSC_HLR_IP=${HLRPROXY_PROXY_IP}
MSC_PC="0.23.1"
MSC_MNCC_SOCKET="/tmp/mncc_socket"
#MSC_MNCC="internal"
MSC_MNCC="external ${MSC_MNCC_SOCKET}"
MSC_VTY_CTRL_IP=127.0.0.1
MSC_SMPP_IP=127.0.0.1
MSC_SGS_IP=127.0.0.1
MSC_IPA_NAME=msc-${MCC}-${MNC}-0
MSC2_PC="1.23.1"
MSC2_MNCC_SOCKET="/tmp/mncc_socket2"
#MSC2_MNCC="internal"
MSC2_MNCC="external ${MSC2_MNCC_SOCKET}"
MSC2_VTY_CTRL_IP=127.0.0.2
MSC2_SMPP_IP=127.0.0.2
MSC2_SGS_IP=127.0.0.2
MSC2_IPA_NAME=msc-${MCC2}-${MNC2}-0
AUTH=required
ENCR_A5=3
@ -86,8 +107,13 @@ MGW4BSC_VTY_IP="127.0.0.2"
BSC_IP="${TO_RAN_IP}"
BSC_PC="0.23.3"
BSC_VTY_CTRL_IP=127.0.0.1
BSC_CODEC_LIST="fr3 fr2 fr1 hr3 hr1"
BSC2_IP="${TO_RAN_IP2}"
BSC2_PC="1.23.4"
BSC2_VTY_CTRL_IP=127.0.0.2
HNBGW_PC="0.3.0"
HNBGW_IP="${TO_RAN_IP}"
@ -116,6 +142,11 @@ SIPCON_REMOTE="${TO_SIP_IP}"
SIPCON_REMOTE_PORT="5069"
SIPCON_SERVER="kamailio"
SIPCON2_LOCAL="${TO_SIP_IP}"
SIPCON2_LOCAL_PORT="15060"
SIPCON2_REMOTE="127.0.0.1"
SIPCON2_REMOTE_PORT="5069"
LOG_OUTPUT0_TYPE=stderr
LOG_OUTPUT1_TYPE=file current_log/${_name}.log
LOG_OUTPUT2_TYPE=gsmtap 127.0.0.1

View File

@ -226,6 +226,14 @@ request_route {
route(TEST);
}
if ($rU=~"^1.*") {
route(MSC1);
}
if ($rU=~"^2.*") {
route(MSC2);
}
route(PSTN);
}
@ -396,6 +404,18 @@ route[TEST] {
exit;
}
route[MSC1] {
$ru = "sip:" + $rU + "@" + "${SIPCON_LOCAL}:${SIPCON_LOCAL_PORT}";
route(RELAY);
exit;
}
route[MSC2] {
$ru = "sip:" + $rU + "@" + "${SIPCON2_LOCAL}:${SIPCON2_LOCAL_PORT}";
route(RELAY);
exit;
}
# Manage outgoing branches
branch_route[MANAGE_BRANCH] {
xdbg("new branch [$T_branch_idx] to $ru\n");

View File

@ -11,6 +11,9 @@ stats reporter statsd
!
line vty
no login
bind ${BSC_VTY_CTRL_IP}
ctrl
bind ${BSC_VTY_CTRL_IP}
!
e1_input
e1_line 0 driver ipa
@ -29,33 +32,32 @@ network
periodic location update 12
meas-feed destination 127.0.0.1 8888
${foreach(BTS)}
bts ${BTSn}
description ${BTSn_DESCRIPTION}
bts 0
description ${BTS0_DESCRIPTION}
type sysmobts
band ${BTS_BAND}
ip.access unit_id ${BTSn_IPA_UNIT}
location_area_code ${BTSn_LAC}
cell_identity ${BTSn_CI}
base_station_id_code ${BTSn_BSIC}
codec-support ${BTSn_CODEC_SUPPORT}
amr tch-f modes 7
amr tch-f start-mode 1
amr tch-h modes 0 3
amr tch-h start-mode auto
gprs mode ${BTSn_GPRS_MODE}
gprs nsvc 0 remote ip ${BTSn_GB_REMOTE_IP}
gprs nsvc 0 remote udp port ${BTSn_GB_REMOTE_PORT}
ip.access unit_id ${BTS0_IPA_UNIT}
location_area_code ${BTS0_LAC}
cell_identity ${BTS0_CI}
base_station_id_code ${BTS0_BSIC}
codec-support ${BTS0_CODEC_SUPPORT}
amr tch-f modes 3
amr tch-f start-mode 3
amr tch-h modes 3
amr tch-h start-mode 3
gprs mode ${BTS0_GPRS_MODE}
gprs nsvc 0 remote ip ${BTS0_GB_REMOTE_IP}
gprs nsvc 0 remote udp port ${BTS0_GB_REMOTE_PORT}
gprs nsvc 0 local udp port ${PCU_GB_LOCAL_PORT}
gprs nsvc 0 nsvci ${BTSn_NSVCI}
gprs nsei ${BTSn_NSEI}
gprs cell bvci ${BTSn_BVCI}
gprs nsvc 0 nsvci ${BTS0_NSVCI}
gprs nsei ${BTS0_NSEI}
gprs cell bvci ${BTS0_BVCI}
trx 0
arfcn ${BTSn_ARFCN}
description ${BTSn_DESCRIPTION}
arfcn ${BTS0_ARFCN}
description ${BTS0_DESCRIPTION}
rf_locked 0
nominal power ${BTSn_NOMINAL_POWER}
max_power_red ${BTSn_MAX_POWER_RED}
nominal power ${BTS0_NOMINAL_POWER}
max_power_red ${BTS0_MAX_POWER_RED}
timeslot 0
phys_chan_config CCCH+SDCCH4
timeslot 1
@ -72,7 +74,53 @@ ${foreach(BTS)}
phys_chan_config ${TCH_TYPE}
timeslot 7
phys_chan_config PDCH
${foreach_end}
#bts 1
# description ${BTS1_DESCRIPTION} on BSC 0
# type sysmobts
# band ${BTS_BAND}
# ip.access unit_id ${BTS1_IPA_UNIT}
# location_area_code ${BTS1_LAC}
# cell_identity ${BTS1_CI}
# base_station_id_code ${BTS1_BSIC}
# codec-support ${BTS1_CODEC_SUPPORT}
# amr tch-f modes 3
# amr tch-f start-mode 3
# amr tch-h modes 3
# amr tch-h start-mode 3
# gprs mode ${BTS1_GPRS_MODE}
# gprs nsvc 0 remote ip ${BTS1_GB_REMOTE_IP}
# gprs nsvc 0 remote udp port ${BTS1_GB_REMOTE_PORT}
# gprs nsvc 0 local udp port ${PCU_GB_LOCAL_PORT}
# gprs nsvc 0 nsvci ${BTS1_NSVCI}
# gprs nsei ${BTS1_NSEI}
# gprs cell bvci ${BTS1_BVCI}
# trx 0
# arfcn 872
# description ${BTS1_DESCRIPTION}
# rf_locked 0
# nominal power ${BTS1_NOMINAL_POWER}
# max_power_red ${BTS1_MAX_POWER_RED}
# timeslot 0
# phys_chan_config CCCH+SDCCH4
# timeslot 1
# phys_chan_config SDCCH8
# timeslot 2
# phys_chan_config ${TCH_TYPE}
# timeslot 3
# phys_chan_config ${TCH_TYPE}
# timeslot 4
# phys_chan_config ${TCH_TYPE}
# timeslot 5
# phys_chan_config ${TCH_TYPE}
# timeslot 6
# phys_chan_config ${TCH_TYPE}
# timeslot 7
# phys_chan_config PDCH
bts 0
#neighbor bts 1
neighbor cgi ${MCC2} ${MNC2} ${BTS1_LAC} ${BTS1_CI} arfcn ${BTS1_ARFCN} bsic ${BTS1_BSIC}
msc 0
mgw remote-ip ${MGW4BSC_IP}

118
net/templates/osmo-bsc2.cfg Normal file
View File

@ -0,0 +1,118 @@
${include(common_template_warning)}
stats interval 5
!
stats reporter statsd
disable
remote-ip ${STATSD_IP}
remote-port 9125
level global
no prefix
enable
!
line vty
no login
bind ${BSC2_VTY_CTRL_IP}
ctrl
bind ${BSC2_VTY_CTRL_IP}
!
e1_input
e1_line 0 driver ipa
e1_line 0 port 0
no e1_line 0 keepalive
ipa bind ${BSC2_IP}
cs7 instance 0
point-code ${BSC2_PC}
asp asp-bsc2-clnt-msc-0 2905 0 m3ua
remote-ip 127.0.0.1
local-ip ${BSC2_VTY_CTRL_IP}
sccp-address msc
point-code ${MSC2_PC}
#as as-bsc2-clnt-msc-0 m3ua
# asp asp-bsc2-clnt-msc-0
#routing-key 5 ${BSC2_PC}
network
network country code ${MCC2}
mobile network code ${MNC2}
encryption a5 ${ENCR_A5}
neci 1
paging any use tch 0
handover 0
periodic location update 12
meas-feed destination 127.0.0.1 8888
bts 0
description ${BTS1_DESCRIPTION}
type sysmobts
band ${BTS_BAND}
ip.access unit_id ${BTS1_IPA_UNIT}
location_area_code ${BTS1_LAC}
cell_identity ${BTS1_CI}
base_station_id_code ${BTS1_BSIC}
codec-support ${BTS1_CODEC_SUPPORT}
amr tch-f modes 3
amr tch-f start-mode 3
amr tch-h modes 3
amr tch-h start-mode 3
gprs mode ${BTS1_GPRS_MODE}
gprs nsvc 0 remote ip ${BTS1_GB_REMOTE_IP}
gprs nsvc 0 remote udp port ${BTS1_GB_REMOTE_PORT}
gprs nsvc 0 local udp port ${PCU_GB_LOCAL_PORT}
gprs nsvc 0 nsvci ${BTS1_NSVCI}
gprs nsei ${BTS1_NSEI}
gprs cell bvci ${BTS1_BVCI}
trx 0
arfcn ${BTS1_ARFCN}
description ${BTS1_DESCRIPTION}
rf_locked 0
nominal power ${BTS1_NOMINAL_POWER}
max_power_red ${BTS1_MAX_POWER_RED}
timeslot 0
phys_chan_config CCCH+SDCCH4
timeslot 1
phys_chan_config SDCCH8
timeslot 2
phys_chan_config ${TCH_TYPE}
timeslot 3
phys_chan_config ${TCH_TYPE}
timeslot 4
phys_chan_config ${TCH_TYPE}
timeslot 5
phys_chan_config ${TCH_TYPE}
timeslot 6
phys_chan_config ${TCH_TYPE}
timeslot 7
phys_chan_config PDCH
bts 0
neighbor cgi ${MCC} ${MNC} ${BTS0_LAC} ${BTS0_CI} arfcn ${BTS0_ARFCN} bsic ${BTS0_BSIC}
msc 0
msc-addr msc
mgw remote-ip ${MGW4BSC_IP}
mgw remote-port ${MGW4BSC_PORT}
mgw endpoint-domain bsc
allow-emergency deny
codec-list ${BSC_CODEC_LIST}
amr-config 12_2k allowed
amr-config 10_2k forbidden
amr-config 7_95k forbidden
amr-config 7_40k forbidden
amr-config 6_70k allowed
amr-config 5_90k forbidden
amr-config 5_15k forbidden
amr-config 4_75k allowed
${foreach(LOG_OUTPUT)}
log ${LOG_OUTPUTn_TYPE}
${include(common_logging)}
logging level hodec info
logging level ho info
logging level nm info
logging level meas info
logging level lmi info
logging level linp notice
logging level lss7 notice
logging level lsccp notice
logging level lsua notice
logging level lm3ua notice
${foreach_end}

View File

@ -15,6 +15,11 @@ mslookup
mdns
service sip.voice at ${SIPCON_LOCAL} ${SIPCON_LOCAL_PORT}
line vty
bind ${HLR_VTY_CTRL_IP}
ctrl
bind ${HLR_VTY_CTRL_IP}
${foreach(LOG_OUTPUT)}
log ${LOG_OUTPUTn_TYPE}
${include(common_logging)}

View File

@ -0,0 +1,20 @@
${include(common_template_warning)}
hlr
database hlr2.db
gsup
bind ip ${HLR2_IP}
ussd route prefix *0# internal own-msisdn
ussd route prefix *1# internal own-imsi
ussd route prefix *#100# internal own-msisdn
ussd route prefix *#101# internal own-imsi
store-imei
line vty
bind ${HLR2_VTY_CTRL_IP}
ctrl
bind ${HLR2_VTY_CTRL_IP}
${foreach(LOG_OUTPUT)}
log ${LOG_OUTPUTn_TYPE}
${include(common_logging)}
${foreach_end}

View File

@ -1,11 +1,13 @@
${include(common_template_warning)}
cs7 instance 0
point-code ${MSC_PC}
network
network country code ${MCC}
mobile network code ${MNC}
authentication ${AUTH}
encryption a5 ${ENCR_A5}
short name 35c3
long name 35c3
short name ${MSC_IPA_NAME}
long name ${MSC_IPA_NAME}
mm info 1
msc
mncc ${MSC_MNCC}
@ -15,16 +17,22 @@ msc
check-imei-rqd 1
# For nano3G:
iu rab-assign-addr-enc x213
neighbor a cgi ${MCC} ${MNC} ${BTS0_LAC} ${BTS0_CI} ran-pc ${BSC_PC}
neighbor a cgi ${MCC2} ${MNC2} ${BTS1_LAC} ${BTS1_CI} msc-ipa-name ${MSC2_IPA_NAME}
mncc-int
default-codec tch-f fr
default-codec tch-h amr
smpp
local-tcp-ip 127.0.0.1 2775
local-tcp-ip ${MSC_SMPP_IP} 2775
system-id test-msc
policy closed
no smpp-first
hlr
remote-ip ${MSC_HLR_IP}
ipa-name ${MSC_IPA_NAME}
sgs
local-ip ${MSC_SGS_IP}
${foreach(LOG_OUTPUT)}
log ${LOG_OUTPUTn_TYPE}

View File

@ -0,0 +1,50 @@
${include(common_template_warning)}
cs7 instance 0
point-code ${MSC2_PC}
network
network country code ${MCC2}
mobile network code ${MNC2}
authentication ${AUTH}
encryption a5 ${ENCR_A5}
short name ${MSC2_IPA_NAME}
long name ${MSC2_IPA_NAME}
mm info 1
msc
mncc ${MSC2_MNCC}
mgw remote-ip ${MGW4MSC_IP}
mgw remote-port ${MGW4MSC_PORT}
mgw endpoint-domain msc
check-imei-rqd 1
# For nano3G:
iu rab-assign-addr-enc x213
neighbor a cgi ${MCC} ${MNC} ${BTS0_LAC} ${BTS0_CI} msc-ipa-name ${MSC_IPA_NAME}
neighbor a cgi ${MCC2} ${MNC2} ${BTS1_LAC} ${BTS1_CI} ran-pc ${BSC2_PC}
mncc-int
default-codec tch-f fr
default-codec tch-h amr
smpp
local-tcp-ip ${MSC2_SMPP_IP} 2775
system-id test-msc
policy closed
no smpp-first
hlr
remote-ip ${HLR_IP}
ipa-name ${MSC2_IPA_NAME}
line vty
bind ${MSC2_VTY_CTRL_IP}
ctrl
bind ${MSC2_VTY_CTRL_IP}
sgs
local-ip ${MSC2_SGS_IP}
${foreach(LOG_OUTPUT)}
log ${LOG_OUTPUTn_TYPE}
${include(common_logging)}
logging level linp notice
logging level lss7 notice
logging level lsccp notice
logging level lsua notice
logging level lm3ua notice
${foreach_end}

View File

@ -0,0 +1,15 @@
${include(common_template_warning)}
app
mncc
socket-path ${MSC2_MNCC_SOCKET}
sip
local ${SIPCON2_LOCAL} ${SIPCON2_LOCAL_PORT}
remote ${SIPCON2_REMOTE} ${SIPCON2_REMOTE_PORT}
line vty
bind 127.0.0.2
${foreach(LOG_OUTPUT)}
log ${LOG_OUTPUTn_TYPE}
${include(common_logging)}
${foreach_end}

View File

@ -72,6 +72,7 @@ hnbgw="osmo-hnbgw"
# - the tee saves the stderr logging as well as the udtrace output to new file current_log/osmo-msc.out, since udtrace
# will not show in osmo-msc.log
msc="LD_LIBRARY_PATH=/usr/lib/titan LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.5:/n/s/udtrace/libudtrace.so osmo-msc 2>&1 | tee -a current_log/osmo-msc.out"
msc2="LD_LIBRARY_PATH=/usr/lib/titan LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.5:/n/s/udtrace/libudtrace.so osmo-msc -c osmo-msc2.cfg 2>&1 | tee -a current_log/osmo-msc2.out"
gbproxy="osmo-gbproxy"
sgsn="osmo-sgsn"
ggsn="osmo-ggsn"
@ -82,8 +83,10 @@ mgw4bsc="osmo-mgw -c osmo-mgw-for-bsc.cfg"
hlr="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-hlr --db-upgrade"
hlr_proxy="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-hlr --db-upgrade -c osmo-hlr-proxy.cfg --database hlr-proxy.db"
hlr_proxy_proxy="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-hlr --db-upgrade -c osmo-hlr-proxy-proxy.cfg --database hlr-proxy-proxy.db"
#hlr2="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-hlr --db-upgrade -c osmo-hlr2.cfg"
stp="osmo-stp"
bsc="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-bsc -c osmo-bsc.cfg"
bsc2="LD_LIBRARY_PATH=/usr/local/lib gdb -ex run --args osmo-bsc -c osmo-bsc2.cfg"
if [ "x${MSC_MNCC}" != "xinternal" ]; then
sipcon="osmo-sip-connector -c osmo-sip-connector.cfg"
@ -114,6 +117,10 @@ if [ "x${MSC_MNCC}" != "xinternal" ]; then
esac
fi
if [ "x${MSC2_MNCC}" != "xinternal" ]; then
sipcon2="osmo-sip-connector -c osmo-sip-connector2.cfg"
fi
sudo tcpdump -i $dev -n -w current_log/$dev.single.pcap -U not port 22 &
sudo tcpdump -i lo -n -w current_log/lo.single.pcap -U not port 22 &
@ -127,6 +134,8 @@ term "$hlr_proxy" HLRproxy &
sleep .2
term "$hlr_proxy_proxy" HLRproxyproxy &
sleep .2
#term "$hlr2" HLR2 &
#sleep .2
term "$sgsn" SGSN &
sleep .2
term "$gbproxy" GBPROXY &
@ -137,9 +146,13 @@ term "$mgw4bsc" MGW4BSC &
sleep .2
term "$msc" MSC &
sleep 2
term "$msc2" MSC2 &
sleep 2
term "$hnbgw" HNBGW &
sleep .2
term "$bsc" BSC &
sleep .2
term "$bsc2" BSC2 &
if [ "x${MSC_MNCC}" != "xinternal" ]; then
sleep .2
@ -151,6 +164,11 @@ if [ "x${MSC_MNCC}" != "xinternal" ]; then
esac
fi
if [ "x${MSC2_MNCC}" != "xinternal" ]; then
sleep .2
term "$sipcon2" SIPCON2 &
fi
#ssh bts rm /tmp/bts.log /tmp/pcu.log
#ssh bts neels/run_remote.sh &
@ -161,7 +179,7 @@ echo Closing...
#ssh bts neels/stop_remote.sh
jobs
kill %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16
kill %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17
killall osmo-msc
killall osmo-bsc
killall osmo-gbproxy