Change in docker-playground[master]: Introduce osmo-ran docker image set up

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Fri Dec 18 11:45:33 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/docker-playground/+/21263 )

Change subject: Introduce osmo-ran docker image set up
......................................................................

Introduce osmo-ran docker image set up

See osmo-ran/README.md in this commit for a description.

Related: SYS#4889
Change-Id: If5d22e9fa818310cbb4adc34bd7aceb4416ec969
---
M jenkins-common.sh
M make/Makefile
A osmo-ran/Dockerfile
A osmo-ran/Makefile
A osmo-ran/README.md
A osmo-ran/Release.key
A osmo-ran/jenkins.sh
A osmo-ran/osmocom/osmo-bsc.cfg
A osmo-ran/osmocom/osmo-bts-trx.cfg
A osmo-ran/osmocom/osmo-mgw.cfg
A osmo-ran/osmocom/osmo-pcu.cfg
A osmo-ran/osmocom/osmo-trx-ipc.cfg
A osmo-ran/osmocom/osmo-trx-uhd.cfg
A osmo-ran/split/jenkins-split.sh
A osmo-ran/split/ran-bsc_mgw/Dockerfile
A osmo-ran/split/ran-bsc_mgw/Makefile
A osmo-ran/split/ran-bsc_mgw/Release.key
A osmo-ran/split/ran-bsc_mgw/osmocom/osmo-bsc.cfg
A osmo-ran/split/ran-bsc_mgw/osmocom/osmo-mgw.cfg
A osmo-ran/split/ran-bts_pcu/Dockerfile
A osmo-ran/split/ran-bts_pcu/Makefile
A osmo-ran/split/ran-bts_pcu/Release.key
A osmo-ran/split/ran-bts_pcu/osmocom/osmo-bts-trx.cfg
A osmo-ran/split/ran-bts_pcu/osmocom/osmo-pcu.cfg
A osmo-ran/split/ran-trx-ipc/Dockerfile
A osmo-ran/split/ran-trx-ipc/Makefile
A osmo-ran/split/ran-trx-ipc/Release.key
A osmo-ran/split/ran-trx-ipc/osmocom/osmo-trx-ipc.cfg
A osmo-ran/split/ran-trx-uhd/Dockerfile
A osmo-ran/split/ran-trx-uhd/Makefile
A osmo-ran/split/ran-trx-uhd/Release.key
A osmo-ran/split/ran-trx-uhd/osmocom/osmo-trx-uhd.cfg
A systemd/Dockerfile
A systemd/Makefile
34 files changed, 1,278 insertions(+), 2 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  pespin: Verified



diff --git a/jenkins-common.sh b/jenkins-common.sh
index fdcfd40..e172a4f 100644
--- a/jenkins-common.sh
+++ b/jenkins-common.sh
@@ -44,6 +44,7 @@
 #	Dockerfile for multiple distributions, without duplicating configs for
 #	each distribution. Dependencies listed in docker_depends() are built
 #	automatically too.
+IMAGE_DIR_PREFIX=".."
 docker_images_require() {
 	local i
 	local from_line
@@ -68,13 +69,13 @@
 
 			# Pull upstream base images
 			pull_arg="--pull"
-			from_line="$(grep '^FROM' ../$dir/Dockerfile)"
+			from_line="$(grep '^FROM' ${IMAGE_DIR_PREFIX}/${dir}/Dockerfile)"
 			if echo "$from_line" | grep -q '$USER'; then
 				pull_arg=""
 			fi
 
 			echo "Building image: $i (export NO_DOCKER_IMAGE_BUILD=1 to prevent this)"
-			make -C "../$dir" \
+			make -C "${IMAGE_DIR_PREFIX}/${dir}" \
 				PULL="$pull_arg" \
 				UPSTREAM_DISTRO="$upstream_distro_arg" \
 				DISTRO="$distro_arg" \
@@ -108,6 +109,24 @@
 	docker network create --internal --subnet $SUB4 --ipv6 --subnet $SUB6 $NET_NAME
 }
 
+network_bridge_create() {
+	NET=$1
+	if docker network ls | grep -q $NET_NAME; then
+		echo removing stale network and containers...
+		network_clean
+		network_remove
+	fi
+	SUB4="172.18.$NET.0/24"
+	SUB6="fd02:db8:$NET::/64"
+	echo Creating network $NET_NAME
+	docker network create \
+		--driver=bridge \
+		--subnet $SUB4 \
+		--ipv6 --subnet $SUB6 \
+		-o "com.docker.network.bridge.host_binding_ipv4"="172.18.$NET.1" \
+		$NET_NAME
+}
+
 network_remove() {
 	echo Removing network $NET_NAME
 	docker network remove $NET_NAME
diff --git a/make/Makefile b/make/Makefile
index 4f2263b..7bb0345 100644
--- a/make/Makefile
+++ b/make/Makefile
@@ -37,6 +37,8 @@
 DISTRO?=debian-stretch
 OSMOCOM_REPO_MIRROR?=http://download.opensuse.org
 # Use if down: OSMOCOM_REPO_MIRROR=http://ftp.uni-stuttgart.de/opensuse
+OSMOCOM_REPO_VERSION?=latest
+# Use "nightly" to use the nightly repo
 
 RELEASE_SUPPORT := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))/.make-release-support
 IMAGE?=$(REGISTRY_HOST)/$(USER)/$(NAME)
@@ -67,6 +69,7 @@
 		--build-arg UPSTREAM_DISTRO=$(UPSTREAM_DISTRO) \
 		--build-arg DISTRO=$(DISTRO) \
 		--build-arg OSMOCOM_REPO_MIRROR=$(OSMOCOM_REPO_MIRROR) \
+		--build-arg OSMOCOM_REPO_VERSION=$(OSMOCOM_REPO_VERSION) \
 		--build-arg LIBOSMOCORE_BRANCH=$(LIBOSMOCORE_BRANCH) \
 		--build-arg OSMO_BB_BRANCH=$(OSMO_BB_BRANCH) \
 		--build-arg OSMO_BSC_BRANCH=$(OSMO_BSC_BRANCH) \
