Merge branch 'integration_2024_w28' into 'develop'
Integration: `2024.w28` See merge request oai/openairinterface5g!2856 * !2847 UE setting wrong frequency in 5G rfsimulator SA test * !2850 NR UE MAC DCI 00 BWP handling * !2852 \[E2 agent\] Move UE RRC_CONNECTED state signaling * !2851 Minor code cleanup and fixes * !2842 UE assertion for msg1_SubcarrierSpacing in RA * !2831 PUSCH power control state * !2838 NR UE UL FAPI PDU length fix * !2723 add initial NTN support for NR UE * !2764 Adding 7.2 containerfiles and docker-compose * !2827 Increase RX_DATA.indication PDU Length to 32 bits
This commit is contained in:
@@ -21,12 +21,13 @@
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
# Dockerfile for the Open-Air-Interface BUILD service
|
||||
# Valid for RHEL9
|
||||
# Valid for UBI9
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
|
||||
FROM registry.access.redhat.com/ubi9/ubi:latest AS ran-base
|
||||
LABEL MAINTAINER OpenAirInterface <contact@openairinterface.org>
|
||||
ARG NEEDED_GIT_PROXY
|
||||
ENV TZ=Europe/Paris
|
||||
ENV BUILD_UHD_FROM_SOURCE=True
|
||||
@@ -35,10 +36,6 @@ ENV UHD_VERSION=4.4.0.0
|
||||
# Copy the entitlements
|
||||
COPY ./etc-pki-entitlement /etc/pki/entitlement
|
||||
|
||||
# Copy the subscription manager configurations
|
||||
COPY ./rhsm-conf /etc/rhsm
|
||||
COPY ./rhsm-ca /etc/rhsm/ca
|
||||
|
||||
ENV SMDEV_CONTAINER_OFF=1
|
||||
#install developers pkg/repo
|
||||
RUN rm -f /etc/rhsm-host && \
|
||||
@@ -47,11 +44,21 @@ RUN rm -f /etc/rhsm-host && \
|
||||
cat /etc/os-release && \
|
||||
dnf install -y \
|
||||
#gcc needed for build_oai
|
||||
gcc gcc-c++ \
|
||||
diffutils \
|
||||
file \
|
||||
psmisc \
|
||||
git \
|
||||
meson \
|
||||
wget \
|
||||
xz \
|
||||
pkg-config \
|
||||
pcre2-devel \
|
||||
m4 \
|
||||
python3-devel \
|
||||
numactl-libs \
|
||||
numactl-devel \
|
||||
gcc-toolset-12-gcc \
|
||||
gcc-toolset-12-gcc-c++ \
|
||||
# python3-pip and pyyaml are used for conf template generation
|
||||
python3-pip && \
|
||||
pip3 install --ignore-installed pyyaml && \
|
||||
@@ -80,8 +87,9 @@ WORKDIR /oai-ran
|
||||
COPY oaienv .
|
||||
|
||||
#run build_oai -I to get the builder image
|
||||
RUN /bin/sh oaienv && \
|
||||
RUN /bin/sh oaienv && \
|
||||
cd cmake_targets && \
|
||||
mkdir -p log && \
|
||||
./build_oai -I --install-optional-packages -w USRP && \
|
||||
scl enable gcc-toolset-12 "\
|
||||
./build_oai -I --install-optional-packages -w USRP" && \
|
||||
rm /etc/pki/entitlement/*pem
|
||||
|
||||
@@ -45,6 +45,11 @@ RUN apt-get update && \
|
||||
gcc-12 \
|
||||
g++-12 \
|
||||
xxd \
|
||||
libpcre2-dev \
|
||||
python3-dev \
|
||||
bison \
|
||||
flex \
|
||||
m4 \
|
||||
# python3-pip for conf template generation
|
||||
python3-pip && \
|
||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12 && \
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
#/*
|
||||
# * 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 RAN Build for FHI 7.2
|
||||
# Valid for UBI9
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ran-base:latest as ran-base
|
||||
ENV TZ=Europe
|
||||
|
||||
RUN rm -Rf /oai-ran
|
||||
WORKDIR /oai-ran
|
||||
COPY . .
|
||||
|
||||
## Download and build DPDK
|
||||
RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \
|
||||
tar -xvf dpdk-20.11.9.tar.xz && \
|
||||
cd dpdk-stable-20.11.9 && \
|
||||
meson build && \
|
||||
ninja -C build && \
|
||||
ninja install -C build
|
||||
|
||||
## Build Fronthaul library
|
||||
RUN git clone https://gerrit.o-ran-sc.org/r/o-du/phy.git /opt/phy && \
|
||||
cd /opt/phy && \
|
||||
git checkout oran_e_maintenance_release_v1.0 &&\
|
||||
git apply /oai-ran/cmake_targets/tools/oran_fhi_integration_patches/E/oaioran_E.patch && \
|
||||
cd /opt/phy/fhi_lib/lib && \
|
||||
RTE_SDK=/oai-ran/dpdk-stable-20.11.9/ XRAN_DIR=/opt/phy/fhi_lib make XRAN_LIB_SO=1
|
||||
|
||||
FROM ran-base as ran-build-fhi72
|
||||
ARG E2AP_VERSION=E2AP_V3
|
||||
ARG KPM_VERSION=KPM_V3_00
|
||||
|
||||
## Build and install OAI
|
||||
RUN /bin/sh oaienv && \
|
||||
cd cmake_targets && \
|
||||
mkdir -p log && \
|
||||
scl enable gcc-toolset-12 "\
|
||||
./build_oai \
|
||||
--gNB \
|
||||
--build-lib 'telnetsrv enbscope uescope nrscope' \
|
||||
-t oran_fhlib_5g --cmake-opt -Dxran_LOCATION=/opt/phy/fhi_lib/lib \
|
||||
--build-e2 --cmake-opt -DXAPP_MULTILANGUAGE=OFF --cmake-opt -DKPM_VERSION=$KPM_VERSION --cmake-opt -DE2AP_VERSION=$E2AP_VERSION" &&\
|
||||
# Mainly to see if the sanitize option was perfectly executed
|
||||
ldd ran_build/build/nr-softmodem && \
|
||||
ldd ran_build/build/liboran_fhlib_5g.so && \
|
||||
ldd /opt/phy/fhi_lib/lib/build/libxran.so
|
||||
|
||||
## Build FlexRIC for SM Models
|
||||
RUN mkdir -p openair2/E2AP/flexric/build && \
|
||||
cd openair2/E2AP/flexric/build && \
|
||||
scl enable gcc-toolset-12 "\
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
|
||||
-DXAPP_MULTILANGUAGE=OFF \
|
||||
-DKPM_VERSION=$KPM_VERSION \
|
||||
-DE2AP_VERSION=$E2AP_VERSION .. &&\
|
||||
ninja && \
|
||||
ninja install"
|
||||
@@ -0,0 +1,91 @@
|
||||
#/*
|
||||
# * 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 RAN Build for FHI 7.2
|
||||
# Valid for UBUNTU 22.04
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ran-base:latest as ran-base
|
||||
|
||||
ARG E2AP_VERSION=E2AP_V3
|
||||
ARG KPM_VERSION=KPM_V3_00
|
||||
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 \
|
||||
meson \
|
||||
wget \
|
||||
xz-utils \
|
||||
pkg-config \
|
||||
libnuma-dev && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN rm -Rf /oai-ran
|
||||
WORKDIR /oai-ran
|
||||
COPY . .
|
||||
|
||||
## Download and build DPDK
|
||||
RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \
|
||||
tar -xvf dpdk-20.11.9.tar.xz && \
|
||||
cd dpdk-stable-20.11.9 && \
|
||||
meson build && \
|
||||
ninja -C build && \
|
||||
ninja install -C build
|
||||
|
||||
## Build Fronthaul library
|
||||
RUN git clone https://gerrit.o-ran-sc.org/r/o-du/phy.git /opt/phy && \
|
||||
cd /opt/phy && \
|
||||
git checkout oran_e_maintenance_release_v1.0 &&\
|
||||
git apply /oai-ran/cmake_targets/tools/oran_fhi_integration_patches/E/oaioran_E.patch && \
|
||||
cd /opt/phy/fhi_lib/lib && \
|
||||
RTE_SDK=/oai-ran/dpdk-stable-20.11.9/ XRAN_DIR=/opt/phy/fhi_lib make XRAN_LIB_SO=1
|
||||
|
||||
FROM ran-base as ran-build-fhi72
|
||||
## Build and install OAI
|
||||
#run build_oai to build the target image
|
||||
RUN /bin/sh oaienv && \
|
||||
cd cmake_targets && \
|
||||
mkdir -p log && \
|
||||
./build_oai \
|
||||
--gNB \
|
||||
--build-lib "telnetsrv enbscope uescope nrscope" \
|
||||
-t oran_fhlib_5g --cmake-opt -Dxran_LOCATION=/opt/phy/fhi_lib/lib \
|
||||
--build-e2 --cmake-opt -DXAPP_MULTILANGUAGE=OFF --cmake-opt -DKPM_VERSION=$KPM_VERSION --cmake-opt -DE2AP_VERSION=$E2AP_VERSION && \
|
||||
$BUILD_OPTION && \
|
||||
# Mainly to see if the sanitize option was perfectly executed
|
||||
ldd ran_build/build/nr-softmodem && \
|
||||
ldd ran_build/build/liboran_fhlib_5g.so && \
|
||||
ldd /opt/phy/fhi_lib/lib/build/libxran.so
|
||||
|
||||
## Build FlexRIC for SM Models
|
||||
RUN mkdir -p openair2/E2AP/flexric/build && \
|
||||
cd openair2/E2AP/flexric/build && \
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
|
||||
-DXAPP_MULTILANGUAGE=OFF \
|
||||
-DKPM_VERSION=$KPM_VERSION \
|
||||
-DE2AP_VERSION=$E2AP_VERSION \
|
||||
-DCMAKE_C_COMPILER=gcc-12 \
|
||||
-DCMAKE_CXX_COMPILER=g++-12 .. && \
|
||||
ninja && \
|
||||
ninja install
|
||||
@@ -0,0 +1,125 @@
|
||||
#/*
|
||||
# * 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 7.2 Fronthaul
|
||||
# Valid for UBI9
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ran-base:latest as gnb-base
|
||||
|
||||
FROM ran-build-fhi72:latest as gnb-build
|
||||
|
||||
#start from scratch for target executable
|
||||
FROM registry.access.redhat.com/ubi9/ubi:latest as oai-gnb-fhi72
|
||||
ENV TZ=Europe/Paris
|
||||
|
||||
# Copy the entitlements
|
||||
COPY ./etc-pki-entitlement /etc/pki/entitlement
|
||||
|
||||
RUN rm -f /etc/rhsm-host && \
|
||||
subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms && \
|
||||
dnf update -y && \
|
||||
cat /etc/os-release && \
|
||||
dnf install -y \
|
||||
procps-ng \
|
||||
libXpm \
|
||||
libX11 \
|
||||
lksctp-tools \
|
||||
xz \
|
||||
numactl-libs \
|
||||
numactl-devel \
|
||||
pkg-config \
|
||||
pciutils \
|
||||
tzdata \
|
||||
gdb \
|
||||
python3 \
|
||||
python3-pip \
|
||||
net-tools \
|
||||
iputils && \
|
||||
pip3 install six && \
|
||||
pip3 install requests && \
|
||||
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
|
||||
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf && \
|
||||
subscription-manager repos --disable codeready-builder-for-rhel-9-x86_64-rpms && \
|
||||
rm -rf /etc/pki/entitlement
|
||||
|
||||
WORKDIR /opt/oai-gnb/bin
|
||||
COPY --from=gnb-build \
|
||||
/oai-ran/cmake_targets/ran_build/build/nr-softmodem ./
|
||||
COPY ./docker/scripts/gnb_entrypoint.sh ./entrypoint.sh
|
||||
|
||||
COPY --from=gnb-build \
|
||||
/oai-ran/cmake_targets/ran_build/build/librfsimulator.so \
|
||||
/oai-ran/cmake_targets/ran_build/build/liboran_fhlib_5g.so \
|
||||
/oai-ran/cmake_targets/ran_build/build/liboai_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/libtelnetsrv.so \
|
||||
/oai-ran/cmake_targets/ran_build/build/libtelnetsrv_ci.so \
|
||||
/usr/local/lib/
|
||||
|
||||
## Libxran library
|
||||
COPY --from=gnb-build \
|
||||
/opt/phy/fhi_lib/lib/build/libxran.so \
|
||||
/opt/phy/fhi_lib/lib/build/
|
||||
|
||||
## Copy all DPDK libraries as liboran_fhlib_5g.so require most of them
|
||||
COPY --from=gnb-build /usr/local/lib64/ /usr/local/lib64/
|
||||
|
||||
## Copy E2 SM models
|
||||
COPY --from=gnb-build /usr/local/lib64/flexric /usr/local/lib64/flexric
|
||||
|
||||
# Copying file for configuration module
|
||||
COPY --from=gnb-base \
|
||||
/lib64/libconfig.so.11 \
|
||||
/lib64/libforms.so.2 \
|
||||
/lib64/libblas.so.3 \
|
||||
/lib64/libcblas.so.3 \
|
||||
/lib64/liblapack.so.3 \
|
||||
/lib64/liblapacke.so.3 \
|
||||
/lib64/libicudata.so.67 \
|
||||
/lib64/libicui18n.so.67 \
|
||||
/lib64/libicuuc.so.67 \
|
||||
/lib64/
|
||||
|
||||
RUN ldconfig && \
|
||||
echo "---- ldd on executable nr-softmodem ----" && \
|
||||
ldd /opt/oai-gnb/bin/nr-softmodem && \
|
||||
echo "---- ldd on shared libraries ----" && \
|
||||
ldd /usr/local/lib/librfsimulator.so \
|
||||
/usr/local/lib/liboran_fhlib_5g.so \
|
||||
/usr/local/lib/liboai_transpro.so \
|
||||
/usr/local/lib/libcoding.so \
|
||||
/usr/local/lib/libparams_libconfig.so \
|
||||
/usr/local/lib/libdfts.so \
|
||||
/usr/local/lib/libldpc*.so \
|
||||
/usr/local/lib/libtelnetsrv.so \
|
||||
/usr/local/lib/libtelnetsrv_ci.so \
|
||||
/opt/phy/fhi_lib/lib/build/libxran.so
|
||||
|
||||
WORKDIR /opt/oai-gnb
|
||||
COPY --from=gnb-base /tini /tini
|
||||
ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"]
|
||||
CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
|
||||
@@ -0,0 +1,113 @@
|
||||
#/*
|
||||
# * 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 7.2 Fronthaul
|
||||
# Valid for Ubuntu22.04
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ran-base:latest as gnb-base
|
||||
|
||||
FROM ran-build-fhi72:latest as gnb-build
|
||||
|
||||
|
||||
#start from scratch for target executable
|
||||
FROM ubuntu:jammy as oai-gnb
|
||||
ARG BUILD_OPTION
|
||||
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 \
|
||||
pkg-config \
|
||||
libsctp1 \
|
||||
tzdata \
|
||||
libblas3 \
|
||||
libconfig9 \
|
||||
openssl \
|
||||
net-tools \
|
||||
iperf \
|
||||
iproute2 \
|
||||
iputils-ping \
|
||||
gdb \
|
||||
pciutils \
|
||||
libpcap-dev \
|
||||
xz-utils \
|
||||
libnuma-dev \
|
||||
python3 \
|
||||
python3-six \
|
||||
python3-requests &&\
|
||||
# if the --sanitize option was used to build, additional packages are required
|
||||
/bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||
libasan5 \
|
||||
libubsan1 \
|
||||
liblapacke; fi' && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /opt/oai-gnb/bin
|
||||
COPY --from=gnb-build \
|
||||
/oai-ran/cmake_targets/ran_build/build/nr-softmodem ./
|
||||
COPY ./docker/scripts/gnb_entrypoint.sh ./entrypoint.sh
|
||||
|
||||
COPY --from=gnb-build \
|
||||
/oai-ran/cmake_targets/ran_build/build/librfsimulator.so \
|
||||
/oai-ran/cmake_targets/ran_build/build/liboai_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/libtelnetsrv.so \
|
||||
/oai-ran/cmake_targets/ran_build/build/libtelnetsrv_ci.so \
|
||||
/usr/local/lib/
|
||||
|
||||
## Libxran library
|
||||
COPY --from=gnb-build \
|
||||
/opt/phy/fhi_lib/lib/build/libxran.so \
|
||||
/opt/phy/fhi_lib/lib/build/
|
||||
|
||||
## Copy all DPDK libraries as liboran_fhlib_5g.so require most of them
|
||||
COPY --from=gnb-build /usr/local/lib/x86_64-linux-gnu /usr/local/lib/x86_64-linux-gnu/
|
||||
|
||||
## Copy E2 SM models
|
||||
COPY --from=gnb-build /usr/local/lib/flexric /usr/local/lib/flexric
|
||||
|
||||
RUN ldconfig && \
|
||||
echo "---- ldd on nr-softmodem ----" && \
|
||||
ldd /opt/oai-gnb/bin/nr-softmodem && \
|
||||
echo "---- ldd on shared libraries ----" && \
|
||||
ldd /usr/local/lib/librfsimulator.so \
|
||||
/usr/local/lib/liboai_transpro.so \
|
||||
/usr/local/lib/libcoding.so \
|
||||
/usr/local/lib/libparams_libconfig.so \
|
||||
/usr/local/lib/libdfts.so \
|
||||
/usr/local/lib/libldpc*.so \
|
||||
/usr/local/lib/libtelnetsrv.so \
|
||||
/usr/local/lib/libtelnetsrv_ci.so \
|
||||
/opt/phy/fhi_lib/lib/build/libxran.so
|
||||
|
||||
WORKDIR /opt/oai-gnb
|
||||
COPY --from=gnb-base /tini /tini
|
||||
ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"]
|
||||
CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
|
||||
+67
-47
@@ -33,29 +33,30 @@ For all platforms, the strategy for building docker/podman images is the same:
|
||||
into which all targets are compiled.
|
||||
* Then from the `ran-build` shared image, we can build target images for:
|
||||
- eNB
|
||||
- gNB (with UHD)
|
||||
- gNB (with AW2S), only on RHEL9
|
||||
- gNB/DU (with UHD)
|
||||
- gNB/DU (with AW2S), only on RHEL9
|
||||
- lte-UE
|
||||
- nr-UE
|
||||
|
||||
- nr-cuup
|
||||
These target images will only contain:
|
||||
- the generated executable (for example `lte-softmodem`)
|
||||
- the generated shared libraries (for example `liboai_usrpdevif.so`)
|
||||
- the needed libraries and packages to run these generated binaries
|
||||
- Some configuration file templates
|
||||
- Some tools (such as `ping`, `ifconfig`)
|
||||
* From the `ran-build-fhi72` image, we can build target image for:
|
||||
- gNB/DU (with FHI 7.2)
|
||||
|
||||
Note that on every push to develop (i.e., typically after integrating merge
|
||||
requests), we build all images and push them to [Docker Hub](https://hub.docker.com/u/oaisoftwarealliance). To pull them, do
|
||||
|
||||
```
|
||||
```bash
|
||||
docker pull oaisoftwarealliance/oai-gnb:develop
|
||||
docker pull oaisoftwarealliance/oai-nr-ue:develop
|
||||
docker pull oaisoftwarealliance/oai-enb:develop
|
||||
docker pull oaisoftwarealliance/oai-lte-ue:develop
|
||||
```
|
||||
Have a look at [this README](../ci-scripts/yaml_files/5g_rfsimulator/README.md) to get some
|
||||
information on how to use the images.
|
||||
Have a look at [this README](../ci-scripts/yaml_files/5g_rfsimulator/README.md) to get some information on how to use the images.
|
||||
|
||||
# 2. File organization #
|
||||
|
||||
@@ -65,18 +66,20 @@ Targets can be:
|
||||
|
||||
- `base` for an image named `ran-base` (shared image)
|
||||
- `build` for an image named `ran-build` (shared image)
|
||||
- `build.fhi72` for an image named `ran-build-fhi72`
|
||||
- `eNB` for an image named `oai-enb`
|
||||
- `gNB` for an image named `oai-gnb`
|
||||
- `nr-cuup` for an image named `oai-nr-cuup`
|
||||
- `gNB.aw2s` for an image named `oai-gnb-aw2s`
|
||||
- `gNB.fhi` for an image named `oai-gnb-fhi72`
|
||||
- `lteUE` for an image named `oai-lte-ue`
|
||||
- `nrUE` for an image named `oai-nr-ue`
|
||||
|
||||
The currently-supported OS are:
|
||||
|
||||
- `rhel9` for Red Hat Entreprise Linux (including images for an OpenShift cluster)
|
||||
- `rhel9` for Red Hat Enterprise Linux and Openshift Universal Base Image
|
||||
- `ubuntu22` for Ubuntu 22.04 LTS
|
||||
- `rocky` for Rocky-Linux 8.7
|
||||
- `rocky` for Rocky-Linux 9
|
||||
|
||||
For more details regarding the build on an Openshift Cluster, see [OpenShift README](../openshift/README.md).
|
||||
|
||||
@@ -95,25 +98,28 @@ There are two shared images: one that has all dependencies, and a second that co
|
||||
```bash
|
||||
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
|
||||
cd openairinterface5g
|
||||
git checkout develop
|
||||
# default branch is develop, to change use git checkout <BRANCH>
|
||||
docker build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.ubuntu22 .
|
||||
# if you want use USRP, AW2S and RFSimulator radios
|
||||
docker build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.ubuntu22 .
|
||||
# if you want to use front-haul 7.2 and RFSimulator radios
|
||||
docker build --tag ran-build-fhi72:latest --file docker/Dockerfile.build.fhi72.ubuntu22 .
|
||||
```
|
||||
|
||||
After building both:
|
||||
After building:
|
||||
|
||||
```bash
|
||||
docker image ls
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
ran-build latest f2633a7f5102 1 minute ago 6.81GB
|
||||
ran-base latest 5c9c02a5b4a8 1 minute ago 2.4GB
|
||||
|
||||
ran-build-fhi72 latest 5190c06dbb4d 1 minute ago 6.86GB
|
||||
...
|
||||
```
|
||||
|
||||
Note that the steps are identical for `rocky-linux`.
|
||||
|
||||
### 3.2.1. Additional build otions
|
||||
### 3.2.1. Additional build options
|
||||
|
||||
This is only available for the Ubuntu version of Dockerfiles.
|
||||
|
||||
@@ -149,13 +155,18 @@ For example, the eNB:
|
||||
docker build --target oai-enb --tag oai-enb:latest --file docker/Dockerfile.eNB.ubuntu22 .
|
||||
```
|
||||
|
||||
To build gNB/DU with 7.2 fronthaul support:
|
||||
|
||||
```bash
|
||||
docker build --target oai-gnb-fhi72 --tag oai-gnb-fhi72:latest --file docker/Dockerfile.gNB.fhi72.ubuntu22 .
|
||||
```
|
||||
|
||||
After a while:
|
||||
|
||||
```
|
||||
docker image ls
|
||||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||||
oai-enb latest 25ddbd8b7187 1 minute ago 516MB
|
||||
<none> <none> 875ea3b05b60 8 minutes ago 8.18GB
|
||||
ran-build latest f2633a7f5102 1 hour ago 6.81GB
|
||||
ran-base latest 5c9c02a5b4a8 1 hour ago 2.4GB
|
||||
```
|
||||
@@ -176,16 +187,33 @@ docker build --target oai-gnb --tag oai-gnb:latest --file docker/Dockerfile.gNB.
|
||||
|
||||
Normally the target image will be around 200 Mbytes bigger.
|
||||
|
||||
# 4. Building using `podman` under Red Hat Entreprise Linux 8.2 #
|
||||
# 4. Building using `podman` under Red Hat Entreprise Linux 9.X #
|
||||
|
||||
Analogous to the above steps:
|
||||
```
|
||||
sudo podman build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.rhel9 .
|
||||
sudo podman build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.rhel9 .
|
||||
sudo podman build --target oai-enb --tag oai-enb:latest --file docker/Dockerfile.eNB.rhel9 .
|
||||
|
||||
```bash
|
||||
podman build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.rhel9 .
|
||||
# if you want use USRP, AW2S and RFSimulator radios
|
||||
podman build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.rhel9 .
|
||||
# if you want to use front-haul 7.2 and RFSimulator radios
|
||||
podman build --tag ran-build-fhi72:latest --file docker/Dockerfile.build.fhi72.rhel9 .
|
||||
```
|
||||
|
||||
# 5. Running modems using `docker` under Ubuntu 18.04 #
|
||||
## 4.1 Building target images
|
||||
|
||||
For example, the eNB:
|
||||
|
||||
```bash
|
||||
podman build --target oai-enb --tag oai-gnb:latest --file docker/Dockerfile.eNB.rhel9 .
|
||||
```
|
||||
|
||||
To build gNB/DU with 7.2 fronthaul support:
|
||||
|
||||
```bash
|
||||
podman build --target oai-gnb-fhi72 --tag oai-gnb-fhi72:latest --file docker/Dockerfile.gNB.fhi72.rhel9 .
|
||||
```
|
||||
|
||||
# 5. Running modems using `docker` under Ubuntu #
|
||||
|
||||
The easiest is to run them from a `docker-compose` file, which is used by the
|
||||
CI to test OAI. Some folders under `ci-scripts/yaml_files` have a README that
|
||||
@@ -200,55 +228,47 @@ file](../ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml).
|
||||
It is also possible to mount your own configuration file. The following
|
||||
docker-compose file can be used to start a gNB using a B210 and your own
|
||||
config, located at `/tmp/gnb.conf`:
|
||||
```
|
||||
version: '3.8'
|
||||
|
||||
```yaml
|
||||
services:
|
||||
gnb_mono_tdd:
|
||||
image: oai-gnb:latest
|
||||
privileged: true
|
||||
container_name: sa-b200-gnb
|
||||
cap_drop:
|
||||
- ALL
|
||||
cap_add:
|
||||
- SYS_NICE
|
||||
- IPC_LOCK
|
||||
ulimits:
|
||||
core: -1 # for core dumps
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --sa -E --continuous-tx
|
||||
USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --telnetsrv --telnetsrv.shrmod ci --continuous-tx --log_config.global_log_options level,nocolor,time,line_num,function
|
||||
devices:
|
||||
- /dev/bus/usb/:/dev/bus/usb/
|
||||
volumes:
|
||||
- /dev:/dev
|
||||
- /tmp/gnb.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.68.194
|
||||
- ../../conf_files/gnb.sa.band78.51prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
# for performance reasons, we use host mode: in bridge mode, we have
|
||||
# unacceptable DL TCP performance. However, the whole point of
|
||||
# containerization is to not be in host mode, so update this to macvlan
|
||||
# later.
|
||||
network_mode: "host"
|
||||
#entrypoint: /bin/bash -c "sleep infinity"
|
||||
healthcheck:
|
||||
# pgrep does NOT work
|
||||
test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
public_net:
|
||||
name: sa-b200-gnb-net
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.68.192/26
|
||||
driver_opts:
|
||||
com.docker.network.bridge.name: "sa-gnb-net"
|
||||
```
|
||||
|
||||
You should also change the `image` to the right image name and tag of the gNB
|
||||
you are using. Start like this:
|
||||
```
|
||||
```bash
|
||||
docker-compose up # gNB in foreground
|
||||
docker-compose up -d # gNB in background
|
||||
```
|
||||
Stop it like this (in both cases):
|
||||
```
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
Note that in the above case, ALL devices are passed into the container (by
|
||||
mounting `/dev`), which allows the container to access all devices connected to
|
||||
the host!
|
||||
|
||||
# 6. Running modems using `podman` under Red Hat Entreprise Linux 8.2 #
|
||||
|
||||
TODO.
|
||||
|
||||
Reference in New Issue
Block a user