pespin has uploaded this change for review.

View Change

ttcn3-asterisk: Add extra IP addr in ttcn3 docker for IMS Core

TTCN-3 docker container is emulating both the SIP UAs and the IMS Core.
So far all the components being emulated there were running under the
only local IP address available in the docker container.
This means, both the SIP UAs and the IMS Core were using the same IP
address.

This is actually causing problems for Asterisk, since on the VoLTE side
it needs to be configured to identify the endpoint based on the IMS Core
domain name.
Since the default identify matching ordered in Asterisk is:
"endpoint_identifier_order=ip,username,anonymous"
That means it always first checks the source IP address, which means
messages coming from local SIP UAs are misunderstood to be coming from
the IMS Core (since ims.mnc001.mcc238.3gppnetwork.org resolves to same
IP address).

The issue can be fixed by swapping the order to "username,ip", because
then the well-known 50X extensions are matched before attempting to
match by IP address.
However, this is all deviating config for the expected usual network
configuration, since the local IP network will be different than the IP
address coming from VoLTE.
Hence, let's instead properly separate the local SIP and VoLTE networks
with different IP addresses, which then solves the issue.

Change-Id: I6e5a261748ec61bb1cfa4aafee8c748d0f46aa9e
---
M ttcn3-asterisk-ims-ue-test/Asterisk_Tests.cfg
M ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh
M ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf
M ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf
M ttcn3-asterisk-ims-ue-test/jenkins.sh
A ttcn3-asterisk-ims-ue-test/ttcn3.sh
6 files changed, 71 insertions(+), 12 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/25/37125/1
diff --git a/ttcn3-asterisk-ims-ue-test/Asterisk_Tests.cfg b/ttcn3-asterisk-ims-ue-test/Asterisk_Tests.cfg
index a7576e6..35eb420 100644
--- a/ttcn3-asterisk-ims-ue-test/Asterisk_Tests.cfg
+++ b/ttcn3-asterisk-ims-ue-test/Asterisk_Tests.cfg
@@ -9,7 +9,7 @@
Asterisk_Tests_LOCAL_SIP_EMU.SIP.local_sip_port := "5061"
Asterisk_Tests_LOCAL_SIP_EMU.SIP.default_dest_address := "172.18.11.10"
Asterisk_Tests_LOCAL_SIP_EMU.SIP.default_dest_port := "5094"
-Asterisk_Tests_IMS_SIP_EMU.SIP.default_local_address := "172.18.11.103"
+Asterisk_Tests_IMS_SIP_EMU.SIP.default_local_address := "172.18.11.104"
Asterisk_Tests_IMS_SIP_EMU.SIP.local_sip_port := "5060"
# Disabled for Server mode:
#Asterisk_Tests_IMS_SIP_EMU.SIP.default_dest_address := "172.18.11.10"
@@ -20,7 +20,7 @@
Asterisk_Tests.mp_remote_sip_host := "172.18.11.10"
Asterisk_Tests.mp_local_sip_port := 5061
Asterisk_Tests.mp_remote_sip_port := 5094
-Asterisk_Tests.mp_local_ims_host := "172.18.11.103"
+Asterisk_Tests.mp_local_ims_host := "172.18.11.104"
Asterisk_Tests.mp_local_ims_port := 5060
Asterisk_Tests.mp_ims_domain := "ims.mnc001.mcc238.3gppnetwork.org"
Asterisk_Tests.mp_ims_imsi := "238010000090828"
diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh b/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh
index 0629e20..fb5e82e 100755
--- a/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh
+++ b/ttcn3-asterisk-ims-ue-test/asterisk/asterisk.sh
@@ -2,10 +2,14 @@
set +e
set -x

-ASTERISK_CFG_PATH="/etc/asterisk"
-DNSMASQ_IPADDR="172.18.11.200"
+if [[ -z "${DNS_IPADDR}" ]]; then
+ echo "env var DNS_IPADDR undefined!"
+ exit 1
+fi

-echo "nameserver $DNSMASQ_IPADDR" > /etc/resolv.conf
+ASTERISK_CFG_PATH="/etc/asterisk"
+
+echo "nameserver $DNS_IPADDR" > /etc/resolv.conf

#rm -rf "${ASTERISK_CFG_PATH}"
#mkdir -p "${ASTERISK_CFG_PATH}"
diff --git a/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf b/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf
index 4f292c2..f3ac374 100644
--- a/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf
+++ b/ttcn3-asterisk-ims-ue-test/asterisk/pjsip.conf
@@ -128,5 +128,5 @@
[volte_ims]
type=identify
endpoint=volte_ims
-;match=ims.mnc001.mcc238.3gppnetwork.org
-match=172.18.11.10
+match=ims.mnc001.mcc238.3gppnetwork.org
+;match=172.18.11.10
diff --git a/ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf b/ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf
index b2430ff..8aea943 100644
--- a/ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf
+++ b/ttcn3-asterisk-ims-ue-test/dnsmasq/dnsmasq.conf
@@ -9,7 +9,7 @@
server=8.8.8.8