diff --git a/osmo-ran/Dockerfile b/osmo-ran/Dockerfile
new file mode 100644
index 0000000..4b5195e
--- /dev/null
+++ b/osmo-ran/Dockerfile
@@ -0,0 +1,94 @@
+ARG     USER
+FROM	$USER/systemd
+# Arguments used after FROM must be specified again
+ARG	DISTRO
+ARG	OSMOCOM_REPO_MIRROR="http://download.opensuse.org"
+ARG	OSMOCOM_REPO_VERSION=latest
+
+MAINTAINER Pau Espin Pedrol <pespin at sysmocom.de>
+
+ARG	OSMOCOM_REPO_DEBIAN="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/Debian_9.0/"
+ARG	OSMOCOM_REPO_CENTOS="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/CentOS_8/"
+
+COPY	Release.key /tmp/Release.key
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			gnupg && \
+		apt-key add /tmp/Release.key && \
+		rm /tmp/Release.key && \
+		echo "deb " $OSMOCOM_REPO_DEBIAN " ./" > /etc/apt/sources.list.d/osmocom-$OSMOCOM_REPO_VERSION.list \
+		;; \
+	centos*) \
+		echo "metadata_expire=60" >> /etc/dnf/dnf.conf && cat /etc/dnf/dnf.conf && \
+		dnf install -y dnf-utils wget && \
+		yum config-manager --set-enabled PowerTools && \
+		cd /etc/yum.repos.d/ && \
+		wget ${OSMOCOM_REPO_CENTOS}/network:osmocom:$OSMOCOM_REPO_VERSION.repo \
+		;; \
+	esac
+
+# we need to add this to invalidate the cache once the repository is updated.
+# unfortunately Dockerfiles don't support a conditional ARG, so we need to add both DPKG + RPM
+ADD	$OSMOCOM_REPO_DEBIAN/Release /tmp/Release
+ADD	$OSMOCOM_REPO_CENTOS/repodata/repomd.xml /tmp/repomd.xml
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			less \
+			apt-utils \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-bsc \
+			osmo-bsc-ipaccess-utils \
+			osmo-bts-trx \
+			osmo-mgw \
+			osmo-pcu \
+			osmo-trx-ipc \
+			osmo-trx-uhd && \
+		apt-get clean \
+		;; \
+	centos*) \
+		dnf install -y \
+			less \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-bsc \
+			osmo-bsc-ipaccess-utils \
+			osmo-bts \
+			osmo-mgw \
+			osmo-pcu \
+			osmo-trx-ipc \
+			osmo-trx-uhd \
+		;; \
+	esac
+
+RUN	systemctl enable osmo-bsc osmo-bts-trx osmo-mgw osmo-pcu
+
+WORKDIR	/tmp
+RUN	cp -r /etc/osmocom /etc/osmocom-default
+VOLUME	/data
+VOLUME	/etc/osmocom
+
+COPY	osmocom/* /etc/osmocom/
+
+CMD	["/lib/systemd/systemd", "--system", "--unit=multi-user.target"]
+
+#osmo-bsc: VTY  CTRL
+EXPOSE     4242 4249
+#osmo-bts: VTY  CTRL
+EXPOSE     4241 4238
+#osmo-mgw: VTY  CTRL
+EXPOSE     4243 4267
+#osmo-pcu: VTY  CTRL
+EXPOSE     4240
+#osmo-trx: VTY  CTRL
+#EXPOSE    4237 4236
diff --git a/osmo-ran/Makefile b/osmo-ran/Makefile
new file mode 100644
index 0000000..80b1069
--- /dev/null
+++ b/osmo-ran/Makefile
@@ -0,0 +1,2 @@
+RUN_ARGS?=--sysctl net.ipv6.conf.all.disable_ipv6=0 --rm --network sigtran --ip 172.18.25.200 -v bsc-vol:/data
+include ../make/Makefile
diff --git a/osmo-ran/README.md b/osmo-ran/README.md
new file mode 100644
index 0000000..db534a1
--- /dev/null
+++ b/osmo-ran/README.md
@@ -0,0 +1,55 @@
+This directory provides an environment to set up and run an Osmocom RAN
+(osmo-bts, osmo-pcu, osmo-bsc, osmo-mgw) managed by systemd, all run inside a
+docker container.
+
+Easiest way to build + run the setup is to execute _jenkins.sh_ in this same
+directory.
+
+This script will build the Dockerfile image, then set up a bridge network on
+subnet `172.18.$SUBNET.0/24`, where the IP address `172.18.$SUBNET.200` is
+assigned to the internal network interface inside the docker container (and
+which RAN processes will be using), and `172.18.$SUBNET.1` is assigned to the
+bridge network interface outside the docker container. All The VTY and CTRL
+ports are available on both `172.18.$SUBNET.200` and also on `172.18.$SUBNET.1`
+(through docker port mapping).
+
+Shared directories between docker container and the host are mounted in
+_/tmp/logs/ran-$SUBNET/_ on the host, with _osmocom_ subdirectory mapping to
+container's _/etc/osmocom_, and _data_ to _/data:_.
+
+The script has the following parameters (environment variables):
+- `SUBNET`: The IPv4 subnet to configure and use (`172.18.$SUBNET.0/24`) when
+  running the container (defaults to `25`)
+- `SGSN_IP`: The IP address where the SGSN outside the docker container listens to (Gb interface)
+- `STP_IP`: The IP address where the STP outside the docker container listens to (A interface)
+- `TRX_IP`: The IP address where the OsmoTRX outside the docker container listens to (TRXC/TRXD interface)
+- `IMAGE_SUFFIX`: Type of base image to use: Leave unset to build on top of
+  Debian (default), set to `centos8` to run on top of CentOS8 distribution
+- `OSMOCOM_REPO_VERSION`: Osmocom OBS repository version to use: `nightly` or `latest` (default).
+
+The above IP addresses will be replaced by _jenkins.sh_ from tokens of the same
+name in the provided configuration files, available in _osmocom/_ directory,
+which will be then placer inside docker image's `/etc/osmocom/` directory, where
+the osmocom projects will read the configuration by default (see systemd
+services).
+
+Example:
+Run Osmocom RAN on a Centos8 distro with osmocom's nightly repository on subnet 26:
+```
+OSMOCOM_REPO_VERSION="nightly" IMAGE_SUFFIX="centos8" SUBNET=26 ./jenkins.sh
+```
+
+If several independent RANs are to be set up by the user, it's up to them to
+configure iptables rules to forbid access from one docker container to another.
+It should be doable pretty easily by rejecting connections between
+`172.18.$subnetA.0/24` and `172.18.$subnetB.0/24`.
+
+The docker container started by _jenkins.sh_ is running systemd and hence is
+expected to run forever (until the container instance is killed through docker
+or by killing the process, eg. pressing CTRL+C on the terminal).
+
+While the container is running, shell access to to it in order inspect the RAN
+processes managed by systemd can be obtained by using:
+```
+docker exec -it nonjenkins-ran-subnet$SUBNET bash
+```
diff --git a/osmo-ran/Release.key b/osmo-ran/Release.key
new file mode 100644
index 0000000..a737316
--- /dev/null
+++ b/osmo-ran/Release.key
@@ -0,0 +1,20 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.5 (GNU/Linux)
+
+mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc
+a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl
+CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4
+5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee
+S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y
+CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy
+b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCXm/4
+pgIbAwUJEEzwqgYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3f/1AH
+/A7WVSpfM4wV/DMqZPTsSjChB4JyDotxpV7qHZzBC5aaP2dINZyi9PayIwZWbvCY
+VKvt+Fw8oCGC9F9mdh10Xe+ElHeVNSihzABPuu1RkRkb1nvkymScy0yxydodYOBi
+K4WQ+BhpijXWmYvOekIwbS5Hi9BHpfgK4TinK0xsvh1bVLeQJ8YjrnNFIAR2CnBa
+X7Y72Up/kKL08DdQzuS+mKrJtAQlGMtIsukWC2ajYQMkNwm8Gvhpn8za113dCkBW
+XAFnlQqQobKwC7b19QgEtJI/YpGSrRc6WaZxPyAjscbWQlFEAB900sVj4BWT55ig
+7O2uSdsCVhTuU7T0ztwsgvmIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v
+d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4=
+=/Tek
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/osmo-ran/jenkins.sh b/osmo-ran/jenkins.sh
new file mode 100755
index 0000000..1b5d93a
--- /dev/null
+++ b/osmo-ran/jenkins.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+. ../jenkins-common.sh
+IMAGE_SUFFIX="${IMAGE_SUFFIX?centos8}"
+if [ "x$IMAGE_SUFFIX" != "x" ]; then
+	IMAGE_SUFFIX="-${IMAGE_SUFFIX}" # append dash
+fi
+docker_images_require \
+	"systemd" \
+	"osmo-ran$IMAGE_SUFFIX"
+
+SUBNET=${SUBNET:-25}
+IPSUFFIX=200
+NET_NAME="osmo-ran-subnet$SUBNET"
+network_bridge_create $SUBNET
+
+VOL_RAN_DIR="$VOL_BASE_DIR/ran-$SUBNET"
+mkdir $VOL_RAN_DIR
+mkdir $VOL_RAN_DIR/data
+mkdir $VOL_RAN_DIR/osmocom
+cp osmocom/* $VOL_RAN_DIR/osmocom/
+
+DOCKER_IN_IP="172.18.$SUBNET.$IPSUFFIX"
+SGSN_IP="${SGSN_IP:-192.168.30.1}"
+STP_IP="${STP_IP:-192.168.30.1}"
+TRX_IP="${TRX_IP:-192.168.30.100}"
+sed -i "s/\$DOCKER_IN_IP/${DOCKER_IN_IP}/g" $VOL_RAN_DIR/osmocom/*
+sed -i "s/\$SGSN_IP/${SGSN_IP}/g" $VOL_RAN_DIR/osmocom/*
+sed -i "s/\$STP_IP/${STP_IP}/g" $VOL_RAN_DIR/osmocom/*
+sed -i "s/\$TRX_IP/${TRX_IP}/g" $VOL_RAN_DIR/osmocom/*
+
+echo Starting container with RAN
+docker run	--rm \
+		$(docker_network_params $SUBNET 200) \
+		--privileged \
+		--ulimit core=-1 \
+		-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
+		-v $VOL_RAN_DIR/data:/data \
+		-v $VOL_RAN_DIR/osmocom:/etc/osmocom \
+		-p 4242:4242 -p 4249:4249 \
+		-p 4241:4241 -p 4238:4238 \
+		-p 4243:4243 -p 4267:4267 \
+		-p 4240:4240 -p 23010:23010 \
+		--name ${BUILD_TAG}-ran-subnet$SUBNET \
+		$DOCKER_ARGS \
+		$REPO_USER/osmo-ran$IMAGE_SUFFIX
+network_remove
diff --git a/osmo-ran/osmocom/osmo-bsc.cfg b/osmo-ran/osmocom/osmo-bsc.cfg
new file mode 100644
index 0000000..af53647
--- /dev/null
+++ b/osmo-ran/osmocom/osmo-bsc.cfg
@@ -0,0 +1,123 @@
+line vty
+ no login
+ bind 0.0.0.0
+!
+e1_input
+ e1_line 0 driver ipa
+network
+ network country code 234
+ mobile network code 70
+ encryption a5 0
+ neci 1
+ paging any use tch 0
+ handover 0
+ handover algorithm 1
+ handover1 window rxlev averaging 10
+ handover1 window rxqual averaging 1
+ handover1 window rxlev neighbor averaging 10
+ handover1 power budget interval 6
+ handover1 power budget hysteresis 3
+ handover1 maximum distance 9999
+ periodic location update 30
+ bts 0
+  type sysmobts
+  band DCS1800
+  cell_identity 0
+  location_area_code 5
+  base_station_id_code 63
+  ms max power 15
+  cell reselection hysteresis 4
+  rxlev access min 0
+  radio-link-timeout 32
+  channel allocator ascending
+  rach tx integer 9
+  rach max transmission 7
+  channel-description attach 1
+  channel-description bs-pa-mfrms 5
+  channel-description bs-ag-blks-res 1
+  early-classmark-sending forbidden
+  ip.access unit_id 6969 0
+  oml ip.access stream_id 255 line 0
+  codec-support fr amr
+  gprs mode egprs
+  gprs routing area 0
+  gprs network-control-order nc1
+  gprs cell bvci 1800
+  gprs nsei 1800
+  gprs nsvc 0 nsvci 1800
+  gprs nsvc 0 local udp port 23020
+  gprs nsvc 0 remote udp port 23000
+  gprs nsvc 0 remote ip $SGSN_IP
+  trx 0
+   rf_locked 0
+   arfcn 871
+   nominal power 23
+   ! to use full TRX power, set max_power_red 0
+   max_power_red 4
+   rsl e1 tei 0
+   timeslot 0
+    phys_chan_config CCCH+SDCCH4
+    hopping enabled 0
+   timeslot 1
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 2
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 3
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 4
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 5
+    phys_chan_config PDCH
+    hopping enabled 0
+   timeslot 6
+    phys_chan_config PDCH
+    !phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 7
+    phys_chan_config PDCH
+    !phys_chan_config TCH/F
+    hopping enabled 0
+!
+cs7 instance 0
+ point-code 0.0.2
+ asp asp0 2905 0 m3ua
+  local-ip $DOCKER_IN_IP
+  remote-ip $STP_IP
+ as as0 m3ua
+  asp asp0
+  routing-key 30 0.0.2
+  traffic-mode loadshare
+ sccp-address bsc_local
+  point-code 0.0.2
+  routing-indicator PC
+ sccp-address msc_remote
+  point-code 0.23.1
+  routing-indicator PC
+!
+msc 0
+ no bsc-welcome-text
+ no bsc-msc-lost-text
+ no bsc-grace-text
+ type normal
+ allow-emergency allow
+ codec-list hr3 fr3
+ !mgw remote-ip 192.168.30.1
+ mgw remote-ip 127.0.0.1
+ mgw remote-port 2427
+ amr-config 12_2k forbidden
+ amr-config 10_2k forbidden
+ amr-config 7_95k forbidden
+ amr-config 7_40k forbidden
+ amr-config 6_70k forbidden
+ amr-config 5_90k allowed
+ amr-config 5_15k forbidden
+ amr-config 4_75k forbidden
+ msc-addr msc_remote
+ bsc-addr bsc_local
+bsc
+ mid-call-timeout 0
+ no missing-msc-text
diff --git a/osmo-ran/osmocom/osmo-bts-trx.cfg b/osmo-ran/osmocom/osmo-bts-trx.cfg
new file mode 100644
index 0000000..20aeae0
--- /dev/null
+++ b/osmo-ran/osmocom/osmo-bts-trx.cfg
@@ -0,0 +1,36 @@
+!
+! OsmoBTS () configuration saved from vty
+!!
+!
+log stderr
+ logging color 1
+ logging timestamp 0
+ logging level rsl notice
+ logging level oml notice
+ logging level rll notice
+ logging level rr notice
+ logging level meas error
+ logging level pag error
+ logging level l1c error
+ logging level l1p error
+ logging level dsp error
+ logging level abis error
+!
+line vty
+ no login
+ bind 0.0.0.0
+!
+phy 0
+ instance 0
+ osmotrx ip local $DOCKER_IN_IP
+ osmotrx ip remote $TRX_IP
+bts 0
+ band 1800
+ ipa unit-id 6969 0
+ oml remote-ip 127.0.0.1
+ gsmtap-sapi ccch
+ gsmtap-sapi pdtch
+ trx 0
+  phy 0 instance 0
+cpu-sched
+ policy rr 1
diff --git a/osmo-ran/osmocom/osmo-mgw.cfg b/osmo-ran/osmocom/osmo-mgw.cfg
new file mode 100644
index 0000000..421816f
--- /dev/null
+++ b/osmo-ran/osmocom/osmo-mgw.cfg
@@ -0,0 +1,22 @@
+!
+! MGCP configuration example
+!
+line vty
+ no login
+ bind 0.0.0.0
+!
+mgcp
+  bind ip 127.0.0.1
+  rtp port-range 4002 16000
+  rtp bind-ip $DOCKER_IN_IP
+  rtp ip-probing
+  rtp ip-tos 184
+  bind port 2427
+  sdp audio payload number 98
+  sdp audio payload name GSM
+  number endpoints 31
+  loop 0
+  force-realloc 1
+  rtcp-omit
+  rtp-patch ssrc
+  rtp-patch timestamp
diff --git a/osmo-ran/osmocom/osmo-pcu.cfg b/osmo-ran/osmocom/osmo-pcu.cfg
new file mode 100644
index 0000000..2e31cbc
--- /dev/null
+++ b/osmo-ran/osmocom/osmo-pcu.cfg
@@ -0,0 +1,11 @@
+!
+line vty
+ no login
+ bind 0.0.0.0
+!
+pcu
+ flow-control-interval 10
+ cs 2
+ alloc-algorithm dynamic
+ alpha 0
+ gamma 0
diff --git a/osmo-ran/osmocom/osmo-trx-ipc.cfg b/osmo-ran/osmocom/osmo-trx-ipc.cfg
new file mode 100644
index 0000000..3241950
--- /dev/null
+++ b/osmo-ran/osmocom/osmo-trx-ipc.cfg
@@ -0,0 +1,33 @@
+log stderr
+ logging filter all 1
+ logging color 1
+ logging print category 1
+ logging timestamp 1
+ logging print file basename
+ logging level set-all notice
+!
+line vty
+no login
+bind 0.0.0.0
+!
+cpu-sched
+ policy rr 18
+trx
+ bind-ip 127.0.0.1
+ remote-ip 127.0.0.1
+ ! 28 dB offset below is valid only for the B2xx in 1800 MHz band, see
+ ! https://osmocom.org/issues/4468 for more details
+ rssi-offset 28.000000
+ tx-sps 4
+ rx-sps 4
+ clock-ref external
+ egprs disable
+ ext-rach disable
+ dev-args ipc_msock=/tmp/ipc_sock0
+ multi-arfcn disable
+ chan 0
+  tx-path TX/RX
+  rx-path RX2
+ chan 1
+  tx-path TX/RX
+  rx-path RX2
diff --git a/osmo-ran/osmocom/osmo-trx-uhd.cfg b/osmo-ran/osmocom/osmo-trx-uhd.cfg
new file mode 100644
index 0000000..234a2ee
--- /dev/null
+++ b/osmo-ran/osmocom/osmo-trx-uhd.cfg
@@ -0,0 +1,22 @@
+log stderr
+ logging filter all 1
+ logging color 1
+ logging print category 1
+ logging timestamp 1
+ logging print file basename
+ logging level set-all notice
+!
+line vty
+no login
+bind 0.0.0.0
+!
+cpu-sched
+ policy rr 18
+trx
+ bind-ip 127.0.0.1
+ remote-ip 127.0.0.1
+ egprs disable
+ tx-sps 4
+ rx-sps 4
+ clock-ref external
+ chan 0
diff --git a/osmo-ran/split/jenkins-split.sh b/osmo-ran/split/jenkins-split.sh
new file mode 100755
index 0000000..5cecf4a
--- /dev/null
+++ b/osmo-ran/split/jenkins-split.sh
@@ -0,0 +1,97 @@
+#!/bin/bash
+
+. ../../jenkins-common.sh
+IMAGE_SUFFIX="${IMAGE_SUFFIX?centos8}"
+if [ "x$IMAGE_SUFFIX" != "x" ]; then
+	IMAGE_SUFFIX="-${IMAGE_SUFFIX}" # append dash
+fi
+
+IMAGE_DIR_PREFIX="../.." docker_images_require \
+	"systemd"
+
+networks=()
+docker_names=()
+
+SUBNET=${SUBNET:-25}
+
+NET_NAME="osmo-ran-subnet$subnet"
+networks+=("$NET_NAME")
+network_bridge_create $SUBNET
+
+#$1:image_name, $2: subnet, $3: ip suffix, $4: docker args
+run_image() {
+	local image_name=$1
+	local subnet=$2
+	local ipsuffix=$3
+	local docker_args=$4
+
+	IMAGE_DIR_PREFIX="."
+	docker_images_require \
+		$image_name
+
+	VOL_RAN_DIR="$VOL_BASE_DIR/$image_name-$subnet"
+	mkdir $VOL_RAN_DIR
+	mkdir $VOL_RAN_DIR/data
+	mkdir $VOL_RAN_DIR/osmocom
+	cp $IMAGE_DIR_PREFIX/${image_name}/osmocom/* $VOL_RAN_DIR/osmocom/
+
+	DOCKER_IN_IP="172.18.$subnet.$ipsuffix"
+	SGSN_IP="${SGSN_IP:-192.168.30.1}"
+	STP_IP="${STP_IP:-192.168.30.1}"
+	BSC_IP="172.18.$SUBNET.200"
+	MGW_IP="172.18.$SUBNET.200"
+	BTS_IP="172.18.$SUBNET.201"
+	PCU_IP="172.18.$SUBNET.201"
+	TRX_IP="${TRX_IP:-172.18.$SUBNET.202}"
+	sed -i "s/\$DOCKER_IN_IP/${DOCKER_IN_IP}/g" $VOL_RAN_DIR/osmocom/*
+	sed -i "s/\$SGSN_IP/${SGSN_IP}/g" $VOL_RAN_DIR/osmocom/*
+	sed -i "s/\$STP_IP/${STP_IP}/g" $VOL_RAN_DIR/osmocom/*
+	sed -i "s/\$BSC_IP/${BSC_IP}/g" $VOL_RAN_DIR/osmocom/*
+	sed -i "s/\$MGW_IP/${MGW_IP}/g" $VOL_RAN_DIR/osmocom/*
+	sed -i "s/\$BTS_IP/${BTS_IP}/g" $VOL_RAN_DIR/osmocom/*
+	sed -i "s/\$PCU_IP/${PCU_IP}/g" $VOL_RAN_DIR/osmocom/*
+	sed -i "s/\$TRX_IP/${TRX_IP}/g" $VOL_RAN_DIR/osmocom/*
+
+	echo Starting container with RAN
+	docker_name="${BUILD_TAG}-ran-${image_name}-subnet$subnet"
+	docker run	--rm \
+			$(docker_network_params $subnet $ipsuffix) \
+			--privileged \
+			--ulimit core=-1 \
+			-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
+			-v $VOL_RAN_DIR/data:/data \
+			-v $VOL_RAN_DIR/osmocom:/etc/osmocom \
+			--name ${docker_name} -d \
+			$docker_args \
+			$REPO_USER/${image_name}${IMAGE_SUFFIX}
+	docker_names+=("$docker_name")
+}
+
+kill_containers() {
+	for i in "${docker_names[@]}"; do
+		docker kill $i
+	done
+}
+
+remove_networks() {
+	for i in "${networks[@]}"; do
+		NET_NAME="$i"
+		network_remove
+	done
+}
+
+sighandler() {
+	echo "SIGINT, exiting..."
+	kill_containers
+	remove_networks
+	exit 0
+}
+
+trap 'sighandler' SIGINT
+
+run_image "ran-bsc_mgw" $SUBNET 200 "-p 4242:4242 -p 4249:4249 -p 4243:4243 -p 4267:4267"
+run_image "ran-bts_pcu" $SUBNET 201 "-p 4241:4241 -p 4238:4238 -p 4240:4240"
+run_image "ran-trx-uhd" $SUBNET 202 "-p 4237:4237 -p 4236:4236 -p 5700:5700 -p 5701:5701 -p 5702:5702 -v /dev/bus/usb:/dev/bus/usb"
+#run_image "ran-trx-ipc" $SUBNET 202 "-p 4237:4237 -p 4236:4236 -p 5700:5700 -p 5701:5701 -p 5702:5702 -v /tmp/ud:/tmp/ud --ipc=host"
+
+while true; do sleep 1000; done
diff --git a/osmo-ran/split/ran-bsc_mgw/Dockerfile b/osmo-ran/split/ran-bsc_mgw/Dockerfile
new file mode 100644
index 0000000..f75316f
--- /dev/null
+++ b/osmo-ran/split/ran-bsc_mgw/Dockerfile
@@ -0,0 +1,80 @@
+ARG     USER
+FROM	$USER/systemd
+# Arguments used after FROM must be specified again
+ARG	DISTRO
+ARG	OSMOCOM_REPO_MIRROR="http://download.opensuse.org"
+ARG	OSMOCOM_REPO_VERSION=latest
+
+MAINTAINER Pau Espin Pedrol <pespin at sysmocom.de>
+
+ARG	OSMOCOM_REPO_DEBIAN="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/Debian_9.0/"
+ARG	OSMOCOM_REPO_CENTOS="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/CentOS_8/"
+
+COPY	Release.key /tmp/Release.key
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			gnupg && \
+		apt-key add /tmp/Release.key && \
+		rm /tmp/Release.key && \
+		echo "deb " $OSMOCOM_REPO_DEBIAN " ./" > /etc/apt/sources.list.d/osmocom-$OSMOCOM_REPO_VERSION.list \
+		;; \
+	centos*) \
+		echo "metadata_expire=60" >> /etc/dnf/dnf.conf && cat /etc/dnf/dnf.conf && \
+		dnf install -y dnf-utils wget && \
+		yum config-manager --set-enabled PowerTools && \
+		cd /etc/yum.repos.d/ && \
+		wget ${OSMOCOM_REPO_CENTOS}/network:osmocom:$OSMOCOM_REPO_VERSION.repo \
+		;; \
+	esac
+
+# we need to add this to invalidate the cache once the repository is updated.
+# unfortunately Dockerfiles don't support a conditional ARG, so we need to add both DPKG + RPM
+ADD	$OSMOCOM_REPO_DEBIAN/Release /tmp/Release
+ADD	$OSMOCOM_REPO_CENTOS/repodata/repomd.xml /tmp/repomd.xml
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			less \
+			apt-utils \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-bsc \
+			osmo-bsc-ipaccess-utils \
+			osmo-mgw && \
+		apt-get clean \
+		;; \
+	centos*) \
+		dnf install -y \
+			less \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-bsc \
+			osmo-bsc-ipaccess-utils \
+			osmo-mgw \
+		;; \
+	esac
+
+RUN	systemctl enable osmo-bsc osmo-mgw
+
+WORKDIR	/tmp
+RUN	cp -r /etc/osmocom /etc/osmocom-default
+VOLUME	/data
+VOLUME	/etc/osmocom
+
+COPY	osmocom/* /etc/osmocom/
+
+CMD	["/lib/systemd/systemd", "--system", "--unit=multi-user.target"]
+
+#osmo-bsc: VTY  CTRL
+EXPOSE     4242 4249
+#osmo-mgw: VTY  CTRL
+EXPOSE     4243 4267
diff --git a/osmo-ran/split/ran-bsc_mgw/Makefile b/osmo-ran/split/ran-bsc_mgw/Makefile
new file mode 100644
index 0000000..0239a23
--- /dev/null
+++ b/osmo-ran/split/ran-bsc_mgw/Makefile
@@ -0,0 +1,2 @@
+RUN_ARGS?=--sysctl net.ipv6.conf.all.disable_ipv6=0 --rm --network sigtran --ip 172.18.25.200 -v bsc-vol:/data
+include ../../../make/Makefile
diff --git a/osmo-ran/split/ran-bsc_mgw/Release.key b/osmo-ran/split/ran-bsc_mgw/Release.key
new file mode 100644
index 0000000..a737316
--- /dev/null
+++ b/osmo-ran/split/ran-bsc_mgw/Release.key
@@ -0,0 +1,20 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.5 (GNU/Linux)
+
+mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc
+a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl
+CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4
+5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee
+S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y
+CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy
+b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCXm/4
+pgIbAwUJEEzwqgYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3f/1AH
+/A7WVSpfM4wV/DMqZPTsSjChB4JyDotxpV7qHZzBC5aaP2dINZyi9PayIwZWbvCY
+VKvt+Fw8oCGC9F9mdh10Xe+ElHeVNSihzABPuu1RkRkb1nvkymScy0yxydodYOBi
+K4WQ+BhpijXWmYvOekIwbS5Hi9BHpfgK4TinK0xsvh1bVLeQJ8YjrnNFIAR2CnBa
+X7Y72Up/kKL08DdQzuS+mKrJtAQlGMtIsukWC2ajYQMkNwm8Gvhpn8za113dCkBW
+XAFnlQqQobKwC7b19QgEtJI/YpGSrRc6WaZxPyAjscbWQlFEAB900sVj4BWT55ig
+7O2uSdsCVhTuU7T0ztwsgvmIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v
+d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4=
+=/Tek
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/osmo-ran/split/ran-bsc_mgw/osmocom/osmo-bsc.cfg b/osmo-ran/split/ran-bsc_mgw/osmocom/osmo-bsc.cfg
new file mode 100644
index 0000000..af53647
--- /dev/null
+++ b/osmo-ran/split/ran-bsc_mgw/osmocom/osmo-bsc.cfg
@@ -0,0 +1,123 @@
+line vty
+ no login
+ bind 0.0.0.0
+!
+e1_input
+ e1_line 0 driver ipa
+network
+ network country code 234
+ mobile network code 70
+ encryption a5 0
+ neci 1
+ paging any use tch 0
+ handover 0
+ handover algorithm 1
+ handover1 window rxlev averaging 10
+ handover1 window rxqual averaging 1
+ handover1 window rxlev neighbor averaging 10
+ handover1 power budget interval 6
+ handover1 power budget hysteresis 3
+ handover1 maximum distance 9999
+ periodic location update 30
+ bts 0
+  type sysmobts
+  band DCS1800
+  cell_identity 0
+  location_area_code 5
+  base_station_id_code 63
+  ms max power 15
+  cell reselection hysteresis 4
+  rxlev access min 0
+  radio-link-timeout 32
+  channel allocator ascending
+  rach tx integer 9
+  rach max transmission 7
+  channel-description attach 1
+  channel-description bs-pa-mfrms 5
+  channel-description bs-ag-blks-res 1
+  early-classmark-sending forbidden
+  ip.access unit_id 6969 0
+  oml ip.access stream_id 255 line 0
+  codec-support fr amr
+  gprs mode egprs
+  gprs routing area 0
+  gprs network-control-order nc1
+  gprs cell bvci 1800
+  gprs nsei 1800
+  gprs nsvc 0 nsvci 1800
+  gprs nsvc 0 local udp port 23020
+  gprs nsvc 0 remote udp port 23000
+  gprs nsvc 0 remote ip $SGSN_IP
+  trx 0
+   rf_locked 0
+   arfcn 871
+   nominal power 23
+   ! to use full TRX power, set max_power_red 0
+   max_power_red 4
+   rsl e1 tei 0
+   timeslot 0
+    phys_chan_config CCCH+SDCCH4
+    hopping enabled 0
+   timeslot 1
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 2
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 3
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 4
+    phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 5
+    phys_chan_config PDCH
+    hopping enabled 0
+   timeslot 6
+    phys_chan_config PDCH
+    !phys_chan_config TCH/F
+    hopping enabled 0
+   timeslot 7
+    phys_chan_config PDCH
+    !phys_chan_config TCH/F
+    hopping enabled 0
+!
+cs7 instance 0
+ point-code 0.0.2
+ asp asp0 2905 0 m3ua
+  local-ip $DOCKER_IN_IP
+  remote-ip $STP_IP
+ as as0 m3ua
+  asp asp0
+  routing-key 30 0.0.2
+  traffic-mode loadshare
+ sccp-address bsc_local
+  point-code 0.0.2
+  routing-indicator PC
+ sccp-address msc_remote
+  point-code 0.23.1
+  routing-indicator PC
+!
+msc 0
+ no bsc-welcome-text
+ no bsc-msc-lost-text
+ no bsc-grace-text
+ type normal
+ allow-emergency allow
+ codec-list hr3 fr3
+ !mgw remote-ip 192.168.30.1
+ mgw remote-ip 127.0.0.1
+ mgw remote-port 2427
+ amr-config 12_2k forbidden
+ amr-config 10_2k forbidden
+ amr-config 7_95k forbidden
+ amr-config 7_40k forbidden
+ amr-config 6_70k forbidden
+ amr-config 5_90k allowed
+ amr-config 5_15k forbidden
+ amr-config 4_75k forbidden
+ msc-addr msc_remote
+ bsc-addr bsc_local
+bsc
+ mid-call-timeout 0
+ no missing-msc-text
diff --git a/osmo-ran/split/ran-bsc_mgw/osmocom/osmo-mgw.cfg b/osmo-ran/split/ran-bsc_mgw/osmocom/osmo-mgw.cfg
new file mode 100644
index 0000000..421816f
--- /dev/null
+++ b/osmo-ran/split/ran-bsc_mgw/osmocom/osmo-mgw.cfg
@@ -0,0 +1,22 @@
+!
+! MGCP configuration example
+!
+line vty
+ no login
+ bind 0.0.0.0
+!
+mgcp
+  bind ip 127.0.0.1
+  rtp port-range 4002 16000
+  rtp bind-ip $DOCKER_IN_IP
+  rtp ip-probing
+  rtp ip-tos 184
+  bind port 2427
+  sdp audio payload number 98
+  sdp audio payload name GSM
+  number endpoints 31
+  loop 0
+  force-realloc 1
+  rtcp-omit
+  rtp-patch ssrc
+  rtp-patch timestamp
diff --git a/osmo-ran/split/ran-bts_pcu/Dockerfile b/osmo-ran/split/ran-bts_pcu/Dockerfile
new file mode 100644
index 0000000..68f710e
--- /dev/null
+++ b/osmo-ran/split/ran-bts_pcu/Dockerfile
@@ -0,0 +1,78 @@
+ARG     USER
+FROM	$USER/systemd
+# Arguments used after FROM must be specified again
+ARG	DISTRO
+ARG	OSMOCOM_REPO_MIRROR="http://download.opensuse.org"
+ARG	OSMOCOM_REPO_VERSION=latest
+
+MAINTAINER Pau Espin Pedrol <pespin at sysmocom.de>
+
+ARG	OSMOCOM_REPO_DEBIAN="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/Debian_9.0/"
+ARG	OSMOCOM_REPO_CENTOS="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/CentOS_8/"
+
+COPY	Release.key /tmp/Release.key
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			gnupg && \
+		apt-key add /tmp/Release.key && \
+		rm /tmp/Release.key && \
+		echo "deb " $OSMOCOM_REPO_DEBIAN " ./" > /etc/apt/sources.list.d/osmocom-$OSMOCOM_REPO_VERSION.list \
+		;; \
+	centos*) \
+		echo "metadata_expire=60" >> /etc/dnf/dnf.conf && cat /etc/dnf/dnf.conf && \
+		dnf install -y dnf-utils wget && \
+		yum config-manager --set-enabled PowerTools && \
+		cd /etc/yum.repos.d/ && \
+		wget ${OSMOCOM_REPO_CENTOS}/network:osmocom:$OSMOCOM_REPO_VERSION.repo \
+		;; \
+	esac
+
+# we need to add this to invalidate the cache once the repository is updated.
+# unfortunately Dockerfiles don't support a conditional ARG, so we need to add both DPKG + RPM
+ADD	$OSMOCOM_REPO_DEBIAN/Release /tmp/Release
+ADD	$OSMOCOM_REPO_CENTOS/repodata/repomd.xml /tmp/repomd.xml
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			less \
+			apt-utils \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-bts-trx \
+			osmo-pcu && \
+		apt-get clean \
+		;; \
+	centos*) \
+		dnf install -y \
+			less \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-bts \
+			osmo-pcu \
+		;; \
+	esac
+
+RUN	systemctl enable osmo-bts-trx osmo-pcu
+
+WORKDIR	/tmp
+RUN	cp -r /etc/osmocom /etc/osmocom-default
+VOLUME	/data
+VOLUME	/etc/osmocom
+
+COPY	osmocom/* /etc/osmocom/
+
+CMD	["/lib/systemd/systemd", "--system", "--unit=multi-user.target"]
+
+#osmo-bts: VTY  CTRL
+EXPOSE     4241 4238
+#osmo-pcu: VTY  CTRL
+EXPOSE     4240
diff --git a/osmo-ran/split/ran-bts_pcu/Makefile b/osmo-ran/split/ran-bts_pcu/Makefile
new file mode 100644
index 0000000..3d539d1
--- /dev/null
+++ b/osmo-ran/split/ran-bts_pcu/Makefile
@@ -0,0 +1,2 @@
+RUN_ARGS?=--sysctl net.ipv6.conf.all.disable_ipv6=0 --rm --network sigtran --ip 172.18.25.201 -v bsc-vol:/data
+include ../../../make/Makefile
diff --git a/osmo-ran/split/ran-bts_pcu/Release.key b/osmo-ran/split/ran-bts_pcu/Release.key
new file mode 100644
index 0000000..a737316
--- /dev/null
+++ b/osmo-ran/split/ran-bts_pcu/Release.key
@@ -0,0 +1,20 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.5 (GNU/Linux)
+
+mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc
+a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl
+CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4
+5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee
+S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y
+CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy
+b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCXm/4
+pgIbAwUJEEzwqgYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3f/1AH
+/A7WVSpfM4wV/DMqZPTsSjChB4JyDotxpV7qHZzBC5aaP2dINZyi9PayIwZWbvCY
+VKvt+Fw8oCGC9F9mdh10Xe+ElHeVNSihzABPuu1RkRkb1nvkymScy0yxydodYOBi
+K4WQ+BhpijXWmYvOekIwbS5Hi9BHpfgK4TinK0xsvh1bVLeQJ8YjrnNFIAR2CnBa
+X7Y72Up/kKL08DdQzuS+mKrJtAQlGMtIsukWC2ajYQMkNwm8Gvhpn8za113dCkBW
+XAFnlQqQobKwC7b19QgEtJI/YpGSrRc6WaZxPyAjscbWQlFEAB900sVj4BWT55ig
+7O2uSdsCVhTuU7T0ztwsgvmIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v
+d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4=
+=/Tek
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/osmo-ran/split/ran-bts_pcu/osmocom/osmo-bts-trx.cfg b/osmo-ran/split/ran-bts_pcu/osmocom/osmo-bts-trx.cfg
new file mode 100644
index 0000000..df20e5e
--- /dev/null
+++ b/osmo-ran/split/ran-bts_pcu/osmocom/osmo-bts-trx.cfg
@@ -0,0 +1,36 @@
+!
+! OsmoBTS () configuration saved from vty
+!!
+!
+log stderr
+ logging color 1
+ logging timestamp 0
+ logging level rsl notice
+ logging level oml notice
+ logging level rll notice
+ logging level rr notice
+ logging level meas error
+ logging level pag error
+ logging level l1c error
+ logging level l1p error
+ logging level dsp error
+ logging level abis error
+!
+line vty
+ no login
+ bind 0.0.0.0
+!
+phy 0
+ instance 0
+ osmotrx ip local $DOCKER_IN_IP
+ osmotrx ip remote $TRX_IP
+bts 0
+ band 1800
+ ipa unit-id 6969 0
+ oml remote-ip $BSC_IP
+ gsmtap-sapi ccch
+ gsmtap-sapi pdtch
+ trx 0
+  phy 0 instance 0
+cpu-sched
+ policy rr 1
diff --git a/osmo-ran/split/ran-bts_pcu/osmocom/osmo-pcu.cfg b/osmo-ran/split/ran-bts_pcu/osmocom/osmo-pcu.cfg
new file mode 100644
index 0000000..2e31cbc
--- /dev/null
+++ b/osmo-ran/split/ran-bts_pcu/osmocom/osmo-pcu.cfg
@@ -0,0 +1,11 @@
+!
+line vty
+ no login
+ bind 0.0.0.0
+!
+pcu
+ flow-control-interval 10
+ cs 2
+ alloc-algorithm dynamic
+ alpha 0
+ gamma 0
diff --git a/osmo-ran/split/ran-trx-ipc/Dockerfile b/osmo-ran/split/ran-trx-ipc/Dockerfile
new file mode 100644
index 0000000..c5ce057
--- /dev/null
+++ b/osmo-ran/split/ran-trx-ipc/Dockerfile
@@ -0,0 +1,76 @@
+ARG     USER
+FROM	$USER/systemd
+# Arguments used after FROM must be specified again
+ARG	DISTRO
+ARG	OSMOCOM_REPO_MIRROR="http://download.opensuse.org"
+ARG	OSMOCOM_REPO_VERSION=latest
+
+MAINTAINER Pau Espin Pedrol <pespin at sysmocom.de>
+
+ARG	OSMOCOM_REPO_DEBIAN="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/Debian_9.0/"
+ARG	OSMOCOM_REPO_CENTOS="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/CentOS_8/"
+
+COPY	Release.key /tmp/Release.key
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			gnupg && \
+		apt-key add /tmp/Release.key && \
+		rm /tmp/Release.key && \
+		echo "deb " $OSMOCOM_REPO_DEBIAN " ./" > /etc/apt/sources.list.d/osmocom-$OSMOCOM_REPO_VERSION.list \
+		;; \
+	centos*) \
+		echo "metadata_expire=60" >> /etc/dnf/dnf.conf && cat /etc/dnf/dnf.conf && \
+		dnf install -y dnf-utils wget && \
+		yum config-manager --set-enabled PowerTools && \
+		cd /etc/yum.repos.d/ && \
+		wget ${OSMOCOM_REPO_CENTOS}/network:osmocom:$OSMOCOM_REPO_VERSION.repo \
+		;; \
+	esac
+
+# we need to add this to invalidate the cache once the repository is updated.
+# unfortunately Dockerfiles don't support a conditional ARG, so we need to add both DPKG + RPM
+ADD	$OSMOCOM_REPO_DEBIAN/Release /tmp/Release
+ADD	$OSMOCOM_REPO_CENTOS/repodata/repomd.xml /tmp/repomd.xml
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			less \
+			apt-utils \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-trx-ipc && \
+		apt-get clean \
+		;; \
+	centos*) \
+		dnf install -y \
+			less \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-trx-ipc \
+		;; \
+	esac
+
+RUN	systemctl enable osmo-trx-ipc
+
+WORKDIR	/tmp
+RUN	cp -r /etc/osmocom /etc/osmocom-default
+VOLUME	/data
+VOLUME	/etc/osmocom
+VOLUME	/tmp/ud
+
+COPY	osmocom/* /etc/osmocom/
+
+CMD	["/lib/systemd/systemd", "--system", "--unit=multi-user.target"]
+
+#osmo-trx-ipc: VTY  CTRL
+EXPOSE     4237 4236
+EXPOSE	5700 5701 5702
diff --git a/osmo-ran/split/ran-trx-ipc/Makefile b/osmo-ran/split/ran-trx-ipc/Makefile
new file mode 100644
index 0000000..1d99f06
--- /dev/null
+++ b/osmo-ran/split/ran-trx-ipc/Makefile
@@ -0,0 +1,2 @@
+RUN_ARGS?=--sysctl net.ipv6.conf.all.disable_ipv6=0 --rm --network sigtran --ip 172.18.25.202 -v bsc-vol:/data
+include ../../../make/Makefile
diff --git a/osmo-ran/split/ran-trx-ipc/Release.key b/osmo-ran/split/ran-trx-ipc/Release.key
new file mode 100644
index 0000000..a737316
--- /dev/null
+++ b/osmo-ran/split/ran-trx-ipc/Release.key
@@ -0,0 +1,20 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.5 (GNU/Linux)
+
+mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc
+a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl
+CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4
+5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee
+S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y
+CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy
+b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCXm/4
+pgIbAwUJEEzwqgYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3f/1AH
+/A7WVSpfM4wV/DMqZPTsSjChB4JyDotxpV7qHZzBC5aaP2dINZyi9PayIwZWbvCY
+VKvt+Fw8oCGC9F9mdh10Xe+ElHeVNSihzABPuu1RkRkb1nvkymScy0yxydodYOBi
+K4WQ+BhpijXWmYvOekIwbS5Hi9BHpfgK4TinK0xsvh1bVLeQJ8YjrnNFIAR2CnBa
+X7Y72Up/kKL08DdQzuS+mKrJtAQlGMtIsukWC2ajYQMkNwm8Gvhpn8za113dCkBW
+XAFnlQqQobKwC7b19QgEtJI/YpGSrRc6WaZxPyAjscbWQlFEAB900sVj4BWT55ig
+7O2uSdsCVhTuU7T0ztwsgvmIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v
+d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4=
+=/Tek
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/osmo-ran/split/ran-trx-ipc/osmocom/osmo-trx-ipc.cfg b/osmo-ran/split/ran-trx-ipc/osmocom/osmo-trx-ipc.cfg
new file mode 100644
index 0000000..38a758c
--- /dev/null
+++ b/osmo-ran/split/ran-trx-ipc/osmocom/osmo-trx-ipc.cfg
@@ -0,0 +1,29 @@
+log stderr
+ logging filter all 1
+ logging color 1
+ logging print category 1
+ logging timestamp 1
+ logging print file basename
+ logging level set-all notice
+!
+line vty
+ no login
+!
+cpu-sched
+ policy rr 18
+trx
+ bind-ip $DOCKER_IN_IP
+ remote-ip $BTS_IP
+ ! 28 dB offset below is valid only for the B2xx in 1800 MHz band, see
+ ! https://osmocom.org/issues/4468 for more details
+ rssi-offset 28.000000
+ tx-sps 4
+ rx-sps 4
+ clock-ref external
+ egprs disable
+ ext-rach disable
+ dev-args ipc_msock=/tmp/ud/ipc_sock0
+ multi-arfcn disable
+ chan 0
+  tx-path TX/RX
+  rx-path RX2
diff --git a/osmo-ran/split/ran-trx-uhd/Dockerfile b/osmo-ran/split/ran-trx-uhd/Dockerfile
new file mode 100644
index 0000000..5fe0cc3
--- /dev/null
+++ b/osmo-ran/split/ran-trx-uhd/Dockerfile
@@ -0,0 +1,79 @@
+ARG     USER
+FROM	$USER/systemd
+# Arguments used after FROM must be specified again
+ARG	DISTRO
+ARG	OSMOCOM_REPO_MIRROR="http://download.opensuse.org"
+ARG	OSMOCOM_REPO_VERSION=latest
+
+MAINTAINER Pau Espin Pedrol <pespin at sysmocom.de>
+
+ARG	OSMOCOM_REPO_DEBIAN="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/Debian_9.0/"
+ARG	OSMOCOM_REPO_CENTOS="$OSMOCOM_REPO_MIRROR/repositories/network:/osmocom:/$OSMOCOM_REPO_VERSION/CentOS_8/"
+
+COPY	Release.key /tmp/Release.key
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			gnupg && \
+		apt-key add /tmp/Release.key && \
+		rm /tmp/Release.key && \
+		echo "deb " $OSMOCOM_REPO_DEBIAN " ./" > /etc/apt/sources.list.d/osmocom-$OSMOCOM_REPO_VERSION.list \
+		;; \
+	centos*) \
+		echo "metadata_expire=60" >> /etc/dnf/dnf.conf && cat /etc/dnf/dnf.conf && \
+		dnf install -y dnf-utils wget && \
+		yum config-manager --set-enabled PowerTools && \
+		cd /etc/yum.repos.d/ && \
+		wget ${OSMOCOM_REPO_CENTOS}/network:osmocom:$OSMOCOM_REPO_VERSION.repo \
+		;; \
+	esac
+
+# we need to add this to invalidate the cache once the repository is updated.
+# unfortunately Dockerfiles don't support a conditional ARG, so we need to add both DPKG + RPM
+ADD	$OSMOCOM_REPO_DEBIAN/Release /tmp/Release
+ADD	$OSMOCOM_REPO_CENTOS/repodata/repomd.xml /tmp/repomd.xml
+
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends \
+			less \
+			apt-utils \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			uhd-host \
+			osmo-trx-uhd && \
+		apt-get clean \
+		;; \
+	centos*) \
+		dnf install -y \
+			less \
+			strace \
+			tcpdump \
+			telnet \
+			vim \
+			osmo-trx-uhd \
+		;; \
+	esac
+
+RUN	/usr/lib/uhd/utils/uhd_images_downloader.py
+
+RUN	systemctl enable osmo-trx-uhd
+
+WORKDIR	/tmp
+RUN	cp -r /etc/osmocom /etc/osmocom-default
+VOLUME	/data
+VOLUME	/etc/osmocom
+VOLUME	/dev/bus/usb
+
+COPY	osmocom/* /etc/osmocom/
+
+CMD	["/lib/systemd/systemd", "--system", "--unit=multi-user.target"]
+
+#osmo-trx-ipc: VTY  CTRL
+EXPOSE     4237 4236
+EXPOSE	5700 5701 5702
diff --git a/osmo-ran/split/ran-trx-uhd/Makefile b/osmo-ran/split/ran-trx-uhd/Makefile
new file mode 100644
index 0000000..1d99f06
--- /dev/null
+++ b/osmo-ran/split/ran-trx-uhd/Makefile
@@ -0,0 +1,2 @@
+RUN_ARGS?=--sysctl net.ipv6.conf.all.disable_ipv6=0 --rm --network sigtran --ip 172.18.25.202 -v bsc-vol:/data
+include ../../../make/Makefile
diff --git a/osmo-ran/split/ran-trx-uhd/Release.key b/osmo-ran/split/ran-trx-uhd/Release.key
new file mode 100644
index 0000000..a737316
--- /dev/null
+++ b/osmo-ran/split/ran-trx-uhd/Release.key
@@ -0,0 +1,20 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.5 (GNU/Linux)
+
+mQENBFJBt/wBCADAht3d/ilNuyzaXYw/QwTRvmjyoDvfXw+H/3Fvk1zlDZoiKPPc
+a1wCVBINUZl7vYM2OXqbJwYa++JP2Q48xKSvC6thbRc/YLievkbcvTemf7IaREfl
+CTjoYpoqXHa9kHMw1aALDm8CNU88jZmnV7v9L6hKkbYDxie+jpoj7D6B9JlxgNJ4
+5dQyRNsFGVcIl4Vplt1HyGc5Q5nQI/VgS2rlF/IOXmhRQBc4LEDdU8R2IKnkU4ee
+S7TWanAigGAQhxGuCkS39/CWzc1DhLhjlNhBl/+RTPejkqJtAy00ZLps3+RqUN1Y
+CU/Fsr7aRlYVGqQ/BlptwV0XQ2VVYJX2oEBBABEBAAG0MG5ldHdvcmsgT0JTIFBy
+b2plY3QgPG5ldHdvcmtAYnVpbGQub3BlbnN1c2Uub3JnPokBPAQTAQIAJgUCXm/4
+pgIbAwUJEEzwqgYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGLrGgkXKA3f/1AH
+/A7WVSpfM4wV/DMqZPTsSjChB4JyDotxpV7qHZzBC5aaP2dINZyi9PayIwZWbvCY
+VKvt+Fw8oCGC9F9mdh10Xe+ElHeVNSihzABPuu1RkRkb1nvkymScy0yxydodYOBi
+K4WQ+BhpijXWmYvOekIwbS5Hi9BHpfgK4TinK0xsvh1bVLeQJ8YjrnNFIAR2CnBa
+X7Y72Up/kKL08DdQzuS+mKrJtAQlGMtIsukWC2ajYQMkNwm8Gvhpn8za113dCkBW
+XAFnlQqQobKwC7b19QgEtJI/YpGSrRc6WaZxPyAjscbWQlFEAB900sVj4BWT55ig
+7O2uSdsCVhTuU7T0ztwsgvmIRgQTEQIABgUCUkG3/AAKCRA7MBG3a51lIzhdAJ9v
+d6XPffMZRcCGgDEY5OaTn/MsCQCgrXbeZpFJgnirSrc8rRonvzYFiF4=
+=/Tek
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/osmo-ran/split/ran-trx-uhd/osmocom/osmo-trx-uhd.cfg b/osmo-ran/split/ran-trx-uhd/osmocom/osmo-trx-uhd.cfg
new file mode 100644
index 0000000..02c92d3
--- /dev/null
+++ b/osmo-ran/split/ran-trx-uhd/osmocom/osmo-trx-uhd.cfg
@@ -0,0 +1,27 @@
+log stderr
+ logging filter all 1
+ logging color 1
+ logging print category 1
+ logging timestamp 1
+ logging print file basename
+ logging level set-all notice
+!
+line vty
+ no login
+!
+cpu-sched
+ policy rr 18
+trx
+ bind-ip $DOCKER_IN_IP
+ remote-ip $BTS_IP
+ ! 28 dB offset below is valid only for the B2xx in 1800 MHz band, see
+ ! https://osmocom.org/issues/4468 for more details
+ rssi-offset 28.000000
+ tx-sps 4
+ rx-sps 4
+ dev-args type=b200
+ clock-ref internal
+ egprs enable
+ ext-rach disable
+ multi-arfcn enable
+ chan 0
diff --git a/systemd/Dockerfile b/systemd/Dockerfile
new file mode 100644
index 0000000..8f1763d
--- /dev/null
+++ b/systemd/Dockerfile
@@ -0,0 +1,41 @@
+ARG	REGISTRY=docker.io
+ARG	UPSTREAM_DISTRO=centos:centos8
+FROM	${REGISTRY}/${UPSTREAM_DISTRO}
+# Arguments used after FROM must be specified again
+ARG	DISTRO
+
+MAINTAINER Pau Espin Pedrol <pespin at sysmocom.de>
+
+# set up systemd
+# container=docker: systemd likes to know it is running inside a container
+ENV container docker
+RUN	case "$DISTRO" in \
+	debian*) \
+		apt-get update && \
+		apt-get install -y --no-install-recommends systemd; \
+			(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do test "$i" = "systemd-tmpfiles-setup.service" || rm -f $i; done); \
+			rm -f /lib/systemd/system/multi-user.target.wants/*; \
+			rm -f /etc/systemd/system/*.wants/*; \
+			rm -f /lib/systemd/system/local-fs.target.wants/*; \
+			rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
+			rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
+			rm -f /lib/systemd/system/basic.target.wants/*; \
+			rm -f /lib/systemd/system/anaconda.target.wants/*; \
+		;; \
+	centos*) \
+		yum -y install systemd; yum clean all; \
+			(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do test "$i" = "systemd-tmpfiles-setup.service" || rm -f $i; done); \
+			rm -f /lib/systemd/system/multi-user.target.wants/*; \
+			rm -f /etc/systemd/system/*.wants/*; \
+			rm -f /lib/systemd/system/local-fs.target.wants/*; \
+			rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
+			rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
+			rm -f /lib/systemd/system/basic.target.wants/*; \
+			rm -f /lib/systemd/system/anaconda.target.wants/*; \
+		;; \
+	esac
+VOLUME [ "/sys/fs/cgroup" ]
+
+#RUN	systemctl enable osmo-bsc osmo-bts-trx osmo-mgw osmo-pcu
+
+CMD	["/lib/systemd/systemd", "--system", "--unit=multi-user.target"]
diff --git a/systemd/Makefile b/systemd/Makefile
new file mode 100644
index 0000000..80b1069
--- /dev/null
+++ b/systemd/Makefile
@@ -0,0 +1,2 @@
+RUN_ARGS?=--sysctl net.ipv6.conf.all.disable_ipv6=0 --rm --network sigtran --ip 172.18.25.200 -v bsc-vol:/data
+include ../make/Makefile

-- 
To view, visit https://gerrit.osmocom.org/c/docker-playground/+/21263
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: docker-playground
Gerrit-Branch: master
Gerrit-Change-Id: If5d22e9fa818310cbb4adc34bd7aceb4416ec969
Gerrit-Change-Number: 21263
Gerrit-PatchSet: 8
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201218/889cd1b2/attachment.htm>


More information about the gerrit-log mailing list