Introduce osmo-ran docker image set up

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

Related: SYS#4889
Change-Id: If5d22e9fa818310cbb4adc34bd7aceb4416ec969
changes/63/21263/8
Pau Espin 2 years ago committed by laforge
parent 10c2ba7ea4
commit d3bd2c2ba9
  1. 23
      jenkins-common.sh
  2. 3
      make/Makefile
  3. 94
      osmo-ran/Dockerfile
  4. 2
      osmo-ran/Makefile
  5. 55
      osmo-ran/README.md
  6. 20
      osmo-ran/Release.key
  7. 47
      osmo-ran/jenkins.sh
  8. 123
      osmo-ran/osmocom/osmo-bsc.cfg
  9. 36
      osmo-ran/osmocom/osmo-bts-trx.cfg
  10. 22
      osmo-ran/osmocom/osmo-mgw.cfg
  11. 11
      osmo-ran/osmocom/osmo-pcu.cfg
  12. 33
      osmo-ran/osmocom/osmo-trx-ipc.cfg
  13. 22
      osmo-ran/osmocom/osmo-trx-uhd.cfg
  14. 97
      osmo-ran/split/jenkins-split.sh
  15. 80
      osmo-ran/split/ran-bsc_mgw/Dockerfile
  16. 2
      osmo-ran/split/ran-bsc_mgw/Makefile
  17. 20
      osmo-ran/split/ran-bsc_mgw/Release.key
  18. 123
      osmo-ran/split/ran-bsc_mgw/osmocom/osmo-bsc.cfg
  19. 22
      osmo-ran/split/ran-bsc_mgw/osmocom/osmo-mgw.cfg
  20. 78
      osmo-ran/split/ran-bts_pcu/Dockerfile
  21. 2
      osmo-ran/split/ran-bts_pcu/Makefile
  22. 20
      osmo-ran/split/ran-bts_pcu/Release.key
  23. 36
      osmo-ran/split/ran-bts_pcu/osmocom/osmo-bts-trx.cfg
  24. 11
      osmo-ran/split/ran-bts_pcu/osmocom/osmo-pcu.cfg
  25. 76
      osmo-ran/split/ran-trx-ipc/Dockerfile
  26. 2
      osmo-ran/split/ran-trx-ipc/Makefile
  27. 20
      osmo-ran/split/ran-trx-ipc/Release.key
  28. 29
      osmo-ran/split/ran-trx-ipc/osmocom/osmo-trx-ipc.cfg
  29. 79
      osmo-ran/split/ran-trx-uhd/Dockerfile
  30. 2
      osmo-ran/split/ran-trx-uhd/Makefile
  31. 20
      osmo-ran/split/ran-trx-uhd/Release.key
  32. 27
      osmo-ran/split/ran-trx-uhd/osmocom/osmo-trx-uhd.cfg
  33. 41
      systemd/Dockerfile
  34. 2
      systemd/Makefile

@ -44,6 +44,7 @@ docker_dir_from_image_name() {
# 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 @@ docker_images_require() {
# 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 @@ network_create() {
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

@ -37,6 +37,8 @@ UPSTREAM_DISTRO?=debian:stretch
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 @@ docker-build: .release
--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) \

@ -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@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

@ -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

@ -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
```

@ -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-----

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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@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

@ -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

@ -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-----

@ -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

@ -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

@ -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@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

@ -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

@ -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-----

@ -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

@ -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

@ -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@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

@ -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

@ -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-----

@ -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

@ -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@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

@ -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

@ -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-----

@ -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

@ -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@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"]

@ -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
Loading…
Cancel
Save