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
zzha zzha
OpenXG-RAN
Commits
c1f63858
Commit
c1f63858
authored
Feb 17, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/ci-chore-updating-cn5g-v1.5' into integration_2023_w07
parents
70949fd4
31d6a5e9
Changes
33
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
437 additions
and
1143 deletions
+437
-1143
ci-scripts/Jenkinsfile-push-registry
ci-scripts/Jenkinsfile-push-registry
+1
-1
ci-scripts/cls_cmd.py
ci-scripts/cls_cmd.py
+5
-6
ci-scripts/cls_containerize.py
ci-scripts/cls_containerize.py
+181
-175
ci-scripts/epc.py
ci-scripts/epc.py
+9
-9
ci-scripts/main.py
ci-scripts/main.py
+1
-0
ci-scripts/xml_files/sa_cn5g_asue_closure.xml
ci-scripts/xml_files/sa_cn5g_asue_closure.xml
+1
-1
ci-scripts/xml_files/sa_cn5g_asue_start.xml
ci-scripts/xml_files/sa_cn5g_asue_start.xml
+1
-1
ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml
ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml
+3
-3
ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md
ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md
+0
-3
ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml
...ts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml
+2
-2
ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml
...ml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml
+2
-2
ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml
...ts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml
+2
-2
ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml
...ts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml
+2
-2
ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml
...ripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml
+2
-2
ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml
ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml
+2
-2
ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml
...ts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml
+2
-2
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
+25
-93
ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml
ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml
+24
-92
ci-scripts/yaml_files/5g_l2sim_tdd/README.md
ci-scripts/yaml_files/5g_l2sim_tdd/README.md
+8
-14
ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml
ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml
+25
-92
ci-scripts/yaml_files/5g_rfsimulator/README.md
ci-scripts/yaml_files/5g_rfsimulator/README.md
+9
-20
ci-scripts/yaml_files/5g_rfsimulator/amf-healthcheck.sh
ci-scripts/yaml_files/5g_rfsimulator/amf-healthcheck.sh
+0
-57
ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml
ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml
+26
-94
ci-scripts/yaml_files/5g_rfsimulator/nrf-healthcheck.sh
ci-scripts/yaml_files/5g_rfsimulator/nrf-healthcheck.sh
+0
-20
ci-scripts/yaml_files/5g_rfsimulator/smf-healthcheck.sh
ci-scripts/yaml_files/5g_rfsimulator/smf-healthcheck.sh
+0
-21
ci-scripts/yaml_files/5g_rfsimulator/spgwu-healthcheck.sh
ci-scripts/yaml_files/5g_rfsimulator/spgwu-healthcheck.sh
+0
-28
ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml
...ripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml
+24
-99
ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml
ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml
+24
-98
ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml
ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml
+26
-98
ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml
...yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml
+2
-2
ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml
...s/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml
+2
-2
ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml
...ts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml
+2
-2
ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml
...ts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml
+24
-98
No files found.
ci-scripts/Jenkinsfile-push-registry
View file @
c1f63858
...
...
@@ -77,7 +77,7 @@ pipeline {
withCredentials
([
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.DH_Credentials}"
,
usernameVariable:
'DH_Username'
,
passwordVariable:
'DH_Password'
]
])
{
def
listOfImages
=
[
"oai-enb"
,
"oai-gnb"
,
"oai-lte-ue"
,
"oai-nr-ue"
]
def
listOfImages
=
[
"oai-enb"
,
"oai-gnb"
,
"oai-lte-ue"
,
"oai-nr-ue"
,
"oai-nr-cuup"
]
// Logging in on both registries
sh
"docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1"
sh
"docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
...
...
ci-scripts/cls_cmd.py
View file @
c1f63858
...
...
@@ -74,23 +74,22 @@ class Cmd(metaclass=abc.ABCMeta):
class
LocalCmd
(
Cmd
):
def
__init__
(
self
,
d
=
None
):
self
.
cwd
=
d
if
self
.
cwd
is
not
None
:
logging
.
debug
(
f'Working dir is
{
self
.
cwd
}
'
)
self
.
cp
=
sp
.
CompletedProcess
(
args
=
''
,
returncode
=
0
,
stdout
=
''
)
def
run
(
self
,
line
,
timeout
=
300
,
silent
=
False
,
reportNonZero
=
True
):
if
type
(
line
)
is
str
:
line
=
[
s
for
s
in
line
.
split
(
' '
)
if
len
(
s
)
>
0
]
if
not
silent
:
logging
.
debug
(
' '
.
join
(
line
)
)
logging
.
info
(
line
)
try
:
ret
=
sp
.
run
(
line
,
cwd
=
self
.
cwd
,
stdout
=
sp
.
PIPE
,
stderr
=
sp
.
STDOUT
,
timeout
=
timeout
)
ret
=
sp
.
run
(
line
,
shell
=
True
,
cwd
=
self
.
cwd
,
stdout
=
sp
.
PIPE
,
stderr
=
sp
.
STDOUT
,
timeout
=
timeout
)
except
Exception
as
e
:
ret
=
sp
.
CompletedProcess
(
args
=
line
,
returncode
=
255
,
stdout
=
f'Exception:
{
str
(
e
)
}
'
.
encode
(
'utf-8'
))
if
ret
.
stdout
is
None
:
ret
.
stdout
=
b''
ret
.
stdout
=
ret
.
stdout
.
decode
(
'utf-8'
).
strip
()
if
reportNonZero
and
ret
.
returncode
!=
0
:
cmd
=
' '
.
join
(
ret
.
args
)
logging
.
warning
(
f'command "
{
cmd
}
" returned non-zero returncode
{
ret
.
returncode
}
: output:
\n
{
ret
.
stdout
}
'
)
logging
.
warning
(
f'command "
{
ret
.
args
}
" returned non-zero returncode
{
ret
.
returncode
}
: output:
\n
{
ret
.
stdout
}
'
)
self
.
cp
=
ret
return
ret
...
...
ci-scripts/cls_containerize.py
View file @
c1f63858
...
...
@@ -38,6 +38,9 @@ import os
import
shutil
import
subprocess
import
time
import
pyshark
import
threading
import
cls_cmd
from
multiprocessing
import
Process
,
Lock
,
SimpleQueue
from
zipfile
import
ZipFile
...
...
@@ -62,7 +65,8 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
sshSession
.
command
(
'mkdir -p '
+
sourcePath
,
'\$'
,
5
)
sshSession
.
command
(
'cd '
+
sourcePath
,
'\$'
,
5
)
# Recent version of git (>2.20?) should handle missing .git extension # without problems
sshSession
.
command
(
f'git clone --filter=blob:none -n -b develop
{
ranRepository
}
.'
,
'\$'
,
60
)
baseBranch
=
re
.
sub
(
'origin/'
,
''
,
ranTargetBranch
)
sshSession
.
command
(
f'git clone --filter=blob:none -n -b
{
baseBranch
}
{
ranRepository
}
.'
,
'\$'
,
60
)
if
sshSession
.
getBefore
().
count
(
'error'
)
>
0
or
sshSession
.
getBefore
().
count
(
'error'
)
>
0
:
sys
.
exit
(
'error during clone'
)
sshSession
.
command
(
'git config user.email "jenkins@openairinterface.org"'
,
'\$'
,
5
)
...
...
@@ -287,6 +291,7 @@ class Containerize():
self
.
deployedContainers
=
[]
self
.
tsharkStarted
=
False
self
.
displayedNewTags
=
False
self
.
pingContName
=
''
self
.
pingOptions
=
''
self
.
pingLossThreshold
=
''
...
...
@@ -345,7 +350,7 @@ class Containerize():
self
.
dockerfileprefix
=
'.rhel8.2'
self
.
cliBuildOptions
=
'--no-cache --disable-compression'
# we always build the ran-build image with all targets
# we always build the ran-build image with all targets
imageNames
=
[(
'ran-build'
,
'build'
)]
result
=
re
.
search
(
'eNB'
,
self
.
imageKind
)
# Creating a tupple with the imageName and the DockerFile prefix pattern on obelix
...
...
@@ -547,14 +552,17 @@ class Containerize():
oldRanCommidID
=
self
.
ranCommitID
oldRanRepository
=
self
.
ranRepository
oldRanAllowMerge
=
self
.
ranAllowMerge
oldRanTargetBranch
=
self
.
ranTargetBranch
self
.
ranCommitID
=
self
.
proxyCommit
self
.
ranRepository
=
'https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy.git'
self
.
ranAllowMerge
=
False
self
.
ranTargetBranch
=
'master'
CreateWorkspace
(
mySSH
,
lSourcePath
,
self
.
ranRepository
,
self
.
ranCommitID
,
self
.
ranTargetBranch
,
self
.
ranAllowMerge
)
# to prevent accidentally overwriting data that might be used later
self
.
ranCommitID
=
oldRanCommidID
self
.
ranRepository
=
oldRanRepository
self
.
ranAllowMerge
=
oldRanAllowMerge
self
.
ranTargetBranch
=
oldRanTargetBranch
# Let's remove any previous run artifacts if still there
mySSH
.
command
(
self
.
cli
+
' image prune --force'
,
'\$'
,
30
)
...
...
@@ -571,6 +579,7 @@ class Containerize():
# Note: at this point, OAI images are flattened, but we cannot do this
# here, as the flatten script is not in the proxy repo
mySSH
.
command
(
self
.
cli
+
' image inspect --format=
\'
Size = {{.Size}} bytes
\'
proxy:'
+
tag
,
'\$'
,
5
)
mySSH
.
command
(
self
.
cli
+
' image prune --force || true'
,
'\$'
,
15
)
if
mySSH
.
getBefore
().
count
(
'o such image'
)
!=
0
:
logging
.
error
(
'
\u001B
[1m Build of L2sim proxy failed
\u001B
[0m'
)
mySSH
.
close
()
...
...
@@ -730,60 +739,42 @@ class Containerize():
sys
.
exit
(
'Insufficient Parameter'
)
if
lIpAddr
!=
'none'
:
logging
.
debug
(
'Pulling images onto server: '
+
lIpAddr
)
mySSH
=
SSH
.
SSHConnection
()
mySSH
.
open
(
lIpAddr
,
lUserName
,
lPassWord
)
myCmd
=
cls_cmd
.
RemoteCmd
(
lIpAddr
)
else
:
logging
.
debug
(
'Pulling images locally'
)
myCmd
=
cls_cmd
.
LocalCmd
()
cmd
=
'docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr'
if
lIpAddr
!=
'none'
:
mySSH
.
command
(
cmd
,
'\$'
,
5
)
response
=
mySSH
.
getBefore
()
else
:
logging
.
info
(
cmd
)
response
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
,
stderr
=
subprocess
.
STDOUT
)
if
re
.
search
(
'Login Succeeded'
,
response
)
is
None
:
response
=
myCmd
.
run
(
cmd
)
if
response
.
returncode
!=
0
:
msg
=
'Could not log into local registry'
logging
.
error
(
msg
)
if
lIpAddr
!=
'none'
:
mySSH
.
close
()
myCmd
.
close
()
HTML
.
CreateHtmlTestRow
(
msg
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
return
False
for
image
in
self
.
imageToPull
:
tagToUse
=
self
.
ImageTagToUse
(
image
)
cmd
=
f'docker pull
{
tagToUse
}
'
if
lIpAddr
!=
'none'
:
mySSH
.
command
(
cmd
,
'\$'
,
120
)
response
=
mySSH
.
getBefore
()
else
:
logging
.
info
(
cmd
)
response
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
if
re
.
search
(
'Status: Downloaded newer image for |Status: Image is up to date for'
,
response
)
is
None
:
response
=
myCmd
.
run
(
cmd
,
timeout
=
120
)
if
response
.
returncode
!=
0
:
logging
.
debug
(
response
)
msg
=
f'Could not pull
{
image
}
from local registry :
{
tagToUse
}
'
logging
.
error
(
msg
)
if
lIpAddr
!=
'none'
:
mySSH
.
close
()
myCmd
.
close
()
HTML
.
CreateHtmlTestRow
(
'msg'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
return
False
cmd
=
'docker logout porcepix.sboai.cs.eurecom.fr'
if
lIpAddr
!=
'none'
:
mySSH
.
command
(
cmd
,
'\$'
,
5
)
response
=
mySSH
.
getBefore
()
else
:
logging
.
info
(
cmd
)
response
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
if
re
.
search
(
'Removing login credentials'
,
response
)
is
None
:
response
=
myCmd
.
run
(
cmd
)
if
response
.
returncode
!=
0
:
msg
=
'Could not log off from local registry'
logging
.
error
(
msg
)
my
SSH
.
close
()
my
Cmd
.
close
()
HTML
.
CreateHtmlTestRow
(
msg
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
return
False
if
lIpAddr
!=
'none'
:
mySSH
.
close
()
myCmd
.
close
()
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
return
True
...
...
@@ -810,22 +801,17 @@ class Containerize():
sys
.
exit
(
'Insufficient Parameter'
)
if
lIpAddr
!=
'none'
:
logging
.
debug
(
'Removing test images from server: '
+
lIpAddr
)
mySSH
=
SSH
.
SSHConnection
()
mySSH
.
open
(
lIpAddr
,
lUserName
,
lPassWord
)
myCmd
=
cls_cmd
.
RemoteCmd
(
lIpAddr
)
else
:
logging
.
debug
(
'Removing test images locally'
)
myCmd
=
cls_cmd
.
LocalCmd
()
imageNames
=
[
'oai-enb'
,
'oai-gnb'
,
'oai-lte-ue'
,
'oai-nr-ue'
,
'oai-lte-ru'
,
'oai-nr-cuup'
]
for
image
in
imageNames
:
cmd
=
f'docker rmi
{
self
.
ImageTagToUse
(
image
)
}
|| true'
if
lIpAddr
!=
'none'
:
mySSH
.
command
(
cmd
,
'\$'
,
5
)
else
:
logging
.
info
(
cmd
)
subprocess
.
run
(
cmd
,
shell
=
True
,
stdout
=
subprocess
.
DEVNULL
,
stderr
=
subprocess
.
DEVNULL
)
cmd
=
f'docker rmi
{
self
.
ImageTagToUse
(
image
)
}
'
myCmd
.
run
(
cmd
,
reportNonZero
=
False
)
if
lIpAddr
!=
'none'
:
mySSH
.
close
()
myCmd
.
close
()
HTML
.
CreateHtmlTestRow
(
'N/A'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
return
True
...
...
@@ -922,7 +908,7 @@ class Containerize():
if
healthyNb
==
1
:
cnt
=
0
while
(
cnt
<
20
):
mySSH
.
command
(
'docker logs '
+
containerName
+
' | egrep --text --color=never -i "wait|sync|Starting"'
,
'\$'
,
30
)
mySSH
.
command
(
'docker logs '
+
containerName
+
' | egrep --text --color=never -i "wait|sync|Starting"'
,
'\$'
,
30
)
result
=
re
.
search
(
'got sync|Starting F1AP at CU'
,
mySSH
.
getBefore
())
if
result
is
None
:
time
.
sleep
(
6
)
...
...
@@ -1048,54 +1034,58 @@ class Containerize():
def
DeployGenObject
(
self
,
HTML
,
RAN
,
UE
):
self
.
exitStatus
=
0
logging
.
debug
(
'
\u001B
[1m Checking Services to deploy
\u001B
[0m'
)
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker-compose config --services'
logging
.
info
(
cmd
)
try
:
listServices
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
universal_newlines
=
True
)
except
Exception
as
e
:
# Implicitly we are running locally
myCmd
=
cls_cmd
.
LocalCmd
(
d
=
self
.
yamlPath
[
0
])
cmd
=
'docker-compose config --services'
listServices
=
myCmd
.
run
(
cmd
)
if
listServices
.
returncode
!=
0
:
myCmd
.
close
()
self
.
exitStatus
=
1
HTML
.
CreateHtmlTestRow
(
'SVC not Found'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
return
for
reqSvc
in
self
.
services
[
0
].
split
(
' '
):
res
=
re
.
search
(
reqSvc
,
listServices
)
res
=
re
.
search
(
reqSvc
,
listServices
.
stdout
)
if
res
is
None
:
logging
.
error
(
reqSvc
+
' not found in specified docker-compose'
)
self
.
exitStatus
=
1
if
(
self
.
exitStatus
==
1
):
myCmd
.
close
()
HTML
.
CreateHtmlTestRow
(
'SVC not Found'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
return
cmd
=
'c
d '
+
self
.
yamlPath
[
0
]
+
' && c
p docker-compose.y*ml docker-compose-ci.yml'
subprocess
.
run
(
cmd
,
shell
=
True
)
cmd
=
'cp docker-compose.y*ml docker-compose-ci.yml'
myCmd
.
run
(
cmd
,
silent
=
self
.
displayedNewTags
)
imageNames
=
[
'oai-enb'
,
'oai-gnb'
,
'oai-lte-ue'
,
'oai-nr-ue'
,
'oai-lte-ru'
,
'oai-nr-cuup'
]
for
image
in
imageNames
:
tagToUse
=
self
.
ImageTagToUse
(
image
)
cmd
=
f'cd
{
self
.
yamlPath
[
0
]
}
&& sed -i -e "s@
{
image
}
:develop@
{
tagToUse
}
@" docker-compose-ci.yml'
logging
.
debug
(
cmd
)
subprocess
.
run
(
cmd
,
shell
=
True
)
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker-compose -f docker-compose-ci.yml up -d '
+
self
.
services
[
0
]
logging
.
info
(
cmd
)
try
:
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
except
Exception
as
e
:
cmd
=
f'sed -i -e "s@oaisoftwarealliance/
{
image
}
:develop@
{
tagToUse
}
@" docker-compose-ci.yml'
myCmd
.
run
(
cmd
,
silent
=
self
.
displayedNewTags
)
self
.
displayedNewTags
=
True
cmd
=
f'docker-compose -f docker-compose-ci.yml up -d
{
self
.
services
[
0
]
}
'
deployStatus
=
myCmd
.
run
(
cmd
,
timeout
=
100
)
if
deployStatus
.
returncode
!=
0
:
myCmd
.
close
()
self
.
exitStatus
=
1
logging
.
error
(
'Could not deploy'
)
HTML
.
CreateHtmlTestRow
(
'Could not deploy'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
return
logging
.
debug
(
'
\u001B
[1m Checking if all deployed healthy
\u001B
[0m'
)
cmd
=
'
cd '
+
self
.
yamlPath
[
0
]
+
' &&
docker-compose -f docker-compose-ci.yml ps -a'
cmd
=
'docker-compose -f docker-compose-ci.yml ps -a'
count
=
0
healthy
=
0
restarting
=
0
newContainers
=
[]
while
(
count
<
10
):
count
+=
1
containerStatus
=
[]
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
deployStatus
=
myCmd
.
run
(
cmd
,
30
,
silent
=
True
)
healthy
=
0
for
state
in
deployStatus
.
split
(
'
\n
'
):
res
=
re
.
search
(
'Name|----------'
,
state
)
restarting
=
0
for
state
in
deployStatus
.
stdout
.
split
(
'
\n
'
):
state
=
state
.
strip
()
res
=
re
.
search
(
'Name|NAME|----------'
,
state
)
if
res
is
not
None
:
continue
if
len
(
state
)
==
0
:
...
...
@@ -1110,23 +1100,32 @@ class Containerize():
if
not
found
:
newContainers
.
append
(
cName
)
self
.
deployedContainers
.
append
(
cName
)
if
re
.
search
(
'
Up
\(healthy\)'
,
state
)
is
not
None
:
if
re
.
search
(
'\(healthy\)'
,
state
)
is
not
None
:
healthy
+=
1
if
re
.
search
(
'rfsim4g-db-init.*Exit 0'
,
state
)
is
not
None
:
subprocess
.
check_output
(
'docker rm -f rfsim4g-db-init || true'
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
containerStatus
.
append
(
state
)
if
healthy
==
self
.
nb_healthy
[
0
]:
if
re
.
search
(
'rfsim4g-db-init.*Exit 0'
,
state
)
is
not
None
or
re
.
search
(
'rfsim4g-db-init.*Exited \(0\)'
,
state
)
is
not
None
:
myCmd
.
run
(
'docker rm -f rfsim4g-db-init'
,
timeout
=
30
,
silent
=
True
,
reportNonZero
=
False
)
if
re
.
search
(
'l2sim4g-db-init.*Exit 0'
,
state
)
is
not
None
or
re
.
search
(
'l2sim4g-db-init.*Exited \(0\)'
,
state
)
is
not
None
:
myCmd
.
run
(
'docker rm -f l2sim4g-db-init'
,
timeout
=
30
,
silent
=
True
,
reportNonZero
=
False
)
if
re
.
search
(
'Restarting'
,
state
)
is
None
:
containerStatus
.
append
(
state
)
else
:
restarting
+=
1
if
healthy
==
self
.
nb_healthy
[
0
]
and
restarting
==
0
:
count
=
100
else
:
time
.
sleep
(
10
)
imagesInfo
=
''
for
newCont
in
newContainers
:
if
newCont
==
'rfsim4g-db-init'
:
continue
cmd
=
'docker inspect -f "{{.Config.Image}}" '
+
newCont
image
Name
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
imageName
=
str
(
image
Name
).
strip
()
image
Inspect
=
myCmd
.
run
(
cmd
,
timeout
=
30
,
silent
=
True
)
imageName
=
str
(
image
Inspect
.
stdout
).
strip
()
cmd
=
'docker image inspect --format "{{.RepoTags}}
\t
{{.Size}} bytes
\t
{{.Created}}
\t
{{.Id}}" '
+
imageName
imagesInfo
+=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
imageInspect
=
myCmd
.
run
(
cmd
,
30
,
silent
=
True
)
imagesInfo
+=
imageInspect
.
stdout
.
strip
()
myCmd
.
close
()
html_queue
=
SimpleQueue
()
html_cell
=
'<pre style="background-color:white">
\n
'
...
...
@@ -1158,48 +1157,71 @@ class Containerize():
self
.
UndeployGenObject
(
HTML
,
RAN
,
UE
)
self
.
exitStatus
=
1
def
CaptureOnDockerNetworks
(
self
):
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"'
networkNames
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
# pyshark livecapture launches 2 processes:
# * One using dumpcap -i lIfs -w - (ie redirecting the packets to STDOUT)
# * One using tshark -i - -w loFile (ie capturing from STDIN from previous process)
# but in fact the packets are read by the following loop before being in fact
# really written to loFile.
# So it is mandatory to keep the loop
def
LaunchPySharkCapture
(
self
,
lIfs
,
lFilter
,
loFile
):
capture
=
pyshark
.
LiveCapture
(
interface
=
lIfs
,
bpf_filter
=
lFilter
,
output_file
=
loFile
,
debug
=
False
)
for
packet
in
capture
.
sniff_continuously
():
pass
def
CaptureOnDockerNetworks
(
self
):
myCmd
=
cls_cmd
.
LocalCmd
(
d
=
self
.
yamlPath
[
0
])
cmd
=
'docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"'
networkNames
=
myCmd
.
run
(
cmd
,
silent
=
True
)
myCmd
.
close
()
# Allow only: control plane RAN (SCTP), HTTP of control in CN (port 80), PFCP traffic (port 8805), MySQL (port 3306)
cmd
=
'sudo nohup tshark -f "sctp or port 80 or port 8805 or icmp or port 3306"'
for
name
in
networkNames
.
split
(
'
\n
'
):
capture_filter
=
'sctp or port 80 or port 8805 or icmp or port 3306'
interfaces
=
[]
iInterfaces
=
''
for
name
in
networkNames
.
stdout
.
split
(
'
\n
'
):
if
re
.
search
(
'rfsim'
,
name
)
is
not
None
or
re
.
search
(
'l2sim'
,
name
)
is
not
None
:
cmd
+=
' -i '
+
name
cmd
+=
' -w /tmp/capture_
'
interfaces
.
append
(
name
)
iInterfaces
+=
f'-i
{
name
}
'
ymlPath
=
self
.
yamlPath
[
0
].
split
(
'/'
)
cmd
+=
ymlPath
[
1
]
+
'.pcap > /tmp/tshark.log 2>&1 &'
logging
.
info
(
cmd
)
networkNames
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
output_file
=
f'/tmp/capture_
{
ymlPath
[
1
]
}
.pcap'
self
.
tsharkStarted
=
True
# On old systems (ubuntu 18), pyshark live-capture is buggy.
# Going back to old method
if
sys
.
version_info
<
(
3
,
7
):
cmd
=
f'nohup tshark -f "
{
capture_filter
}
"
{
iInterfaces
}
-w
{
output_file
}
> /tmp/tshark.log 2>&1 &'
myCmd
=
cls_cmd
.
LocalCmd
()
myCmd
.
run
(
cmd
,
timeout
=
5
,
reportNonZero
=
False
)
myCmd
.
close
()
return
x
=
threading
.
Thread
(
target
=
self
.
LaunchPySharkCapture
,
args
=
(
interfaces
,
capture_filter
,
output_file
,))
x
.
daemon
=
True
x
.
start
()
def
UndeployGenObject
(
self
,
HTML
,
RAN
,
UE
):
self
.
exitStatus
=
0
# Implicitly we are running locally
ymlPath
=
self
.
yamlPath
[
0
].
split
(
'/'
)
logPath
=
'../cmake_targets/log/'
+
ymlPath
[
1
]
myCmd
=
cls_cmd
.
LocalCmd
(
d
=
self
.
yamlPath
[
0
])
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && cp docker-compose.y*ml docker-compose-ci.yml'
logging
.
info
(
cmd
)
subprocess
.
run
(
cmd
,
shell
=
True
)
cmd
=
'cp docker-compose.y*ml docker-compose-ci.yml'
myCmd
.
run
(
cmd
,
silent
=
self
.
displayedNewTags
)
imageNames
=
[
'oai-enb'
,
'oai-gnb'
,
'oai-lte-ue'
,
'oai-nr-ue'
,
'oai-lte-ru'
,
'oai-nr-cuup'
]
for
image
in
imageNames
:
tagToUse
=
self
.
ImageTagToUse
(
image
)
cmd
=
f'cd
{
self
.
yamlPath
[
0
]
}
&& sed -i -e "s@
{
image
}
:develop@
{
tagToUse
}
@" docker-compose-ci.yml'
subprocess
.
run
(
cmd
,
shell
=
True
)
cmd
=
f'sed -i -e "s@oaisoftwarealliance/
{
image
}
:develop@
{
tagToUse
}
@" docker-compose-ci.yml'
myCmd
.
run
(
cmd
,
silent
=
self
.
displayedNewTags
)
self
.
displayedNewTags
=
True
# check which containers are running for log recovery later
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker-compose -f docker-compose-ci.yml ps --all'
logging
.
info
(
cmd
)
deployStatusLogs
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
cmd
=
'docker-compose -f docker-compose-ci.yml ps --all'
deployStatusLogs
=
myCmd
.
run
(
cmd
,
timeout
=
30
)
# Stop the containers to shut down objects
logging
.
debug
(
'
\u001B
[1m Stopping containers
\u001B
[0m'
)
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker-compose -f docker-compose-ci.yml stop -t3'
logging
.
info
(
cmd
)
try
:
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
except
Exception
as
e
:
cmd
=
'docker-compose -f docker-compose-ci.yml stop -t3'
deployStatus
=
myCmd
.
run
(
cmd
,
timeout
=
100
)
if
deployStatus
.
returncode
!=
0
:
myCmd
.
close
()
self
.
exitStatus
=
1
logging
.
error
(
'Could not stop containers'
)
HTML
.
CreateHtmlTestRow
(
'Could not stop'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
...
...
@@ -1207,8 +1229,12 @@ class Containerize():
return
anyLogs
=
False
for
state
in
deployStatusLogs
.
split
(
'
\n
'
):
res
=
re
.
search
(
'Name|----------'
,
state
)
logging
.
debug
(
'Working dir is now . (ie ci-scripts)'
)
myCmd2
=
cls_cmd
.
LocalCmd
()
myCmd2
.
run
(
f'mkdir -p
{
logPath
}
'
)
myCmd2
.
cd
(
logPath
)
for
state
in
deployStatusLogs
.
stdout
.
split
(
'
\n
'
):
res
=
re
.
search
(
'Name|NAME|----------'
,
state
)
if
res
is
not
None
:
continue
if
len
(
state
)
==
0
:
...
...
@@ -1217,36 +1243,26 @@ class Containerize():
if
res
is
not
None
:
anyLogs
=
True
cName
=
res
.
group
(
'container_name'
)
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker logs '
+
cName
+
' > '
+
cName
+
'.log 2>&1'
logging
.
info
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
cmd
=
f'docker logs
{
cName
}
>
{
cName
}
.log 2>&1'
myCmd2
.
run
(
cmd
,
timeout
=
30
,
reportNonZero
=
False
)
if
re
.
search
(
'magma-mme'
,
cName
)
is
not
None
:
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker cp -L '
+
cName
+
':/var/log/mme.log '
+
cName
+
'-full.log'
logging
.
info
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
cmd
=
f'docker cp -L
{
cName
}
:/var/log/mme.log
{
cName
}
-full.log'
myCmd2
.
run
(
cmd
,
timeout
=
30
,
reportNonZero
=
False
)
fullStatus
=
True
if
anyLogs
:
cmd
=
'mkdir -p '
+
logPath
+
' && cp '
+
self
.
yamlPath
[
0
]
+
'/*.log '
+
logPath
logging
.
info
(
cmd
)
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
# Analyzing log file(s)!
listOfPossibleRanContainers
=
[
'enb'
,
'gnb'
,
'cu'
,
'du'
]
for
container
in
listOfPossibleRanContainers
:
filenames
=
self
.
yamlPath
[
0
]
+
'/*-oai-'
+
container
+
'.log'
cmd
=
'ls '
+
filenames
containerStatus
=
True
try
:
lsStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
filenames
=
str
(
lsStatus
).
strip
()
except
:
containerStatus
=
False
if
not
containerStatus
:
filenames
=
'./*-oai-'
+
container
+
'.log'
cmd
=
f'ls
{
filenames
}
'
lsStatus
=
myCmd2
.
run
(
cmd
,
silent
=
True
,
reportNonZero
=
False
)
if
lsStatus
.
returncode
!=
0
:
continue
filenames
=
str
(
lsStatus
.
stdout
).
strip
()
for
filename
in
filenames
.
split
(
'
\n
'
):
logging
.
debug
(
'
\u001B
[1m Analyzing xNB logfile '
+
filename
+
'
\u001B
[0m'
)
logStatus
=
RAN
.
AnalyzeLogFile_eNB
(
f
ilename
,
HTML
,
self
.
ran_checkers
)
logStatus
=
RAN
.
AnalyzeLogFile_eNB
(
f
'
{
logPath
}
/
{
filename
}
'
,
HTML
,
self
.
ran_checkers
)
if
(
logStatus
<
0
):
fullStatus
=
False
self
.
exitStatus
=
1
...
...
@@ -1256,49 +1272,42 @@ class Containerize():
listOfPossibleUeContainers
=
[
'lte-ue*'
,
'nr-ue*'
]
for
container
in
listOfPossibleUeContainers
:
filenames
=
self
.
yamlPath
[
0
]
+
'/*-oai-'
+
container
+
'.log'
cmd
=
'ls '
+
filenames
containerStatus
=
True
try
:
lsStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
filenames
=
str
(
lsStatus
).
strip
()
except
:
containerStatus
=
False
if
not
containerStatus
:
filenames
=
'./*-oai-'
+
container
+
'.log'
cmd
=
f'ls
{
filenames
}
'
lsStatus
=
myCmd2
.
run
(
cmd
,
silent
=
True
,
reportNonZero
=
False
)
if
lsStatus
.
returncode
!=
0
:
continue
filenames
=
str
(
lsStatus
.
stdout
).
strip
()
for
filename
in
filenames
.
split
(
'
\n
'
):
logging
.
debug
(
'
\u001B
[1m Analyzing UE logfile '
+
filename
+
'
\u001B
[0m'
)
logStatus
=
UE
.
AnalyzeLogFile_UE
(
f
ilename
,
HTML
,
RAN
)
logStatus
=
UE
.
AnalyzeLogFile_UE
(
f
'
{
logPath
}
/
{
filename
}
'
,
HTML
,
RAN
)
if
(
logStatus
<
0
):
fullStatus
=
False
HTML
.
CreateHtmlTestRow
(
'UE log Analysis'
,
'KO'
,
logStatus
)
else
:
HTML
.
CreateHtmlTestRow
(
'UE log Analysis'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
cmd
=
'rm '
+
self
.
yamlPath
[
0
]
+
'/*.log'
logging
.
info
(
cmd
)
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
if
self
.
tsharkStarted
:
self
.
tsharkStarted
=
True
cmd
=
'killall tshark'
myCmd2
.
run
(
cmd
,
reportNonZero
=
False
)
cmd
=
'killall dumpcap'
myCmd2
.
run
(
cmd
,
reportNonZero
=
False
)
time
.
sleep
(
5
)
ymlPath
=
self
.
yamlPath
[
0
].
split
(
'/'
)
cmd
=
'sudo chmod 666 /tmp/capture_'
+
ymlPath
[
1
]
+
'.pcap'
logging
.
info
(
cmd
)
copyStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
cmd
=
'cp /tmp/capture_'
+
ymlPath
[
1
]
+
'.pcap '
+
logPath
logging
.
info
(
cmd
)
copyStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
cmd
=
'sudo rm /tmp/capture_'
+
ymlPath
[
1
]
+
'.pcap'
logging
.
info
(
cmd
)
copyStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
# The working dir is still logPath
cmd
=
f'mv /tmp/capture_
{
ymlPath
[
1
]
}
.pcap .'
myCmd2
.
run
(
cmd
,
timeout
=
100
,
reportNonZero
=
False
)
self
.
tsharkStarted
=
False
myCmd2
.
close
()
logging
.
debug
(
'
\u001B
[1m Undeploying
\u001B
[0m'
)
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker-compose -f docker-compose-ci.yml down'
logging
.
info
(
cmd
)
try
:
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
except
Exception
as
e
:
logging
.
debug
(
f'Working dir is back
{
self
.
yamlPath
[
0
]
}
'
)
cmd
=
'docker-compose -f docker-compose-ci.yml down'
deployStatus
=
myCmd
.
run
(
cmd
,
timeout
=
100
)
if
deployStatus
.
returncode
!=
0
:
myCmd
.
close
()
self
.
exitStatus
=
1
logging
.
error
(
'Could not undeploy'
)
HTML
.
CreateHtmlTestRow
(
'Could not undeploy'
,
'KO'
,
CONST
.
ALL_PROCESSES_OK
)
...
...
@@ -1307,9 +1316,9 @@ class Containerize():
self
.
deployedContainers
=
[]
# Cleaning any created tmp volume
cmd
=
'docker volume prune --force
|| true
'
logging
.
info
(
cmd
)
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
cmd
=
'docker volume prune --force'
deployStatus
=
myCmd
.
run
(
cmd
,
timeout
=
100
,
reportNonZero
=
False
)
myCmd
.
close
(
)
if
fullStatus
:
HTML
.
CreateHtmlTestRow
(
'n/a'
,
'OK'
,
CONST
.
ALL_PROCESSES_OK
)
...
...
@@ -1324,13 +1333,13 @@ class Containerize():
logPath
=
'../cmake_targets/log/'
+
ymlPath
[
1
]
# if the containers are running, recover the logs!
cmd
=
'cd '
+
self
.
yamlPath
[
0
]
+
' && docker-compose -f docker-compose-ci.yml ps --all'
logging
.
info
(
cmd
)
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
myCmd
=
cls_cmd
.
LocalCmd
(
d
=
self
.
yamlPath
[
0
])
cmd
=
'docker-compose -f docker-compose-ci.yml ps --all'
deployStatus
=
myCmd
.
run
(
cmd
,
timeout
=
30
)
cmd
=
'docker stats --no-stream --format "table {{.Container}}
\t
{{.CPUPerc}}
\t
{{.MemUsage}}
\t
{{.MemPerc}}" '
anyLogs
=
False
for
state
in
deployStatus
.
split
(
'
\n
'
):
res
=
re
.
search
(
'Name|----------'
,
state
)
for
state
in
deployStatus
.
s
tdout
.
s
plit
(
'
\n
'
):
res
=
re
.
search
(
'Name|
NAME|
----------'
,
state
)
if
res
is
not
None
:
continue
if
len
(
state
)
==
0
:
...
...
@@ -1341,11 +1350,11 @@ class Containerize():
cmd
+=
res
.
group
(
'container_name'
)
+
' '
message
=
''
if
anyLogs
:
logging
.
info
(
cmd
)
stats
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
for
statLine
in
stats
.
split
(
'
\n
'
):
stats
=
myCmd
.
run
(
cmd
,
timeout
=
30
)
for
statLine
in
stats
.
stdout
.
split
(
'
\n
'
):
logging
.
debug
(
statLine
)
message
+=
statLine
+
'
\n
'
myCmd
.
close
()
html_queue
=
SimpleQueue
()
html_cell
=
'<pre style="background-color:white">
\n
'
+
message
+
'</pre>'
...
...
@@ -1353,18 +1362,18 @@ class Containerize():
HTML
.
CreateHtmlTestRowQueue
(
self
.
pingOptions
,
'OK'
,
1
,
html_queue
)
def
PingFromContainer
(
self
,
HTML
,
RAN
,
UE
):
myCmd
=
cls_cmd
.
LocalCmd
()
self
.
exitStatus
=
0
ymlPath
=
self
.
yamlPath
[
0
].
split
(
'/'
)
logPath
=
'../cmake_targets/log/'
+
ymlPath
[
1
]
cmd
=
'mkdir -p '
+
logPath
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
cmd
=
f'mkdir -p
{
logPath
}
'
myCmd
.
run
(
cmd
,
silent
=
True
)
cmd
=
'docker exec '
+
self
.
pingContName
+
' /bin/bash -c "ping '
+
self
.
pingOptions
+
'" 2>&1 | tee '
+
logPath
+
'/ping_'
+
HTML
.
testCase_id
+
'.log || true'
cmd
=
f'docker exec
{
self
.
pingContName
}
/bin/bash -c "ping
{
self
.
pingOptions
}
" 2>&1 | tee
{
logPath
}
/ping_
{
HTML
.
testCase_id
}
.log'
pingStatus
=
myCmd
.
run
(
cmd
,
timeout
=
100
,
reportNonZero
=
False
)
myCmd
.
close
()
logging
.
info
(
cmd
)
deployStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
result
=
re
.
search
(
', (?P<packetloss>[0-9\.]+)% packet loss, time [0-9\.]+ms'
,
deployStatus
)
result
=
re
.
search
(
', (?P<packetloss>[0-9\.]+)% packet loss, time [0-9\.]+ms'
,
pingStatus
.
stdout
)
if
result
is
None
:
self
.
PingExit
(
HTML
,
RAN
,
UE
,
False
,
'Packet Loss Not Found'
)
return
...
...
@@ -1374,7 +1383,7 @@ class Containerize():
self
.
PingExit
(
HTML
,
RAN
,
UE
,
False
,
'Packet Loss is 100%'
)
return
result
=
re
.
search
(
'rtt min\/avg\/max\/mdev = (?P<rtt_min>[0-9\.]+)\/(?P<rtt_avg>[0-9\.]+)\/(?P<rtt_max>[0-9\.]+)\/[0-9\.]+ ms'
,
deployStatus
)
result
=
re
.
search
(
'rtt min\/avg\/max\/mdev = (?P<rtt_min>[0-9\.]+)\/(?P<rtt_avg>[0-9\.]+)\/(?P<rtt_max>[0-9\.]+)\/[0-9\.]+ ms'
,
pingStatus
.
stdout
)
if
result
is
None
:
self
.
PingExit
(
HTML
,
RAN
,
UE
,
False
,
'Ping RTT_Min RTT_Avg RTT_Max Not Found!'
)
return
...
...
@@ -1427,39 +1436,37 @@ class Containerize():
self
.
exitStatus
=
1
def
IperfFromContainer
(
self
,
HTML
,
RAN
,
UE
):
myCmd
=
cls_cmd
.
LocalCmd
()
self
.
exitStatus
=
0
ymlPath
=
self
.
yamlPath
[
0
].
split
(
'/'
)
logPath
=
'../cmake_targets/log/'
+
ymlPath
[
1
]
cmd
=
'mkdir -p '
+
logPath
logStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
cmd
=
f'mkdir -p
{
logPath
}
'
myCmd
.
run
(
cmd
,
silent
=
True
)
# Start the server process
cmd
=
f'docker exec -d
{
self
.
svrContName
}
/bin/bash -c "nohup iperf
{
self
.
svrOptions
}
> /tmp/iperf_server.log 2>&1"'
logging
.
info
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
myCmd
.
run
(
cmd
)
time
.
sleep
(
3
)
# Start the client process
cmd
=
f'docker exec
{
self
.
cliContName
}
/bin/bash -c "iperf
{
self
.
cliOptions
}
" 2>&1 | tee
{
logPath
}
/iperf_client_
{
HTML
.
testCase_id
}
.log'
logging
.
info
(
cmd
)
clientStatus
=
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
100
)
clientStatus
=
myCmd
.
run
(
cmd
,
timeout
=
100
)
# Stop the server process
cmd
=
f'docker exec
{
self
.
svrContName
}
/bin/bash -c "pkill iperf"'
logging
.
info
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
10
)
myCmd
.
run
(
cmd
)
time
.
sleep
(
3
)
serverStatusFilename
=
f'
{
logPath
}
/iperf_server_
{
HTML
.
testCase_id
}
.log'
cmd
=
f'docker cp
{
self
.
svrContName
}
:/tmp/iperf_server.log
{
serverStatusFilename
}
'
logging
.
info
(
cmd
)
subprocess
.
check_output
(
cmd
,
shell
=
True
,
stderr
=
subprocess
.
STDOUT
,
universal_newlines
=
True
,
timeout
=
30
)
myCmd
.
run
(
cmd
,
timeout
=
60
)
myCmd
.
close
(
)
# clientStatus was retrieved above. The serverStatus was
# written in the background, then copied to the local machine
with
open
(
serverStatusFilename
,
'r'
)
as
f
:
serverStatus
=
f
.
read
()
(
iperfStatus
,
msg
)
=
AnalyzeIperf
(
self
.
cliOptions
,
clientStatus
,
serverStatus
)
(
iperfStatus
,
msg
)
=
AnalyzeIperf
(
self
.
cliOptions
,
clientStatus
.
stdout
,
serverStatus
)
if
iperfStatus
:
logging
.
info
(
'
\u001B
[1m Iperf Test PASS
\u001B
[0m'
)
else
:
...
...
@@ -1595,4 +1602,3 @@ class Containerize():
if
result
is
None
:
mySSH
.
command
(
'echo '
+
password
+
' | sudo -S iptables -P FORWARD ACCEPT'
,
'\$'
,
10
)
mySSH
.
close
()
ci-scripts/epc.py
View file @
c1f63858
...
...
@@ -43,7 +43,7 @@ from multiprocessing import Process, Lock, SimpleQueue
#-----------------------------------------------------------
# OAI Testing modules
#-----------------------------------------------------------
import
sshconnection
as
SSH
import
sshconnection
as
SSH
import
helpreadme
as
HELP
import
constants
as
CONST
...
...
@@ -66,8 +66,8 @@ class EPCManagement():
self
.
mmeConfFile
=
'mme.conf'
self
.
yamlPath
=
''
self
.
isMagmaUsed
=
False
self
.
cfgDeploy
=
'--type start-mini --
fqdn yes --scenario 1 --capture /tmp/oai-cn5g-v1.3.pcap'
#from xml, 'mini' is default normal for docker-network.py
self
.
cfgUnDeploy
=
'--type stop-mini --
fqdn yes --scenario 1'
#from xml, 'mini' is default normal for docker-network.py
self
.
cfgDeploy
=
'--type start-mini --
scenario 1 --capture /tmp/oai-cn5g-v1.5.pcap'
#from xml, 'mini' is default normal for docker-network.py
self
.
cfgUnDeploy
=
'--type stop-mini --
scenario 1'
#from xml, 'mini' is default normal for docker-network.py
#-----------------------------------------------------------
...
...
@@ -253,18 +253,18 @@ class EPCManagement():
logging
.
debug
(
'Starting OAI CN5G'
)
mySSH
.
command
(
'if [ -d '
+
self
.
SourceCodePath
+
'/scripts ]; then echo '
+
self
.
Password
+
' | sudo -S rm -Rf '
+
self
.
SourceCodePath
+
'/scripts ; fi'
,
'\$'
,
5
)
mySSH
.
command
(
'mkdir -p '
+
self
.
SourceCodePath
+
'/scripts'
,
'\$'
,
5
)
mySSH
.
command
(
'cd /opt/oai-cn5g-fed-v1.
4
/docker-compose'
,
'\$'
,
5
)
mySSH
.
command
(
'cd /opt/oai-cn5g-fed-v1.
5
/docker-compose'
,
'\$'
,
5
)
mySSH
.
command
(
'python3 ./core-network.py '
+
self
.
cfgDeploy
,
'\$'
,
60
)
if
re
.
search
(
'start-mini-as-ue'
,
self
.
cfgDeploy
):
dFile
=
'docker-compose-mini-nrf-asue.yaml'
else
:
dFile
=
'docker-compose-mini-nrf.yaml'
mySSH
.
command
(
'docker-compose -
p 5gcn -
f '
+
dFile
+
' ps -a'
,
'\$'
,
60
)
mySSH
.
command
(
'docker-compose -f '
+
dFile
+
' ps -a'
,
'\$'
,
60
)
if
mySSH
.
getBefore
().
count
(
'Up (healthy)'
)
!=
6
:
logging
.
error
(
'Not all container healthy'
)
else
:
logging
.
debug
(
'OK --> all containers are healthy'
)
mySSH
.
command
(
'docker-compose -
p 5gcn -
f '
+
dFile
+
' config | grep --colour=never image'
,
'\$'
,
10
)
mySSH
.
command
(
'docker-compose -f '
+
dFile
+
' config | grep --colour=never image'
,
'\$'
,
10
)
listOfImages
=
mySSH
.
getBefore
()
for
imageLine
in
listOfImages
.
split
(
'
\\
r
\\
n'
):
res1
=
re
.
search
(
'image: (?P<name>[a-zA-Z0-9\-/]+):(?P<tag>[a-zA-Z0-9\-]+)'
,
str
(
imageLine
))
...
...
@@ -537,11 +537,11 @@ class EPCManagement():
mySSH
.
command
(
'docker logs '
+
c
+
' > '
+
self
.
SourceCodePath
+
'/logs/'
+
c
+
'.log'
,
'\$'
,
5
)
logging
.
debug
(
'Terminating OAI CN5G'
)
mySSH
.
command
(
'cd /opt/oai-cn5g-fed-v1.
4
/docker-compose'
,
'\$'
,
5
)
mySSH
.
command
(
'cd /opt/oai-cn5g-fed-v1.
5
/docker-compose'
,
'\$'
,
5
)
mySSH
.
command
(
'python3 ./core-network.py '
+
self
.
cfgUnDeploy
,
'\$'
,
60
)
mySSH
.
command
(
'docker volume prune --force || true'
,
'\$'
,
60
)
time
.
sleep
(
2
)
mySSH
.
command
(
'tshark -r /tmp/oai-cn5g-v1.
3
.pcap | egrep --colour=never "Tracking area update" '
,
'\$'
,
30
)
mySSH
.
command
(
'tshark -r /tmp/oai-cn5g-v1.
5
.pcap | egrep --colour=never "Tracking area update" '
,
'\$'
,
30
)
result
=
re
.
search
(
'Tracking area update request'
,
mySSH
.
getBefore
())
if
result
is
not
None
:
message
=
'UE requested '
+
str
(
mySSH
.
getBefore
().
count
(
'Tracking area update request'
))
+
'Tracking area update request(s)'
...
...
@@ -828,7 +828,7 @@ class EPCManagement():
mySSH
.
command
(
'zip mme.log.zip mme_check_run.*'
,
'\$'
,
60
)
elif
re
.
match
(
'OAICN5G'
,
self
.
Type
,
re
.
IGNORECASE
):
mySSH
.
command
(
'cd '
+
self
.
SourceCodePath
+
'/logs'
,
'\$'
,
5
)
mySSH
.
command
(
'cp -f /tmp/oai-cn5g-v1.
3
.pcap .'
,
'\$'
,
30
)
mySSH
.
command
(
'cp -f /tmp/oai-cn5g-v1.
5
.pcap .'
,
'\$'
,
30
)
mySSH
.
command
(
'zip mme.log.zip oai-amf.log oai-nrf.log oai-cn5g*.pcap'
,
'\$'
,
30
)
mySSH
.
command
(
'mv mme.log.zip '
+
self
.
SourceCodePath
+
'/scripts'
,
'\$'
,
30
)
elif
re
.
match
(
'OAI'
,
self
.
Type
,
re
.
IGNORECASE
)
or
re
.
match
(
'OAI-Rel14-CUPS'
,
self
.
Type
,
re
.
IGNORECASE
):
...
...
ci-scripts/main.py
View file @
c1f63858
...
...
@@ -70,6 +70,7 @@ import subprocess
from
multiprocessing
import
Process
,
Lock
,
SimpleQueue
logging
.
basicConfig
(
level
=
logging
.
DEBUG
,
stream
=
sys
.
stdout
,
format
=
"[%(asctime)s] %(levelname)8s: %(message)s"
)
...
...
ci-scripts/xml_files/sa_cn5g_asue_closure.xml
View file @
c1f63858
...
...
@@ -32,7 +32,7 @@
<testCase
id=
"060000"
>
<class>
Terminate_5GCN
</class>
<desc>
Terminate 5G Core
</desc>
<args>
--type stop-mini-as-ue --
fqdn yes --
scenario 1
</args>
<args>
--type stop-mini-as-ue --scenario 1
</args>
</testCase>
</testCaseList>
ci-scripts/xml_files/sa_cn5g_asue_start.xml
View file @
c1f63858
...
...
@@ -33,7 +33,7 @@
<testCase
id=
"000100"
>
<class>
Initialize_5GCN
</class>
<desc>
Initialize 5G Core
</desc>
<args>
--type start-mini-as-ue --
fqdn yes --scenario 1 --capture /tmp/oai-cn5g-v1.3
.pcap
</args>
<args>
--type start-mini-as-ue --
scenario 1 --capture /tmp/oai-cn5g-v1.5
.pcap
</args>
</testCase>
</testCaseList>
ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml
View file @
c1f63858
...
...
@@ -180,7 +180,7 @@ services:
retries
:
5
oai_enb
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
l2sim4g-oai-enb
network_mode
:
"
host"
...
...
@@ -230,7 +230,7 @@ services:
retries
:
5
oai_ue1
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
l2sim4g-oai-lte-ue1
network_mode
:
"
host"
...
...
@@ -258,7 +258,7 @@ services:
retries
:
5
oai_ue2
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
l2sim4g-oai-lte-ue2
network_mode
:
"
host"
...
...
ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md
View file @
c1f63858
...
...
@@ -54,9 +54,6 @@ $ docker image tag oaisoftwarealliance/oai-spgwc:latest oai-spgwc:latest
$
docker image tag oaisoftwarealliance/oai-hss:latest oai-hss:latest
$
docker image tag oaisoftwarealliance/oai-spgwu-tiny:latest oai-spgwu-tiny:latest
$
docker image tag oaisoftwarealliance/magma-mme:latest magma-mme:latest
$
docker image tag oaisoftwarealliance/oai-enb:develop oai-enb:develop
$
docker image tag oaisoftwarealliance/oai-lte-ue:develop oai-lte-ue:develop
```
```
bash
...
...
ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml
View file @
c1f63858
...
...
@@ -180,7 +180,7 @@ services:
retries
:
5
oai_enb0
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
...
...
@@ -214,7 +214,7 @@ services:
retries
:
5
oai_ue0
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
...
...
ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml
View file @
c1f63858
...
...
@@ -2,7 +2,7 @@ version: '3.8'
services
:
oai_enb0
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
...
...
@@ -36,7 +36,7 @@ services:
retries
:
5
oai_ue0
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
...
...
ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml
View file @
c1f63858
...
...
@@ -180,7 +180,7 @@ services:
retries
:
5
oai_enb0
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
...
...
@@ -214,7 +214,7 @@ services:
retries
:
5
oai_ue0
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
...
...
ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml
View file @
c1f63858
...
...
@@ -180,7 +180,7 @@ services:
retries
:
5
oai_enb0
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
...
...
@@ -214,7 +214,7 @@ services:
retries
:
5
oai_ue0
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
...
...
ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml
View file @
c1f63858
...
...
@@ -2,7 +2,7 @@ version: '3.8'
services
:
oai_enb0
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
...
...
@@ -22,7 +22,7 @@ services:
retries
:
5
oai_ue0
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
...
...
ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml
View file @
c1f63858
...
...
@@ -2,7 +2,7 @@ version: '3.8'
services
:
oai_enb0
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
...
...
@@ -22,7 +22,7 @@ services:
retries
:
5
oai_ue0
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
...
...
ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml
View file @
c1f63858
...
...
@@ -180,7 +180,7 @@ services:
retries
:
5
oai_enb0
:
image
:
oai-enb:develop
image
:
oai
softwarealliance/oai
-enb:develop
privileged
:
true
container_name
:
rfsim4g-oai-enb
networks
:
...
...
@@ -213,7 +213,7 @@ services:
retries
:
5
oai_ue0
:
image
:
oai-lte-ue:develop
image
:
oai
softwarealliance/oai
-lte-ue:develop
privileged
:
true
container_name
:
rfsim4g-oai-lte-ue0
networks
:
...
...
ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,27 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
rfsim5g-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
public_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
./nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
./oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
./mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -36,17 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -62,132 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
./amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
./smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
rfsim5g-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -200,24 +140,16 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
./spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
...
...
@@ -231,7 +163,7 @@ services:
timeout
:
5s
retries
:
5
oai-cu
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-cu
environment
:
...
...
@@ -265,7 +197,7 @@ services:
timeout
:
5s
retries
:
5
oai-du
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-du
environment
:
...
...
@@ -299,7 +231,7 @@ services:
timeout
:
5s
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,27 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
rfsim5g-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
public_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
./nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
./oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
./mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -36,17 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -62,132 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
./amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
./smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
rfsim5g-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -200,24 +140,16 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
./spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
...
...
@@ -231,7 +163,7 @@ services:
timeout
:
5s
retries
:
5
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
...
...
@@ -260,7 +192,7 @@ services:
timeout
:
5s
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_l2sim_tdd/README.md
View file @
c1f63858
...
...
@@ -32,28 +32,22 @@ Password:
Now pull images.
```
bash
$
docker pull mysql:5.7
$
docker pull oaisoftwarealliance/oai-amf:develop
$
docker pull oaisoftwarealliance/oai-nrf:develop
$
docker pull oaisoftwarealliance/oai-smf:develop
$
docker pull oaisoftwarealliance/oai-spgwu-tiny:develop
$
docker pull mysql:8.0
$
docker pull oaisoftwarealliance/oai-amf:v1.5.0
$
docker pull oaisoftwarealliance/oai-nrf:v1.5.0
$
docker pull oaisoftwarealliance/oai-smf:v1.5.0
$
docker pull oaisoftwarealliance/oai-spgwu-tiny:v1.5.0
$
docker pull oaisoftwarealliance/trf-gen-cn5g:latest
$
docker pull oaisoftwarealliance/oai-gnb:develop
$
docker pull oaisoftwarealliance/oai-nr-ue:develop
$
docker pull oaisoftwarealliance/proxy:
latest
$
docker pull oaisoftwarealliance/proxy:
develop
```
And
**re-tag**
them for tutorials' docker-compose file to work.
```
bash
$
docker image tag oaisoftwarealliance/oai-amf:latest oai-amf:august-dev
$
docker image tag oaisoftwarealliance/oai-nrf:latest oai-nrf:august-dev
$
docker image tag oaisoftwarealliance/oai-smf:latest oai-smf:august-dev
$
docker image tag oaisoftwarealliance/oai-spgwu-tiny:latest oai-spgwu-tiny:august-dev
$
docker image tag oaisoftwarealliance/oai-gnb:develop oai-gnb:develop
$
docker image tag oaisoftwarealliance/oai-nr-ue:develop oai-nr-ue:develop
$
docker image tag oaisoftwarealliance/proxy:latest oai-lte-multi-ue-proxy:latest
$
docker image tag oaisoftwarealliance/proxy:develop oai-lte-multi-ue-proxy:latest
```
```
bash
...
...
ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,27 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
l2sim-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
public_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
l2sim-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -36,17 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
l2sim-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -62,132 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
l2sim-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
l2sim-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -200,24 +140,17 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
"
l2sim-oai-ext-dn"
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"
apt update; apt install -y procps iptables iproute2 iperf iputils-ping
;"\
"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
-
oai-spgwu
...
...
@@ -230,7 +163,7 @@ services:
timeout
:
5s
retries
:
5
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
"
l2sim-oai-gnb"
network_mode
:
"
host"
...
...
@@ -278,7 +211,7 @@ services:
retries
:
5
oai-nr-ue0
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
"
l2sim-oai-nr-ue0"
network_mode
:
"
host"
...
...
ci-scripts/yaml_files/5g_rfsimulator/README.md
View file @
c1f63858
...
...
@@ -14,7 +14,7 @@
This page is only valid for an
`Ubuntu18`
host.
**NOTE: this version (202
2-01-27) has been updated for the `v1.3
.0` version of the `OAI 5G CN`.**
**NOTE: this version (202
3-01-27) has been updated for the `v1.5
.0` version of the `OAI 5G CN`.**
**Table of Contents**
...
...
@@ -36,35 +36,24 @@ Password:
Now pull images.
```
bash
$
docker pull mysql:5.7
$
docker pull oaisoftwarealliance/oai-amf:develop
$
docker pull oaisoftwarealliance/oai-nrf:develop
$
docker pull oaisoftwarealliance/oai-smf:develop
$
docker pull oaisoftwarealliance/oai-spgwu-tiny:develop
$
docker pull mysql:8.0
$
docker pull oaisoftwarealliance/oai-amf:v1.5.0
$
docker pull oaisoftwarealliance/oai-nrf:v1.5.0
$
docker pull oaisoftwarealliance/oai-smf:v1.5.0
$
docker pull oaisoftwarealliance/oai-spgwu-tiny:v1.5.0
$
docker pull oaisoftwarealliance/trf-gen-cn5g:latest
$
docker pull oaisoftwarealliance/oai-gnb:develop
$
docker pull oaisoftwarealliance/oai-nr-ue:develop
```
And
**re-tag**
them for tutorials' docker-compose file to work.
```
bash
$
docker image tag oaisoftwarealliance/oai-amf:latest oai-amf:august-dev
$
docker image tag oaisoftwarealliance/oai-nrf:latest oai-nrf:august-dev
$
docker image tag oaisoftwarealliance/oai-smf:latest oai-smf:august-dev
$
docker image tag oaisoftwarealliance/oai-spgwu-tiny:latest oai-spgwu-tiny:august-dev
$
docker image tag oaisoftwarealliance/oai-gnb:develop oai-gnb:develop
$
docker image tag oaisoftwarealliance/oai-nr-ue:develop oai-nr-ue:develop
```
```
bash
$
docker
logout
```
**CAUTION: 202
2/01/27 with the release `v1.3
.0` of the `CN5G`, the previous version was not compatible any-more.**
**CAUTION: 202
3/01/27 with the release `v1.5
.0` of the `CN5G`, the previous version was not compatible any-more.**
**This new version is working only with the `v1.
3
.0` of the `CN5G`.**
**This new version is working only with the `v1.
5
.0` of the `CN5G`.**
# 2. Deploy containers #
...
...
ci-scripts/yaml_files/5g_rfsimulator/amf-healthcheck.sh
deleted
100755 → 0
View file @
70949fd4
#!/bin/bash
set
-eo
pipefail
STATUS
=
0
AMF_PORT_FOR_NGAP
=
38412
AMF_PORT_FOR_N11_HTTP
=
80
AMF_IP_NGAP_INTERFACE
=
$(
ifconfig
$AMF_INTERFACE_NAME_FOR_NGAP
|
grep
inet |
awk
{
'print $2'
}
)
AMF_IP_N11_INTERFACE
=
$(
ifconfig
$AMF_INTERFACE_NAME_FOR_N11
|
grep
inet |
awk
{
'print $2'
}
)
N2_PORT_STATUS
=
$(
netstat
-Snpl
|
grep
-o
"
$AMF_IP_NGAP_INTERFACE
:
$AMF_PORT_FOR_NGAP
"
)
N11_PORT_STATUS
=
$(
netstat
-tnpl
|
grep
-o
"
$AMF_IP_N11_INTERFACE
:
$AMF_PORT_FOR_N11_HTTP
"
)
#Check if entrypoint properly configured the conf file and no parameter is unset (optional)
NB_UNREPLACED_AT
=
`
cat
/openair-amf/etc/
*
.conf |
grep
-v
contact@openairinterface.org |
grep
-c
@
||
true
`
if
[
$NB_UNREPLACED_AT
-ne
0
]
;
then
STATUS
=
1
echo
"Healthcheck error: configuration file is not configured properly"
fi
if
[[
-z
$N2_PORT_STATUS
]]
;
then
STATUS
=
1
echo
"Healthcheck error: N2 SCTP port
$AMF_PORT_FOR_NGAP
is not listening"
fi
if
[[
-z
$N11_PORT_STATUS
]]
;
then
STATUS
=
1
echo
"Healthcheck error: N11/SBI TCP/HTTP port
$AMF_PORT_FOR_N11_HTTP
is not listening"
fi
#host="${MYSQL_SERVER}"
#user="${MYSQL_USER:-root}"
#export MYSQL_PWD="${MYSQL_PASS}"
#args=(
# -h"$host"
# -u"$user"
# --silent
#)
#if ! command -v mysql &> /dev/null; then
# echo "Installing mysql command"
# apt update
# apt-get -y install mysql-client
#else
# if select="$(echo 'SELECT 1' | mysql "${args[@]}")" && [ "$select" = '1' ]; then
# database_check=$(mysql -h$host -u$user -D oai_db --silent -e "SELECT * FROM users;")
# if [[ -z $database_check ]]; then
# echo "Healthcheck error: oai_db not populated"
# STATUS=1
# fi
# STATUS=0
# else
# echo "Healthcheck error: Mysql port inactive"
# STATUS=1
# fi
#fi
exit
$STATUS
ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,27 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
rfsim5g-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
public_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
./nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
./oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
./mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -36,17 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -62,132 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
./amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
./smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
rfsim5g-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -200,24 +140,16 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
./spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
...
...
@@ -231,10 +163,10 @@ services:
timeout
:
5s
retries
:
5
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
environment
:
RFSIMULATOR
:
server
USE_SA_TDD_MONO
:
'
yes'
GNB_NAME
:
gnb-rfsim
...
...
@@ -261,7 +193,7 @@ services:
timeout
:
5s
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
@@ -284,7 +216,7 @@ services:
retries
:
5
oai-nr-ue2
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue2
environment
:
...
...
ci-scripts/yaml_files/5g_rfsimulator/nrf-healthcheck.sh
deleted
100755 → 0
View file @
70949fd4
#!/bin/bash
set
-eo
pipefail
STATUS
=
0
NRF_IP_SBI_INTERFACE
=
$(
ifconfig
$NRF_INTERFACE_NAME_FOR_SBI
|
grep
inet |
awk
{
'print $2'
}
)
NRF_SBI_PORT_STATUS
=
$(
netstat
-tnpl
|
grep
-o
"
$NRF_IP_SBI_INTERFACE
:
$NRF_INTERFACE_PORT_FOR_SBI
"
)
#Check if entrypoint properly configured the conf file and no parameter is unset(optional)
NB_UNREPLACED_AT
=
`
cat
/openair-nrf/etc/
*
.conf |
grep
-v
contact@openairinterface.org |
grep
-c
@
||
true
`
if
[
$NB_UNREPLACED_AT
-ne
0
]
;
then
STATUS
=
1
echo
"Healthcheck error: UNHEALTHY configuration file is not configured properly"
fi
if
[[
-z
$NRF_SBI_PORT_STATUS
]]
;
then
STATUS
=
1
echo
"Healthcheck error: UNHEALTHY SBI TCP/HTTP port
$NRF_INTERFACE_PORT_FOR_SBI
is not listening."
fi
exit
$STATUS
\ No newline at end of file
ci-scripts/yaml_files/5g_rfsimulator/smf-healthcheck.sh
deleted
100755 → 0
View file @
70949fd4
#!/bin/bash
set
-eo
pipefail
STATUS
=
0
SMF_IP_SBI_INTERFACE
=
$(
ifconfig
$SMF_INTERFACE_NAME_FOR_SBI
|
grep
inet |
awk
{
'print $2'
}
)
SMF_SBI_PORT_STATUS
=
$(
netstat
-tnpl
|
grep
-o
"
$SMF_IP_SBI_INTERFACE
:
$SMF_INTERFACE_PORT_FOR_SBI
"
)
#Check if entrypoint properly configured the conf file and no parameter is unset(optional)
#NB_UNREPLACED_AT=`cat /openair-smf/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
#if [ $NB_UNREPLACED_AT -ne 0 ]; then
# STATUS=-1
# echo "Healthcheck error: UNHEALTHY configuration file is not configured properly"
#fi
#
if
[[
-z
$SMF_SBI_PORT_STATUS
]]
;
then
STATUS
=
-1
echo
"Healthcheck error: UNHEALTHY SBI TCP/HTTP port
$SMF_INTERFACE_PORT_FOR_SBI
is not listening."
fi
exit
$STATUS
ci-scripts/yaml_files/5g_rfsimulator/spgwu-healthcheck.sh
deleted
100755 → 0
View file @
70949fd4
#!/bin/bash
set
-eo
pipefail
STATUS
=
0
SGW_PORT_FOR_S1U_S12_S4_UP
=
2152
SGW_PORT_FOR_SX
=
8805
SGW_IP_S1U_INTERFACE
=
$(
ifconfig
$SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP
|
grep
inet |
awk
{
'print $2'
}
)
SGW_IP_SX_INTERFACE
=
$(
ifconfig
$SGW_INTERFACE_NAME_FOR_SX
|
grep
inet |
awk
{
'print $2'
}
)
S1U_S12_S4_UP_PORT_STATUS
=
$(
netstat
-unpl
|
grep
-o
"
$SGW_IP_S1U_INTERFACE
:
$SGW_PORT_FOR_S1U_S12_S4_UP
"
)
SX_PORT_STATUS
=
$(
netstat
-unpl
|
grep
-o
"
$SGW_IP_SX_INTERFACE
:
$SGW_PORT_FOR_SX
"
)
#Check if entrypoint properly configured the conf file and no parameter is unset (optional)
NB_UNREPLACED_AT
=
`
cat
/openair-spgwu/etc/
*
.conf |
grep
-v
contact@openairinterface.org |
grep
-c
@
||
true
`
if
[
$NB_UNREPLACED_AT
-ne
0
]
;
then
STATUS
=
1
echo
"Healthcheck error: UNHEALTHY configuration file is not configured properly"
fi
if
[[
-z
$S1U_S12_S4_UP_PORT_STATUS
]]
;
then
STATUS
=
1
echo
"Healthcheck error: UNHEALTHY S1U port
$SGW_PORT_FOR_S1U_S12_S4_UP
is not listening."
fi
if
[[
-z
$SX_PORT_STATUS
]]
;
then
STATUS
=
1
echo
"Healthcheck error: UNHEALTHY SX port
$SGW_PORT_FOR_SX
is not listening."
fi
exit
$STATUS
\ No newline at end of file
ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,28 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
rfsim5g-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
public_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -37,18 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -64,134 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
rfsim5g-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -204,25 +140,16 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
...
...
@@ -235,9 +162,8 @@ services:
interval
:
10s
timeout
:
5s
retries
:
5
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
...
...
@@ -256,9 +182,8 @@ services:
interval
:
10s
timeout
:
5s
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,28 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
rfsim5g-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
public_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -37,18 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -64,134 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
rfsim5g-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -204,25 +140,16 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
...
...
@@ -235,9 +162,8 @@ services:
interval
:
10s
timeout
:
5s
retries
:
5
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
...
...
@@ -258,7 +184,7 @@ services:
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,28 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
rfsim5g-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
core_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -37,18 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
core_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -64,134 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
core_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
core_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
rfsim5g-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -204,13 +140,6 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
core_net
:
ipv4_address
:
192.168.71.134
...
...
@@ -218,11 +147,10 @@ services:
ipv4_address
:
192.168.73.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.73.134 dev eth0; sleep infinity"
depends_on
:
...
...
@@ -237,7 +165,7 @@ services:
retries
:
5
oai-cucp
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-cucp
environment
:
...
...
@@ -259,7 +187,7 @@ services:
retries
:
5
oai-cuup
:
image
:
oai-nr-cuup:develop
image
:
oai
softwarealliance/oai
-nr-cuup:develop
privileged
:
true
container_name
:
rfsim5g-oai-cuup
environment
:
...
...
@@ -282,7 +210,7 @@ services:
retries
:
5
oai-du
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-du
environment
:
...
...
@@ -301,7 +229,7 @@ services:
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml
View file @
c1f63858
version
:
'
3.8'
services
:
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
...
...
@@ -21,7 +21,7 @@ services:
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml
View file @
c1f63858
version
:
'
3.8'
services
:
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
...
...
@@ -21,7 +21,7 @@ services:
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml
View file @
c1f63858
version
:
'
3.8'
services
:
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
...
...
@@ -21,7 +21,7 @@ services:
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml
View file @
c1f63858
...
...
@@ -2,28 +2,16 @@ version: '3.8'
services
:
oai-nrf
:
container_name
:
"
rfsim5g-oai-nrf"
image
:
oai
-nrf:august-dev
image
:
oai
softwarealliance/oai-nrf:v1.5.0
environment
:
-
NRF_INTERFACE_NAME_FOR_SBI=eth0
-
NRF_INTERFACE_PORT_FOR_SBI=80
-
NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
NRF_API_VERSION=v1
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
TZ=Europe/Paris
networks
:
public_net
:
ipv4_address
:
192.168.71.130
volumes
:
-
../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:
5.7
image
:
mysql:
8.0
volumes
:
-
../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
...
...
@@ -37,18 +25,15 @@ services:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oai
-amf:august-dev
image
:
oai
softwarealliance/oai-amf:v1.5.0
environment
:
-
TZ=Europe/paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
MCC=208
-
MNC=99
-
REGION_ID=128
...
...
@@ -64,134 +49,85 @@ services:
-
PLMN_SUPPORT_MCC=208
-
PLMN_SUPPORT_MNC=99
-
PLMN_SUPPORT_TAC=0x0001
# Only one slice is defined (1, 0xFFFFFF).
-
SST_0=1
-
SD_0=0xffffff
-
SST_1=1
-
SD_1=1
-
AMF_INTERFACE_NAME_FOR_NGAP=eth0
-
AMF_INTERFACE_NAME_FOR_N11=eth0
# One single SMF instance
-
SMF_INSTANCE_ID_0=1
-
SMF_FQDN_0=oai-smf
-
SMF_IPV4_ADDR_0=0.0.0.0
-
SMF_HTTP_VERSION_0=v1
-
SMF_IPV4_ADDR_0=192.168.71.133
-
SELECTED_0=true
-
SMF_INSTANCE_ID_1=2
-
SMF_FQDN_1=oai-smf
-
SMF_IPV4_ADDR_1=0.0.0.0
-
SMF_HTTP_VERSION_1=v1
-
SELECTED_1=false
# mysql definition in AMF is mandatory in mini deployment.
-
MYSQL_SERVER=192.168.71.131
-
MYSQL_USER=root
-
MYSQL_PASS=linux
-
MYSQL_DB=oai_db
-
OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1
# NF registration
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_
PORT=80
-
NRF_
FQDN=oai-nrf
-
NF_REGISTRATION=yes
-
SMF_SELECTION=yes
-
USE_FQDN_DNS=yes
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
EXTERNAL_AUSF=no
-
AUSF_IPV4_ADDRESS=0.0.0.0
-
AUSF_PORT=80
-
AUSF_API_VERSION=v1
-
AUSF_FQDN=localhost
-
USE_HTTP2=no
depends_on
:
-
oai-nrf
-
mysql
volumes
:
-
../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
interval
:
10s
timeout
:
15s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oai
-smf:august-dev
image
:
oai
softwarealliance/oai-smf:v1.5.0
environment
:
-
TZ=Europe/Paris
-
INSTANCE=0
-
PID_DIRECTORY=/var/run
-
SMF_INTERFACE_NAME_FOR_N4=eth0
-
SMF_INTERFACE_NAME_FOR_SBI=eth0
-
SMF_INTERFACE_PORT_FOR_SBI=80
-
SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-
SMF_API_VERSION=v1
-
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
-
DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-
AMF_IPV4_ADDRESS=0.0.0.0
-
AMF_PORT=80
-
AMF_API_VERSION=v1
-
AMF_IPV4_ADDRESS=192.168.71.132
-
AMF_FQDN=oai-amf
-
UDM_IPV4_ADDRESS=127.0.0.1
-
UDM_PORT=80
-
UDM_API_VERSION=v1
-
UDM_FQDN=localhost
-
UPF_IPV4_ADDRESS=192.168.71.134
-
UPF_FQDN_0=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
-
REGISTER_NRF=yes
-
DISCOVER_UPF=yes
-
USE_FQDN_DNS=yes
-
USE_LOCAL_SUBSCRIPTION_INFO=yes
-
UE_MTU=1500
# Only one slice is defined (1, 0xFFFFFF)
-
DNN_NI0=oai
-
TYPE0=IPv4
-
DNN_RANGE0=12.1.1.2 - 12.1.1.127
-
NSSAI_SST0=1
-
NSSAI_SD0=0xFFFFFF
-
SESSION_AMBR_UL0=200Mbps
-
SESSION_AMBR_DL0=400Mbps
-
DNN_NI2=oai.ipv4
-
DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1
-
ENABLE_USAGE_REPORTING=no
depends_on
:
-
oai-nrf
-
oai-amf
volumes
:
-
../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-spgwu
:
container_name
:
"
rfsim5g-oai-spgwu"
image
:
oai
-spgwu-tiny:august-dev
image
:
oai
softwarealliance/oai-spgwu-tiny:v1.5.0
environment
:
-
TZ=Europe/Paris
-
PID_DIRECTORY=/var/run
-
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-
SGW_INTERFACE_NAME_FOR_SX=eth0
-
PGW_INTERFACE_NAME_FOR_SGI=eth0
-
NETWORK_UE_NAT_OPTION=yes
-
NETWORK_UE_IP=12.1.1.0/24
-
SPGWC0_IP_ADDRESS=192.168.71.133
-
BYPASS_UL_PFCP_RULES=no
-
MCC=208
-
MNC=99
-
MNC03=099
-
TAC=1
-
GTP_EXTENSION_HEADER_PRESENT=yes
-
GW_ID=1
-
REALM=openairinterface.org
-
ENABLE_5G_FEATURES=yes
-
REGISTER_NRF=yes
-
USE_FQDN_NRF=yes
-
UPF_FQDN_5G=oai-spgwu
-
NRF_IPV4_ADDRESS=192.168.71.130
-
NRF_PORT=80
-
NRF_API_VERSION=v1
-
NRF_FQDN=oai-nrf
# Only one slice is defined (1, 0xFFFFFF)
-
NSSAI_SST_0=1
-
NSSAI_SD_0=0xffffff
-
DNN_0=oai
...
...
@@ -204,25 +140,16 @@ services:
cap_drop
:
-
ALL
privileged
:
true
volumes
:
-
../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
healthcheck
:
test
:
/bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
5
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
image
:
ubuntu:bionic
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:latest
entrypoint
:
/bin/bash -c \
"apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
...
...
@@ -235,9 +162,8 @@ services:
interval
:
10s
timeout
:
5s
retries
:
5
oai-gnb
:
image
:
oai-gnb:develop
image
:
oai
softwarealliance/oai
-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
...
...
@@ -258,7 +184,7 @@ services:
retries
:
5
oai-nr-ue
:
image
:
oai-nr-ue:develop
image
:
oai
softwarealliance/oai
-nr-ue:develop
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
...
...
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