Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG-RAN
Commits
22ad41e6
Commit
22ad41e6
authored
Feb 09, 2023
by
turletti
Committed by
Robert Schmidt
Feb 15, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Dockerfile for aw2s RRUs on u18.04
parent
2de56bf3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
193 additions
and
0 deletions
+193
-0
docker/Dockerfile.gNB.aw2s.ubuntu18
docker/Dockerfile.gNB.aw2s.ubuntu18
+110
-0
docker/scripts/gnb-aw2s_entrypoint.sh
docker/scripts/gnb-aw2s_entrypoint.sh
+83
-0
No files found.
docker/Dockerfile.gNB.aw2s.ubuntu18
0 → 100644
View file @
22ad41e6
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for Ubuntu18.04
#
#---------------------------------------------------------------------
FROM ran-base:latest AS gnb-base
FROM ran-build:latest AS gnb-build
COPY ./libori.so /usr/local/lib/
# build AW2S fronthaul lib
WORKDIR /oai-ran
RUN /bin/sh oaienv && \
cd cmake_targets/ran_build/build && \
ninja aw2sori_transpro
RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml && \
cp /oai-ran/docker/scripts/gnb-aw2s_entrypoint.sh /oai-ran/docker/scripts/entrypoint.sh
#start from scratch for target executable
FROM ubuntu:bionic as oai-gnb-aw2s
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
software-properties-common \
procps \
libsctp1 \
tzdata \
libnettle6 \
libblas3 \
libatlas3-base \
libconfig9 \
openssl \
net-tools \
iproute2 \
iputils-ping \
python \
python3 \
python3-six \
python3-requests \
libusb-1.0-0 && \
rm -rf /var/lib/apt/lists/*
COPY ./libori.so /usr/local/lib/
WORKDIR /opt/oai-gnb-aw2s/bin
COPY --from=gnb-build \
/oai-ran/cmake_targets/ran_build/build/nr-softmodem \
./
COPY ./docker/scripts/gnb-aw2s_entrypoint.sh /opt/oai-gnb-aw2s/bin/entrypoint.sh
COPY --from=gnb-build \
/oai-ran/cmake_targets/ran_build/build/liboai_eth_transpro.so \
/oai-ran/cmake_targets/ran_build/build/librfsimulator.so \
/oai-ran/cmake_targets/ran_build/build/libaw2sori_transpro.so \
/oai-ran/cmake_targets/ran_build/build/libcoding.so \
/oai-ran/cmake_targets/ran_build/build/libparams_libconfig.so \
/oai-ran/cmake_targets/ran_build/build/libdfts.so \
/oai-ran/cmake_targets/ran_build/build/libldpc.so \
/oai-ran/cmake_targets/ran_build/build/libldpc_optim.so \
/oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so \
/oai-ran/cmake_targets/ran_build/build/libldpc_orig.so \
/oai-ran/cmake_targets/ran_build/build/libtelnetsrv.so \
/usr/local/lib/
RUN /bin/bash -c "ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/libthirdparty_transpro.so" && \
/bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so /usr/local/lib/liboai_transpro.so" && \
ldconfig
# Copy the relevant configuration files for gNB
WORKDIR /opt/oai-gnb-aw2s/etc
COPY --from=gnb-build /oai-ran/docker/etc .
WORKDIR /opt/oai-gnb-aw2s
#EXPOSE 2152/udp # S1U, GTP/UDP
#EXPOSE 22100/tcp # ?
#EXPOSE 36412/udp # S1C, SCTP/UDP
#EXPOSE 36422/udp # X2C, SCTP/UDP
#EXPOSE 50000/udp # IF5 / ORI (control)
#EXPOSE 50001/udp # IF5 / ECPRI (data)
ENTRYPOINT ["/opt/oai-gnb-aw2s/bin/entrypoint.sh"]
CMD ["/opt/oai-gnb-aw2s/bin/nr-softmodem", "-O", "/opt/oai-gnb-aw2s/etc/gnb.conf"]
docker/scripts/gnb-aw2s_entrypoint.sh
0 → 100755
View file @
22ad41e6
#!/bin/bash
set
-uo
pipefail
PREFIX
=
/opt/oai-gnb-aw2s
ENABLE_X2
=
${
ENABLE_X2
:-
yes
}
THREAD_PARALLEL_CONFIG
=
${
THREAD_PARALLEL_CONFIG
:-
PARALLEL_SINGLE_THREAD
}
# Based another env var, pick one template to use
if
[[
-v
USE_NSA_TDD_MONO
]]
;
then
cp
$PREFIX
/etc/gnb.nsa.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_TDD_MONO
]]
;
then
cp
$PREFIX
/etc/gnb.sa.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_TDD_MONO_B2XX
]]
;
then
cp
$PREFIX
/etc/gnb.sa.tdd.b2xx.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_FDD_MONO
]]
;
then
cp
$PREFIX
/etc/gnb.sa.fdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_CU
]]
;
then
cp
$PREFIX
/etc/gnb.sa.cu.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_TDD_DU
]]
;
then
cp
$PREFIX
/etc/gnb.sa.du.tdd.conf
$PREFIX
/etc/gnb.conf
;
fi
if
[[
-v
USE_SA_NFAPI_VNF
]]
;
then
cp
$PREFIX
/etc/gnb.sa.nfapi.vnf.conf
$PREFIX
/etc/gnb.conf
;
fi
# Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself.
if
[[
-v
USE_VOLUMED_CONF
]]
;
then
cp
$PREFIX
/etc/mounted.conf
$PREFIX
/etc/gnb.conf
;
fi
# Default Parameters
GNB_ID
=
${
GNB_ID
:-
e00
}
NSSAI_SD
=
${
NSSAI_SD
:-
ffffff
}
# AMF_IP_ADDRESS can be amf ip address of amf fqdn
if
[[
-v
AMF_IP_ADDRESS
]]
&&
[[
"
${
AMF_IP_ADDRESS
}
"
=
~
[
a-zA-Z]
]]
&&
[[
-z
`
getent hosts
$AMF_IP_ADDRESS
|
awk
'{print $1}'
`
]]
;
then
echo
"not able to resolve AMF FQDN"
&&
exit
1
;
fi
[[
-v
AMF_IP_ADDRESS
]]
&&
[[
"
${
AMF_IP_ADDRESS
}
"
=
~
[
a-zA-Z]
]]
&&
AMF_IP_ADDRESS
=
$(
getent hosts
$AMF_IP_ADDRESS
|
awk
'{print $1}'
)
# Only this template will be manipulated
CONFIG_FILES
=
`
ls
$PREFIX
/etc/gnb.conf
||
true
`
for
c
in
${
CONFIG_FILES
}
;
do
# Sometimes templates have no pattern to be replaced.
if
!
grep
-oP
'@[a-zA-Z0-9_]+@'
${
c
}
;
then
echo
"Configuration is already set"
break
fi
# grep variable names (format: ${VAR}) from template to be rendered
VARS
=
$(
grep
-oP
'@[a-zA-Z0-9_]+@'
${
c
}
|
sort
|
uniq
| xargs
)
# create sed expressions for substituting each occurrence of ${VAR}
# with the value of the environment variable "VAR"
EXPRESSIONS
=
""
for
v
in
${
VARS
}
;
do
NEW_VAR
=
`
echo
$v
|
sed
-e
"s#@##g"
`
if
[[
"
${
!NEW_VAR
}
x"
==
"x"
]]
;
then
echo
"Error: Environment variable '
${
NEW_VAR
}
' is not set."
\
"Config file '
$(
basename
$c
)
' requires all of
$VARS
."
exit
1
fi
EXPRESSIONS
=
"
${
EXPRESSIONS
}
;s|
${
v
}
|
${
!NEW_VAR
}
|g"
done
EXPRESSIONS
=
"
${
EXPRESSIONS
#
';'
}
"
# render template and inline replace config file
sed
-i
"
${
EXPRESSIONS
}
"
${
c
}
echo
"=================================="
echo
"== Configuration file:
${
c
}
"
cat
${
c
}
done
# enable printing of stack traces on assert
export
gdbStacks
=
1
echo
"=================================="
echo
"== Starting gNB soft modem with AW2S"
if
[[
-v
USE_ADDITIONAL_OPTIONS
]]
;
then
echo
"Additional option(s):
${
USE_ADDITIONAL_OPTIONS
}
"
new_args
=()
while
[[
$#
-gt
0
]]
;
do
new_args+
=(
"
$1
"
)
shift
done
for
word
in
${
USE_ADDITIONAL_OPTIONS
}
;
do
new_args+
=(
"
$word
"
)
done
echo
"
${
new_args
[@]
}
"
exec
"
${
new_args
[@]
}
"
else
echo
"
$@
"
exec
"
$@
"
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment