Introduce osmo-ran docker image set up
See osmo-ran/README.md in this commit for a description. Related: SYS#4889 Change-Id: If5d22e9fa818310cbb4adc34bd7aceb4416ec969
This commit is contained in:
parent
10c2ba7ea4
commit
d3bd2c2ba9
|
@ -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…
Reference in New Issue