# PCSCF IP!
-host-record=ims.mnc001.mcc238.3gppnetwork.org,172.18.11.103
+host-record=ims.mnc001.mcc238.3gppnetwork.org,172.18.11.104
srv-host=_sip._tcp.ims.mnc001.mcc238.3gppnetwork.org,ims.mnc001.mcc238.3gppnetwork.org,5060
srv-host=_sip._udp.ims.mnc001.mcc238.3gppnetwork.org,ims.mnc001.mcc238.3gppnetwork.org,5060

diff --git a/ttcn3-asterisk-ims-ue-test/jenkins.sh b/ttcn3-asterisk-ims-ue-test/jenkins.sh
index 7e94fa5..a5da1d0 100755
--- a/ttcn3-asterisk-ims-ue-test/jenkins.sh
+++ b/ttcn3-asterisk-ims-ue-test/jenkins.sh
@@ -15,6 +15,7 @@

mkdir $VOL_BASE_DIR/asterisk-ims-ue-tester
mkdir $VOL_BASE_DIR/asterisk-ims-ue-tester/unix
+cp ttcn3.sh $VOL_BASE_DIR/asterisk-ims-ue-tester/
cp Asterisk_Tests.cfg $VOL_BASE_DIR/asterisk-ims-ue-tester/
write_mp_osmo_repo "$VOL_BASE_DIR/asterisk-ims-ue-tester/Asterisk_Tests.cfg"

@@ -23,11 +24,16 @@

network_create
network_replace_subnet_in_configs
+SUBNET_IP_PREFIX="172.18.$SUBNET"
+ASTERISK_IP_SUFFIX="10"
+TTCN3_IP_SUFFIX="103"
+IMSCORE_IP_SUFFIX="104"
+DNS_IP_SUFFIX="200"

echo Starting container with dnsmasq
docker run --rm \
--cap-add=NET_ADMIN \
- $(docker_network_params $SUBNET 200) \
+ $(docker_network_params $SUBNET $DNS_IP_SUFFIX) \
--ulimit core=-1 \
-v $VOL_BASE_DIR/dnsmasq:/data \
--name ${BUILD_TAG}-dnsmasq -d \
@@ -38,7 +44,8 @@
docker run --rm \
--cap-add=NET_ADMIN \
--cap-add=SYS_RESOURCE \
- $(docker_network_params $SUBNET 10) \
+ $(docker_network_params $SUBNET $ASTERISK_IP_SUFFIX) \
+ -e "DNS_IPADDR=${SUBNET_IP_PREFIX}.${DNS_IP_SUFFIX}" \
--ulimit core=-1 \
-v $VOL_BASE_DIR/asterisk:/data \
--name ${BUILD_TAG}-asterisk -d \
@@ -53,10 +60,12 @@
docker run --rm \
--cap-add=NET_ADMIN \
--cap-add=SYS_RESOURCE \
- $(docker_network_params $SUBNET 103) \
+ $(docker_network_params $SUBNET $TTCN3_IP_SUFFIX) \
--ulimit core=-1 \
-e "TTCN3_PCAP_PATH=/data" \
+ -e "EXTRA_IPADDR=${SUBNET_IP_PREFIX}.${IMSCORE_IP_SUFFIX}/24" \
-v $VOL_BASE_DIR/asterisk-ims-ue-tester:/data \
--name ${BUILD_TAG}-ttcn3-asterisk-ims-ue-test \
$DOCKER_ARGS \
- $REPO_USER/ttcn3-asterisk-ims-ue-test
+ $REPO_USER/ttcn3-asterisk-ims-ue-test \
+ /data/ttcn3.sh
diff --git a/ttcn3-asterisk-ims-ue-test/ttcn3.sh b/ttcn3-asterisk-ims-ue-test/ttcn3.sh
new file mode 100755
index 0000000..6c50af0
--- /dev/null
+++ b/ttcn3-asterisk-ims-ue-test/ttcn3.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set +e
+set -x
+
+if [[ -z "${EXTRA_IPADDR}" ]]; then
+ echo "env var EXTRA_IPADDR undefined!"
+ exit 1
+fi
+
+ip addr add "${EXTRA_IPADDR}" dev eth0
+
+ttcn3-docker-run asterisk Asterisk_Tests

To view, visit change 37125. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: docker-playground
Gerrit-Branch: master
Gerrit-Change-Id: I6e5a261748ec61bb1cfa4aafee8c748d0f46aa9e
Gerrit-Change-Number: 37125
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-MessageType: newchange