First commit

This commit is contained in:
Leonardo Bonati
2021-12-08 20:17:46 +00:00
commit 60dffad583
2923 changed files with 463894 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
#!/bin/bash
images=('bldr-alpine3-go_6-a3.11-rmr3' 'bldr-ubuntu18-c-go_9-u18.04')
images_dir=/root/o-ran_images/
# load Docker images in parallel
for i in "${images[@]}"; do
docker load --input ${images_dir}${i}.tar.gz &
done
# wait for above jobs to finish
wait

22
setup-scripts/setup-lib.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/sh
# get sudo if needed
if [ -z "$EUID" ]; then
EUID=`id -u`
fi
SUDO=
if [ ! $EUID -eq 0 ] ; then
SUDO=sudo
fi
# default IPs and ports
RIC_SUBNET=10.0.2.0/24
RIC_IP=10.0.2.1
E2TERM_IP=10.0.2.10
E2TERM_SCTP_PORT=36422
E2MGR_IP=10.0.2.11
DBAAS_IP=10.0.2.12
DBAAS_PORT=6379
E2RTMANSIM_IP=10.0.2.15
XAPP_IP=10.0.2.24 # generic xApp IP

193
setup-scripts/setup-ric.sh Executable file
View File

@@ -0,0 +1,193 @@
#!/bin/sh
set -x
# get flags
for ARGUMENT in "$@"
do
KEY=$(echo $ARGUMENT | cut -f1 -d=)
case "$KEY" in
arena) arena=true;;
import) import=true;;
*)
esac
done
# get RIC interface from cli arguments
if [ $# -eq 0 ] || [ "$import" = false ] ; then
RIC_INTERFACE="can0"
else
if [ "$arena" = true ]; then
RIC_INTERFACE="brric"
else
RIC_INTERFACE=$1
fi
fi
export SRC=`dirname $0`
. $SRC/setup-lib.sh
OURDIR=../setup
# import base RIC images
if [ "$import" = true ] || [ $(docker image ls -q | wc -l) -eq "0" ]; then
echo "Importing base Docker images"
cd $SRC
./import-base-images.sh
fi
cd $OURDIR
tagvers=`git log --pretty=format:"%h" -n 1`
# build e2term
$SUDO docker image inspect e2term:latest >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
cd e2/RIC-E2-TERMINATION
$SUDO docker image inspect e2term:$tagvers >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
$SUDO docker build -f Dockerfile -t e2term:$tagvers .
fi
$SUDO docker tag e2term:$tagvers e2term:latest
$SUDO docker rmi e2term:$tagvers
cd ../..
fi
# build e2mgr
$SUDO docker image inspect e2mgr:latest >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
cd e2mgr/E2Manager
$SUDO docker image inspect e2mgr:$tagvers >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
$SUDO docker build -f Dockerfile -t e2mgr:$tagvers .
fi
$SUDO docker tag e2mgr:$tagvers e2mgr:latest
$SUDO docker rmi e2mgr:$tagvers
cd ../..
fi
# build e2rtmansim
$SUDO docker image inspect e2rtmansim:latest >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
cd e2mgr/tools/RoutingManagerSimulator
$SUDO docker image inspect e2rtmansim:$tagvers >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
$SUDO docker build -f Dockerfile -t e2rtmansim:$tagvers .
fi
$SUDO docker tag e2rtmansim:$tagvers e2rtmansim:latest
$SUDO docker rmi e2rtmansim:$tagvers
cd ../../..
fi
# build dbaas
$SUDO docker image inspect dbaas:latest >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
cd dbaas
$SUDO docker build -f docker/Dockerfile.redis -t dbaas:latest .
cd ..
fi
# remove dangling images
docker rmi $(docker images --filter "dangling=true" -q --no-trunc) 2> /dev/null
# create a private network for near-real-time RIC
$SUDO docker network inspect ric >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
$SUDO brctl addbr brric
$SUDO docker network create --subnet=$RIC_SUBNET -d bridge --attachable -o com.docker.network.bridge.name=brric ric
fi
# Create a route info file to tell the containers where to send various
# messages. This will be mounted on the containers
ROUTERFILE=`pwd`/router.txt
cat << EOF > $ROUTERFILE
newrt|start
rte|10020|$E2MGR_IP:3801
rte|10060|$E2TERM_IP:38000
rte|10061|$E2MGR_IP:3801
rte|10062|$E2MGR_IP:3801
rte|10070|$E2MGR_IP:3801
rte|10071|$E2MGR_IP:3801
rte|10080|$E2MGR_IP:3801
rte|10081|$E2TERM_IP:38000
rte|10082|$E2TERM_IP:38000
rte|10360|$E2TERM_IP:38000
rte|10361|$E2MGR_IP:3801
rte|10362|$E2MGR_IP:3801
rte|10370|$E2MGR_IP:3801
rte|10371|$E2TERM_IP:38000
rte|10372|$E2TERM_IP:38000
rte|1080|$E2MGR_IP:3801
rte|1090|$E2TERM_IP:38000
rte|1100|$E2MGR_IP:3801
rte|12010|$E2MGR_IP:38010
rte|1101|$E2TERM_IP:38000
rte|12002|$E2TERM_IP:38000
rte|12003|$E2TERM_IP:38000
rte|10091|$E2MGR_IP:4801
rte|10092|$E2MGR_IP:4801
rte|1101|$E2TERM_IP:38000
rte|1102|$E2MGR_IP:3801
rte|12001|$E2MGR_IP:3801
mse|12050|$(echo $XAPP_IP | cut -d "." -f 4)|$XAPP_IP:4560
newrt|end
EOF
remove_container() {
$SUDO docker inspect $1 >/dev/null 2>&1
if [ $? -eq 0 ]; then
$SUDO docker kill $1
$SUDO docker rm $1
fi
}
# create RIC various containers. Kill and remove them if they exist.
remove_container db
$SUDO docker run -d --network ric --ip $DBAAS_IP --name db dbaas:latest
remove_container e2rtmansim
$SUDO docker run -d -it --network ric --ip $E2RTMANSIM_IP --name e2rtmansim e2rtmansim:latest
remove_container e2mgr
$SUDO docker run -d -it --network ric --ip $E2MGR_IP -e RIC_ID=7b0000-000000/18 \
-e DBAAS_PORT_6379_TCP_ADDR=$DBAAS_IP -e DBAAS_PORT_6379_TCP_PORT="6379" \
-e DBAAS_SERVICE_HOST=$DBAAS_IP -e DBAAS_SERCE_PORT="6379" \
--mount type=bind,source=$ROUTERFILE,destination=/opt/E2Manager/router.txt,ro \
--name e2mgr e2mgr:latest
remove_container e2term
E2TERMCONFFILE=`pwd`/e2term_config.conf
if [ ! -e $E2TERMCONFFILE ]; then
cat <<EOF >$E2TERMCONFFILE
nano=38000
loglevel=debug
volume=log
#the key name of the environment holds the local ip address
#ip address of the E2T in the RMR
local-ip=$E2TERM_IP
#trace is start, stop
trace=start
external-fqdn=e2t.com
#put pointer to the key that point to pod name
pod_name=E2TERM_POD_NAME
sctp-port=$E2TERM_SCTP_PORT
EOF
fi
E2TERM_CONFIG_BIND="--mount type=bind,source=$E2TERMCONFFILE,destination=/opt/e2/config/config.conf,ro"
export RIC_IP=`ifconfig ${RIC_INTERFACE} | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'`
if [ "$arena" = true ]; then
echo 'Starting local setup'
# if both RIC and DU are executed on the same machine, do not set Docker NAT rules
$SUDO docker run -d -it --network=ric --ip $E2TERM_IP --name e2term \
--mount type=bind,source=$ROUTERFILE,destination=/opt/e2/dockerRouter.txt,ro \
$E2TERM_CONFIG_BIND \
e2term:latest
else
$SUDO docker run -d -it --network=ric --ip $E2TERM_IP --name e2term -p ${RIC_IP}:${E2TERM_SCTP_PORT}:${E2TERM_SCTP_PORT}/sctp\
--mount type=bind,source=$ROUTERFILE,destination=/opt/e2/dockerRouter.txt,ro \
$E2TERM_CONFIG_BIND e2term:latest
fi
exit 0

View File

@@ -0,0 +1,71 @@
#!/bin/sh
# call as setup-sample-xapp.sh gnb_id
set -x
IMAGE_NAME=sample-xapp
MODEL_DIR=sample-xapp
CONNECTOR_DIR=xapp-bs-connector
DOCKER_FILE=Dockerfile
SETUP_DIR=../setup
export SRC=`dirname $0`
cd $SRC
. $SRC/setup-lib.sh
ENTRYPOINT=/bin/bash
GNB_ID=$1
# if changing xApp IP or ID, you need to define new RMR routes
# in the setup-ric.sh/setup-lib.sh scripts and restart the RIC
XAPP_IP=$XAPP_IP
XAPP_ID=$(echo $XAPP_IP | cut -d "." -f 4)
CONTAINER_NAME=${IMAGE_NAME}-${XAPP_ID}
# Build docker image
$SUDO docker image inspect ${IMAGE_NAME}:latest >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
tagvers=`git log --pretty=format:"%h" -n 1`
$SUDO docker image inspect ${IMAGE_NAME}:$tagvers >/dev/null 2>&1
if [ ! $? -eq 0 ]; then
# copy Dockerfile out
cd ${SETUP_DIR}
cp ${MODEL_DIR}/${DOCKER_FILE} ./${DOCKER_FILE}_${IMAGE_NAME}
$SUDO docker build \
--build-arg DBAAS_SERVICE_HOST=$DBAAS_IP \
--build-arg DBAAS_SERVICE_PORT=$DBAAS_PORT \
-f ${DOCKER_FILE}_${IMAGE_NAME} -t ${IMAGE_NAME}:$tagvers .
# remove copied Dockerfile
rm ${DOCKER_FILE}_${IMAGE_NAME}
fi
$SUDO docker tag ${IMAGE_NAME}:$tagvers ${IMAGE_NAME}:latest
$SUDO docker rmi ${IMAGE_NAME}:$tagvers
fi
remove_container() {
$SUDO docker inspect $1 >/dev/null 2>&1
if [ $? -eq 0 ]; then
$SUDO docker kill $1
$SUDO docker rm $1
fi
}
# run containers
remove_container ${CONTAINER_NAME}
# replace parameters, recompile code and restart container
$SUDO docker run -d -it --entrypoint ${ENTRYPOINT} --network ric --ip ${XAPP_IP} \
-e DBAAS_SERVICE_HOST=$DBAAS_IP -e DBAAS_SERVICE_PORT=$DBAAS_PORT --name ${CONTAINER_NAME} ${IMAGE_NAME}:latest
if [ -n "${GNB_ID}" ]; then
docker exec ${CONTAINER_NAME} sed -i "s/^export GNB_ID.*/export GNB_ID=${GNB_ID}/g" /home/xapp-bs-connector/build_xapp.sh
fi
docker exec ${CONTAINER_NAME} sed -i "s/^export XAPP_ID.*/export XAPP_ID=${XAPP_ID}/g" /home/xapp-bs-connector/build_xapp.sh
docker exec ${CONTAINER_NAME} /home/xapp-bs-connector/build_xapp.sh clean
docker container restart ${CONTAINER_NAME}

View File

@@ -0,0 +1,4 @@
#!/bin/bash
./setup-ric.sh arena

2
setup-scripts/start-xapp.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
./setup-sample-xapp.sh gnb:311-048-01000501