Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
oai
cn5g
oai-cn5g-upf-vpp
Commits
6275f772
Verified
Commit
6275f772
authored
Mar 30, 2021
by
Rohan
Browse files
entrypoint clean up
parent
32d0067b
Changes
7
Hide whitespace changes
Inline
Side-by-side
docker/Dockerfile.ubuntu.18.04
View file @
6275f772
...
...
@@ -9,7 +9,7 @@
# */
#---------------------------------------------------------------------
#
# Dockerfile for the
Open-Air-Interface
UPF service
# Dockerfile for the
VPP-
UPF service
# Valid for Ubuntu-18.04 (bionic)
#
#---------------------------------------------------------------------
...
...
@@ -38,7 +38,7 @@ RUN git clone https://github.com/travelping/upg-vpp.git
RUN mv upg-vpp/upf/ vpp/src/plugins/
RUN mv upg-vpp/vpp-patches/* scripts/patches/
RUN mv upg-vpp/vpp.spec /
RUN ./scripts/apply_vpp_patches
RUN ./scripts/apply_vpp_patches
.sh
RUN touch /etc/apt/apt.conf.d/90forceyes
RUN echo "APT::Get::Assume-Yes "true";" >> /etc/apt/apt.conf.d/90forceyes
RUN echo "APT::Get::force-yes "true";" >> /etc/apt/apt.conf.d/90forceyes
...
...
@@ -61,28 +61,30 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && DE
openssl \
libhyperscan-dev \
iproute2 \
vim \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /openair-upf/bin/
COPY --from=vpp-upf-builder /vpp-upf/scripts/entrypoint.sh /openair-upf/bin/entrypoint.sh
COPY --from=vpp-upf-builder /vpp-upf/scripts/run.sh /openair-upf/run.sh
COPY --from=vpp-upf-builder /vpp-upf/vpp/build-root/install-vpp-native/vpp/bin/vpp vpp
COPY --from=vpp-upf-builder /vpp-upf/vpp/build-root/install-vpp-native/vpp/bin/vppctl vppctl
WORKDIR /openair-upf/etc
COPY --from=vpp-upf-builder /vpp-upf/scripts/upf_conf/init.conf /openair-upf/etc/init.conf
COPY --from=vpp-upf-builder /vpp-upf/scripts/upf_conf/startup_debug.conf /openair-upf/etc/startup_debug.conf
COPY --from=vpp-upf-builder /vpp-upf/scripts/add_route.sh /openair-upf/etc/add_route.sh
WORKDIR /usr/lib/x86_64-linux-gnu/
COPY --from=vpp-upf-builder /vpp-upf/vpp/build-root/install-vpp-native/vpp/lib/ .
RUN ldconfig
RUN groupadd vpp
#expose
#EXPOSE <write the port numbers>
WORKDIR /openair-upf/
COPY --from=vpp-upf-builder /vpp-upf/scripts/run.sh /openair-upf/run.sh
#expose
#EXPOSE 8085/udp 2152/udp
ENTRYPOINT ["/openair-upf/bin/entrypoint.sh"]
CMD ["/openair-upf/run.sh"]
scripts/add_route.sh
deleted
100755 → 0
View file @
32d0067b
#!/usr/bin/env bash
ip
link set
eth0 down
ip
link set
eth0 name access
ip
link set
access up
ip
link set
eth1 down
ip
link set
eth1 name core
ip
link set
core up
ip
link set
eth2 down
ip
link set
eth2 name sgi
ip
link set
sgi up
ip route add @NETWORK_UE_IP@ via @UE_DL_Gw@ dev sgi
ip route add @SUBNET_ACCESS@ dev access
ip route add @SUBNET_CORE@ dev core
ip route add @SUBNET_SGI@ dev sgi
scripts/apply_vpp_patches
→
scripts/apply_vpp_patches
.sh
View file @
6275f772
#!/usr/bin/env bash
cd
scripts/patches/
find
.
-iname
'*.patch'
-execdir
sh
-c
'patch -p1 -N -d ../../vpp < $0'
{}
\;
scripts/entrypoint.sh
View file @
6275f772
#!/usr/bin/env bash
#
@Raphael -> first 3
files are common to docker and native installation
# files are common to docker and native installation
#____________
# init.conf => upf config
# startup_debug.conf => vpp config (To Do -> sed location of init.conf file)
# run_sh => run vpp
# add_route.sh => container routes
#____________
set
-euo
pipefail
CONFIG_DIR
=
"/openair-upf/etc"
###############################
...
...
@@ -17,7 +18,6 @@ CONFIG_DIR="/openair-upf/etc"
for
c
in
${
CONFIG_DIR
}
/
*
.conf
;
do
# 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
=
""
...
...
@@ -31,57 +31,38 @@ for c in ${CONFIG_DIR}/*.conf; do
EXPRESSIONS
=
"
${
EXPRESSIONS
}
;s|
${
v
}
|
${
!NEW_VAR
}
|g"
done
EXPRESSIONS
=
"
${
EXPRESSIONS
#
';'
}
"
# render template and inline replace config file
sed
-i
"
${
EXPRESSIONS
}
"
${
c
}
done
###############################
# VPP Routes
###############################
# @Raphael
# Assumption ->
# Assumption ->
# UPF has only three interfaces viz. n3 (access) eth0, n4 (core) eth1, n6 (sgi) eth2
# Near future we will have multiple interfaces (e.g. two n6 interface for edge computing case)
# We define in this order in docker-compose -> it is alphabetical order
#
ACCESS_IPV4
=
$(
ifconfig eth0 |
grep
"inet "
|
awk
'{print $2}'
)
CORE_IPV4
=
$(
ifconfig eth1 |
grep
"inet "
|
awk
'{print $2}'
)
SGI_IPV4
=
$(
ifconfig eth2 |
grep
"inet "
|
awk
'{print $2}'
)
# Dirty extraction -> we assume /24 subnet
export
UE_DL_Gw
=
$SGI_IPV4
export
SUBNET_ACCESS
=
`
echo
$ACCESS_IPV4
|
sed
-e
's/\.[^.]*\$//'
`
'.0/24'
;
export
SUBNET_CORE
=
`
echo
$CORE_IPV4
|
sed
-e
's/\.[^.]*\$//'
`
'.0/24'
;
export
SUBNET_SGI
=
`
echo
$SGI_IPV4
|
sed
-e
's/\.[^.]*\$//'
`
'.0/24'
;
for
c
in
${
CONFIG_DIR
}
/add_route.sh
;
do
# grep variable names (format: ${VAR}) from template to be rendered
VARS
=
$(
grep
-oP
'@[a-zA-Z0-9_]+@'
${
c
}
|
sort
|
uniq
| xargs
)
UE_DL_Gw
=
$SGI_IPV4
# 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
#
';'
}
"
ip
link set
eth0 down
ip
link set
eth0 name access
ip
link set
access up
# render template and inline replace config file
sed
-i
"
${
EXPRESSIONS
}
"
${
c
}
done
ip
link set
eth1 down
ip
link set
eth1 name core
ip
link set
core up
exec
"
$@
"
ip
link set
eth2 down
ip
link set
eth2 name sgi
ip
link set
sgi up
sleep
1
ip route add
$NETWORK_UE_IP
via
$UE_DL_Gw
dev sgi
e
xec
/openair-upf/etc/add_route.sh
e
cho
"Done setting the configuration"
#____________________________________________________________________________
exec
"
$@
"
scripts/tests/docker-compose.yml
View file @
6275f772
...
...
@@ -36,16 +36,20 @@ services:
UDM_IPV4_ADDRESS
:
192.168.61.194
UDM_PORT
:
80
UDM_API_VERSION
:
v1
UPF_IPV4_ADDRESS
:
192.168.61.201
entrypoint
:
/bin/bash -c \
"./bin/entrypoint.sh; ./bin/oai_smf -o -c etc/smf.conf; sleep infinity"
UPF_IPV4_ADDRESS
:
192.168.61.202
USE_NETWORK_INSTANCE
:
'
yes'
DISCOVER_UPF
:
'
no'
NRF_API_VERSION
:
'
v1'
NRF_IPV4_ADDRESS
:
'
127.0.0.1'
NRF_PORT
:
'
8080'
REGISTER_NRF
:
'
no'
healthcheck
:
test
:
/bin/bash -c "pgrep oai_smf"
interval
:
10s
timeout
:
5s
retries
:
5
extra_hosts
:
-
"
gw1.vppupf.node.
epc
.mnc95.mcc208.3gppnetwork.org:192.168.61.20
1
"
-
"
gw1.vppupf.node.
5gcn
.mnc95.mcc208.3gppnetwork.org:192.168.61.20
2
"
oai-amf
:
image
:
oai-amf:develop
...
...
@@ -76,6 +80,7 @@ services:
SST_1
:
'
1'
SD_0
:
'
123'
SD_1
:
'
12'
SMF_SELECTION
:
'
no'
SMF_INSTANCE_ID_0
:
1
SMF_INSTANCE_ID_1
:
2
SMF_IPV4_ADDR_0
:
192.168.61.196
...
...
@@ -95,10 +100,7 @@ services:
MYSQL_PASS
:
'
linux'
MYSQL_DB
:
'
oai_db'
OPERATOR_KEY
:
'
63bfa50ee6523365ff14c1f45f88737d'
entrypoint
:
/bin/bash -c \
"./bin/entrypoint.sh; ./bin/oai_amf -o -c etc/amf.conf; sleep infinity"
volumes
:
-
./entrypoint.sh:/openair-amf/bin/entrypoint.sh
NF_REGISTRATION
:
'
no'
healthcheck
:
test
:
/bin/bash -c "pgrep oai_smf"
interval
:
10s
...
...
@@ -127,14 +129,16 @@ services:
REALM
:
"
3gppnetwork.org"
NETWORK_UE_IP
:
"
12.1.1.0/24"
N3_IPV4_ADDRESS_REMOTE
:
"
192.168.62.198"
N3_IPV4_ADDRESS_LOCAL
:
"
192.168.62.20
1
"
N3_IPV4_ADDRESS_LOCAL
:
"
192.168.62.20
2
"
N4_IPV4_ADDRESS_REMOTE
:
"
192.168.61.196"
N4_IPV4_ADDRESS_LOCAL
:
"
192.168.61.20
1
"
N4_IPV4_ADDRESS_LOCAL
:
"
192.168.61.20
2
"
N6_IPV4_ADDRESS_REMOTE
:
"
192.168.63.205"
N6_IPV4_ADDRESS_LOCAL
:
"
192.168.63.20
1
"
N6_IPV4_ADDRESS_LOCAL
:
"
192.168.63.20
2
"
VPP_MAIN_CORE
:
0
VPP_CORE_WORKER
:
1
# entrypoint: /bin/bash -c "/openair-upf/bin/entrypoint.sh;./run.sh; sleep infinity"
# volumes:
# - ../entrypoint.sh:/openair-upf/bin/entrypoint.sh
# entrypoint: /bin/bash -c "./bin/entrypoint.sh; ./run.sh"
oai-spgwu
:
image
:
oai-spgwu-tiny:gtp_ext_header
...
...
@@ -182,21 +186,36 @@ services:
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 10.1.1.0/24 via 192.168.61.199 dev eth0;"\
"ip route add 12.1.1.0/24 via 192.168.63.201 dev eth1; sleep infinity"
gnbsim
:
image
:
gnbsim:latest
privileged
:
true
container_name
:
gnbsim
environment
:
AMF_NGAP_IPV4_ADDRESS
:
192.168.61.195
networks
:
public_net
:
ipv4_address
:
192.168.61.198
public_net_access
:
ipv4_address
:
192.168.62.198
volumes
:
-
./lib/modules/5.8.0-43-generic/kernel/drivers/net/gtp.ko:/lib/modules/5.8.0-43-generic/kernel/drivers/net/gtp.ko
entrypoint
:
/bin/bash -c "sleep infinity"
networks
:
public_net
:
name
:
oai-public-net
ipam
:
config
:
-
subnet
:
192.168.61.
192
/24
-
subnet
:
192.168.61.
0
/24
public_net_access
:
name
:
oai-public-access
ipam
:
config
:
-
subnet
:
192.168.62.
192
/24
-
subnet
:
192.168.62.
0
/24
public_net_sgi_lan
:
name
:
oai-public-sgi-lan
ipam
:
config
:
-
subnet
:
192.168.63.
192
/24
-
subnet
:
192.168.63.
0
/24
scripts/upf_conf/init.conf
View file @
6275f772
...
...
@@ -24,7 +24,7 @@ ip route add 0.0.0.0/0 table 0 via @N4_IPV4_ADDRESS_REMOTE@ host-core
ip
route
add
0
.
0
.
0
.
0
/
0
table
1
via
@
N6_IPV4_ADDRESS_REMOTE
@
host
-
sgi
upf
pfcp
endpoint
ip
@
N4_IPV4_ADDRESS_LOCAL
@
vrf
0
upf
node
-
id
fqdn
gw
@
GW_ID
@.
vppupf
.
node
.
epc
.
mnc
@
MNC03
@.
mcc
@
MCC
@.@
REALM
@
upf
node
-
id
fqdn
gw
@
GW_ID
@.
vppupf
.
node
.
5
gcn
.
mnc
@
MNC03
@.
mcc
@
MCC
@.@
REALM
@
upf
nwi
name
@
NWI_CORE
@
vrf
0
upf
nwi
name
@
NWI_ACCESS
@
vrf
2
...
...
scripts/upf_conf/startup_debug.conf
View file @
6275f772
...
...
@@ -13,8 +13,8 @@ api-trace {
}
#cpu {
# main-core
0
# corelist-workers
1
# main-core
@VPP_MAIN_CORE@
# corelist-workers
@VPP_CORE_WORKER@
#}
api
-
segment
{
...
...
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