mirror of
https://github.com/Gradiant/5g-images.git
synced 2025-11-02 13:03:13 +00:00
Compare commits
60 Commits
PR-templat
...
openvpn
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
599d3a1a3f | ||
|
|
2085c53fdb | ||
|
|
865d792850 | ||
|
|
6e0af5ad19 | ||
|
|
ca1490217c | ||
|
|
26860609f9 | ||
|
|
64d1e44f84 | ||
|
|
df6f0126b5 | ||
|
|
ddc1920bec | ||
|
|
be9c9bb86b | ||
|
|
1b69775e0c | ||
|
|
dcc1724879 | ||
|
|
c10b9ee458 | ||
|
|
90edcdc268 | ||
|
|
ffaefb138c | ||
|
|
c130e11a5b | ||
|
|
720e5b2121 | ||
|
|
0a25673fde | ||
|
|
2ed390af03 | ||
|
|
2e2268bb0c | ||
|
|
56720bf393 | ||
|
|
7cf0d18fd2 | ||
|
|
d5f30c654e | ||
|
|
5966dc5d64 | ||
|
|
e99e66f0fe | ||
|
|
65abdc44ae | ||
|
|
2245d7e140 | ||
|
|
3ee4225571 | ||
|
|
23069c499e | ||
|
|
625de6114f | ||
|
|
3b2e08880e | ||
|
|
4c6e67809a | ||
|
|
55bfcf3244 | ||
|
|
19af823d42 | ||
|
|
a7199f2f21 | ||
|
|
f90189a19e | ||
|
|
6fa2c42ee5 | ||
|
|
9bdd2b94c4 | ||
|
|
2821379468 | ||
|
|
574f7e8a53 | ||
|
|
0dedea241c | ||
|
|
1ef6877e02 | ||
|
|
400d7158be | ||
|
|
f81b17c59f | ||
|
|
00354c3524 | ||
|
|
28e394b628 | ||
|
|
c6eab1e839 | ||
|
|
6380d3ed7f | ||
|
|
c04117f5e3 | ||
|
|
fbc9535c46 | ||
|
|
4a87fe22b1 | ||
|
|
243688fedf | ||
|
|
280baf304e | ||
|
|
38968cd175 | ||
|
|
4972d7ba12 | ||
|
|
a5c12c92f5 | ||
|
|
5c3bd93e7f | ||
|
|
05507ce1b3 | ||
|
|
6308a151c2 | ||
|
|
9ddf948279 |
40
.github/ISSUE_TEMPLATE/bugreport.yaml
vendored
Normal file
40
.github/ISSUE_TEMPLATE/bugreport.yaml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
name: Bug Report
|
||||
description: File a bug report or issue
|
||||
title: "[Bug]: "
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Please note**
|
||||
|
||||
This form should only be used if _you can reporoduce_ the bug the in the latest version of 5g-images.
|
||||
|
||||
**This form is not for support requests.*
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: >
|
||||
Please describe in detail the steps needed to reproduce this bug. These steps
|
||||
should reproduce the issue on the most current release of 5g-images. Be sure to
|
||||
include configuration and platform details.
|
||||
Please include logs from the relevant daemons as well as any relevant packet captures.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Logs
|
||||
description: Provide any relevant captured logs for the issue
|
||||
render: shell
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected behaviour
|
||||
description: What did you expect to happen?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Observed Behaviour
|
||||
description: What's the observed behaviour?
|
||||
validations:
|
||||
required: true
|
||||
|
||||
40
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
Normal file
40
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
name: Feature request
|
||||
description: Propose an enhancement to 5g-images
|
||||
labels: ['Enhancement']
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
## Feature request ##
|
||||
|
||||
Please submit your feature request using the form. If your proposal is not sufficiently
|
||||
well formed, we may request further clarification and expansion.
|
||||
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Components and subsystems
|
||||
description: Which subsystems and components would this feature be relevant to?
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Proposed functionality
|
||||
description: >
|
||||
Provide a detailed description of the feature or behaviour you are proposing. The more detail
|
||||
you provide, the greater the chance your proposal has of being discussed.
|
||||
|
||||
If your feature request does not include anything actionable or sufficient details, you may be asked
|
||||
to provide further clarification or your request may be rejected.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: External dependencies
|
||||
description: >
|
||||
Please detail any new dependencies or implementations that this feature might introduce. e.g. Does the
|
||||
proposal require the installation of additional packages? Are there further external nodes which may be
|
||||
required for integration testing? (Not all feature requests will introduce new dependencies)
|
||||
|
||||
29
.github/pull_request_template.md
vendored
Normal file
29
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
#### What type of PR is this?
|
||||
|
||||
<!--
|
||||
bug
|
||||
cleanup
|
||||
documentation
|
||||
feature
|
||||
-->
|
||||
|
||||
#### What this PR does / why we need it:
|
||||
|
||||
|
||||
#### Which issue(s) this PR fixes:
|
||||
|
||||
|
||||
#### Special notes for your reviewer:
|
||||
|
||||
|
||||
#### Does this PR introduce a user-facing change?
|
||||
|
||||
|
||||
#### Does this PR introduce new external dependencies?
|
||||
|
||||
|
||||
#### Additional documentation:
|
||||
|
||||
```docs
|
||||
|
||||
```
|
||||
12
.github/workflows/build.yml
vendored
12
.github/workflows/build.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
id: generate-matrix
|
||||
run: |
|
||||
changed=`echo "${{ steps.files.outputs.all_changed_files }}" | sed 's/ /\n/g' | grep $images_dir | cut -f2 -d'/' | uniq | sed 's/^/"/;s/$/"/' | sed -z 's/\n/,/g;s/,$/\n/'`
|
||||
echo "::set-output name=matrix::{ \"image\": [ ${changed} ] }"
|
||||
echo "matrix={ \"image\": [ ${changed} ] }" >> $GITHUB_OUTPUT
|
||||
|
||||
# build image if changes in code
|
||||
build-image:
|
||||
@@ -45,9 +45,9 @@ jobs:
|
||||
id: image-info
|
||||
run: |
|
||||
source ./images/${{ matrix.image }}/image_info.sh
|
||||
echo "::set-output name=platforms::$PLATFORMS"
|
||||
echo "::set-output name=image_tag::$IMAGE_TAG"
|
||||
echo "::set-output name=image::${{ matrix.image }}"
|
||||
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
|
||||
echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
|
||||
echo "image=${{ matrix.image }}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
with:
|
||||
context: ./images/${{ steps.image-info.outputs.image }}/
|
||||
push: false
|
||||
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
|
||||
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
|
||||
build-args: version=${{ steps.image-info.outputs.image_tag }}
|
||||
platforms: ${{ steps.image-info.outputs.platforms }}
|
||||
cache-from: type=gha
|
||||
@@ -90,7 +90,7 @@ jobs:
|
||||
context: ./images/${{ steps.image-info.outputs.image }}/
|
||||
file: ./images/${{ steps.image-info.outputs.image }}/Dockerfile.ubi
|
||||
push: false
|
||||
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
|
||||
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
|
||||
build-args: version=${{ steps.image-info.outputs.image_tag }}
|
||||
platforms: ${{ steps.image-info.outputs.platforms }}
|
||||
cache-from: type=gha
|
||||
|
||||
7
.github/workflows/cron.yml
vendored
7
.github/workflows/cron.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
||||
id: generate-matrix
|
||||
run: |
|
||||
IMAGES=$( ls -1 ${{ env.IMAGES_DIR }} | tr '\n' ',' | sed 's/[^,]\+/"\0"/g;s/,$//' )
|
||||
echo "::set-output name=matrix::{ \"image\": [ ${IMAGES} ] }"
|
||||
echo "matrix={ \"image\": [ ${IMAGES} ] }" >> $GITHUB_OUTPUT
|
||||
# ---
|
||||
|
||||
# Update the version of the existing images when possible and launch pull request
|
||||
@@ -46,11 +46,10 @@ jobs:
|
||||
id: update_tag
|
||||
run: |
|
||||
cd ${{ env.IMAGE_DIR }}
|
||||
echo "::set-output name=old-version::$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )"
|
||||
echo "old-version=$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )" >> $GITHUB_OUTPUT
|
||||
|
||||
[[ -f ./update_current_tag.sh ]] && ./update_current_tag.sh
|
||||
|
||||
echo "::set-output name=new-version::$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )"
|
||||
echo "new-version=$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )" >> $GITHUB_OUTPUT
|
||||
continue-on-error: true
|
||||
|
||||
# Launch Pull Request only when the version is updated
|
||||
|
||||
12
.github/workflows/push.yml
vendored
12
.github/workflows/push.yml
vendored
@@ -29,7 +29,7 @@ jobs:
|
||||
id: generate-matrix
|
||||
run: |
|
||||
changed=`echo "${{ steps.files.outputs.all_changed_files }}" | sed 's/ /\n/g' | grep $images_dir | cut -f2 -d'/' | uniq | sed 's/^/"/;s/$/"/' | sed -z 's/\n/,/g;s/,$/\n/'`
|
||||
echo "::set-output name=matrix::{ \"image\": [ ${changed} ] }"
|
||||
echo "matrix={ \"image\": [ ${changed} ] }" >> $GITHUB_OUTPUT
|
||||
|
||||
# build image if changes in code
|
||||
build-image:
|
||||
@@ -46,9 +46,9 @@ jobs:
|
||||
id: image-info
|
||||
run: |
|
||||
source ./images/${{ matrix.image }}/image_info.sh
|
||||
echo "::set-output name=platforms::$PLATFORMS"
|
||||
echo "::set-output name=image_tag::$IMAGE_TAG"
|
||||
echo "::set-output name=image::${{ matrix.image }}"
|
||||
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
|
||||
echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
|
||||
echo "image=${{ matrix.image }}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
@@ -67,7 +67,7 @@ jobs:
|
||||
with:
|
||||
context: ./images/${{ steps.image-info.outputs.image }}/
|
||||
push: true
|
||||
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
|
||||
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
|
||||
build-args: version=${{ steps.image-info.outputs.image_tag }}
|
||||
platforms: ${{ steps.image-info.outputs.platforms }}
|
||||
cache-from: type=gha
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
context: ./images/${{ steps.image-info.outputs.image }}/
|
||||
file: ./images/${{ steps.image-info.outputs.image }}/Dockerfile.ubi
|
||||
push: true
|
||||
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
|
||||
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
|
||||
build-args: version=${{ steps.image-info.outputs.image_tag }}
|
||||
platforms: ${{ steps.image-info.outputs.platforms }}
|
||||
cache-from: type=gha
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
uhd_images/
|
||||
**.cast
|
||||
10
README.md
10
README.md
@@ -1,11 +1,9 @@
|
||||
# Container Image Collection of Openverso Project
|
||||
# Gradiant 5G Images
|
||||
|
||||
This repo mantains dockerfiles of Docker Images generated by [Gradiant](https://www.gradiant.org) in [OpenVerso](https://www.openverso.org/).
|
||||
|
||||
The main objective of OpenVerso, the National Network of Excellence in 5G and future technologies, is to address the design of an architecture of a comprehensive 5G network, evolvable to 6G technologies, and aimed at creating a federated ecosystem that enables knowledge transfer to the industrial sector. More info at [https://www.openverso.org](https://www.openverso.org).
|
||||
This repo mantains dockerfiles of Docker Images generated by [Gradiant](https://www.gradiant.org) for its Lab5G platform.
|
||||
|
||||
Gradiant is actively researching and developing Cloud-Native Network Functions (CNFs) with special focus on 5G network and evolvable to 6G technologies.
|
||||
|
||||
Follow the README.md of each image to evaluate the technologies in your container runtime.
|
||||
|
||||
|
||||
<img src="micinncdti_2021.jpg" alt="micinncdti_2021" width="320"/>
|
||||
Check also docs folder for deployment examples.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
gnb1:
|
||||
image: openverso/ueransim:3.1.6
|
||||
image: gradiant/ueransim:3.1.6
|
||||
container_name: gnb1
|
||||
command:
|
||||
- gnb
|
||||
@@ -11,7 +11,7 @@ services:
|
||||
MCC: '208'
|
||||
MNC: '93'
|
||||
ue1:
|
||||
image: openverso/ueransim:3.1.6
|
||||
image: gradiant/ueransim:3.1.6
|
||||
container_name: ue1
|
||||
command:
|
||||
- ue
|
||||
|
||||
@@ -5,23 +5,23 @@ services:
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: free5gc
|
||||
nrf:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/nrfcfg.yaml:/etc/free5gc/nrfcfg.yaml
|
||||
command: ["nrf","-nrfcfg","/etc/free5gc/nrfcfg.yaml"]
|
||||
restart : on-failure
|
||||
udr:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
command: ["udr","-udrcfg","/etc/free5gc/udrcfg.yaml"]
|
||||
restart : on-failure
|
||||
amf:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/amfcfg.yaml:/etc/free5gc/amfcfg.yaml
|
||||
command: ["amf","-amfcfg","/etc/free5gc/amfcfg.yaml"]
|
||||
restart : on-failure
|
||||
smf:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/smfcfg.yaml:/etc/free5gc/smfcfg.yaml
|
||||
- ./configs/free5gc/uerouting.yaml:/etc/free5gc/uerouting.yaml
|
||||
@@ -31,25 +31,25 @@ services:
|
||||
- "--uerouting=/etc/free5gc/uerouting.yaml"
|
||||
restart : on-failure
|
||||
pcf:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/pcfcfg.yaml:/etc/free5gc/pcfcfg.yaml
|
||||
command: ["pcf","-pcfcfg","/etc/free5gc/pcfcfg.yaml"]
|
||||
restart : on-failure
|
||||
udm:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/udmcfg.yaml:/etc/free5gc/udmcfg.yaml
|
||||
command: ["udm","-udmcfg","/etc/free5gc/udmcfg.yaml"]
|
||||
restart : on-failure
|
||||
nssf:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/nssfcfg.yaml:/etc/free5gc/nssfcfg.yaml
|
||||
command: ["nssf","-nssfcfg","/etc/free5gc/nssfcfg.yaml"]
|
||||
restart : on-failure
|
||||
ausf:
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/ausfcfg.yaml:/etc/free5gc/ausfcfg.yaml
|
||||
command: ["ausf","-ausfcfg","/etc/free5gc/ausfcfg.yaml"]
|
||||
@@ -57,14 +57,14 @@ services:
|
||||
upf:
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./configs/free5gc/upfcfg.yaml:/etc/free5gc/upfcfg.yaml
|
||||
command: ["upf","-f","/etc/free5gc/upfcfg.yaml"]
|
||||
restart : on-failure
|
||||
|
||||
webconsole:
|
||||
image: openverso/free5gc-webconsole:1.0.1
|
||||
image: gradiant/free5gc-webconsole:1.0.1
|
||||
restart: on-failure
|
||||
ports:
|
||||
- 5000:5000
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$ORIGIN openverso.
|
||||
$ORIGIN gradiant.
|
||||
$TTL 1W
|
||||
@ 1D IN SOA localhost. root.localhost. (
|
||||
1 ; serial
|
||||
|
||||
@@ -37,7 +37,7 @@ zone "ims.mnc001.mcc001.3gppnetwork.org" {
|
||||
file "/etc/bind/ims_zone";
|
||||
};
|
||||
|
||||
zone "openverso" {
|
||||
zone "gradiant" {
|
||||
type master;
|
||||
file "/etc/bind/epc_zone";
|
||||
};
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
# This must be a valid FQDN that resolves to the local host.
|
||||
# Default: hostname's FQDN
|
||||
#Identity = "aaa.koganei.freediameter.net";
|
||||
Identity = "hss.openverso";
|
||||
Identity = "hss.gradiant";
|
||||
|
||||
# The Diameter Realm of this daemon.
|
||||
# Default: the domain part of Identity (after the first dot).
|
||||
#Realm = "koganei.freediameter.net";
|
||||
Realm = "openverso";
|
||||
Realm = "gradiant";
|
||||
|
||||
##############################################################
|
||||
## Transport protocol configuration
|
||||
@@ -261,6 +261,6 @@ LoadExtension = "/usr/local/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx
|
||||
# Examples:
|
||||
#ConnectPeer = "aaa.wide.ad.jp";
|
||||
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
|
||||
ConnectPeer = "mme.openverso" { ConnectTo = "mme"; TcTimer = 60; TwTimer = 30; No_TLS; };
|
||||
ConnectPeer = "mme.gradiant" { ConnectTo = "mme"; TcTimer = 60; TwTimer = 30; No_TLS; };
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -17,7 +17,7 @@ mme:
|
||||
integrity_order : [ EIA2, EIA1, EIA0 ]
|
||||
ciphering_order : [ EEA0, EEA1, EEA2 ]
|
||||
network_name:
|
||||
full: Openverso
|
||||
full: gradiant
|
||||
mme_name: open5gs-mme0
|
||||
|
||||
sgwc:
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
# This must be a valid FQDN that resolves to the local host.
|
||||
# Default: hostname's FQDN
|
||||
#Identity = "aaa.koganei.freediameter.net";
|
||||
Identity = "pcrf.openverso";
|
||||
Identity = "pcrf.gradiant";
|
||||
|
||||
# The Diameter Realm of this daemon.
|
||||
# Default: the domain part of Identity (after the first dot).
|
||||
#Realm = "koganei.freediameter.net";
|
||||
Realm = "openverso";
|
||||
Realm = "gradiant";
|
||||
|
||||
##############################################################
|
||||
## Transport protocol configuration
|
||||
@@ -262,7 +262,7 @@ LoadExtension = "/usr/local/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx
|
||||
#ConnectPeer = "aaa.wide.ad.jp";
|
||||
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
|
||||
|
||||
ConnectPeer = "smf.openverso" { ConnectTo = "smf"; TcTimer = 60; TwTimer = 30; No_TLS; };
|
||||
ConnectPeer = "smf.gradiant" { ConnectTo = "smf"; TcTimer = 60; TwTimer = 30; No_TLS; };
|
||||
ConnectPeer = "pcscf.ims.mnc001.mcc001.3gppnetwork.org" { ConnectTo = "pcscf"; Port = 3871; No_TLS; };
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
# This must be a valid FQDN that resolves to the local host.
|
||||
# Default: hostname's FQDN
|
||||
#Identity = "aaa.koganei.freediameter.net";
|
||||
Identity = "smf.openverso";
|
||||
Identity = "smf.gradiant";
|
||||
|
||||
# The Diameter Realm of this daemon.
|
||||
# Default: the domain part of Identity (after the first dot).
|
||||
#Realm = "koganei.freediameter.net";
|
||||
Realm = "openverso";
|
||||
Realm = "gradiant";
|
||||
|
||||
##############################################################
|
||||
## Transport protocol configuration
|
||||
@@ -260,6 +260,6 @@ LoadExtension = "/usr/local/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx
|
||||
# Examples:
|
||||
#ConnectPeer = "aaa.wide.ad.jp";
|
||||
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
|
||||
ConnectPeer = "pcrf.openverso" { ConnectTo = "pcrf"; TcTimer = 60; TwTimer = 30; No_TLS; };
|
||||
ConnectPeer = "pcrf.gradiant" { ConnectTo = "pcrf"; TcTimer = 60; TwTimer = 30; No_TLS; };
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -18,7 +18,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.2
|
||||
webui:
|
||||
image: openverso/open5gs-webui:2.4.9
|
||||
image: gradiant/open5gs-webui:2.4.9
|
||||
container_name: webui
|
||||
depends_on:
|
||||
- mongo
|
||||
@@ -37,7 +37,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.26
|
||||
hss:
|
||||
image: openverso/open5gs:2.4.9
|
||||
image: gradiant/open5gs:2.4.9
|
||||
entrypoint: /entrypoint_open5gs.sh
|
||||
container_name: hss
|
||||
command: open5gs-hssd
|
||||
@@ -62,7 +62,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.3
|
||||
sgwc:
|
||||
image: openverso/open5gs:2.4.9
|
||||
image: gradiant/open5gs:2.4.9
|
||||
entrypoint: /entrypoint_open5gs.sh
|
||||
command: open5gs-sgwcd
|
||||
depends_on:
|
||||
@@ -81,7 +81,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.5
|
||||
sgwu:
|
||||
image: openverso/open5gs:2.4.9
|
||||
image: gradiant/open5gs:2.4.9
|
||||
entrypoint: /entrypoint_open5gs.sh
|
||||
command: open5gs-sgwud
|
||||
depends_on:
|
||||
@@ -100,7 +100,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.6
|
||||
smf:
|
||||
image: openverso/open5gs:2.4.9
|
||||
image: gradiant/open5gs:2.4.9
|
||||
entrypoint: /entrypoint_open5gs.sh
|
||||
command: open5gs-smfd
|
||||
container_name: smf
|
||||
@@ -125,7 +125,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.7
|
||||
upf:
|
||||
image: openverso/open5gs:2.4.9
|
||||
image: gradiant/open5gs:2.4.9
|
||||
entrypoint: /entrypoint_open5gs.sh
|
||||
command: open5gs-upfd
|
||||
depends_on:
|
||||
@@ -151,7 +151,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.8
|
||||
mme:
|
||||
image: openverso/open5gs:2.4.9
|
||||
image: gradiant/open5gs:2.4.9
|
||||
entrypoint: /entrypoint_open5gs.sh
|
||||
command: open5gs-mmed
|
||||
depends_on:
|
||||
@@ -182,7 +182,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.9
|
||||
pcrf:
|
||||
image: openverso/open5gs:2.4.9
|
||||
image: gradiant/open5gs:2.4.9
|
||||
entrypoint: /entrypoint_open5gs.sh
|
||||
command: open5gs-pcrfd
|
||||
container_name: pcrf
|
||||
@@ -226,7 +226,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.15
|
||||
rtpengine:
|
||||
image: openverso/rtpengine:9.4.1.1
|
||||
image: gradiant/rtpengine:9.4.1.1
|
||||
container_name: rtpengine
|
||||
privileged: true
|
||||
environment:
|
||||
@@ -264,11 +264,11 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.17
|
||||
fhoss:
|
||||
image: openverso/fhoss:develop
|
||||
image: gradiant/fhoss:develop
|
||||
container_name: fhoss
|
||||
environment:
|
||||
IMS_DOMAIN: ims.mnc001.mcc001.3gppnetwork.org
|
||||
EPC_DOMAIN: openverso
|
||||
EPC_DOMAIN: gradiant
|
||||
volumes:
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
@@ -285,7 +285,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.18
|
||||
icscf:
|
||||
image: openverso/kamailio-ims:5.3-dev
|
||||
image: gradiant/kamailio-ims:5.3-dev
|
||||
container_name: icscf
|
||||
volumes:
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
@@ -293,7 +293,7 @@ services:
|
||||
environment:
|
||||
- COMPONENT_NAME=icscf-1
|
||||
- IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org
|
||||
- EPC_DOMAIN=openverso
|
||||
- EPC_DOMAIN=gradiant
|
||||
depends_on:
|
||||
- dns
|
||||
- mysql
|
||||
@@ -308,7 +308,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.19
|
||||
scscf:
|
||||
image: openverso/kamailio-ims:5.3-dev
|
||||
image: gradiant/kamailio-ims:5.3-dev
|
||||
container_name: scscf
|
||||
volumes:
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
@@ -316,7 +316,7 @@ services:
|
||||
environment:
|
||||
- COMPONENT_NAME=scscf-1
|
||||
- IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org
|
||||
- EPC_DOMAIN=openverso
|
||||
- EPC_DOMAIN=gradiant
|
||||
depends_on:
|
||||
- dns
|
||||
- mysql
|
||||
@@ -331,7 +331,7 @@ services:
|
||||
default:
|
||||
ipv4_address: 172.22.0.20
|
||||
pcscf:
|
||||
image: openverso/kamailio-ims:5.3-dev
|
||||
image: gradiant/kamailio-ims:5.3-dev
|
||||
container_name: pcscf
|
||||
privileged: true
|
||||
cap_add:
|
||||
@@ -342,7 +342,7 @@ services:
|
||||
environment:
|
||||
- COMPONENT_NAME=pcscf-1
|
||||
- IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org
|
||||
- EPC_DOMAIN=openverso
|
||||
- EPC_DOMAIN=gradiant
|
||||
depends_on:
|
||||
- dns
|
||||
- mysql
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
enodeb:
|
||||
image: openverso/srsran:21_10
|
||||
image: gradiant/srsran:21_10
|
||||
container_name: srsenb
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
gnb1:
|
||||
image: openverso/ueransim:3.2.2
|
||||
image: gradiant/ueransim:3.2.2
|
||||
container_name: gnb1
|
||||
command:
|
||||
- gnb
|
||||
@@ -15,7 +15,7 @@ services:
|
||||
SD: '123'
|
||||
|
||||
ue1:
|
||||
image: openverso/ueransim:3.2.2
|
||||
image: gradiant/ueransim:3.2.2
|
||||
command: ['ue','-n','1']
|
||||
cap_add:
|
||||
- all
|
||||
|
||||
@@ -5,42 +5,42 @@ services:
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: open5gs
|
||||
amf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command:
|
||||
- open5gs-amfd
|
||||
restart : on-failure
|
||||
|
||||
ausf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command:
|
||||
- open5gs-ausfd
|
||||
restart : on-failure
|
||||
|
||||
bsf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command:
|
||||
- open5gs-bsfd
|
||||
restart : on-failure
|
||||
|
||||
hss:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: open5gs-hssd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
|
||||
nrf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: open5gs-nrfd
|
||||
restart : on-failure
|
||||
|
||||
nssf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: open5gs-nssfd
|
||||
restart : on-failure
|
||||
|
||||
pcf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command:
|
||||
- open5gs-pcfd
|
||||
environment:
|
||||
@@ -48,36 +48,36 @@ services:
|
||||
restart : on-failure
|
||||
|
||||
pcrf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: ["open5gs-pcrfd"]
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
mme:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: open5gs-mmed
|
||||
restart: on-failure
|
||||
sgwc:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: open5gs-sgwcd
|
||||
restart : on-failure
|
||||
sgwu:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: open5gs-sgwud
|
||||
restart : on-failure
|
||||
smf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command: open5gs-smfd
|
||||
restart : on-failure
|
||||
|
||||
udm:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
restart: on-failure
|
||||
command:
|
||||
- open5gs-udmd
|
||||
|
||||
udr:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
@@ -85,7 +85,7 @@ services:
|
||||
- open5gs-udrd
|
||||
|
||||
upf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.3.2
|
||||
command:
|
||||
- open5gs-upfd
|
||||
cap_add:
|
||||
@@ -96,7 +96,7 @@ services:
|
||||
- 2152:2152
|
||||
|
||||
webui:
|
||||
image: openverso/open5gs-webui:2.3.2
|
||||
image: gradiant/open5gs-webui:2.3.2
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
enodeb:
|
||||
image: openverso/oai-enb:2021.w31
|
||||
image: gradiant/oai-enb:2021.w31
|
||||
privileged: true
|
||||
volumes:
|
||||
- /dev/bus/usb:/dev/bus/usb
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
enodeb:
|
||||
image: openverso/oai-gnb:2021.w31
|
||||
image: gradiant/oai-gnb:2021.w31
|
||||
privileged: true
|
||||
volumes:
|
||||
- /dev/bus/usb:/dev/bus/usb
|
||||
|
||||
46
docs/open5gs-and-packetrusher/README.md
Normal file
46
docs/open5gs-and-packetrusher/README.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Open5GS and PacketRusher
|
||||
|
||||
5G end to end communication demo with Open5GS and PacketRusher.
|
||||
|
||||
# Deployment NGC and register subscribers
|
||||
|
||||
deploy the NGC core (Open5GS) with:
|
||||
|
||||
```
|
||||
docker compose -f ngc.yaml up -d
|
||||
```
|
||||
|
||||
Subscriber is registered using populate container.
|
||||
|
||||
# Deploy PacketRusher
|
||||
|
||||
packetrusher.yaml is configured to deploy the basic mode of PacketRusher: 1 gNB and 1 UE
|
||||
|
||||
"ffffff" SD is used to match the default behaviour of Open5GS (no SD)
|
||||
|
||||
```
|
||||
docker compose -f packetrusher.yaml up -d
|
||||
```
|
||||
|
||||
# Test
|
||||
|
||||
To test UE connectivity through RAN, enter the packetrusher container:
|
||||
|
||||
```
|
||||
docker compose -f packetrusher.yaml exec packetrusher /bin/bash
|
||||
ip vrf exec vrf0000000001 ping 8.8.8.8
|
||||
```
|
||||
Also, you can do a iPerf test:
|
||||
|
||||
```
|
||||
ip vrf exec vrf0000000001 iperf3 -c IPERF_SERVER
|
||||
```
|
||||
|
||||
# Clean Up
|
||||
|
||||
Undeploy with:
|
||||
|
||||
```
|
||||
docker compose -f packetrusher.yaml down
|
||||
docker compose -f ngc.yaml down
|
||||
```
|
||||
356
docs/open5gs-and-packetrusher/config/smf.yaml
Normal file
356
docs/open5gs-and-packetrusher/config/smf.yaml
Normal file
@@ -0,0 +1,356 @@
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/smf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
# max:
|
||||
# ue: 1024 # The number of UE can be increased depending on memory size.
|
||||
# peer: 64
|
||||
|
||||
smf:
|
||||
sbi:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 7777
|
||||
client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
scp:
|
||||
- uri: http://scp:7777
|
||||
pfcp:
|
||||
server:
|
||||
- dev: eth0
|
||||
client:
|
||||
upf:
|
||||
- address: upf
|
||||
gtpc:
|
||||
server:
|
||||
- dev: eth0
|
||||
gtpu:
|
||||
server:
|
||||
- dev: eth0
|
||||
metrics:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 9090
|
||||
session:
|
||||
- subnet: 10.45.0.1/16
|
||||
dnn: internet
|
||||
- subnet: 2001:db8:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
- 2001:4860:4860::8888
|
||||
- 2001:4860:4860::8844
|
||||
mtu: 1400
|
||||
# p-cscf:
|
||||
# - 127.0.0.1
|
||||
# - ::1
|
||||
# ctf:
|
||||
# enabled: auto # auto(default)|yes|no
|
||||
# freeDiameter: /opt/open5gs/etc/freeDiameter/smf.conf
|
||||
################################################################################
|
||||
# SMF Info
|
||||
################################################################################
|
||||
# <SMF Selection - 5G Core only>
|
||||
# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
|
||||
# 2. NRF responds to AMF with SmfInfo during NF-Discovery.
|
||||
# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
|
||||
#
|
||||
# Note that if there is no SmfInfo, any AMF can select this SMF.
|
||||
#
|
||||
# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
#
|
||||
# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# sd: 009000
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
#
|
||||
# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 1
|
||||
#
|
||||
# o If any of conditions below are met:
|
||||
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1-9]
|
||||
# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
|
||||
# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:99970 TAC:10-20,30-40]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 1-9
|
||||
# - s_nssai:
|
||||
# - sst: 2
|
||||
# sd: 000080
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 10-20
|
||||
# - 30-40
|
||||
#
|
||||
# o Complex Example
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# - sst: 1
|
||||
# sd: 000080
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
# - sst: 1
|
||||
# sd: 009000
|
||||
# dnn:
|
||||
# [internet, ims]
|
||||
# - sst: 2
|
||||
# dnn:
|
||||
# - internet
|
||||
# - sst: 3
|
||||
# sd: 123456
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: [1, 2, 3]
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 4
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 5
|
||||
# - 6
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 100-200
|
||||
# - 300-400
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 500-600
|
||||
# - 700-800
|
||||
# - 900-1000
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 99
|
||||
#
|
||||
################################################################################
|
||||
# SBI Server
|
||||
################################################################################
|
||||
# o Override SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Direct communication with NRF interaction
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect communication with delegated discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect communication without delegated discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# discovery:
|
||||
# delegated: no
|
||||
#
|
||||
################################################################################
|
||||
# HTTPS scheme with TLS
|
||||
################################################################################
|
||||
# o Set as default if not individually set
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
# o Add client TLS verification
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# verify_client: true
|
||||
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# client_cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
################################################################################
|
||||
# PFCP Server
|
||||
################################################################################
|
||||
# o Override PFCP address to be advertised to UPF in PFCP association
|
||||
# pfcp:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
################################################################################
|
||||
# PFCP Client
|
||||
################################################################################
|
||||
# o UPF selection by eNodeB TAC
|
||||
# (either single TAC or multiple TACs, DECIMAL representation)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# tac: 1
|
||||
# - address: 127.0.0.12
|
||||
# tac: [3,5,8]
|
||||
#
|
||||
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# dnn: ims
|
||||
# - address: 127.0.0.12
|
||||
# dnn: [internet, web]
|
||||
#
|
||||
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
|
||||
# (either single enb_id or multiple enb_ids, HEX representation)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# e_cell_id: 463
|
||||
# - address: 127.0.0.12
|
||||
# nr_cell_id: [123456789, 9413]
|
||||
#
|
||||
################################################################################
|
||||
# GTP-C Server
|
||||
################################################################################
|
||||
# o Listen on IPv4 and IPv6
|
||||
# gtpc:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# - address: fd69:f21d:873c:fa::3
|
||||
#
|
||||
################################################################################
|
||||
# GTP-U Server
|
||||
################################################################################
|
||||
# o Listen on IPv4 and IPv6
|
||||
# gtpu:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# - address: ::1
|
||||
#
|
||||
################################################################################
|
||||
# 3GPP Specification
|
||||
################################################################################
|
||||
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48
|
||||
# (If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash.)
|
||||
# session:
|
||||
# - subnet: 10.45.0.1/16
|
||||
# dnn: internet
|
||||
# - subnet: 2001:db8:cafe::1/48
|
||||
# dnn: internet
|
||||
# - subnet: 10.46.0.1/16
|
||||
# dnn: ims
|
||||
# - subnet: 2001:db8:babe::1/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Pool Range
|
||||
# session:
|
||||
# - subnet: 10.45.0.1/16
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-
|
||||
# - -10.45.0.200
|
||||
# - subnet: 2001:db8:cafe::1/48
|
||||
# range:
|
||||
# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0
|
||||
# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0
|
||||
#
|
||||
# o Security Indication(5G Core only)
|
||||
# security_indication:
|
||||
# integrity_protection_indication: required|preferred|not-needed
|
||||
# confidentiality_protection_indication: required|preferred|not-needed
|
||||
# maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
|
||||
# maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate
|
||||
104
docs/open5gs-and-packetrusher/ngc.yaml
Normal file
104
docs/open5gs-and-packetrusher/ngc.yaml
Normal file
@@ -0,0 +1,104 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
mongo:
|
||||
image: mongo:7.0.2
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: open5gs
|
||||
|
||||
amf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command:
|
||||
- open5gs-amfd
|
||||
restart : on-failure
|
||||
|
||||
ausf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command:
|
||||
- open5gs-ausfd
|
||||
restart : on-failure
|
||||
|
||||
bsf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command:
|
||||
- open5gs-bsfd
|
||||
restart : on-failure
|
||||
|
||||
nrf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command: open5gs-nrfd
|
||||
restart : on-failure
|
||||
|
||||
nssf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command: open5gs-nssfd
|
||||
restart : on-failure
|
||||
|
||||
pcf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command:
|
||||
- open5gs-pcfd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart : on-failure
|
||||
|
||||
scp:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command: open5gs-scpd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart : on-failure
|
||||
|
||||
smf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command: open5gs-smfd
|
||||
restart : on-failure
|
||||
volumes:
|
||||
- ./config/smf.yaml:/opt/open5gs/etc/open5gs/smf.yaml
|
||||
|
||||
udm:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
restart: on-failure
|
||||
command:
|
||||
- open5gs-udmd
|
||||
|
||||
udr:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
command:
|
||||
- open5gs-udrd
|
||||
|
||||
upf:
|
||||
image: gradiant/open5gs:2.7.0
|
||||
command:
|
||||
- open5gs-upfd
|
||||
cap_add:
|
||||
- all
|
||||
privileged: true
|
||||
restart: on-failure
|
||||
# environment:
|
||||
# ENABLE_NAT: "false"
|
||||
ports:
|
||||
- 2152:2152
|
||||
# network_mode: host
|
||||
|
||||
webui:
|
||||
image: gradiant/open5gs-webui:2.7.0
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
NODE_ENV: dev
|
||||
ports:
|
||||
- 3000:3000
|
||||
|
||||
populate:
|
||||
image: gradiant/open5gs-dbctl:0.10.3
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
entrypoint:
|
||||
- "/bin/bash"
|
||||
- "-c"
|
||||
- "open5gs-dbctl add_ue_with_slice 999700000000001 491BB1C6E1179AED538028AE7AD525B3 3B7FB099B3A6D16873B33F023B1679E9 internet 1 ffffff"
|
||||
12
docs/open5gs-and-packetrusher/packetrusher.yaml
Normal file
12
docs/open5gs-and-packetrusher/packetrusher.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
packetrusher:
|
||||
image: gradiant/packetrusher:cec07b7
|
||||
container_name: packetrusher
|
||||
cap_add:
|
||||
- all
|
||||
privileged: true
|
||||
environment:
|
||||
GNBSD: ffffff
|
||||
UESD: ffffff
|
||||
@@ -1,54 +0,0 @@
|
||||
|
||||
// All times are in ms. Use -1 for infinity, where available
|
||||
|
||||
qci_config = (
|
||||
|
||||
{
|
||||
qci=7;
|
||||
pdcp_config = {
|
||||
discard_timer = 100;
|
||||
pdcp_sn_size = 12;
|
||||
}
|
||||
rlc_config = {
|
||||
ul_um = {
|
||||
sn_field_length = 10;
|
||||
};
|
||||
dl_um = {
|
||||
sn_field_length = 10;
|
||||
t_reordering = 45;
|
||||
};
|
||||
};
|
||||
logical_channel_config = {
|
||||
priority = 13;
|
||||
prioritized_bit_rate = -1;
|
||||
bucket_size_duration = 100;
|
||||
log_chan_group = 2;
|
||||
};
|
||||
},
|
||||
{
|
||||
qci=9;
|
||||
pdcp_config = {
|
||||
discard_timer = -1;
|
||||
status_report_required = true;
|
||||
}
|
||||
rlc_config = {
|
||||
ul_am = {
|
||||
t_poll_retx = 120;
|
||||
poll_pdu = 64;
|
||||
poll_byte = 750;
|
||||
max_retx_thresh = 16;
|
||||
};
|
||||
dl_am = {
|
||||
t_reordering = 50;
|
||||
t_status_prohibit = 50;
|
||||
};
|
||||
};
|
||||
logical_channel_config = {
|
||||
priority = 11;
|
||||
prioritized_bit_rate = -1;
|
||||
bucket_size_duration = 100;
|
||||
log_chan_group = 3;
|
||||
};
|
||||
}
|
||||
|
||||
);
|
||||
@@ -1,300 +0,0 @@
|
||||
#####################################################################
|
||||
# srsENB configuration file
|
||||
#####################################################################
|
||||
|
||||
#####################################################################
|
||||
# eNB configuration
|
||||
#
|
||||
# enb_id: 20-bit eNB identifier.
|
||||
# mcc: Mobile Country Code
|
||||
# mnc: Mobile Network Code
|
||||
# mme_addr: IP address of MME for S1 connnection
|
||||
# gtp_bind_addr: Local IP address to bind for GTP connection
|
||||
# s1c_bind_addr: Local IP address to bind for S1AP connection
|
||||
# n_prb: Number of Physical Resource Blocks (6,15,25,50,75,100)
|
||||
# tm: Transmission mode 1-4 (TM1 default)
|
||||
# nof_ports: Number of Tx ports (1 port default, set to 2 for TM2/3/4)
|
||||
#
|
||||
#####################################################################
|
||||
[enb]
|
||||
enb_id = ${ENB_ID}
|
||||
mcc = ${MCC}
|
||||
mnc = ${MNC}
|
||||
mme_addr = ${MME_ADDR}
|
||||
gtp_bind_addr = ${GTP_BIND_ADDR}
|
||||
s1c_bind_addr = ${S1C_BIND_ADDR}
|
||||
n_prb = 50
|
||||
#tm = 4
|
||||
#nof_ports = 2
|
||||
|
||||
#####################################################################
|
||||
# eNB configuration files
|
||||
#
|
||||
# sib_config: SIB1, SIB2 and SIB3 configuration file
|
||||
# note: when enabling mbms, use the sib.conf.mbsfn configuration file which includes SIB13
|
||||
# rr_config: Radio Resources configuration file
|
||||
# drb_config: DRB configuration file
|
||||
#####################################################################
|
||||
[enb_files]
|
||||
sib_config = sib.conf
|
||||
rr_config = rr.conf
|
||||
drb_config = drb.conf
|
||||
|
||||
#####################################################################
|
||||
# RF configuration
|
||||
#
|
||||
# dl_earfcn: EARFCN code for DL (only valid if a single cell is configured in rr.conf)
|
||||
# tx_gain: Transmit gain (dB).
|
||||
# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled
|
||||
#
|
||||
# Optional parameters:
|
||||
# dl_freq: Override DL frequency corresponding to dl_earfcn
|
||||
# ul_freq: Override UL frequency corresponding to dl_earfcn (must be set if dl_freq is set)
|
||||
# device_name: Device driver family.
|
||||
# Supported options: "auto" (uses first found), "UHD", "bladeRF", "soapy" or "zmq".
|
||||
# device_args: Arguments for the device driver. Options are "auto" or any string.
|
||||
# Default for UHD: "recv_frame_size=9232,send_frame_size=9232"
|
||||
# Default for bladeRF: ""
|
||||
# time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay
|
||||
# from antenna to timestamp insertion.
|
||||
# Default "auto". B210 USRP: 100 samples, bladeRF: 27.
|
||||
#####################################################################
|
||||
[rf]
|
||||
#dl_earfcn = 3350
|
||||
tx_gain = 80
|
||||
rx_gain = 40
|
||||
|
||||
#device_name = auto
|
||||
|
||||
# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings:
|
||||
# USRP B210: num_recv_frames=64,num_send_frames=64
|
||||
# And for 75 PRBs, also append ",master_clock_rate=15.36e6" to the device args
|
||||
|
||||
# For best performance when BW<5 MHz (25 PRB), use the following device_args settings:
|
||||
# USRP B210: send_frame_size=512,recv_frame_size=512
|
||||
|
||||
#device_args = auto
|
||||
#time_adv_nsamples = auto
|
||||
|
||||
# Example for ZMQ-based operation with TCP transport for I/Q samples
|
||||
#device_name = zmq
|
||||
#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
|
||||
|
||||
#####################################################################
|
||||
# Packet capture configuration
|
||||
#
|
||||
# MAC Packets are captured to file in the compact format decoded by
|
||||
# the Wireshark mac-lte-framed dissector and with DLT 147.
|
||||
# To use the dissector, edit the preferences for DLT_USER to
|
||||
# add an entry with DLT=147, Payload Protocol=mac-lte-framed.
|
||||
# For more information see: https://wiki.wireshark.org/MAC-LTE
|
||||
#
|
||||
# Please note that this setting will by default only capture MAC
|
||||
# frames on dedicated channels, and not SIB. You have to build with
|
||||
# WRITE_SIB_PCAP enabled in srsenb/src/stack/mac/mac.cc if you want
|
||||
# SIB to be part of the MAC pcap file.
|
||||
#
|
||||
# S1AP Packets are captured to file in the compact format decoded by
|
||||
# the Wireshark s1ap dissector and with DLT 150.
|
||||
# To use the dissector, edit the preferences for DLT_USER to
|
||||
# add an entry with DLT=150, Payload Protocol=s1ap.
|
||||
#
|
||||
# mac_enable: Enable MAC layer packet captures (true/false)
|
||||
# mac_filename: File path to use for packet captures
|
||||
# s1ap_enable: Enable or disable the PCAP.
|
||||
# s1ap_filename: File name where to save the PCAP.
|
||||
#
|
||||
#####################################################################
|
||||
[pcap]
|
||||
enable = false
|
||||
filename = /tmp/enb.pcap
|
||||
s1ap_enable = false
|
||||
s1ap_filename = /tmp/enb_s1ap.pcap
|
||||
|
||||
#####################################################################
|
||||
# Log configuration
|
||||
#
|
||||
# Log levels can be set for individual layers. "all_level" sets log
|
||||
# level for all layers unless otherwise configured.
|
||||
# Format: e.g. phy_level = info
|
||||
#
|
||||
# In the same way, packet hex dumps can be limited for each level.
|
||||
# "all_hex_limit" sets the hex limit for all layers unless otherwise
|
||||
# configured.
|
||||
# Format: e.g. phy_hex_limit = 32
|
||||
#
|
||||
# Logging layers: rf, phy, phy_lib, mac, rlc, pdcp, rrc, gtpu, s1ap, stack, all
|
||||
# Logging levels: debug, info, warning, error, none
|
||||
#
|
||||
# filename: File path to use for log output. Can be set to stdout
|
||||
# to print logs to standard output
|
||||
# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created.
|
||||
# If set to negative, a single log file will be created.
|
||||
#####################################################################
|
||||
[log]
|
||||
all_level = warning
|
||||
all_hex_limit = 32
|
||||
filename = /tmp/enb.log
|
||||
file_max_size = -1
|
||||
|
||||
[gui]
|
||||
enable = false
|
||||
|
||||
#####################################################################
|
||||
# Scheduler configuration options
|
||||
#
|
||||
# max_aggr_level: Optional maximum aggregation level index (l=log2(L) can be 0, 1, 2 or 3)
|
||||
# pdsch_mcs: Optional fixed PDSCH MCS (ignores reported CQIs if specified)
|
||||
# pdsch_max_mcs: Optional PDSCH MCS limit
|
||||
# pusch_mcs: Optional fixed PUSCH MCS (ignores reported CQIs if specified)
|
||||
# pusch_max_mcs: Optional PUSCH MCS limit
|
||||
# min_nof_ctrl_symbols: Minimum number of control symbols
|
||||
# max_nof_ctrl_symbols: Maximum number of control symbols
|
||||
#
|
||||
#####################################################################
|
||||
[scheduler]
|
||||
#max_aggr_level = -1
|
||||
#pdsch_mcs = -1
|
||||
#pdsch_max_mcs = -1
|
||||
#pusch_mcs = -1
|
||||
#pusch_max_mcs = 16
|
||||
#min_nof_ctrl_symbols = 1
|
||||
#max_nof_ctrl_symbols = 3
|
||||
|
||||
#####################################################################
|
||||
# eMBMS configuration options
|
||||
#
|
||||
# enable: Enable MBMS transmission in the eNB
|
||||
# m1u_multiaddr: Multicast addres the M1-U socket will register to
|
||||
# m1u_if_addr: Address of the inteferface the M1-U interface will listen for multicast packets.
|
||||
# mcs: Modulation and Coding scheme for MBMS traffic.
|
||||
#
|
||||
#####################################################################
|
||||
[embms]
|
||||
#enable = false
|
||||
#m1u_multiaddr = 239.255.0.1
|
||||
#m1u_if_addr = 127.0.1.201
|
||||
#mcs = 20
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Channel emulator options:
|
||||
# enable: Enable/Disable internal Downlink/Uplink channel emulator
|
||||
#
|
||||
# -- AWGN Generator
|
||||
# awgn.enable: Enable/disable AWGN generator
|
||||
# awgn.snr: Target SNR in dB
|
||||
#
|
||||
# -- Fading emulator
|
||||
# fading.enable: Enable/disable fading simulator
|
||||
# fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc)
|
||||
#
|
||||
# -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2
|
||||
# Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period
|
||||
# delay.enable: Enable/disable delay simulator
|
||||
# delay.period_s: Delay period in seconds.
|
||||
# delay.init_time_s: Delay initial time in seconds.
|
||||
# delay.maximum_us: Maximum delay in microseconds
|
||||
# delay.minumum_us: Minimum delay in microseconds
|
||||
#
|
||||
# -- Radio-Link Failure (RLF) Emulator
|
||||
# rlf.enable: Enable/disable RLF simulator
|
||||
# rlf.t_on_ms: Time for On state of the channel (ms)
|
||||
# rlf.t_off_ms: Time for Off state of the channel (ms)
|
||||
#
|
||||
# -- High Speed Train Doppler model simulator
|
||||
# hst.enable: Enable/Disable HST simulator
|
||||
# hst.period_s: HST simulation period in seconds
|
||||
# hst.fd_hz: Doppler frequency in Hz
|
||||
# hst.init_time_s: Initial time in seconds
|
||||
#####################################################################
|
||||
[channel.dl]
|
||||
#enable = false
|
||||
|
||||
[channel.dl.awgn]
|
||||
#enable = false
|
||||
#snr = 30
|
||||
|
||||
[channel.dl.fading]
|
||||
#enable = false
|
||||
#model = none
|
||||
|
||||
[channel.dl.delay]
|
||||
#enable = false
|
||||
#period_s = 3600
|
||||
#init_time_s = 0
|
||||
#maximum_us = 100
|
||||
#minimum_us = 10
|
||||
|
||||
[channel.dl.rlf]
|
||||
#enable = false
|
||||
#t_on_ms = 10000
|
||||
#t_off_ms = 2000
|
||||
|
||||
[channel.dl.hst]
|
||||
#enable = false
|
||||
#period_s = 7.2
|
||||
#fd_hz = 750.0
|
||||
#init_time_s = 0.0
|
||||
|
||||
[channel.ul]
|
||||
#enable = false
|
||||
|
||||
[channel.ul.awgn]
|
||||
#enable = false
|
||||
#n0 = -30
|
||||
|
||||
[channel.ul.fading]
|
||||
#enable = false
|
||||
#model = none
|
||||
|
||||
[channel.ul.delay]
|
||||
#enable = false
|
||||
#period_s = 3600
|
||||
#init_time_s = 0
|
||||
#maximum_us = 100
|
||||
#minimum_us = 10
|
||||
|
||||
[channel.ul.rlf]
|
||||
#enable = false
|
||||
#t_on_ms = 10000
|
||||
#t_off_ms = 2000
|
||||
|
||||
[channel.ul.hst]
|
||||
#enable = false
|
||||
#period_s = 7.2
|
||||
#fd_hz = -750.0
|
||||
#init_time_s = 0.0
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Expert configuration options
|
||||
#
|
||||
# pusch_max_its: Maximum number of turbo decoder iterations (Default 4)
|
||||
# pusch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental)
|
||||
# nof_phy_threads: Selects the number of PHY threads (maximum 4, minimum 1, default 3)
|
||||
# metrics_period_secs: Sets the period at which metrics are requested from the eNB.
|
||||
# metrics_csv_enable: Write eNB metrics to CSV file.
|
||||
# metrics_csv_filename: File path to use for CSV metrics.
|
||||
# pregenerate_signals: Pregenerate uplink signals after attach. Improves CPU performance.
|
||||
# tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR)
|
||||
# rrc_inactivity_timer Inactivity timeout used to remove UE context from RRC (in milliseconds).
|
||||
# max_prach_offset_us: Maximum allowed RACH offset (in us)
|
||||
# eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1).
|
||||
# eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0).
|
||||
#
|
||||
#####################################################################
|
||||
[expert]
|
||||
#pusch_max_its = 8 # These are half iterations
|
||||
#pusch_8bit_decoder = false
|
||||
#nof_phy_threads = 3
|
||||
#metrics_period_secs = 1
|
||||
#metrics_csv_enable = false
|
||||
#metrics_csv_filename = /tmp/enb_metrics.csv
|
||||
#pregenerate_signals = false
|
||||
#tx_amplitude = 0.6
|
||||
#rrc_inactivity_timer = 30000
|
||||
#max_prach_offset_us = 30
|
||||
#eea_pref_list = EEA0, EEA2, EEA1
|
||||
#eia_pref_list = EIA2, EIA1, EIA0
|
||||
@@ -1,176 +0,0 @@
|
||||
sib1 =
|
||||
{
|
||||
intra_freq_reselection = "Allowed";
|
||||
q_rx_lev_min = -65;
|
||||
//p_max = 3;
|
||||
cell_barred = "NotBarred"
|
||||
si_window_length = 20;
|
||||
sched_info =
|
||||
(
|
||||
{
|
||||
si_periodicity = 16;
|
||||
|
||||
// comma-separated array of SIB-indexes (from 3 to 13), leave empty or commented to just scheduler sib2
|
||||
si_mapping_info = [ 3 ];
|
||||
}
|
||||
);
|
||||
system_info_value_tag = 0;
|
||||
};
|
||||
|
||||
sib2 =
|
||||
{
|
||||
rr_config_common_sib =
|
||||
{
|
||||
rach_cnfg =
|
||||
{
|
||||
num_ra_preambles = 52;
|
||||
preamble_init_rx_target_pwr = -104;
|
||||
pwr_ramping_step = 6; // in dB
|
||||
preamble_trans_max = 10;
|
||||
ra_resp_win_size = 10; // in ms
|
||||
mac_con_res_timer = 64; // in ms
|
||||
max_harq_msg3_tx = 4;
|
||||
};
|
||||
bcch_cnfg =
|
||||
{
|
||||
modification_period_coeff = 16; // in ms
|
||||
};
|
||||
pcch_cnfg =
|
||||
{
|
||||
default_paging_cycle = 32; // in rf
|
||||
nB = "1";
|
||||
};
|
||||
prach_cnfg =
|
||||
{
|
||||
root_sequence_index = 128;
|
||||
prach_cnfg_info =
|
||||
{
|
||||
high_speed_flag = false;
|
||||
prach_config_index = 3;
|
||||
prach_freq_offset = 2;
|
||||
zero_correlation_zone_config = 5;
|
||||
};
|
||||
};
|
||||
pdsch_cnfg =
|
||||
{
|
||||
/* Warning: Currently disabled and forced to p_b=1 for TM2/3/4 and p_b=0 for TM1
|
||||
*/
|
||||
p_b = 1;
|
||||
rs_power = 0;
|
||||
};
|
||||
pusch_cnfg =
|
||||
{
|
||||
n_sb = 1;
|
||||
hopping_mode = "inter-subframe";
|
||||
pusch_hopping_offset = 2;
|
||||
enable_64_qam = false; // 64QAM PUSCH is not currently enabled
|
||||
ul_rs =
|
||||
{
|
||||
cyclic_shift = 0;
|
||||
group_assignment_pusch = 0;
|
||||
group_hopping_enabled = false;
|
||||
sequence_hopping_enabled = false;
|
||||
};
|
||||
};
|
||||
pucch_cnfg =
|
||||
{
|
||||
delta_pucch_shift = 2;
|
||||
n_rb_cqi = 2;
|
||||
n_cs_an = 0;
|
||||
n1_pucch_an = 12;
|
||||
};
|
||||
ul_pwr_ctrl =
|
||||
{
|
||||
p0_nominal_pusch = -85;
|
||||
alpha = 0.7;
|
||||
p0_nominal_pucch = -107;
|
||||
delta_flist_pucch =
|
||||
{
|
||||
format_1 = 0;
|
||||
format_1b = 3;
|
||||
format_2 = 1;
|
||||
format_2a = 2;
|
||||
format_2b = 2;
|
||||
};
|
||||
delta_preamble_msg3 = 6;
|
||||
};
|
||||
ul_cp_length = "len1";
|
||||
};
|
||||
|
||||
ue_timers_and_constants =
|
||||
{
|
||||
t300 = 2000; // in ms
|
||||
t301 = 100; // in ms
|
||||
t310 = 200; // in ms
|
||||
n310 = 1;
|
||||
t311 = 10000; // in ms
|
||||
n311 = 1;
|
||||
};
|
||||
|
||||
freqInfo =
|
||||
{
|
||||
ul_carrier_freq_present = true;
|
||||
ul_bw_present = true;
|
||||
additional_spectrum_emission = 1;
|
||||
};
|
||||
|
||||
time_alignment_timer = "INFINITY"; // use "sf500", "sf750", etc.
|
||||
};
|
||||
|
||||
sib3 =
|
||||
{
|
||||
cell_reselection_common = {
|
||||
q_hyst = 2; // in dB
|
||||
},
|
||||
cell_reselection_serving = {
|
||||
s_non_intra_search = 3,
|
||||
thresh_serving_low = 2,
|
||||
cell_resel_prio = 6
|
||||
},
|
||||
intra_freq_reselection = {
|
||||
q_rx_lev_min = -61,
|
||||
p_max = 23,
|
||||
s_intra_search = 5,
|
||||
presence_ant_port_1 = true,
|
||||
neigh_cell_cnfg = 1,
|
||||
t_resel_eutra = 1
|
||||
}
|
||||
};
|
||||
|
||||
#####################################################################
|
||||
# sib7 configuration options (See TS 36.331)
|
||||
# Contains GERAN neighbor information for CSFB and inter-rat handover.
|
||||
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
|
||||
#
|
||||
# t_resel_geran: Cell reselection timer (seconds)
|
||||
# carrier_freqs_info_list: A list of carrier frequency groups.
|
||||
# cell_resel_prio: Absolute priority of the carrier frequency group
|
||||
# ncc_permitted: 8-bit bitmap of NCC carriers permitted for monitoring
|
||||
# q_rx_lev_min: Minimum receive level in gsm cell, ([field_val] * 2) - 115 = [level in dBm]
|
||||
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency
|
||||
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency
|
||||
# start_arfcn: Initial search ARFCN value
|
||||
# band_ind: One of "dcs1800" or "pcs1900" Disambiguates ARFCNs in these bands, has no meaning for other ARFCNs.
|
||||
# explicit_list_of_arfcns: List of ARFCN numbers in the group
|
||||
#
|
||||
#####################################################################
|
||||
sib7 =
|
||||
{
|
||||
t_resel_geran = 1;
|
||||
carrier_freqs_info_list =
|
||||
(
|
||||
{
|
||||
cell_resel_prio = 0;
|
||||
ncc_permitted = 255;
|
||||
q_rx_lev_min = 0;
|
||||
thresh_x_high = 2;
|
||||
thresh_x_low = 2;
|
||||
|
||||
start_arfcn = 871;
|
||||
band_ind = "dcs1800";
|
||||
explicit_list_of_arfcns = (
|
||||
871
|
||||
);
|
||||
}
|
||||
);
|
||||
};
|
||||
@@ -1,437 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
version=0.9.1
|
||||
|
||||
display_help() {
|
||||
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
|
||||
echo "COMMANDS:" >&2
|
||||
echo " add {imsi key opc}: adds a user to the database with default values"
|
||||
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
|
||||
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
|
||||
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
|
||||
echo " remove {imsi}: removes a user from the database"
|
||||
echo " reset: WIPES OUT the database and restores it to an empty default"
|
||||
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
|
||||
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
|
||||
echo " type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6"
|
||||
echo " help: displays this message and exits"
|
||||
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
|
||||
}
|
||||
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "help" ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "add" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "addT1" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "remove" ]; then
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IMSI=$2
|
||||
mongo --eval "db.subscribers.remove({\"imsi\": \"$IMSI\"});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "reset" ]; then
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mongo --eval "db.subscribers.remove({});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr\": \"$IP\" }});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip6" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr6\": \"$IP\" }});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "type" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
TYPE=$3
|
||||
|
||||
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
display_help
|
||||
@@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
MONGO_CONTAINER=open5gs-and-srs-enb-usrp_mongo_1
|
||||
|
||||
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.9.1)
|
||||
COMMANDS:
|
||||
add {imsi key opc}: adds a user to the database with default values
|
||||
add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE
|
||||
addT1 {imsi key opc}: adds a user to the database with 3 differents apns
|
||||
addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn
|
||||
remove {imsi}: removes a user from the database
|
||||
reset: WIPES OUT the database and restores it to an empty default
|
||||
static_ip {imsi ip4}: adds a static IP assignment to an already-existing user
|
||||
static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user
|
||||
type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6
|
||||
help: displays this message and exits
|
||||
default values are as follows: APN "internet", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only
|
||||
'
|
||||
|
||||
docker cp open5gs-dbctl $MONGO_CONTAINER:/
|
||||
|
||||
#SISMOCOM SIM1
|
||||
docker exec -ti $MONGO_CONTAINER /open5gs-dbctl add 901700000039226 491BB1C6E1179AED538028AE7AD525B3 3B7FB099B3A6D16873B33F023B1679E9
|
||||
|
||||
@@ -1,437 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
version=0.9.1
|
||||
|
||||
display_help() {
|
||||
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
|
||||
echo "COMMANDS:" >&2
|
||||
echo " add {imsi key opc}: adds a user to the database with default values"
|
||||
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
|
||||
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
|
||||
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
|
||||
echo " remove {imsi}: removes a user from the database"
|
||||
echo " reset: WIPES OUT the database and restores it to an empty default"
|
||||
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
|
||||
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
|
||||
echo " type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6"
|
||||
echo " help: displays this message and exits"
|
||||
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
|
||||
}
|
||||
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "help" ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "add" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "addT1" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
|
||||
{ \$setOnInsert:
|
||||
{
|
||||
\"imsi\" : \"$IMSI\",
|
||||
\"subscribed_rau_tau_timer\" : NumberInt(12),
|
||||
\"network_access_mode\" : NumberInt(2),
|
||||
\"subscriber_status\" : NumberInt(0),
|
||||
\"access_restriction_data\" : NumberInt(32),
|
||||
\"slice\" :
|
||||
[{
|
||||
\"sst\" : NumberInt(1),
|
||||
\"default_indicator\" : true,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ue\" :
|
||||
{
|
||||
\"addr\" : \"$IP\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}],
|
||||
}],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"security\" :
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"amf\" : \"8000\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\"
|
||||
},
|
||||
\"__v\" : 0
|
||||
},
|
||||
},
|
||||
upsert=true);" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "remove" ]; then
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IMSI=$2
|
||||
mongo --eval "db.subscribers.remove({\"imsi\": \"$IMSI\"});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "reset" ]; then
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mongo --eval "db.subscribers.remove({});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr\": \"$IP\" }});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip6" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr6\": \"$IP\" }});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "type" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
TYPE=$3
|
||||
|
||||
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" open5gs
|
||||
exit 0
|
||||
fi
|
||||
|
||||
display_help
|
||||
@@ -7,23 +7,23 @@
|
||||
deploy the EPC core (open5gs) with:
|
||||
|
||||
```
|
||||
docker-compose -f epc.yaml up -d
|
||||
docker compose -f epc.yaml up -d
|
||||
```
|
||||
|
||||
Register subscriber in ngc with `/register_subscriber.sh`.
|
||||
Register subscriber in ngc with `./register_subscriber.sh`.
|
||||
|
||||
|
||||
# Download uhd_images
|
||||
|
||||
|
||||
python3 ../../uhd_image_downloader.py -i ../../uhd_images
|
||||
python3 uhd_image_downloader.py -i ../../uhd_images
|
||||
|
||||
# Deployment RAN (enodeB)
|
||||
|
||||
Deploy with
|
||||
|
||||
```
|
||||
docker-compose -f srs-enb.yaml up -d
|
||||
docker compose -f srs-enb.yaml up -d
|
||||
```
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ To test ue connectivity use a commercial smartphone, insert the SIM card previou
|
||||
Undeploy with:
|
||||
|
||||
```
|
||||
docker-compose -f srslte.yaml down
|
||||
docker-compose -f epc.yaml down -v
|
||||
docker compose -f srs-enb.yaml down
|
||||
docker compose -f epc.yaml down -v
|
||||
|
||||
```
|
||||
94
docs/open5gs-and-srsran-4g-usrp/config/entrypoint.sh
Executable file
94
docs/open5gs-and-srsran-4g-usrp/config/entrypoint.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
echo "Usage : $0 [epc|enb|ue]"
|
||||
exit
|
||||
fi
|
||||
|
||||
# epc tun iface create
|
||||
function tun_create {
|
||||
if ! grep "srs_spgw_sgi" /proc/net/dev > /dev/null; then
|
||||
echo "Creating srs_spgw_sgi device"
|
||||
ip tuntap add name srs_spgw_sgi mode tun
|
||||
fi
|
||||
ip link set srs_spgw_sgi up
|
||||
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
if [ "$ENABLE_NAT" = true ] ; then
|
||||
iptables -t nat -A POSTROUTING -s $IPV4_TUN_SUBNET ! -o srs_spgw_sgi -j MASQUERADE
|
||||
fi
|
||||
}
|
||||
|
||||
# IP address resolution from interfaces or hostnames
|
||||
if [[ -z "${GTP_BIND_ADDR}" ]] ; then
|
||||
export GTP_BIND_ADDR=$(ip addr show $GTP_BIND_INTERFACE | grep -Po 'inet \K[\d.]+')
|
||||
fi
|
||||
if [[ -z "${S1C_BIND_ADDR}" ]] ; then
|
||||
export S1C_BIND_ADDR=$(ip addr show $S1C_BIND_INTERFACE | grep -Po 'inet \K[\d.]+')
|
||||
fi
|
||||
if [[ -z "${MME_BIND_ADDR}" ]] ; then
|
||||
export MME_BIND_ADDR=$(ip addr show $MME_BIND_INTERFACE | grep -Po 'inet \K[\d.]+')
|
||||
fi
|
||||
if [[ ! -z "$MME_HOSTNAME" ]] ; then
|
||||
export MME_ADDR="$(host -4 $MME_HOSTNAME |awk '/has.*address/{print $NF; exit}')"
|
||||
fi
|
||||
if [[ ! -z "$ENB_HOSTNAME" ]] ; then
|
||||
export ENB_ADDRESS="$(host -4 $ENB_HOSTNAME |awk '/has.*address/{print $NF; exit}')"
|
||||
fi
|
||||
if [[ ! -z "$UE_HOSTNAME" ]] ; then
|
||||
export UE_ADDRESS="$(host -4 $UE_HOSTNAME |awk '/has.*address/{print $NF; exit}')"
|
||||
fi
|
||||
|
||||
command=$1
|
||||
shift
|
||||
|
||||
case "$command" in
|
||||
epc)
|
||||
echo "Launching srsepc"
|
||||
tun_create
|
||||
envsubst < /etc/srsran/epc.conf > epc.conf
|
||||
/bin/srsepc /epc.conf $@
|
||||
;;
|
||||
enb)
|
||||
echo "Launching srsenb"
|
||||
envsubst < /etc/srsran/enb.conf > enb.conf
|
||||
if [ "$ZMQ" = true ] ; then
|
||||
sed -i 's/#device_name = zmq/device_name = zmq\ndevice_args = tx_port=tcp:\/\/*:2000,rx_port=tcp:\/\/${UE_ADDRESS}:2001,id=enb,base_srate=23.04e6/' enb.conf
|
||||
envsubst < enb.conf > enb_temp.conf
|
||||
mv enb_temp.conf enb.conf
|
||||
fi
|
||||
envsubst < /etc/srsran/rr.conf > rr.conf
|
||||
/bin/srsenb enb.conf $@
|
||||
;;
|
||||
ue)
|
||||
echo "Launching srsue"
|
||||
|
||||
envsubst < /etc/srsran/ue.conf > ue.conf
|
||||
if [ "$SRSUE_5G" = true ] ; then
|
||||
sed -i 's/#device_name = zmq/device_name = zmq\ndevice_args = tx_port=tcp:\/\/${UE_ADDRESS}:2001,rx_port=tcp:\/\/${ENB_ADDRESS}:2000,id=ue,base_srate=23.04e6/' ue.conf
|
||||
sed -i 's/^dl_earfcn =.*/dl_earfcn = ${DL_EARFCN}/' ue.conf
|
||||
sed -i 's/^# bands = .*/bands = ${BANDS}/' ue.conf
|
||||
sed -i 's/^#apn =.*/apn = ${APN}/' ue.conf
|
||||
sed -i 's/^#apn_protocol =.*/apn_protocol = ${APN_PROTOCOL}/' ue.conf
|
||||
sed -i 's/^#srate =.*/srate = ${SRATE}e6/' ue.conf
|
||||
sed -i 's/^#rx_gain =.*/rx_gain = ${RX_GAIN}/' ue.conf
|
||||
sed -i 's/^tx_gain =.*/tx_gain = ${TX_GAIN}/' ue.conf
|
||||
sed -E -i '/^\[rat\.eutra\]/{n;n;s/^#nof_carriers = .*/nof_carriers = ${EUTRA_NOF_CARRIERS}/}' ue.conf
|
||||
sed -E -i '/^\[rat\.nr\]/{n;n;s/^# nof_carriers = .*/nof_carriers = ${NR_NOF_CARRIERS}/}' ue.conf
|
||||
sed -i '/\[rat.nr\]/a\max_nof_prb = ${NR_MAX_NOF_PRB}' ue.conf
|
||||
sed -i '/\[rat.nr\]/a\nof_prb = ${NR_NOF_PRB}' ue.conf
|
||||
|
||||
elif [ "$ZMQ" = true ] ; then
|
||||
sed -i 's/#device_name = zmq/device_name = zmq\ndevice_args = tx_port=tcp:\/\/${UE_ADDRESS}:2001,rx_port=tcp:\/\/${ENB_ADDRESS}:2000,id=ue,base_srate=23.04e6/' ue.conf
|
||||
|
||||
fi
|
||||
envsubst < ue.conf > ue_temp.conf
|
||||
mv ue_temp.conf ue.conf
|
||||
/bin/srsue ue.conf $@
|
||||
;;
|
||||
*)
|
||||
echo "unknown component $1. should be epc, enb or ue."
|
||||
;;
|
||||
esac
|
||||
283
docs/open5gs-and-srsran-4g-usrp/config/mme.yaml
Normal file
283
docs/open5gs-and-srsran-4g-usrp/config/mme.yaml
Normal file
@@ -0,0 +1,283 @@
|
||||
logger:
|
||||
file:
|
||||
path: /opt/open5gs/var/log/open5gs/mme.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
# max:
|
||||
# ue: 1024 # The number of UE can be increased depending on memory size.
|
||||
# peer: 64
|
||||
|
||||
mme:
|
||||
freeDiameter: /opt/open5gs/etc/freeDiameter/mme.conf
|
||||
s1ap:
|
||||
server:
|
||||
- dev: eth0
|
||||
gtpc:
|
||||
server:
|
||||
- dev: eth0
|
||||
client:
|
||||
sgwc:
|
||||
- address: sgwc
|
||||
tac: 1
|
||||
smf:
|
||||
- address: smf
|
||||
tac: 1
|
||||
metrics:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 9090
|
||||
gummei:
|
||||
- plmn_id:
|
||||
mcc: 999
|
||||
mnc: 70
|
||||
mme_gid: 2
|
||||
mme_code: 1
|
||||
tai:
|
||||
- plmn_id:
|
||||
mcc: 999
|
||||
mnc: 70
|
||||
tac: 1
|
||||
security:
|
||||
integrity_order: [EIA2, EIA1, EIA0]
|
||||
ciphering_order: [EEA0, EEA1, EEA2]
|
||||
network_name:
|
||||
full: Open5GS
|
||||
short: Next
|
||||
mme_name: open5gs-mme0
|
||||
time:
|
||||
# t3402:
|
||||
# value: 720 # 12 minutes * 60 = 720 seconds
|
||||
# t3412:
|
||||
# value: 3240 # 54 minutes * 60 = 3240 seconds
|
||||
# t3423:
|
||||
# value: 720 # 12 minutes * 60 = 720 seconds
|
||||
|
||||
################################################################################
|
||||
# S1AP Server
|
||||
################################################################################
|
||||
# o Listen on address available in `eth0` interface
|
||||
# ngap:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
#
|
||||
################################################################################
|
||||
# GTP-C Server
|
||||
################################################################################
|
||||
# o Listen on IPv4 and IPv6
|
||||
# gtpc:
|
||||
# server:
|
||||
# - address: 127.0.0.2
|
||||
# - address: ::1
|
||||
#
|
||||
################################################################################
|
||||
# GTP-C Client
|
||||
################################################################################
|
||||
# o SGW selection by eNodeB TAC
|
||||
# (either single TAC or multiple TACs, DECIMAL representation)
|
||||
# gtpc:
|
||||
# client:
|
||||
# sgwc:
|
||||
# - address: 127.0.0.3
|
||||
# tac: 26000
|
||||
# - address: 127.0.2.2
|
||||
# tac: [25000, 27000, 28000]
|
||||
#
|
||||
# o SGW selection by e_cell_id(28bit)
|
||||
# (either single or multiple e_cell_id, HEX representation)
|
||||
# gtpc:
|
||||
# client:
|
||||
# sgwc:
|
||||
# - address: 127.0.0.3
|
||||
# e_cell_id: abcde01
|
||||
# - address: 127.0.2.2
|
||||
# e_cell_id: [12345, a9413, 98765]
|
||||
#
|
||||
# o SMF selection by APN
|
||||
# gtpc:
|
||||
# client:
|
||||
# smf:
|
||||
# - address: 127.0.0.4
|
||||
# apn: internet
|
||||
# - address: 127.0.0.5
|
||||
# apn: volte
|
||||
#
|
||||
# o SMF selection by eNodeB TAC
|
||||
# (either single TAC or multiple TACs, DECIMAL representation)
|
||||
# gtpc:
|
||||
# client:
|
||||
# smf:
|
||||
# - address: 127.0.0.4
|
||||
# tac: 26000
|
||||
# - address: 127.0.2.4
|
||||
# tac: [25000, 27000, 28000]
|
||||
#
|
||||
# o SMF selection by e_cell_id(28bit)
|
||||
# (either single or multiple e_cell_id, HEX representation)
|
||||
# gtpc:
|
||||
# client:
|
||||
# smf:
|
||||
# - address: 127.0.0.4
|
||||
# e_cell_id: abcde01
|
||||
# - address: 127.0.2.4
|
||||
# e_cell_id: [12345, a9413, 98765]
|
||||
#
|
||||
# o One SGSN is defined.
|
||||
# If prefer_ipv4 is not true, [fd69:f21d:873c:fa::2] is selected.
|
||||
# gtpc:
|
||||
# client:
|
||||
# sgsn:
|
||||
# - address:
|
||||
# - 127.0.0.3
|
||||
# - fd69:f21d:873c:fa::2
|
||||
# routes:
|
||||
# - rai:
|
||||
# lai:
|
||||
# plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# lac: 43690
|
||||
# rac: 187
|
||||
# ci: 1223
|
||||
#
|
||||
#
|
||||
# o Two SGSNs are defined. Last one is used by default if no
|
||||
# matching RAI+CI route is found.
|
||||
# gtpc:
|
||||
# client:
|
||||
# sgsn:
|
||||
# - address:
|
||||
# - 127.0.0.3
|
||||
# - fd69:f21d:873c:fa::2
|
||||
# routes:
|
||||
# - rai:
|
||||
# lai:
|
||||
# plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# lac: 43690
|
||||
# rac: 187
|
||||
# ci: 1223
|
||||
# - name: sgsn3.open5gs.org
|
||||
# default_route: true
|
||||
#
|
||||
################################################################################
|
||||
# SGaAP Server
|
||||
################################################################################
|
||||
# o MSC/VLR
|
||||
# sgsap:
|
||||
# server:
|
||||
# - address: 127.0.0.2
|
||||
# map:
|
||||
# tai:
|
||||
# plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# tac: 4131
|
||||
# lai:
|
||||
# plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# lac: 43691
|
||||
# map:
|
||||
# tai:
|
||||
# plmn_id:
|
||||
# mcc: 002
|
||||
# mnc: 02
|
||||
# tac: 4132
|
||||
# lai:
|
||||
# plmn_id:
|
||||
# mcc: 002
|
||||
# mnc: 02
|
||||
# lac: 43692
|
||||
# - address: msc.open5gs.org
|
||||
# map:
|
||||
# tai:
|
||||
# plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# tac: 4133
|
||||
# lai:
|
||||
# plmn_id:
|
||||
# mcc: 002
|
||||
# mnc: 02
|
||||
# lac: 43693
|
||||
#
|
||||
################################################################################
|
||||
# 3GPP Specification
|
||||
################################################################################
|
||||
# o GUMMEI
|
||||
# gummei:
|
||||
# - plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# mme_gid: 2
|
||||
# mme_code: 1
|
||||
# - plmn_id:
|
||||
# - mcc: 002
|
||||
# mnc: 02
|
||||
# - mcc: 003
|
||||
# mnc: 03
|
||||
# mme_gid: [3, 4]
|
||||
# mme_code:
|
||||
# - 2
|
||||
# - 3
|
||||
#
|
||||
# o TAI
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# tac: [1, 3, 5]
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 002
|
||||
# mnc: 02
|
||||
# tac: [6-10, 15-18]
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 003
|
||||
# mnc: 03
|
||||
# tac: 20
|
||||
# - plmn_id:
|
||||
# mcc: 004
|
||||
# mnc: 04
|
||||
# tac: 21
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 005
|
||||
# mnc: 05
|
||||
# tac: [22, 28]
|
||||
# - plmn_id:
|
||||
# mcc: 006
|
||||
# mnc: 06
|
||||
# tac: [30-32, 34, 36-38, 40-42, 44, 46, 48]
|
||||
# - plmn_id:
|
||||
# mcc: 007
|
||||
# mnc: 07
|
||||
# tac: 50
|
||||
# - plmn_id:
|
||||
# mcc: 008
|
||||
# mnc: 08
|
||||
# tac: 60
|
||||
# - plmn_id:
|
||||
# mcc: 009
|
||||
# mnc: 09
|
||||
# tac: [70, 80]
|
||||
#
|
||||
# o Access Control
|
||||
# access_control:
|
||||
# - default_reject_cause: 13
|
||||
# - plmn_id:
|
||||
# reject_cause: 15
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# - plmn_id:
|
||||
# mcc: 002
|
||||
# mnc: 02
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
#
|
||||
# o Relative Capacity
|
||||
# relative_capacity: 100
|
||||
458
docs/open5gs-and-srsran-4g-usrp/config/srs/enb.conf
Normal file
458
docs/open5gs-and-srsran-4g-usrp/config/srs/enb.conf
Normal file
@@ -0,0 +1,458 @@
|
||||
#####################################################################
|
||||
# srsENB configuration file
|
||||
#####################################################################
|
||||
|
||||
#####################################################################
|
||||
# eNB configuration
|
||||
#
|
||||
# enb_id: 20-bit eNB identifier.
|
||||
# mcc: Mobile Country Code
|
||||
# mnc: Mobile Network Code
|
||||
# mme_addr: IP address of MME for S1 connnection
|
||||
# gtp_bind_addr: Local IP address to bind for GTP connection
|
||||
# gtp_advertise_addr: IP address of eNB to advertise for DL GTP-U Traffic
|
||||
# s1c_bind_addr: Local IP address to bind for S1AP connection
|
||||
# s1c_bind_port: Source port for S1AP connection (0 means any)
|
||||
# n_prb: Number of Physical Resource Blocks (6,15,25,50,75,100)
|
||||
# tm: Transmission mode 1-4 (TM1 default)
|
||||
# nof_ports: Number of Tx ports (1 port default, set to 2 for TM2/3/4)
|
||||
#
|
||||
#####################################################################
|
||||
[enb]
|
||||
enb_id = ${ENB_ID}
|
||||
mcc = ${MCC}
|
||||
mnc = ${MNC}
|
||||
mme_addr = ${MME_ADDR}
|
||||
gtp_bind_addr = ${GTP_BIND_ADDR}
|
||||
s1c_bind_addr = ${S1C_BIND_ADDR}
|
||||
n_prb = 50
|
||||
#tm = 4
|
||||
#nof_ports = 2
|
||||
|
||||
#####################################################################
|
||||
# eNB configuration files
|
||||
#
|
||||
# sib_config: SIB1, SIB2 and SIB3 configuration file
|
||||
# note: When enabling MBMS, use the sib.conf.mbsfn configuration file which includes SIB13
|
||||
# rr_config: Radio Resources configuration file
|
||||
# rb_config: SRB/DRB configuration file
|
||||
#####################################################################
|
||||
[enb_files]
|
||||
sib_config = sib.conf
|
||||
rr_config = rr.conf
|
||||
rb_config = rb.conf
|
||||
|
||||
#####################################################################
|
||||
# RF configuration
|
||||
#
|
||||
# dl_earfcn: EARFCN code for DL (only valid if a single cell is configured in rr.conf)
|
||||
# tx_gain: Transmit gain (dB).
|
||||
# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled
|
||||
#
|
||||
# Optional parameters:
|
||||
# dl_freq: Override DL frequency corresponding to dl_earfcn
|
||||
# ul_freq: Override UL frequency corresponding to dl_earfcn (must be set if dl_freq is set)
|
||||
# device_name: Device driver family
|
||||
# Supported options: "auto" (uses first driver found), "UHD", "bladeRF", "soapy", "zmq" or "Sidekiq"
|
||||
# device_args: Arguments for the device driver. Options are "auto" or any string.
|
||||
# Default for UHD: "recv_frame_size=9232,send_frame_size=9232"
|
||||
# Default for bladeRF: ""
|
||||
# time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay
|
||||
# from antenna to timestamp insertion.
|
||||
# Default "auto". B210 USRP: 100 samples, bladeRF: 27
|
||||
#####################################################################
|
||||
[rf]
|
||||
#dl_earfcn = 3350
|
||||
tx_gain = 80
|
||||
rx_gain = 40
|
||||
|
||||
#device_name = auto
|
||||
|
||||
# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings:
|
||||
# USRP B210: num_recv_frames=64,num_send_frames=64
|
||||
# And for 75 PRBs, also append ",master_clock_rate=15.36e6" to the device args
|
||||
|
||||
# For best performance when BW<5 MHz (25 PRB), use the following device_args settings:
|
||||
# USRP B210: send_frame_size=512,recv_frame_size=512
|
||||
|
||||
#device_args = auto
|
||||
#time_adv_nsamples = auto
|
||||
|
||||
# Example for ZMQ-based operation with TCP transport for I/Q samples
|
||||
#device_name = zmq
|
||||
#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
|
||||
|
||||
#####################################################################
|
||||
# Packet capture configuration
|
||||
#
|
||||
# MAC-layer packets are captured to a file in the compact format which can
|
||||
# be decoded by Wireshark. For decoding, use the UDP dissector and the UDP
|
||||
# heuristic dissection. Edit the preferences (Edit > Preferences >
|
||||
# Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with
|
||||
# Protocol=udp. Further, enable the heuristic dissection in UDP under:
|
||||
# Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp
|
||||
# For more information see: https://wiki.wireshark.org/MAC-LTE
|
||||
# Configuring this Wireshark preferences is needed for decoding the MAC PCAP
|
||||
# files as well as for the live network capture option.
|
||||
#
|
||||
# Please note that this setting will by default only capture MAC
|
||||
# frames on dedicated channels, and not SIB. You have to build with
|
||||
# WRITE_SIB_PCAP enabled in srsenb/src/stack/mac/mac.cc if you want
|
||||
# SIB to be part of the MAC pcap file.
|
||||
#
|
||||
# S1AP Packets are captured to a file in the compact format which can
|
||||
# be decoded by the Wireshark s1ap dissector with DLT 150.
|
||||
# To use the dissector, edit the preferences for DLT_USER to
|
||||
# add an entry with DLT=150, Payload Protocol=s1ap.
|
||||
#
|
||||
# enable: Enable MAC layer packet captures (true/false)
|
||||
# filename: File path to use for LTE MAC packet captures
|
||||
# nr_filename: File path to use for NR MAC packet captures
|
||||
# s1ap_enable: Enable or disable the PCAP.
|
||||
# s1ap_filename: File name where to save the PCAP.
|
||||
#
|
||||
# mac_net_enable: Enable MAC layer packet captures sent over the network (true/false default: false)
|
||||
# bind_ip: Bind IP address for MAC network trace (default: "0.0.0.0")
|
||||
# bind_port: Bind port for MAC network trace (default: 5687)
|
||||
# client_ip: Client IP address for MAC network trace (default: "127.0.0.1")
|
||||
# client_port Client IP address for MAC network trace (default: 5847)
|
||||
#####################################################################
|
||||
[pcap]
|
||||
enable = false
|
||||
filename = /tmp/enb.pcap
|
||||
s1ap_enable = false
|
||||
s1ap_filename = /tmp/enb_s1ap.pcap
|
||||
|
||||
#####################################################################
|
||||
# Log configuration
|
||||
#
|
||||
# Log levels can be set for individual layers. "all_level" sets log
|
||||
# level for all layers unless otherwise configured.
|
||||
# Format: e.g. phy_level = info
|
||||
#
|
||||
# In the same way, packet hex dumps can be limited for each level.
|
||||
# "all_hex_limit" sets the hex limit for all layers unless otherwise
|
||||
# configured.
|
||||
# Format: e.g. phy_hex_limit = 32
|
||||
#
|
||||
# Logging layers: rf, phy, phy_lib, mac, rlc, pdcp, rrc, gtpu, s1ap, stack, all
|
||||
# Logging levels: debug, info, warning, error, none
|
||||
#
|
||||
# filename: File path to use for log output. Can be set to stdout
|
||||
# to print logs to standard output
|
||||
# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created.
|
||||
# If set to negative, a single log file will be created.
|
||||
#####################################################################
|
||||
[log]
|
||||
all_level = warning
|
||||
all_hex_limit = 32
|
||||
filename = /tmp/enb.log
|
||||
file_max_size = -1
|
||||
|
||||
[gui]
|
||||
enable = false
|
||||
|
||||
#####################################################################
|
||||
# Scheduler configuration options
|
||||
#
|
||||
# sched_policy: User MAC scheduling policy (E.g. time_rr, time_pf)
|
||||
# min_aggr_level: Optional minimum aggregation level index (l=log2(L) can be 0, 1, 2 or 3)
|
||||
# max_aggr_level: Optional maximum aggregation level index (l=log2(L) can be 0, 1, 2 or 3)
|
||||
# adaptive_aggr_level: Boolean flag to enable/disable adaptive aggregation level based on target BLER
|
||||
# pdsch_mcs: Optional fixed PDSCH MCS (ignores reported CQIs if specified)
|
||||
# pdsch_max_mcs: Optional PDSCH MCS limit
|
||||
# pusch_mcs: Optional fixed PUSCH MCS (ignores reported CQIs if specified)
|
||||
# pusch_max_mcs: Optional PUSCH MCS limit
|
||||
# min_nof_ctrl_symbols: Minimum number of control symbols
|
||||
# max_nof_ctrl_symbols: Maximum number of control symbols
|
||||
# pucch_multiplex_enable: Allow PUCCH HARQ to collide with PUSCH and other PUCCH
|
||||
# pucch_harq_max_rb: Maximum number of RB to be used for PUCCH on the edges of the grid.
|
||||
# If defined and greater than 0, the scheduler will avoid DL PDCCH allocations if
|
||||
# PUCCH HARQ falls outside this region
|
||||
# target_bler: Target BLER (in decimal) to achieve via adaptive link
|
||||
# max_delta_dl_cqi: Maximum shift in CQI for adaptive DL link
|
||||
# max_delta_ul_snr: Maximum shift in UL SNR for adaptive UL link
|
||||
# adaptive_dl_mcs_step_size: Step size or learning rate used in adaptive DL MCS link
|
||||
# adaptive_ul_mcs_step_size: Step size or learning rate used in adaptive UL MCS link
|
||||
# min_tpc_tti_interval: Minimum TTI interval between TPCs different than 1
|
||||
# ul_snr_avg_alpha: Exponential Average alpha coefficient used in estimation of UL SNR
|
||||
# init_ul_snr_value: Initial UL SNR value used for computing MCS in the first UL grant
|
||||
# init_dl_cqi: DL CQI value used before any CQI report is available to the eNB
|
||||
# max_sib_coderate: Upper bound on SIB and RAR grants coderate
|
||||
# pdcch_cqi_offset: CQI offset in derivation of PDCCH aggregation level
|
||||
# nr_pdsch_mcs: Optional fixed NR PDSCH MCS (ignores reported CQIs if specified)
|
||||
# nr_pusch_mcs: Optional fixed NR PUSCH MCS (ignores reported CQIs if specified)
|
||||
#
|
||||
#####################################################################
|
||||
[scheduler]
|
||||
#policy = time_pf
|
||||
#policy_args = 2
|
||||
#min_aggr_level = 0
|
||||
#max_aggr_level = 3
|
||||
#adaptive_aggr_level = false
|
||||
#pdsch_mcs = -1
|
||||
#pdsch_max_mcs = -1
|
||||
#pusch_mcs = -1
|
||||
#pusch_max_mcs = 16
|
||||
#min_nof_ctrl_symbols = 1
|
||||
#max_nof_ctrl_symbols = 3
|
||||
#pucch_multiplex_enable = false
|
||||
#pucch_harq_max_rb = 0
|
||||
#target_bler = 0.05
|
||||
#max_delta_dl_cqi = 5
|
||||
#max_delta_ul_snr = 5
|
||||
#adaptive_dl_mcs_step_size = 0.001
|
||||
#adaptive_ul_mcs_step_size = 0.001
|
||||
#min_tpc_tti_interval = 1
|
||||
#ul_snr_avg_alpha=0.05
|
||||
#init_ul_snr_value=5
|
||||
#init_dl_cqi=5
|
||||
#max_sib_coderate=0.3
|
||||
#pdcch_cqi_offset=0
|
||||
#nr_pdsch_mcs=28
|
||||
#nr_pusch_mcs=28
|
||||
|
||||
#####################################################################
|
||||
# Slicing configuration
|
||||
# enable_eMBB Enables enhanced mobile broadband (eMBB) slice in the gNodeB
|
||||
# enable_URLLC Enables Ultra Reliable Low Latency Communications (URLLC) slice in the gNodeB
|
||||
# enable_MIoT Enables Massive Internet of Things (MIoT) slice in the gNodeB
|
||||
# eMBB_sd eMBB slice differentiator
|
||||
# URLLC_sd URLLC slice differentiator
|
||||
# MIoT_sd MIoT slice differentiator
|
||||
#####################################################################
|
||||
[slicing]
|
||||
#enable_eMBB = false
|
||||
#enable_URLLC = false
|
||||
#enable_MIoT = false
|
||||
#eMBB_sd = 1
|
||||
#URLLC_sd = 1
|
||||
#MIoT_sd = 1
|
||||
|
||||
#####################################################################
|
||||
# eMBMS configuration options
|
||||
#
|
||||
# enable: Enable MBMS transmission in the eNB
|
||||
# m1u_multiaddr: Multicast address the M1-U socket will register to
|
||||
# m1u_if_addr: Address of the interface the M1-U interface will listen to for multicast packets
|
||||
# mcs: Modulation and Coding scheme for MBMS traffic
|
||||
#
|
||||
#####################################################################
|
||||
[embms]
|
||||
#enable = false
|
||||
#m1u_multiaddr = 239.255.0.1
|
||||
#m1u_if_addr = 127.0.1.201
|
||||
#mcs = 20
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Channel emulator options:
|
||||
# enable: Enable/disable internal Downlink/Uplink channel emulator
|
||||
#
|
||||
# -- AWGN Generator
|
||||
# awgn.enable: Enable/disable AWGN generator
|
||||
# awgn.snr: Target SNR in dB
|
||||
#
|
||||
# -- Fading emulator
|
||||
# fading.enable: Enable/disable fading simulator
|
||||
# fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc)
|
||||
#
|
||||
# -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2
|
||||
# Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period
|
||||
# delay.enable: Enable/disable delay simulator
|
||||
# delay.period_s: Delay period in seconds
|
||||
# delay.init_time_s: Delay initial time in seconds
|
||||
# delay.maximum_us: Maximum delay in microseconds
|
||||
# delay.minumum_us: Minimum delay in microseconds
|
||||
#
|
||||
# -- Radio-Link Failure (RLF) Emulator
|
||||
# rlf.enable: Enable/disable RLF simulator
|
||||
# rlf.t_on_ms: Time for On state of the channel (ms)
|
||||
# rlf.t_off_ms: Time for Off state of the channel (ms)
|
||||
#
|
||||
# -- High Speed Train Doppler model simulator
|
||||
# hst.enable: Enable/disable HST simulator
|
||||
# hst.period_s: HST simulation period in seconds
|
||||
# hst.fd_hz: Doppler frequency in Hz
|
||||
# hst.init_time_s: Initial time in seconds
|
||||
#####################################################################
|
||||
[channel.dl]
|
||||
#enable = false
|
||||
|
||||
[channel.dl.awgn]
|
||||
#enable = false
|
||||
#snr = 30
|
||||
|
||||
[channel.dl.fading]
|
||||
#enable = false
|
||||
#model = none
|
||||
|
||||
[channel.dl.delay]
|
||||
#enable = false
|
||||
#period_s = 3600
|
||||
#init_time_s = 0
|
||||
#maximum_us = 100
|
||||
#minimum_us = 10
|
||||
|
||||
[channel.dl.rlf]
|
||||
#enable = false
|
||||
#t_on_ms = 10000
|
||||
#t_off_ms = 2000
|
||||
|
||||
[channel.dl.hst]
|
||||
#enable = false
|
||||
#period_s = 7.2
|
||||
#fd_hz = 750.0
|
||||
#init_time_s = 0.0
|
||||
|
||||
[channel.ul]
|
||||
#enable = false
|
||||
|
||||
[channel.ul.awgn]
|
||||
#enable = false
|
||||
#n0 = -30
|
||||
|
||||
[channel.ul.fading]
|
||||
#enable = false
|
||||
#model = none
|
||||
|
||||
[channel.ul.delay]
|
||||
#enable = false
|
||||
#period_s = 3600
|
||||
#init_time_s = 0
|
||||
#maximum_us = 100
|
||||
#minimum_us = 10
|
||||
|
||||
[channel.ul.rlf]
|
||||
#enable = false
|
||||
#t_on_ms = 10000
|
||||
#t_off_ms = 2000
|
||||
|
||||
[channel.ul.hst]
|
||||
#enable = false
|
||||
#period_s = 7.2
|
||||
#fd_hz = -750.0
|
||||
#init_time_s = 0.0
|
||||
|
||||
#####################################################################
|
||||
# CFR configuration options
|
||||
#
|
||||
# The CFR module provides crest factor reduction for the transmitted signal.
|
||||
#
|
||||
# enable: Enable or disable the CFR. Default: disabled
|
||||
#
|
||||
# mode: manual: CFR threshold is set by cfr_manual_thres (default).
|
||||
# auto_ema: CFR threshold is adaptive based on the signal PAPR. Power avg. with Exponential Moving Average.
|
||||
# The time constant of the averaging can be tweaked with the ema_alpha parameter.
|
||||
# auto_cma: CFR threshold is adaptive based on the signal PAPR. Power avg. with Cumulative Moving Average.
|
||||
# Use with care, as CMA's increasingly slow response may be unsuitable for most use cases.
|
||||
#
|
||||
# strength: Ratio between amplitude-limited vs unprocessed signal (0 to 1). Default: 1
|
||||
# manual_thres: Fixed manual clipping threshold for CFR manual mode. Default: 0.5
|
||||
# auto_target_papr: Signal PAPR target (in dB) in CFR auto modes. output PAPR can be higher due to peak smoothing. Default: 8
|
||||
# ema_alpha: Alpha coefficient for the power average in auto_ema mode. Default: 1/7
|
||||
#
|
||||
#####################################################################
|
||||
[cfr]
|
||||
#enable = false
|
||||
#mode = manual
|
||||
#manual_thres = 0.5
|
||||
#strength = 1
|
||||
#auto_target_papr = 8
|
||||
#ema_alpha = 0.0143
|
||||
|
||||
# E2 Agent configuration options
|
||||
#
|
||||
# ric_ip: IP address of the RIC controller
|
||||
# ric_port: Port of the RIC controller
|
||||
# ric_bind_ip: Local IP address to bind for RIC connection
|
||||
# ric_bind_port: Local port to bind for RIC connection
|
||||
# max_ric_setup_retries: Maximum amount of retries to setup the RIC connection. If this value is exceeded, an alarm is written to the log. -1 means infinity.
|
||||
# ric_connect_timer: Connection Retry Timer for RIC connection (seconds)
|
||||
#####################################################################
|
||||
[e2_agent]
|
||||
#enable = false
|
||||
#ric_ip = 127.0.0.1
|
||||
#ric_port = 36421
|
||||
#ric_bind_ip = 127.0.0.1
|
||||
#ric_bind_port = 36425
|
||||
#max_ric_setup_retries = -1
|
||||
#ric_connect_timer = 10
|
||||
|
||||
#####################################################################
|
||||
# Expert configuration options
|
||||
#
|
||||
# pusch_max_its: Maximum number of turbo decoder iterations (default: 4)
|
||||
# nr_pusch_max_its: Maximum number of LDPC iterations for NR (Default 10)
|
||||
# pusch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (experimental)
|
||||
# nof_phy_threads: Selects the number of PHY threads (maximum: 4, minimum: 1, default: 3)
|
||||
# metrics_period_secs: Sets the period at which metrics are requested from the eNB
|
||||
# metrics_csv_enable: Write eNB metrics to CSV file.
|
||||
# metrics_csv_filename: File path to use for CSV metrics
|
||||
# report_json_enable: Write eNB report to JSON file (default: disabled)
|
||||
# report_json_filename: Report JSON filename (default: /tmp/enb_report.json)
|
||||
# report_json_asn1_oct: Prints ASN1 messages encoded as an octet string instead of plain text in the JSON report file
|
||||
# alarms_log_enable: Enable Alarms logging (default: disabled)
|
||||
# alarms_filename: Alarms logging filename (default: /tmp/alarms.log)
|
||||
# tracing_enable: Write source code tracing information to a file
|
||||
# tracing_filename: File path to use for tracing information
|
||||
# tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store
|
||||
# stdout_ts_enable: Prints once per second the timestamp into stdout
|
||||
# tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR)
|
||||
# rrc_inactivity_timer Inactivity timeout used to remove UE context from RRC (in milliseconds)
|
||||
# max_mac_dl_kos: Maximum number of consecutive KOs in DL before triggering the UE's release (default: 100)
|
||||
# max_mac_ul_kos: Maximum number of consecutive KOs in UL before triggering the UE's release (default: 100)
|
||||
# max_prach_offset_us: Maximum allowed RACH offset (in us)
|
||||
# nof_prealloc_ues: Number of UE memory resources to preallocate during eNB initialization for faster UE creation (default: 8)
|
||||
# rlf_release_timer_ms: Time taken by eNB to release UE context after it detects an RLF
|
||||
# eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1)
|
||||
# eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0)
|
||||
# gtpu_tunnel_timeout: Time that GTPU takes to release indirect forwarding tunnel since the last received GTPU PDU (0 for no timer)
|
||||
# ts1_reloc_prep_timeout: S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds
|
||||
# ts1_reloc_overall_timeout: S1AP TS 36.413 TS1RelocOverall Expiry Timeout value in milliseconds
|
||||
# rlf_release_timer_ms: Time taken by eNB to release UE context after it detects a RLF
|
||||
# rlf_min_ul_snr_estim: SNR threshold in dB below which the enb is notified with RLF ko
|
||||
# s1_setup_max_retries: Maximum amount of retries to setup the S1AP connection. If this value is exceeded, an alarm is written to the log. -1 means infinity.
|
||||
# s1_connect_timer: Connection Retry Timer for S1 connection (seconds)
|
||||
# rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings
|
||||
# use_cedron_f_est_alg: Whether to use Cedron algorithm for TA estimation or not (Default: false)
|
||||
#####################################################################
|
||||
[expert]
|
||||
#pusch_max_its = 8 # These are half iterations
|
||||
#nr_pusch_max_its = 10
|
||||
#pusch_8bit_decoder = false
|
||||
#nof_phy_threads = 3
|
||||
#metrics_period_secs = 1
|
||||
#metrics_csv_enable = false
|
||||
#metrics_csv_filename = /tmp/enb_metrics.csv
|
||||
#report_json_enable = true
|
||||
#report_json_filename = /tmp/enb_report.json
|
||||
#report_json_asn1_oct = false
|
||||
#alarms_log_enable = true
|
||||
#alarms_filename = /tmp/enb_alarms.log
|
||||
#tracing_enable = true
|
||||
#tracing_filename = /tmp/enb_tracing.log
|
||||
#tracing_buffcapacity = 1000000
|
||||
#stdout_ts_enable = false
|
||||
#tx_amplitude = 0.6
|
||||
#rrc_inactivity_timer = 30000
|
||||
#max_mac_dl_kos = 100
|
||||
#max_mac_ul_kos = 100
|
||||
#max_prach_offset_us = 30
|
||||
#nof_prealloc_ues = 8
|
||||
#rlf_release_timer_ms = 4000
|
||||
#lcid_padding = 3
|
||||
#eea_pref_list = EEA0, EEA2, EEA1
|
||||
#eia_pref_list = EIA2, EIA1, EIA0
|
||||
#gtpu_tunnel_timeout = 0
|
||||
#extended_cp = false
|
||||
#ts1_reloc_prep_timeout = 10000
|
||||
#ts1_reloc_overall_timeout = 10000
|
||||
#rlf_release_timer_ms = 4000
|
||||
#rlf_min_ul_snr_estim = -2
|
||||
#s1_setup_max_retries = -1
|
||||
#s1_connect_timer = 10
|
||||
#rx_gain_offset = 62
|
||||
#mac_prach_bi = 0
|
||||
#use_cedron_f_est_alg = false
|
||||
186
docs/open5gs-and-srsran-4g-usrp/config/srs/rb.conf
Normal file
186
docs/open5gs-and-srsran-4g-usrp/config/srs/rb.conf
Normal file
@@ -0,0 +1,186 @@
|
||||
// All times are in ms. Use -1 for infinity, where available
|
||||
|
||||
// 4G Section
|
||||
|
||||
// srb1_config = {
|
||||
// rlc_config = {
|
||||
// ul_am = {
|
||||
// t_poll_retx = 45;
|
||||
// poll_pdu = -1;
|
||||
// poll_byte = -1;
|
||||
// max_retx_thresh = 4;
|
||||
// };
|
||||
// dl_am = {
|
||||
// t_reordering = 35;
|
||||
// t_status_prohibit = 0;
|
||||
// };
|
||||
// enb_specific = {
|
||||
// dl_max_retx_thresh = 32;
|
||||
// };
|
||||
// };
|
||||
// }
|
||||
|
||||
// srb2_config = {
|
||||
// rlc_config = {
|
||||
// ul_am = {
|
||||
// t_poll_retx = 45;
|
||||
// poll_pdu = -1;
|
||||
// poll_byte = -1;
|
||||
// max_retx_thresh = 4;
|
||||
// };
|
||||
// dl_am = {
|
||||
// t_reordering = 35;
|
||||
// t_status_prohibit = 0;
|
||||
// };
|
||||
// enb_specific = {
|
||||
// dl_max_retx_thresh = 32;
|
||||
// };
|
||||
// };
|
||||
// }
|
||||
|
||||
qci_config = (
|
||||
{
|
||||
qci = 7;
|
||||
pdcp_config = {
|
||||
discard_timer = -1;
|
||||
pdcp_sn_size = 12;
|
||||
}
|
||||
rlc_config = {
|
||||
ul_um = {
|
||||
sn_field_length = 10;
|
||||
};
|
||||
dl_um = {
|
||||
sn_field_length = 10;
|
||||
t_reordering = 45;
|
||||
};
|
||||
};
|
||||
logical_channel_config = {
|
||||
priority = 13;
|
||||
prioritized_bit_rate = -1;
|
||||
bucket_size_duration = 100;
|
||||
log_chan_group = 2;
|
||||
};
|
||||
enb_specific = {
|
||||
dl_max_retx_thresh = 32;
|
||||
};
|
||||
},
|
||||
{
|
||||
qci = 9;
|
||||
pdcp_config = {
|
||||
discard_timer = 150;
|
||||
status_report_required = true;
|
||||
}
|
||||
rlc_config = {
|
||||
ul_am = {
|
||||
t_poll_retx = 120;
|
||||
poll_pdu = 64;
|
||||
poll_byte = 750;
|
||||
max_retx_thresh = 16;
|
||||
};
|
||||
dl_am = {
|
||||
t_reordering = 50;
|
||||
t_status_prohibit = 50;
|
||||
};
|
||||
};
|
||||
logical_channel_config = {
|
||||
priority = 11;
|
||||
prioritized_bit_rate = -1;
|
||||
bucket_size_duration = 100;
|
||||
log_chan_group = 3;
|
||||
};
|
||||
enb_specific = {
|
||||
dl_max_retx_thresh = 32;
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
// 5G Section
|
||||
srb1_5g_config = {
|
||||
rlc_config = {
|
||||
ul_am = {
|
||||
sn_field_len = 12;
|
||||
t_poll_retx = 45;
|
||||
poll_pdu = -1;
|
||||
poll_byte = -1;
|
||||
max_retx_thres = 8;
|
||||
};
|
||||
dl_am = {
|
||||
sn_field_len = 12;
|
||||
t_reassembly = 35;
|
||||
t_status_prohibit = 10;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
srb2_5g_config = {
|
||||
rlc_config = {
|
||||
ul_am = {
|
||||
sn_field_len = 12;
|
||||
t_poll_retx = 45;
|
||||
poll_pdu = -1;
|
||||
poll_byte = -1;
|
||||
max_retx_thres = 8;
|
||||
};
|
||||
dl_am = {
|
||||
sn_field_len = 12;
|
||||
t_reassembly = 35;
|
||||
t_status_prohibit = 10;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
five_qi_config = (
|
||||
{
|
||||
five_qi = 7;
|
||||
pdcp_nr_config = {
|
||||
drb = {
|
||||
pdcp_sn_size_ul = 18;
|
||||
pdcp_sn_size_dl = 18;
|
||||
discard_timer = 50;
|
||||
integrity_protection = false;
|
||||
status_report = false;
|
||||
};
|
||||
t_reordering = 50;
|
||||
};
|
||||
rlc_config = {
|
||||
um_bi_dir = {
|
||||
ul_um = {
|
||||
sn_field_len = 12;
|
||||
};
|
||||
dl_um = {
|
||||
sn_field_len = 12;
|
||||
t_reassembly = 50;
|
||||
};
|
||||
};
|
||||
};
|
||||
},
|
||||
{
|
||||
five_qi = 9;
|
||||
pdcp_nr_config = {
|
||||
drb = {
|
||||
pdcp_sn_size_ul = 18;
|
||||
pdcp_sn_size_dl = 18;
|
||||
discard_timer = 50;
|
||||
integrity_protection = false;
|
||||
status_report = false;
|
||||
};
|
||||
t_reordering = 50;
|
||||
};
|
||||
rlc_config = {
|
||||
am = {
|
||||
ul_am = {
|
||||
sn_field_len = 12;
|
||||
t_poll_retx = 50;
|
||||
poll_pdu = 4;
|
||||
poll_byte = 3000;
|
||||
max_retx_thres = 4;
|
||||
};
|
||||
dl_am = {
|
||||
sn_field_len = 12;
|
||||
t_reassembly = 50;
|
||||
t_status_prohibit = 50;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
@@ -47,6 +47,7 @@ phy_cnfg =
|
||||
//subframe = [0, 10, 20, 30]; // Optional vector of subframe indices every period where CQI resources will be allocated (default uses all)
|
||||
nof_prb = 2;
|
||||
m_ri = 8; // RI period in CQI period
|
||||
//subband_k = 1; // If enabled and > 0, configures sub-band CQI reporting and defines K (see 36.213 7.2.2). If disabled, configures wideband CQI
|
||||
};
|
||||
};
|
||||
|
||||
@@ -61,6 +62,15 @@ cell_list =
|
||||
dl_earfcn = 3350;
|
||||
//ul_earfcn = 21400;
|
||||
ho_active = false;
|
||||
//meas_gap_period = 0; // 0 (inactive), 40 or 80
|
||||
//meas_gap_offset_subframe = [6, 12, 18, 24, 30];
|
||||
// target_pusch_sinr = -1;
|
||||
// target_pucch_sinr = -1;
|
||||
// enable_phr_handling = false;
|
||||
// min_phr_thres = 0;
|
||||
// allowed_meas_bw = 6;
|
||||
// t304 = 2000; // in msec. possible values: 50, 100, 150, 200, 500, 1000, 2000
|
||||
// tx_gain = 20.0; // in dB. This gain is set by scaling the source signal.
|
||||
|
||||
// CA cells
|
||||
scell_list = (
|
||||
@@ -74,17 +84,36 @@ cell_list =
|
||||
eci = 0x19C02;
|
||||
dl_earfcn = 2850;
|
||||
pci = 2;
|
||||
//direct_forward_path_available = false;
|
||||
//allowed_meas_bw = 6;
|
||||
//cell_individual_offset = 0;
|
||||
}
|
||||
);
|
||||
|
||||
// ReportCfg (only A3 supported)
|
||||
meas_report_desc = {
|
||||
a3_report_type = "RSRP";
|
||||
a3_offset = 6;
|
||||
a3_hysteresis = 0;
|
||||
a3_time_to_trigger = 480;
|
||||
rsrq_config = 4;
|
||||
};
|
||||
// Select measurement report configuration (all reports are combined with all measurement objects)
|
||||
meas_report_desc =
|
||||
(
|
||||
{
|
||||
eventA = 3
|
||||
a3_offset = 6;
|
||||
hysteresis = 0;
|
||||
time_to_trigger = 480;
|
||||
trigger_quant = "RSRP";
|
||||
max_report_cells = 1;
|
||||
report_interv = 120;
|
||||
report_amount = 1;
|
||||
}
|
||||
);
|
||||
meas_quant_desc = {
|
||||
// averaging filter coefficient
|
||||
rsrq_config = 4;
|
||||
rsrp_config = 4;
|
||||
};
|
||||
}
|
||||
// Add here more cells
|
||||
);
|
||||
|
||||
nr_cell_list =
|
||||
(
|
||||
// no NR cells
|
||||
);
|
||||
303
docs/open5gs-and-srsran-4g-usrp/config/srs/sib.conf
Normal file
303
docs/open5gs-and-srsran-4g-usrp/config/srs/sib.conf
Normal file
@@ -0,0 +1,303 @@
|
||||
#####################################################################
|
||||
# sib1 configuration options (See TS 36.331)
|
||||
#
|
||||
# additional_plmns: A list of additional PLMN identities.
|
||||
# mcc: MCC
|
||||
# mnc: MNC
|
||||
# cell_reserved_for_oper: One of "reserved" or "notReserved", default is "notReserved"
|
||||
#
|
||||
#####################################################################
|
||||
sib1 =
|
||||
{
|
||||
intra_freq_reselection = "Allowed";
|
||||
q_rx_lev_min = -65;
|
||||
//p_max = 3;
|
||||
cell_barred = "NotBarred"
|
||||
si_window_length = 20;
|
||||
sched_info =
|
||||
(
|
||||
{
|
||||
si_periodicity = 16;
|
||||
|
||||
// comma-separated array of SIB-indexes (from 3 to 13), leave empty or commented to just scheduler sib2
|
||||
si_mapping_info = [ 3 ];
|
||||
}
|
||||
);
|
||||
system_info_value_tag = 0;
|
||||
};
|
||||
|
||||
sib2 =
|
||||
{
|
||||
rr_config_common_sib =
|
||||
{
|
||||
rach_cnfg =
|
||||
{
|
||||
num_ra_preambles = 52;
|
||||
preamble_init_rx_target_pwr = -104;
|
||||
pwr_ramping_step = 6; // in dB
|
||||
preamble_trans_max = 10;
|
||||
ra_resp_win_size = 10; // in ms
|
||||
mac_con_res_timer = 64; // in ms
|
||||
max_harq_msg3_tx = 4;
|
||||
};
|
||||
bcch_cnfg =
|
||||
{
|
||||
modification_period_coeff = 16; // in ms
|
||||
};
|
||||
pcch_cnfg =
|
||||
{
|
||||
default_paging_cycle = 32; // in rf
|
||||
nB = "1";
|
||||
};
|
||||
prach_cnfg =
|
||||
{
|
||||
root_sequence_index = 128;
|
||||
prach_cnfg_info =
|
||||
{
|
||||
high_speed_flag = false;
|
||||
prach_config_index = 3;
|
||||
prach_freq_offset = 2;
|
||||
zero_correlation_zone_config = 5;
|
||||
};
|
||||
};
|
||||
pdsch_cnfg =
|
||||
{
|
||||
/* Warning: Currently disabled and forced to p_b=1 for TM2/3/4 and p_b=0 for TM1
|
||||
*/
|
||||
p_b = 1;
|
||||
rs_power = 0;
|
||||
};
|
||||
pusch_cnfg =
|
||||
{
|
||||
n_sb = 1;
|
||||
hopping_mode = "inter-subframe";
|
||||
pusch_hopping_offset = 2;
|
||||
enable_64_qam = false; // 64QAM PUSCH is not currently enabled
|
||||
ul_rs =
|
||||
{
|
||||
cyclic_shift = 0;
|
||||
group_assignment_pusch = 0;
|
||||
group_hopping_enabled = false;
|
||||
sequence_hopping_enabled = false;
|
||||
};
|
||||
};
|
||||
pucch_cnfg =
|
||||
{
|
||||
delta_pucch_shift = 1;
|
||||
n_rb_cqi = 1;
|
||||
n_cs_an = 0;
|
||||
n1_pucch_an = 12;
|
||||
};
|
||||
ul_pwr_ctrl =
|
||||
{
|
||||
p0_nominal_pusch = -85;
|
||||
alpha = 0.7;
|
||||
p0_nominal_pucch = -107;
|
||||
delta_flist_pucch =
|
||||
{
|
||||
format_1 = 0;
|
||||
format_1b = 3;
|
||||
format_2 = 1;
|
||||
format_2a = 2;
|
||||
format_2b = 2;
|
||||
};
|
||||
delta_preamble_msg3 = 6;
|
||||
};
|
||||
ul_cp_length = "len1";
|
||||
};
|
||||
|
||||
ue_timers_and_constants =
|
||||
{
|
||||
t300 = 2000; // in ms
|
||||
t301 = 100; // in ms
|
||||
t310 = 200; // in ms
|
||||
n310 = 1;
|
||||
t311 = 10000; // in ms
|
||||
n311 = 1;
|
||||
};
|
||||
|
||||
freqInfo =
|
||||
{
|
||||
ul_carrier_freq_present = true;
|
||||
ul_bw_present = true;
|
||||
additional_spectrum_emission = 1;
|
||||
};
|
||||
|
||||
time_alignment_timer = "INFINITY"; // use "sf500", "sf750", etc.
|
||||
};
|
||||
|
||||
sib3 =
|
||||
{
|
||||
cell_reselection_common = {
|
||||
q_hyst = 2; // in dB
|
||||
},
|
||||
cell_reselection_serving = {
|
||||
s_non_intra_search = 3,
|
||||
thresh_serving_low = 2,
|
||||
cell_resel_prio = 6
|
||||
},
|
||||
intra_freq_reselection = {
|
||||
q_rx_lev_min = -61,
|
||||
p_max = 23,
|
||||
s_intra_search = 5,
|
||||
presence_ant_port_1 = true,
|
||||
neigh_cell_cnfg = 1,
|
||||
t_resel_eutra = 1
|
||||
}
|
||||
};
|
||||
|
||||
#####################################################################
|
||||
# sib5 configuration options (See TS 36.331)
|
||||
# Contains information relevant for inter-frequency cell re-selection.
|
||||
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
|
||||
#
|
||||
# inter_freq_carrier_freq_list: A list of neighbouring inter-frequencies.
|
||||
# dl_carrier_freq: The EARFCN for the EUTRA carrier frequency.
|
||||
# q_rx_lev_min: Minimum received RSRP level in the E-UTRA cell, ([field_val] * 2) = [level in dBm].
|
||||
# p_max: Optional maximum allowed transmission power for the neighbouring E-UTRA cells on this carrier frequency.
|
||||
# t_resel_eutra: Cell reselection timer (seconds).
|
||||
# t_resel_eutra_sf: Optional speed dependent ScalingFactor for t_resel_eutra.
|
||||
# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
|
||||
# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
|
||||
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency.
|
||||
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency.
|
||||
# allowed_meas_bw: Maximum allowed measurement bandwidth on a carrier frequency .
|
||||
# presence_ant_port_1: whether all the neighbouring cells use Antenna Port 1.
|
||||
# cell_resel_prio: Optional absolute priority of the carrier frequency group.
|
||||
# neigh_cell_cfg: Information related to MBSFN and TDD UL/DL configuration of neighbour cells.
|
||||
# q_offset_freq: Frequency specific offset for equal priority E-UTRAN frequencies.
|
||||
# inter_freq_neigh_cell_list: A List of inter-frequency neighbouring cells with specific cell re-selection parameters.
|
||||
# phys_cell_id: Physical layer identity of the cell.
|
||||
# q_offset_cell: Cell spcific offset.
|
||||
# inter_freq_black_cell_list: A List of blacklisted inter-frequency neighbouring cells.
|
||||
# start: The lowest physical cell identity in the range.
|
||||
# range: The number of physical cell identities in the range.
|
||||
#
|
||||
#####################################################################
|
||||
sib5 =
|
||||
{
|
||||
inter_freq_carrier_freq_list =
|
||||
(
|
||||
{
|
||||
dl_carrier_freq = 1450;
|
||||
q_rx_lev_min = -70;
|
||||
t_resel_eutra = 2;
|
||||
t_resel_eutra_sf = {
|
||||
sf_medium = "0.25";
|
||||
sf_high = "1.0";
|
||||
};
|
||||
thresh_x_high = 3;
|
||||
thresh_x_low = 2;
|
||||
allowed_meas_bw = 75;
|
||||
presence_ant_port_1 = True;
|
||||
cell_resel_prio = 4;
|
||||
neigh_cell_cfg = 2;
|
||||
q_offset_freq = -6;
|
||||
inter_freq_neigh_cell_list =
|
||||
(
|
||||
{
|
||||
phys_cell_id = 500;
|
||||
q_offset_cell = 2;
|
||||
}
|
||||
);
|
||||
inter_freq_black_cell_list =
|
||||
(
|
||||
{
|
||||
start = 123;
|
||||
range = 4;
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
#####################################################################
|
||||
# sib6 configuration options (See TS 36.331)
|
||||
# Contains UTRA neighbor information for inter-rat handover.
|
||||
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
|
||||
#
|
||||
# t_resel_utra: Cell reselection timer (seconds)
|
||||
# t_resel_utra_sf: Optional speed dependent ScalingFactor for t_resel_utra.
|
||||
# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
|
||||
# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
|
||||
# carrier_freq_list_utra_fdd / carrier_freq_list_utra_tdd: A list of carrier frequencies of UTRA FDD / TDD.
|
||||
# carrier_freq: The UARFCN for the UTRA carrier frequency.
|
||||
# cell_resel_prio: Optional absolute priority of the carrier frequency group.
|
||||
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency.
|
||||
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency.
|
||||
# q_rx_lev_min: Minimum receive level in UTRA cell, ([field_val] * 2) + 1 = [level in dBm].
|
||||
# p_max_utra: The maximum allowed transmission power on the (uplink) carrier frequency.
|
||||
# q_qual_min: Minimum required quality leve in UTRA cell, applicable only for FDD cells.
|
||||
#
|
||||
#####################################################################
|
||||
sib6 =
|
||||
{
|
||||
t_resel_utra = 1;
|
||||
t_resel_utra_sf = {
|
||||
sf_medium = "0.25";
|
||||
sf_high = "1.0";
|
||||
}
|
||||
carrier_freq_list_utra_fdd =
|
||||
(
|
||||
{
|
||||
carrier_freq = 9613;
|
||||
cell_resel_prio = 6;
|
||||
thresh_x_high = 3;
|
||||
thresh_x_low = 2;
|
||||
q_rx_lev_min = -50;
|
||||
p_max_utra = 4;
|
||||
q_qual_min = -10;
|
||||
}
|
||||
);
|
||||
carrier_freq_list_utra_tdd =
|
||||
(
|
||||
{
|
||||
carrier_freq = 9505;
|
||||
thresh_x_high = 1;
|
||||
thresh_x_low = 2;
|
||||
q_rx_lev_min = -50;
|
||||
p_max_utra = -3;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
#####################################################################
|
||||
# sib7 configuration options (See TS 36.331)
|
||||
# Contains GERAN neighbor information for CSFB and inter-rat handover.
|
||||
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
|
||||
#
|
||||
# t_resel_geran: Cell reselection timer (seconds)
|
||||
# t_resel_geran_sf: Optional speed dependent ScalingFactor for t_resel_geran.
|
||||
# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
|
||||
# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
|
||||
# carrier_freqs_info_list: A list of carrier frequency groups.
|
||||
# cell_resel_prio: Absolute priority of the carrier frequency group
|
||||
# ncc_permitted: 8-bit bitmap of NCC carriers permitted for monitoring
|
||||
# q_rx_lev_min: Minimum receive level in gsm cell, ([field_val] * 2) - 115 = [level in dBm]
|
||||
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency
|
||||
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency
|
||||
# start_arfcn: Initial search ARFCN value
|
||||
# band_ind: One of "dcs1800" or "pcs1900" Disambiguates ARFCNs in these bands, has no meaning for other ARFCNs.
|
||||
# explicit_list_of_arfcns: List of ARFCN numbers in the group
|
||||
#
|
||||
#####################################################################
|
||||
sib7 =
|
||||
{
|
||||
t_resel_geran = 1;
|
||||
carrier_freqs_info_list =
|
||||
(
|
||||
{
|
||||
cell_resel_prio = 0;
|
||||
ncc_permitted = 255;
|
||||
q_rx_lev_min = 0;
|
||||
thresh_x_high = 2;
|
||||
thresh_x_low = 2;
|
||||
|
||||
start_arfcn = 871;
|
||||
band_ind = "dcs1800";
|
||||
explicit_list_of_arfcns = (
|
||||
871
|
||||
);
|
||||
}
|
||||
);
|
||||
};
|
||||
@@ -5,36 +5,36 @@ services:
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: open5gs
|
||||
webui:
|
||||
image: openverso/open5gs-webui:2.3.2
|
||||
image: gradiant/open5gs-webui:2.7.1
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
NODE_ENV: dev
|
||||
ports:
|
||||
- 3000:3000
|
||||
nrf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
command: open5gs-nrfd
|
||||
restart : on-failure
|
||||
- 9999:9999
|
||||
smf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-smfd
|
||||
restart : on-failure
|
||||
mme:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.7.1
|
||||
volumes:
|
||||
- ./config/mme.yaml:/opt/open5gs/etc/open5gs/mme.yaml
|
||||
command: open5gs-mmed
|
||||
restart: on-failure
|
||||
ports:
|
||||
- 36412:36412
|
||||
sgwc:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-sgwcd
|
||||
restart : on-failure
|
||||
sgwu:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-sgwud
|
||||
restart : on-failure
|
||||
upf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.7.1
|
||||
user: root
|
||||
command: ["open5gs-upfd"]
|
||||
cap_add:
|
||||
- all
|
||||
@@ -43,15 +43,18 @@ services:
|
||||
ports:
|
||||
- 2152:2152
|
||||
pcrf:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: ["open5gs-pcrfd"]
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
hss:
|
||||
image: openverso/open5gs:2.3.2
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-hssd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
|
||||
nrf:
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-nrfd
|
||||
restart : on-failure
|
||||
856
docs/open5gs-and-srsran-4g-usrp/open5gs-dbctl
Executable file
856
docs/open5gs-and-srsran-4g-usrp/open5gs-dbctl
Executable file
@@ -0,0 +1,856 @@
|
||||
#!/bin/bash
|
||||
|
||||
version=0.10.3
|
||||
|
||||
display_help() {
|
||||
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
|
||||
echo "FLAGS: --db_uri=mongodb://localhost"
|
||||
echo "COMMANDS:" >&2
|
||||
echo " add {imsi key opc}: adds a user to the database with default values"
|
||||
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
|
||||
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
|
||||
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
|
||||
echo " remove {imsi}: removes a user from the database"
|
||||
echo " reset: WIPES OUT the database and restores it to an empty default"
|
||||
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
|
||||
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
|
||||
echo " type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6"
|
||||
echo " help: displays this message and exits"
|
||||
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
|
||||
echo " add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,"
|
||||
echo " add_ue_with_slice {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd"
|
||||
echo " update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE"
|
||||
echo " update_slice {imsi apn sst sd}: adds an slice to an existent UE"
|
||||
echo " showall: shows the list of subscriber in the db"
|
||||
echo " showpretty: shows the list of subscriber in the db in a pretty json tree format"
|
||||
echo " showfiltered: shows {imsi key opc apn ip} information of subscriber"
|
||||
echo " ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\""
|
||||
echo " subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)"
|
||||
|
||||
}
|
||||
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
--db_uri*)
|
||||
DB_URI=`echo $1 | sed -e 's/^[^=]*=//g'`
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
DB_URI="${DB_URI:-mongodb://localhost/open5gs}"
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "help" ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "add" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "addT1" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}
|
||||
],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}
|
||||
],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "remove" ]; then
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IMSI=$2
|
||||
mongosh --eval "db.subscribers.deleteOne({\"imsi\": \"$IMSI\"});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "reset" ]; then
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mongosh --eval "db.subscribers.deleteMany({});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv4\": \"$IP\" }});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip6" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv6\": \"$IP\" }});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "type" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
TYPE=$3
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "add_ue_with_apn" ]; then
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
APN=$5
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_apn imsi key opc apn\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "add_ue_with_slice" ]; then
|
||||
if [ "$#" -eq 7 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
APN=$5
|
||||
SST=$6
|
||||
SD=$7
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt($SST),
|
||||
\"sd\": \"$SD\",
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_slice imsi key opc apn sst sd\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "update_apn" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
APN=$3
|
||||
SLICE_NUM=$4
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
|
||||
{\$push: { \"slice.$SLICE_NUM.session\":
|
||||
{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_apn imsi apn num_slice\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "update_slice" ]; then
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
APN=$3
|
||||
SST=$4
|
||||
SD=$5
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
|
||||
{\$push: { \"slice\":
|
||||
|
||||
{
|
||||
\"sst\" : NumberInt($SST),
|
||||
\"sd\" : \"$SD\",
|
||||
\"default_indicator\" : false,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}]
|
||||
}
|
||||
}
|
||||
});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_slice imsi apn sst sd\""
|
||||
exit 1
|
||||
fi
|
||||
if [ "$1" = "subscriber_status" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
SUB_STATUS=$3
|
||||
OP_DET_BARRING=$4
|
||||
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
|
||||
{\$set: { \"subscriber_status\": $SUB_STATUS,
|
||||
\"operator_determined_barring\": $OP_DET_BARRING
|
||||
}
|
||||
});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl subscriber_status imsi subscriber_status_val={0,1} operator_determined_barring={0..8}"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$1" = "showall" ]; then
|
||||
mongosh --eval "db.subscribers.find()" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
if [ "$1" = "showpretty" ]; then
|
||||
mongosh --eval "db.subscribers.find().pretty()" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
if [ "$1" = "showfiltered" ]; then
|
||||
mongosh --eval "db.subscribers.find({},{'_id':0,'imsi':1,'security.k':1, 'security.opc':1,'slice.session.name':1,'slice.session.ue.ipv4':1})" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "ambr_speed" ]; then
|
||||
if [ "$#" -eq 6 ]; then
|
||||
IMSI=$2
|
||||
DL_VALUE=$3
|
||||
DL_UNIT=$4
|
||||
UL_VALUE=$5
|
||||
UL_UNIT=$6
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},
|
||||
{\$set: {
|
||||
\"ambr\" : {
|
||||
\"downlink\" : {
|
||||
\"value\" : NumberInt($DL_VALUE),
|
||||
\"unit\" : NumberInt($DL_UNIT)
|
||||
},
|
||||
\"uplink\" :{
|
||||
\"value\": NumberInt($UL_VALUE),
|
||||
\"unit\" : NumberInt($UL_UNIT)
|
||||
}
|
||||
},
|
||||
\"slice.0.session.0.ambr\": {
|
||||
\"downlink\" : {
|
||||
\"value\" : NumberInt($DL_VALUE),
|
||||
\"unit\" : NumberInt($DL_UNIT)
|
||||
},
|
||||
\"uplink\" :{
|
||||
\"value\": NumberInt($UL_VALUE),
|
||||
\"unit\" : NumberInt($UL_UNIT)
|
||||
}
|
||||
}
|
||||
}
|
||||
});" $DB_URI
|
||||
|
||||
|
||||
exit $?
|
||||
fi
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl ambr_speed imsi dl_value dl_unit ul_value ul_unit dl is for download and ul is for upload and the unit values are[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ] \""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
display_help
|
||||
43
docs/open5gs-and-srsran-4g-usrp/register_subscriber.sh
Executable file
43
docs/open5gs-and-srsran-4g-usrp/register_subscriber.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
MONGO_CONTAINER=open5gs-and-srsran-4g-usrp-mongo-1
|
||||
|
||||
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.10.3)
|
||||
FLAGS: --db_uri=mongodb://localhost
|
||||
COMMANDS: >&2
|
||||
add {imsi key opc}: adds a user to the database with default values
|
||||
add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE
|
||||
addT1 {imsi key opc}: adds a user to the database with 3 differents apns
|
||||
addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn
|
||||
remove {imsi}: removes a user from the database
|
||||
reset: WIPES OUT the database and restores it to an empty default
|
||||
static_ip {imsi ip4}: adds a static IP assignment to an already-existing user
|
||||
static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user
|
||||
type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6
|
||||
help: displays this message and exits
|
||||
default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only
|
||||
add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,
|
||||
add {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd
|
||||
update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE
|
||||
update_slice {imsi apn sst sd}: adds an slice to an existent UE
|
||||
showall: shows the list of subscriber in the db
|
||||
showpretty: shows the list of subscriber in the db in a pretty json tree format
|
||||
showfiltered: shows {imsi key opc apn ip} information of subscriber
|
||||
ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\"
|
||||
subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)
|
||||
'
|
||||
|
||||
|
||||
docker cp open5gs-dbctl $MONGO_CONTAINER:/
|
||||
|
||||
# docker run -ti --rm \
|
||||
# --net open5gs-and-srsran-4g-usrp_default \
|
||||
# -e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
# gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
#SISMOCOM SIM
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-srsran-4g-usrp_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000053413 E4902EF16990CD9BB1FCC283D42D60EE 7309B7233842606E80C64DF837A6C9B7"
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
version: '3'
|
||||
services:
|
||||
enodeb:
|
||||
image: openverso/srs-lte:20_10_1
|
||||
image: gradiant/srsran-4g:23_11
|
||||
command:
|
||||
- enb
|
||||
privileged: true
|
||||
volumes:
|
||||
- ./config/srs/:/etc/srslte/
|
||||
- ./config/srs/:/etc/srsran/
|
||||
- /dev/bus/usb:/dev/bus/usb
|
||||
- ../../uhd_images:/usr/share/uhd/images
|
||||
- ./config/entrypoint.sh:/entrypoint.sh
|
||||
cap_add:
|
||||
- all
|
||||
environment:
|
||||
MME_HOSTNAME: mme
|
||||
ENB_HOSTNAME: enodeb
|
||||
MCC: "901"
|
||||
MCC: "999"
|
||||
MNC: "70"
|
||||
TAC: "0001"
|
||||
TAC: "1"
|
||||
SRSUE_5G: false
|
||||
ZMQ: false
|
||||
|
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
639
docs/open5gs-and-srsran-4g-usrp/uhd_image_downloader.py
Executable file
639
docs/open5gs-and-srsran-4g-usrp/uhd_image_downloader.py
Executable file
@@ -0,0 +1,639 @@
|
||||
#!/usr/local/bin/python3
|
||||
#
|
||||
# Copyright 2018 Ettus Research, a National Instruments Company
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
#
|
||||
"""
|
||||
Download image files required for USRPs
|
||||
"""
|
||||
from __future__ import print_function
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import zipfile
|
||||
import platform
|
||||
# For all the non-core-library imports, we will be extra paranoid and be very
|
||||
# nice with error messages so that everyone understands what's up.
|
||||
try:
|
||||
from urllib.parse import urljoin # Python 3
|
||||
except ImportError:
|
||||
from urlparse import urljoin # Python 2
|
||||
try:
|
||||
from builtins import input
|
||||
except ImportError:
|
||||
input = raw_input
|
||||
try:
|
||||
from six import iteritems
|
||||
except ImportError:
|
||||
sys.stdout.write(
|
||||
"[ERROR] Missing module 'six'! Please install it, e.g., by "
|
||||
"running 'pip install six' or any other tool that can install "
|
||||
"Python modules.\n")
|
||||
if platform.system() == 'Windows':
|
||||
input('Hit Enter to continue.')
|
||||
exit(0)
|
||||
try:
|
||||
import requests
|
||||
except ImportError:
|
||||
sys.stdout.write(
|
||||
"[ERROR] Missing module 'requests'! Please install it, e.g., by "
|
||||
"running 'pip install requests' or any other tool that can install "
|
||||
"Python modules.\n")
|
||||
if platform.system() == 'Windows':
|
||||
input('Hit Enter to continue.')
|
||||
exit(0)
|
||||
|
||||
|
||||
|
||||
_DEFAULT_TARGET_REGEX = "(fpga|fw|windrv)_default"
|
||||
_BASE_DIR_STRUCTURE_PARTS = ["share", "uhd", "images"]
|
||||
_DEFAULT_INSTALL_PATH = os.path.join("/usr", *_BASE_DIR_STRUCTURE_PARTS)
|
||||
_DEFAULT_BASE_URL = "http://files.ettus.com/binaries/cache/"
|
||||
_INVENTORY_FILENAME = "inventory.json"
|
||||
_CONTACT = "support@ettus.com"
|
||||
_DEFAULT_BUFFER_SIZE = 8192
|
||||
_DEFAULT_DOWNLOAD_LIMIT = 100 * 1024 * 1024 # Bytes
|
||||
_ARCHIVE_DEFAULT_TYPE = "zip"
|
||||
_UHD_VERSION = "3.15.0.0-2build5"
|
||||
# Note: _MANIFEST_CONTENTS are placed at the bottom of this file for aesthetic reasons
|
||||
_LOG_LEVELS = {"TRACE": 1,
|
||||
"DEBUG": 2,
|
||||
"INFO": 3,
|
||||
"WARN": 4,
|
||||
"ERROR": 5}
|
||||
_LOG_LEVEL = _LOG_LEVELS["INFO"]
|
||||
_YES = False
|
||||
_PROXIES = {}
|
||||
|
||||
|
||||
def log(level, message):
|
||||
"""Logging function"""
|
||||
message_log_level = _LOG_LEVELS.get(level, 0)
|
||||
if message_log_level >= _LOG_LEVEL:
|
||||
sys.stderr.write(
|
||||
"[{level}] {message}\n".format(level=level, message=message))
|
||||
|
||||
|
||||
def parse_args():
|
||||
"""
|
||||
Setup argument parser and parse. Also does some sanity checks and sets some
|
||||
global variables we want to use.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument('-t', '--types', action='append',
|
||||
help="RegEx to select image sets from the manifest file.")
|
||||
parser.add_argument('-i', '--install-location',
|
||||
default=None,
|
||||
help="Set custom install location for images")
|
||||
parser.add_argument('-m', '--manifest-location', type=str, default="",
|
||||
help="Set custom location for the manifest file")
|
||||
parser.add_argument('-I', '--inventory-location', type=str, default="",
|
||||
help="Set custom location for the inventory file")
|
||||
parser.add_argument('-l', '--list-targets', action="store_true", default=False,
|
||||
help="Print targets in the manifest file to stdout, and exit.\n"
|
||||
"To get relative paths only, specify an empty base URL (-b '').")
|
||||
parser.add_argument('--url-only', action="store_true", default=False,
|
||||
help="With -l, only print the URLs, nothing else.")
|
||||
parser.add_argument("--buffer-size", type=int, default=_DEFAULT_BUFFER_SIZE,
|
||||
help="Set download buffer size")
|
||||
parser.add_argument("--download-limit", type=int, default=_DEFAULT_DOWNLOAD_LIMIT,
|
||||
help="Set threshold for download limits. Any download "
|
||||
"larger than this will require approval, either "
|
||||
"interactively, or by providing --yes.")
|
||||
parser.add_argument("--http-proxy", type=str,
|
||||
help="Specify HTTP proxy in the format "
|
||||
"http://user:pass@1.2.3.4:port\n"
|
||||
"If this this option is not given, the environment "
|
||||
"variable HTTP_PROXY can also be used to specify a proxy.")
|
||||
parser.add_argument("-b", "--base-url", type=str, default=_DEFAULT_BASE_URL,
|
||||
help="Set base URL for images download location")
|
||||
parser.add_argument("-k", "--keep", action="store_true", default=False,
|
||||
help="Keep the downloaded images archives in the image directory")
|
||||
parser.add_argument("-T", "--test", action="store_true", default=False,
|
||||
help="Verify the downloaded archives before extracting them")
|
||||
parser.add_argument("-y", "--yes", action="store_true", default=False,
|
||||
help="Answer all questions with 'yes' (for scripting purposes).")
|
||||
parser.add_argument("-n", "--dry-run", action="store_true", default=False,
|
||||
help="Print selected target without actually downloading them.")
|
||||
parser.add_argument("--refetch", action="store_true", default=False,
|
||||
help="Ignore the inventory file and download all images.")
|
||||
parser.add_argument('-V', '--version', action='version', version=_UHD_VERSION)
|
||||
parser.add_argument('-q', '--quiet', action='count', default=0,
|
||||
help="Decrease verbosity level")
|
||||
parser.add_argument('-v', '--verbose', action='count', default=0,
|
||||
help="Increase verbosity level")
|
||||
# Some sanitation that's easier to handle outside of the argparse framework:
|
||||
args = parser.parse_args()
|
||||
if not args.base_url.endswith('/') and args.base_url != "":
|
||||
args.base_url += '/'
|
||||
if args.yes:
|
||||
global _YES
|
||||
_YES = True
|
||||
if args.http_proxy:
|
||||
global _PROXIES
|
||||
_PROXIES['http'] = args.http_proxy
|
||||
# Set the verbosity
|
||||
global _LOG_LEVEL
|
||||
log("TRACE", "Default log level: {}".format(_LOG_LEVEL))
|
||||
_LOG_LEVEL = _LOG_LEVEL - args.verbose + args.quiet
|
||||
return args
|
||||
|
||||
|
||||
def get_images_dir(args):
|
||||
"""
|
||||
Figure out where to store the images.
|
||||
"""
|
||||
if args.install_location:
|
||||
return args.install_location
|
||||
if os.environ.get("UHD_IMAGES_DIR"):
|
||||
log("DEBUG",
|
||||
"UHD_IMAGES_DIR environment variable is set, using to set "
|
||||
"install location.")
|
||||
return os.environ.get("UHD_IMAGES_DIR")
|
||||
return _DEFAULT_INSTALL_PATH
|
||||
|
||||
|
||||
def ask_permission(question, default_no=True):
|
||||
"""
|
||||
Ask the question, and have the user type y or n on the keyboard. If the
|
||||
global variable _YES is true, this always returns True without asking the
|
||||
question. Otherwise, return True if the answer is 'yes', 'y', or something
|
||||
similar.
|
||||
"""
|
||||
if _YES:
|
||||
log("DEBUG", "Assuming the answer is 'yes' for this question: " +
|
||||
question)
|
||||
return True
|
||||
postfix = "[y/N]" if default_no else "[Y/n]"
|
||||
answer = input(question + " " + postfix)
|
||||
if answer and answer[0].lower() == 'y':
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
class TemporaryDirectory:
|
||||
"""Class to create a temporary directory"""
|
||||
def __enter__(self):
|
||||
try:
|
||||
self.name = tempfile.mkdtemp()
|
||||
return self.name
|
||||
except Exception as ex:
|
||||
log("ERROR", "Failed to create a temporary directory (%s)" % ex)
|
||||
raise ex
|
||||
|
||||
# Can return 'True' to suppress incoming exception
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
try:
|
||||
shutil.rmtree(self.name)
|
||||
log("TRACE", "Temp directory deleted.")
|
||||
except Exception as ex:
|
||||
log("ERROR", "Could not delete temporary directory: %s (%s)" % (self.name, ex))
|
||||
return exc_type is None
|
||||
|
||||
|
||||
def get_manifest_raw(args):
|
||||
"""
|
||||
Return the raw content of the manifest (i.e. the text file). It
|
||||
needs to be parsed to be of any practical use.
|
||||
"""
|
||||
# If we're given a path to a manifest file, use it
|
||||
if os.path.exists(args.manifest_location):
|
||||
manifest_fn = args.manifest_location
|
||||
log("INFO", "Using manifest file at location: {}".format(manifest_fn))
|
||||
with open(manifest_fn, 'r') as manifest_file:
|
||||
manifest_raw = manifest_file.read()
|
||||
# Otherwise, use the CMake Magic manifest
|
||||
else:
|
||||
manifest_raw = _MANIFEST_CONTENTS
|
||||
log("TRACE", "Raw manifest contents: {}".format(manifest_raw))
|
||||
return manifest_raw
|
||||
|
||||
|
||||
def parse_manifest(manifest_contents):
|
||||
"""Parse the manifest file, returns a dictionary of potential targets"""
|
||||
manifest = {}
|
||||
for line in manifest_contents.split('\n'):
|
||||
line_unpacked = line.split()
|
||||
try:
|
||||
# Check that the line isn't empty or a comment
|
||||
if not line_unpacked or line.strip().startswith('#'):
|
||||
continue
|
||||
|
||||
target, repo_hash, url, sha256_hash = line_unpacked
|
||||
manifest[target] = {"repo_hash": repo_hash,
|
||||
"url": url,
|
||||
"sha256_hash": sha256_hash,
|
||||
}
|
||||
except ValueError:
|
||||
log("WARN", "Warning: Invalid line in manifest file:\n"
|
||||
" {}".format(line))
|
||||
continue
|
||||
return manifest
|
||||
|
||||
|
||||
def parse_inventory(inventory_fn):
|
||||
"""Parse the inventory file, returns a dictionary of installed files"""
|
||||
try:
|
||||
if not os.path.exists(inventory_fn):
|
||||
log("INFO", "No inventory file found at {}. Creating an empty one.".format(inventory_fn))
|
||||
return {}
|
||||
with open(inventory_fn, 'r') as inventory_file:
|
||||
# TODO: verify the contents??
|
||||
return json.load(inventory_file)
|
||||
except Exception as ex:
|
||||
log("WARN", "Error parsing the inventory file. Assuming an empty inventory: {}".format(ex))
|
||||
return {}
|
||||
|
||||
|
||||
def write_inventory(inventory, inventory_fn):
|
||||
"""Writes the inventory to file"""
|
||||
try:
|
||||
with open(inventory_fn, 'w') as inventory_file:
|
||||
json.dump(inventory, inventory_file)
|
||||
return True
|
||||
except Exception as ex:
|
||||
log("ERROR", "Error writing the inventory file. Contents may be incomplete or corrupted.\n"
|
||||
"Error message: {}".format(ex))
|
||||
return False
|
||||
|
||||
|
||||
def lookup_urls(regex_l, manifest, inventory, refetch=False):
|
||||
"""Takes a list of RegExs to match within the manifest, returns a list of tuples with
|
||||
(hash, URL) that match the targets and are not in the inventory"""
|
||||
selected_targets = []
|
||||
# Store whether or not we've found a target in the manifest that matches the requested type
|
||||
found_one = False
|
||||
for target in manifest.keys():
|
||||
# Iterate through the possible targets in the manifest.
|
||||
# If any of them match any of the RegExs supplied, add the URL to the
|
||||
# return list
|
||||
if all(map((lambda regex: re.findall(regex, target)), regex_l)):
|
||||
found_one = True
|
||||
log("TRACE", "Selected target: {}".format(target))
|
||||
target_info = manifest.get(target)
|
||||
target_url = target_info.get("url")
|
||||
target_hash = target_info.get("repo_hash")
|
||||
target_sha256 = target_info.get("sha256_hash")
|
||||
filename = os.path.basename(target_url)
|
||||
# Check if the same filename and hash appear in the inventory
|
||||
if not refetch and inventory.get(target, {}).get("repo_hash", "") == target_hash:
|
||||
# We already have this file, we don't need to download it again
|
||||
log("INFO", "Target {} is up to date.".format(target))
|
||||
else:
|
||||
# We don't have that exact file, add it to the list
|
||||
selected_targets.append({"target": target,
|
||||
"repo_hash": target_hash,
|
||||
"filename": filename,
|
||||
"url": target_url,
|
||||
"sha256_hash": target_sha256})
|
||||
if not found_one:
|
||||
log("INFO", "No targets matching '{}'".format(regex_l))
|
||||
return selected_targets
|
||||
|
||||
|
||||
def print_target_list(manifest, args):
|
||||
"""
|
||||
Print a list of targets.
|
||||
"""
|
||||
char_offset = max(len(x) for x in manifest.keys())
|
||||
if not args.url_only:
|
||||
# Print a couple helpful lines,
|
||||
# then print each (Target, URL) pair in the manifest
|
||||
log("INFO", "Potential targets in manifest file:\n"
|
||||
"{} : {}".format(
|
||||
"# TARGET".ljust(char_offset),
|
||||
"URL" if args.base_url else "RELATIVE_URL"))
|
||||
for key, value in sorted(manifest.items()):
|
||||
print("{target} : {base}{relpath}".format(
|
||||
target=key.ljust(char_offset),
|
||||
base=args.base_url,
|
||||
relpath=value["url"]))
|
||||
else:
|
||||
for manifest_item in iteritems(manifest):
|
||||
print(args.base_url+manifest_item[1]["url"])
|
||||
|
||||
|
||||
def download(
|
||||
images_url,
|
||||
filename,
|
||||
buffer_size=_DEFAULT_BUFFER_SIZE,
|
||||
print_progress=False,
|
||||
download_limit=None
|
||||
):
|
||||
""" Run the download, show progress """
|
||||
download_limit = download_limit or _DEFAULT_DOWNLOAD_LIMIT
|
||||
log("TRACE", "Downloading {} to {}".format(images_url, filename))
|
||||
try:
|
||||
resp = requests.get(images_url, stream=True, proxies=_PROXIES,
|
||||
headers={'User-Agent': 'UHD Images Downloader'})
|
||||
except TypeError:
|
||||
# requests library versions pre-4c3b9df6091b65d8c72763222bd5fdefb7231149
|
||||
# (Dec.'12) workaround
|
||||
resp = requests.get(images_url, prefetch=False, proxies=_PROXIES,
|
||||
headers={'User-Agent': 'UHD Images Downloader'})
|
||||
if resp.status_code != 200:
|
||||
raise RuntimeError("URL does not exist: {}".format(images_url))
|
||||
filesize = float(resp.headers['content-length'])
|
||||
if filesize > download_limit:
|
||||
if not ask_permission(
|
||||
"The file size for this target ({:.1f} MiB) exceeds the "
|
||||
"download limit ({:.1f} MiB). Continue downloading?".format(
|
||||
filesize/1024**2, download_limit/1024**2)):
|
||||
return 0, 0, ""
|
||||
filesize_dl = 0
|
||||
base_filename = os.path.basename(filename)
|
||||
if print_progress and not sys.stdout.isatty():
|
||||
print_progress = False
|
||||
log("INFO", "Downloading {}, total size: {} kB".format(
|
||||
base_filename, filesize/1000))
|
||||
with open(filename, "wb") as temp_file:
|
||||
sha256_sum = hashlib.sha256()
|
||||
for buff in resp.iter_content(chunk_size=buffer_size):
|
||||
if buff:
|
||||
temp_file.write(buff)
|
||||
filesize_dl += len(buff)
|
||||
sha256_sum.update(buff)
|
||||
if print_progress:
|
||||
status = r"%05d kB / %05d kB (%03d%%) %s" % (
|
||||
int(math.ceil(filesize_dl / 1000.)), int(math.ceil(filesize / 1000.)),
|
||||
int(math.ceil(filesize_dl * 100.) / filesize),
|
||||
base_filename)
|
||||
if os.name == "nt":
|
||||
status += chr(8) * (len(status) + 1)
|
||||
else:
|
||||
sys.stdout.write("\x1b[2K\r") # Clear previous line
|
||||
sys.stdout.write(status)
|
||||
sys.stdout.flush()
|
||||
if print_progress:
|
||||
print('')
|
||||
return filesize, filesize_dl, sha256_sum.hexdigest()
|
||||
|
||||
|
||||
def delete_from_inv(target_info, inventory, images_dir):
|
||||
"""
|
||||
Uses the inventory to delete the contents of the archive file specified by in `target_info`
|
||||
"""
|
||||
target = inventory.get(target_info.get("target"), {})
|
||||
target_name = target.get("target")
|
||||
log("TRACE", "Removing contents of {} from inventory ({})".format(
|
||||
target, target.get("contents", [])))
|
||||
dirs_to_delete = []
|
||||
# Delete all of the files
|
||||
for image_fn in target.get("contents", []):
|
||||
image_path = os.path.join(images_dir, image_fn)
|
||||
if os.path.isfile(image_path):
|
||||
os.remove(image_path)
|
||||
log("TRACE", "Deleted {} from inventory".format(image_path))
|
||||
elif os.path.isdir(image_path):
|
||||
dirs_to_delete.append(image_fn)
|
||||
else: # File doesn't exist
|
||||
log("WARN", "File {} in inventory does not exist".format(image_path))
|
||||
# Then delete all of the (empty) directories
|
||||
for dir_path in dirs_to_delete:
|
||||
try:
|
||||
if os.path.isdir(dir_path):
|
||||
os.removedirs(dir_path)
|
||||
except os.error as ex:
|
||||
log("ERROR", "Failed to delete dir: {}".format(ex))
|
||||
inventory.pop(target_name, None)
|
||||
return True
|
||||
|
||||
|
||||
def extract(archive_path, images_dir, test_zip=False):
|
||||
"""
|
||||
Extract the contents of `archive_path` into `images_dir`
|
||||
|
||||
Returns a list of files that were extracted.
|
||||
|
||||
If test_zip is set, it will verify the zip file before extracting.
|
||||
"""
|
||||
log("TRACE", "Attempting to extracted files from {}".format(archive_path))
|
||||
with zipfile.ZipFile(archive_path) as images_zip:
|
||||
# Check that the Zip file is valid, in which case `testzip()` returns
|
||||
# None. If it's bad, that function will return a list of bad files
|
||||
try:
|
||||
if test_zip and images_zip.testzip():
|
||||
log("ERROR", "Could not extract the following invalid Zip file:"
|
||||
" {}".format(archive_path))
|
||||
return []
|
||||
except OSError:
|
||||
log("ERROR", "Could not extract the following invalid Zip file:"
|
||||
" {}".format(archive_path))
|
||||
return []
|
||||
images_zip.extractall(images_dir)
|
||||
archive_namelist = images_zip.namelist()
|
||||
log("TRACE", "Extracted files: {}".format(archive_namelist))
|
||||
return archive_namelist
|
||||
|
||||
|
||||
def update_target(target_info, temp_dir, images_dir, inventory, args):
|
||||
"""
|
||||
Handle the updating of a single target.
|
||||
"""
|
||||
target_name = target_info.get("target")
|
||||
target_sha256 = target_info.get("sha256_hash")
|
||||
filename = target_info.get("filename")
|
||||
temp_path = os.path.join(temp_dir, filename)
|
||||
# Add a trailing slash to make sure that urljoin handles things properly
|
||||
full_url = urljoin(args.base_url+'/', target_info.get("url"))
|
||||
_, downloaded_size, downloaded_sha256 = download(
|
||||
images_url=full_url,
|
||||
filename=temp_path,
|
||||
buffer_size=args.buffer_size,
|
||||
print_progress=(_LOG_LEVEL <= _LOG_LEVELS.get("INFO", 3))
|
||||
)
|
||||
if downloaded_size == 0:
|
||||
log("INFO", "Skipping target: {}".format(target_name))
|
||||
return
|
||||
log("TRACE", "{} successfully downloaded ({} Bytes)"
|
||||
.format(temp_path, downloaded_size))
|
||||
# If the SHA256 in the manifest has the value '0', this is a special case
|
||||
# and we just skip the verification step
|
||||
if target_sha256 == '0':
|
||||
log("DEBUG", "Skipping SHA256 check for {}.".format(full_url))
|
||||
# If the check fails, print an error and don't unzip the file
|
||||
elif downloaded_sha256 != target_sha256:
|
||||
log("ERROR", "Downloaded SHA256 does not match manifest for {}!"
|
||||
.format(full_url))
|
||||
return
|
||||
# Note: this skips the --keep option, so we'll never keep image packages
|
||||
# that fail the SHA256 checksum
|
||||
## Now copy the contents to the final destination (the images directory)
|
||||
delete_from_inv(target_info, inventory, images_dir)
|
||||
if os.path.splitext(temp_path)[1].lower() == '.zip':
|
||||
archive_namelist = extract(
|
||||
temp_path,
|
||||
images_dir,
|
||||
args.test)
|
||||
if args.keep:
|
||||
# If the user wants to keep the downloaded archive,
|
||||
# save it to the images directory and add it to the inventory
|
||||
shutil.copy(temp_path, images_dir)
|
||||
archive_namelist.append(filename)
|
||||
else:
|
||||
archive_namelist = []
|
||||
shutil.copy(temp_path, images_dir)
|
||||
## Update inventory
|
||||
inventory[target_name] = {"repo_hash": target_info.get("repo_hash"),
|
||||
"contents": archive_namelist,
|
||||
"filename": filename}
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main function; does whatever the user requested (download or list files).
|
||||
|
||||
Returns True on successful execution.
|
||||
"""
|
||||
args = parse_args()
|
||||
images_dir = get_images_dir(args)
|
||||
log("INFO", "Images destination: {}".format(os.path.abspath(images_dir)))
|
||||
try:
|
||||
manifest = parse_manifest(get_manifest_raw(args))
|
||||
if args.list_targets:
|
||||
print_target_list(
|
||||
manifest,
|
||||
args
|
||||
)
|
||||
return True
|
||||
log("TRACE", "Manifest:\n{}".format(
|
||||
"\n".join("{}".format(item) for item in manifest.items())
|
||||
))
|
||||
|
||||
# Read the inventory into a dictionary we can perform lookups on
|
||||
if os.path.isfile(args.inventory_location):
|
||||
inventory_fn = args.inventory_location
|
||||
else:
|
||||
inventory_fn = os.path.join(images_dir, _INVENTORY_FILENAME)
|
||||
inventory = parse_inventory(inventory_fn=inventory_fn)
|
||||
log("TRACE", "Inventory: {}\n{}".format(
|
||||
os.path.abspath(inventory_fn),
|
||||
"\n".join("{}".format(item) for item in inventory.items())
|
||||
))
|
||||
|
||||
# Determine the URLs to download based on the input regular expressions
|
||||
if not args.types:
|
||||
types_regex_l = [_DEFAULT_TARGET_REGEX]
|
||||
else:
|
||||
types_regex_l = args.types
|
||||
|
||||
log("TRACE", "RegExs for target selection: {}".format(types_regex_l))
|
||||
targets_info = lookup_urls(types_regex_l, manifest, inventory, args.refetch)
|
||||
# Exit early if we don't have anything to download
|
||||
if targets_info:
|
||||
target_urls = [info.get("url") for info in targets_info]
|
||||
log("DEBUG", "URLs to download:\n{}".format(
|
||||
"\n".join("{}".format(item) for item in target_urls)
|
||||
))
|
||||
else:
|
||||
return True
|
||||
|
||||
## Now download all the images archives into a temp directory
|
||||
if args.dry_run:
|
||||
for target_info in targets_info:
|
||||
log("INFO", "[Dry Run] Fetch target: {}".format(
|
||||
target_info.get("filename")))
|
||||
return True
|
||||
with TemporaryDirectory() as temp_dir:
|
||||
for target_info in targets_info:
|
||||
update_target(
|
||||
target_info,
|
||||
temp_dir,
|
||||
images_dir,
|
||||
inventory,
|
||||
args
|
||||
)
|
||||
## Update inventory with all the new content
|
||||
write_inventory(inventory, inventory_fn)
|
||||
|
||||
except Exception as ex:
|
||||
log("ERROR", "Downloader raised an unhandled exception: {ex}\n"
|
||||
"You can run this again with the '--verbose' flag to see more information\n"
|
||||
"If the problem persists, please email the output to: {contact}"
|
||||
.format(contact=_CONTACT, ex=ex))
|
||||
# Again, we wait on Windows systems because if this is executed in a
|
||||
# window, and immediately fails, the user doesn't have a way to see the
|
||||
# error message, and if they're not very savvy, they won't know how to
|
||||
# execute this in a shell.
|
||||
if not _YES and platform.system() == 'Windows':
|
||||
input('Hit Enter to continue.')
|
||||
return False
|
||||
log("INFO", "Images download complete.")
|
||||
return True
|
||||
|
||||
# Placing this near the end of the file so we don't clutter the top
|
||||
_MANIFEST_CONTENTS = """# UHD Image Manifest File
|
||||
# Target hash url SHA256
|
||||
# X300-Series
|
||||
x3xx_x310_fpga_default fpga-fde2a94eb x3xx/fpga-fde2a94eb/x3xx_x310_fpga_default-gfde2a94e.zip ac5bcf4b85773508bdc3b5e882bfa14025a7867b4c1858f5751439919ee6d270
|
||||
x3xx_x300_fpga_default fpga-fde2a94eb x3xx/fpga-fde2a94eb/x3xx_x300_fpga_default-gfde2a94e.zip 2bdfb7851f6b9aebadfe3aa227d93532bd005fcae4b4d88ae74522f903bd4081
|
||||
# Example daughterboard targets (none currently exist)
|
||||
#x3xx_twinrx_cpld_default example_target
|
||||
#dboard_ubx_cpld_default example_target
|
||||
|
||||
# E-Series
|
||||
e3xx_e310_sg1_fpga_default fpga-fde2a94eb e3xx/fpga-fde2a94eb/e3xx_e310_sg1_fpga_default-gfde2a94e.zip ac5f6db65780e944c565977e0bd5085c76d0bcdf246579f13d5da69211590980
|
||||
e3xx_e310_sg3_fpga_default fpga-fde2a94eb e3xx/fpga-fde2a94eb/e3xx_e310_sg3_fpga_default-gfde2a94e.zip 84ddae28d98d02cdeb88b560dc6c1f7280f8d9adcc719bec9774deb7ed6dbb3c
|
||||
e3xx_e320_fpga_default fpga-fde2a94eb e3xx/fpga-fde2a94eb/e3xx_e320_fpga_default-gfde2a94e.zip 95064badda9b93281b01e642faff9577d054883869896899e28293a243d8862c
|
||||
|
||||
# E310 Filesystems
|
||||
e3xx_e310_sdk_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sdk_default-v3.15.0.0.zip 0
|
||||
e3xx_e310_sg1_mender_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg1_mender_default-v3.15.0.0.zip 0
|
||||
e3xx_e310_sg1_sdimg_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg1_sdimg_default-v3.15.0.0.zip 0
|
||||
e3xx_e310_sg3_mender_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg3_mender_default-v3.15.0.0.zip 0
|
||||
e3xx_e310_sg3_sdimg_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg3_sdimg_default-v3.15.0.0.zip 0
|
||||
|
||||
# E320 Filesystems, etc
|
||||
e3xx_e320_sdk_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e320_sdk_default-v3.15.0.0.zip 0
|
||||
e3xx_e320_mender_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e320_mender_default-v3.15.0.0.zip 0
|
||||
e3xx_e320_sdimg_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e320_sdimg_default-v3.15.0.0.zip 0
|
||||
|
||||
# N300-Series
|
||||
n3xx_n310_fpga_default fpga-fde2a94eb n3xx/fpga-fde2a94eb/n3xx_n310_fpga_default-gfde2a94e.zip 4a45e2d4ec41d34fc550402928248a15488ba7b58d835ef2d4f503556173764a
|
||||
n3xx_n300_fpga_default fpga-fde2a94eb n3xx/fpga-fde2a94eb/n3xx_n300_fpga_default-gfde2a94e.zip 7f1b512756ae225f8caaf20fd22d2e1537ea211b2fd6c4c9ed1330065fb56645
|
||||
n3xx_n320_fpga_default fpga-fde2a94eb n3xx/fpga-fde2a94eb/n3xx_n320_fpga_default-gfde2a94e.zip 4fae9de2ede7ff446da8afb61808868c08ba32f8e3092b802c5d4d7643c7175f
|
||||
n3xx_n310_cpld_default fpga-6bea23d n3xx/fpga-6bea23d/n3xx_n310_cpld_default-g6bea23d.zip ef128dcd265ee8615b673021d4ee84c39357012ffe8b28c8ad7f893f9dcb94cb
|
||||
n3xx_n320_cpld_default fpga-4bc2c6f n3xx/fpga-4bc2c6f/n3xx_n320_cpld_default-g4bc2c6f.zip 6680a9363efc5fa8b5a68beb3dff44f2e314b94e716e3a1751aba0fed1f384da
|
||||
# N3XX Mykonos firmware
|
||||
#n3xx_n310_fw_default fpga-6bea23d n3xx/fpga-6bea23d/n3xx_n310_fw_default-g6bea23d.zip 0
|
||||
# N300-Series Filesystems, etc
|
||||
n3xx_common_sdk_default meta-ettus-v3.15.0.0 n3xx/meta-ettus-v3.15.0.0/n3xx_common_sdk_default-v3.15.0.0.zip 0
|
||||
n3xx_common_mender_default meta-ettus-v3.15.0.0 n3xx/meta-ettus-v3.15.0.0/n3xx_common_mender_default-v3.15.0.0.zip 0
|
||||
n3xx_common_sdimg_default meta-ettus-v3.15.0.0 n3xx/meta-ettus-v3.15.0.0/n3xx_common_sdimg_default-v3.15.0.0.zip 0
|
||||
|
||||
# B200-Series
|
||||
b2xx_b200_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b200_fpga_default-gfde2a94e.zip 44885476f1bce75657e4dd78ba03830e662a59b6bb612a90e9f8041306deb68e
|
||||
b2xx_b200mini_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b200mini_fpga_default-gfde2a94e.zip 4318249e394be686e99c58effa162209aa496a039c68ef816f0b2f9247485c12
|
||||
b2xx_b210_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b210_fpga_default-gfde2a94e.zip 936864ec5e9627f786c3cd3687c761a24a0ff68a99e224fcc2b24cb4d4197dd2
|
||||
b2xx_b205mini_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b205mini_fpga_default-gfde2a94e.zip cd3dad8c70925c0c79e728716c0ebb36f2145e1cf929409fa77c953637effd70
|
||||
b2xx_common_fw_default uhd-2bdad498 b2xx/uhd-2bdad498/b2xx_common_fw_default-g2bdad498.zip a6a867466448f2f75d9d5d290c57ceb8e1d3219391c9f275824fbeb3e7931732
|
||||
|
||||
# USRP2 Devices
|
||||
usrp2_usrp2_fw_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_usrp2_fw_default-g6bea23d.zip d523a18318cb6a7637be40484bf03a6f54766410fee2c1a1f72e8971ea9a9cb6
|
||||
usrp2_usrp2_fpga_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_usrp2_fpga_default-g6bea23d.zip 505c70aedc8cdfbbfe654bcdbe1ce604c376e733a44cdd1351571f61a7f1cb49
|
||||
usrp2_n200_fpga_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n200_fpga_default-g6bea23d.zip 833a0098d66c0c502b9c3975d651a79e125133c507f9f4b2c472f9eb96fdaef8
|
||||
usrp2_n200_fw_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n200_fw_default-g6bea23d.zip 3eee2a6195caafe814912167fccf2dfc369f706446f8ecee36e97d2c0830116f
|
||||
usrp2_n210_fpga_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n210_fpga_default-g6bea23d.zip 5ce68ac539ee6eeb7d04fb3127c1fabcaff442a8edfaaa2f3746590f9df909bd
|
||||
usrp2_n210_fw_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n210_fw_default-g6bea23d.zip 3646fcd3fc974d18c621cb10dfe97c4dad6d282036dc63b7379995dfad95fb98
|
||||
n230_n230_fpga_default fpga-fde2a94eb n230/fpga-fde2a94eb/n230_n230_fpga_default-gfde2a94e.zip 5436932bc8a459c6e350885b67f907f7c864edd71c0089f6692636428b3c20a9
|
||||
|
||||
# USRP1 Devices
|
||||
usrp1_usrp1_fpga_default fpga-6bea23d usrp1/fpga-6bea23d/usrp1_usrp1_fpga_default-g6bea23d.zip 03bf72868c900dd0853bf48e2ede91058d579829b0e70c021e51b0e282d1d5be
|
||||
usrp1_b100_fpga_default fpga-6bea23d usrp1/fpga-6bea23d/usrp1_b100_fpga_default-g6bea23d.zip 7f2306f21e17aa3fae3f966d08c6297d6cf42041974f846ca89f0d633ece8769
|
||||
usrp1_b100_fw_default fpga-6bea23d usrp1/fpga-6bea23d/usrp1_b100_fw_default-g6bea23d.zip 867f17fac085535dbcb01c226ce87acf49806de6ed0ae9b214d7c8da86e2a71d
|
||||
|
||||
# Octoclock
|
||||
octoclock_octoclock_fw_default uhd-14000041 octoclock/uhd-14000041/octoclock_octoclock_fw_default-g14000041.zip 8da7f1af8cecb7f6259a237a18c39058ba69a11567fa373cffc9704031a1d053
|
||||
|
||||
# Legacy USB Windows drivers
|
||||
usb_common_windrv_default uhd-14000041 usb/uhd-14000041/usb_common_windrv_default-g14000041.zip 835e94b2bdf2312fd3881a1b78e2ec236c1f42b7a5bd3927f85f73cf5e3a5231
|
||||
"""
|
||||
if __name__ == "__main__":
|
||||
sys.exit(not main())
|
||||
@@ -5,7 +5,7 @@ services:
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: open5gs
|
||||
webui:
|
||||
image: openverso/open5gs-webui:2.7.0
|
||||
image: gradiant/open5gs-webui:2.7.1
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
@@ -13,25 +13,26 @@ services:
|
||||
ports:
|
||||
- 9999:9999
|
||||
smf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-smfd
|
||||
restart : on-failure
|
||||
mme:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-mmed
|
||||
restart: on-failure
|
||||
ports:
|
||||
- 36412:36412
|
||||
sgwc:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-sgwcd
|
||||
restart : on-failure
|
||||
sgwu:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-sgwud
|
||||
restart : on-failure
|
||||
upf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
user: root
|
||||
command: ["open5gs-upfd"]
|
||||
cap_add:
|
||||
- all
|
||||
@@ -40,19 +41,19 @@ services:
|
||||
ports:
|
||||
- 2152:2152
|
||||
pcrf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: ["open5gs-pcrfd"]
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
hss:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-hssd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
nrf:
|
||||
image: openverso/open5gs:2.4.4
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-nrfd
|
||||
restart : on-failure
|
||||
|
||||
856
docs/open5gs-and-srsran-4g/open5gs-dbctl
Executable file
856
docs/open5gs-and-srsran-4g/open5gs-dbctl
Executable file
@@ -0,0 +1,856 @@
|
||||
#!/bin/bash
|
||||
|
||||
version=0.10.3
|
||||
|
||||
display_help() {
|
||||
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
|
||||
echo "FLAGS: --db_uri=mongodb://localhost"
|
||||
echo "COMMANDS:" >&2
|
||||
echo " add {imsi key opc}: adds a user to the database with default values"
|
||||
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
|
||||
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
|
||||
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
|
||||
echo " remove {imsi}: removes a user from the database"
|
||||
echo " reset: WIPES OUT the database and restores it to an empty default"
|
||||
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
|
||||
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
|
||||
echo " type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6"
|
||||
echo " help: displays this message and exits"
|
||||
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
|
||||
echo " add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,"
|
||||
echo " add_ue_with_slice {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd"
|
||||
echo " update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE"
|
||||
echo " update_slice {imsi apn sst sd}: adds an slice to an existent UE"
|
||||
echo " showall: shows the list of subscriber in the db"
|
||||
echo " showpretty: shows the list of subscriber in the db in a pretty json tree format"
|
||||
echo " showfiltered: shows {imsi key opc apn ip} information of subscriber"
|
||||
echo " ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\""
|
||||
echo " subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)"
|
||||
|
||||
}
|
||||
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
--db_uri*)
|
||||
DB_URI=`echo $1 | sed -e 's/^[^=]*=//g'`
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
DB_URI="${DB_URI:-mongodb://localhost/open5gs}"
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "help" ]; then
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "add" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "addT1" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}
|
||||
],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
KI=$4
|
||||
OPC=$5
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"internet\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet1\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
},{
|
||||
\"name\" : \"internet2\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"ue\":
|
||||
{
|
||||
\"ipv4\": \"$IP\"
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}
|
||||
],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "remove" ]; then
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IMSI=$2
|
||||
mongosh --eval "db.subscribers.deleteOne({\"imsi\": \"$IMSI\"});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "reset" ]; then
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mongosh --eval "db.subscribers.deleteMany({});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv4\": \"$IP\" }});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "static_ip6" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
IP=$3
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv6\": \"$IP\" }});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "type" ]; then
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
|
||||
exit 1
|
||||
fi
|
||||
IMSI=$2
|
||||
TYPE=$3
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "add_ue_with_apn" ]; then
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
APN=$5
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt(1),
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_apn imsi key opc apn\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "add_ue_with_slice" ]; then
|
||||
if [ "$#" -eq 7 ]; then
|
||||
IMSI=$2
|
||||
KI=$3
|
||||
OPC=$4
|
||||
APN=$5
|
||||
SST=$6
|
||||
SD=$7
|
||||
|
||||
mongosh --eval "db.subscribers.insertOne(
|
||||
{
|
||||
\"_id\": new ObjectId(),
|
||||
\"schema_version\": NumberInt(1),
|
||||
\"imsi\": \"$IMSI\",
|
||||
\"msisdn\": [],
|
||||
\"imeisv\": [],
|
||||
\"mme_host\": [],
|
||||
\"mm_realm\": [],
|
||||
\"purge_flag\": [],
|
||||
\"slice\":[
|
||||
{
|
||||
\"sst\": NumberInt($SST),
|
||||
\"sd\": \"$SD\",
|
||||
\"default_indicator\": true,
|
||||
\"session\": [
|
||||
{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"qos\" :
|
||||
{ \"index\": NumberInt(9),
|
||||
\"arp\":
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\": NumberInt(1),
|
||||
\"pre_emption_vulnerability\": NumberInt(2)
|
||||
}
|
||||
},
|
||||
\"ambr\":
|
||||
{
|
||||
\"downlink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
},
|
||||
\"uplink\":
|
||||
{
|
||||
\"value\": NumberInt(1000000000),
|
||||
\"unit\": NumberInt(0)
|
||||
}
|
||||
},
|
||||
\"pcc_rule\": [],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"_id\": new ObjectId(),
|
||||
}],
|
||||
\"security\":
|
||||
{
|
||||
\"k\" : \"$KI\",
|
||||
\"op\" : null,
|
||||
\"opc\" : \"$OPC\",
|
||||
\"amf\" : \"8000\",
|
||||
},
|
||||
\"ambr\" :
|
||||
{
|
||||
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
|
||||
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
|
||||
},
|
||||
\"access_restriction_data\": 32,
|
||||
\"network_access_mode\": 0,
|
||||
\"subscriber_status\": 0,
|
||||
\"operator_determined_barring\": 0,
|
||||
\"subscribed_rau_tau_timer\": 12,
|
||||
\"__v\": 0
|
||||
}
|
||||
);" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_slice imsi key opc apn sst sd\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "update_apn" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
APN=$3
|
||||
SLICE_NUM=$4
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
|
||||
{\$push: { \"slice.$SLICE_NUM.session\":
|
||||
{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_apn imsi apn num_slice\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "update_slice" ]; then
|
||||
if [ "$#" -eq 5 ]; then
|
||||
IMSI=$2
|
||||
APN=$3
|
||||
SST=$4
|
||||
SD=$5
|
||||
|
||||
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
|
||||
{\$push: { \"slice\":
|
||||
|
||||
{
|
||||
\"sst\" : NumberInt($SST),
|
||||
\"sd\" : \"$SD\",
|
||||
\"default_indicator\" : false,
|
||||
\"_id\" : new ObjectId(),
|
||||
\"session\" :
|
||||
[{
|
||||
\"name\" : \"$APN\",
|
||||
\"type\" : NumberInt(3),
|
||||
\"_id\" : new ObjectId(),
|
||||
\"pcc_rule\" : [],
|
||||
\"ambr\" :
|
||||
{
|
||||
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
|
||||
},
|
||||
\"qos\" :
|
||||
{
|
||||
\"index\" : NumberInt(9),
|
||||
\"arp\" :
|
||||
{
|
||||
\"priority_level\" : NumberInt(8),
|
||||
\"pre_emption_capability\" : NumberInt(1),
|
||||
\"pre_emption_vulnerability\" : NumberInt(1),
|
||||
},
|
||||
},
|
||||
}]
|
||||
}
|
||||
}
|
||||
});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_slice imsi apn sst sd\""
|
||||
exit 1
|
||||
fi
|
||||
if [ "$1" = "subscriber_status" ]; then
|
||||
if [ "$#" -eq 4 ]; then
|
||||
IMSI=$2
|
||||
SUB_STATUS=$3
|
||||
OP_DET_BARRING=$4
|
||||
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
|
||||
{\$set: { \"subscriber_status\": $SUB_STATUS,
|
||||
\"operator_determined_barring\": $OP_DET_BARRING
|
||||
}
|
||||
});" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl subscriber_status imsi subscriber_status_val={0,1} operator_determined_barring={0..8}"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$1" = "showall" ]; then
|
||||
mongosh --eval "db.subscribers.find()" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
if [ "$1" = "showpretty" ]; then
|
||||
mongosh --eval "db.subscribers.find().pretty()" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
if [ "$1" = "showfiltered" ]; then
|
||||
mongosh --eval "db.subscribers.find({},{'_id':0,'imsi':1,'security.k':1, 'security.opc':1,'slice.session.name':1,'slice.session.ue.ipv4':1})" $DB_URI
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$1" = "ambr_speed" ]; then
|
||||
if [ "$#" -eq 6 ]; then
|
||||
IMSI=$2
|
||||
DL_VALUE=$3
|
||||
DL_UNIT=$4
|
||||
UL_VALUE=$5
|
||||
UL_UNIT=$6
|
||||
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},
|
||||
{\$set: {
|
||||
\"ambr\" : {
|
||||
\"downlink\" : {
|
||||
\"value\" : NumberInt($DL_VALUE),
|
||||
\"unit\" : NumberInt($DL_UNIT)
|
||||
},
|
||||
\"uplink\" :{
|
||||
\"value\": NumberInt($UL_VALUE),
|
||||
\"unit\" : NumberInt($UL_UNIT)
|
||||
}
|
||||
},
|
||||
\"slice.0.session.0.ambr\": {
|
||||
\"downlink\" : {
|
||||
\"value\" : NumberInt($DL_VALUE),
|
||||
\"unit\" : NumberInt($DL_UNIT)
|
||||
},
|
||||
\"uplink\" :{
|
||||
\"value\": NumberInt($UL_VALUE),
|
||||
\"unit\" : NumberInt($UL_UNIT)
|
||||
}
|
||||
}
|
||||
}
|
||||
});" $DB_URI
|
||||
|
||||
|
||||
exit $?
|
||||
fi
|
||||
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl ambr_speed imsi dl_value dl_unit ul_value ul_unit dl is for download and ul is for upload and the unit values are[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ] \""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
display_help
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
MONGO_CONTAINER=open5gs-and-srslte-mongo-1
|
||||
MONGO_CONTAINER=open5gs-and-srsran-4g-mongo-1
|
||||
|
||||
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.10.3)
|
||||
FLAGS: --db_uri=mongodb://localhost
|
||||
@@ -31,6 +31,6 @@ MONGO_CONTAINER=open5gs-and-srslte-mongo-1
|
||||
docker cp open5gs-dbctl $MONGO_CONTAINER:/
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-srslte_default \
|
||||
--net open5gs-and-srsran-4g_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
enodeb:
|
||||
image: openverso/srsran-4g:23_11
|
||||
image: gradiant/srsran-4g:23_11
|
||||
command:
|
||||
- enb
|
||||
privileged: true
|
||||
@@ -13,9 +13,10 @@ services:
|
||||
UE_HOSTNAME: ue
|
||||
MCC: "999"
|
||||
MNC: "70"
|
||||
ZMQ: true
|
||||
|
||||
ue:
|
||||
image: openverso/srsran-4g:23_11
|
||||
image: gradiant/srsran-4g:23_11
|
||||
command:
|
||||
- ue
|
||||
privileged: true
|
||||
@@ -29,3 +30,5 @@ services:
|
||||
MSISDN: "0000000001"
|
||||
KEY: "465B5CE8B199B49FAA5F0A2EE238A6BC"
|
||||
OPC: "E8ED289DEBA952E4283B54E88E6183CA"
|
||||
SRSUE_5G: false
|
||||
ZMQ: true
|
||||
@@ -2,6 +2,22 @@
|
||||
|
||||
5G end to end communication demo with open5gs, srsRANProject and srsUE (srsRAN4G).
|
||||
|
||||
# GNB config options
|
||||
|
||||
By default, the driver name and arguments are:
|
||||
|
||||
```
|
||||
DEVICE_DRIVER=uhd
|
||||
DEVICE_ARGS=type=b200,num_recv_frames=64,num_send_frames=64
|
||||
```
|
||||
|
||||
When using DEVICE_DRIVER=zmq and setting DEVICE_ARGS=default, the default values that will be used for zmq are:
|
||||
```
|
||||
device_args: tx_port=tcp://${GNB_ADDRESS}:2000,rx_port=tcp://${UE_ADDRESS}:2001,id=gnb,base_srate=${SRATE}e6
|
||||
```
|
||||
|
||||
If different DEVICE_ARGS are set with ZMQ, ensure that they match the addresses of the GNB and UE devices.
|
||||
|
||||
# Deployment of the core and register subscribers
|
||||
|
||||
deploy the core (open5gs) with:
|
||||
|
||||
359
docs/open5gs-and-srsran-5g/config/smf.yaml
Normal file
359
docs/open5gs-and-srsran-5g/config/smf.yaml
Normal file
@@ -0,0 +1,359 @@
|
||||
logger:
|
||||
file:
|
||||
path: /opt/open5gs/var/log/open5gs/smf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
# max:
|
||||
# ue: 1024 # The number of UE can be increased depending on memory size.
|
||||
# peer: 64
|
||||
|
||||
smf:
|
||||
sbi:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 7777
|
||||
client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
scp:
|
||||
- uri: http://scp:7777
|
||||
pfcp:
|
||||
server:
|
||||
- dev: eth0
|
||||
client:
|
||||
upf:
|
||||
- address: upf
|
||||
gtpc:
|
||||
server:
|
||||
- dev: eth0
|
||||
gtpu:
|
||||
server:
|
||||
- dev: eth0
|
||||
metrics:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 9090
|
||||
session:
|
||||
- subnet: 10.45.0.0/16
|
||||
gateway: 10.45.0.1
|
||||
- subnet: 2001:db8:cafe::/48
|
||||
gateway: 2001:db8:cafe::1
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
- 2001:4860:4860::8888
|
||||
- 2001:4860:4860::8844
|
||||
mtu: 1400
|
||||
# p-cscf:
|
||||
# - 127.0.0.1
|
||||
# - ::1
|
||||
ctf:
|
||||
enabled: auto # auto(default)|yes|no
|
||||
# This line is commented so it doesn't try to reach to the pcrf
|
||||
# freeDiameter: /opt/open5gs/etc/freeDiameter/smf.conf
|
||||
################################################################################
|
||||
# SMF Info
|
||||
################################################################################
|
||||
# <SMF Selection - 5G Core only>
|
||||
# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
|
||||
# 2. NRF responds to AMF with SmfInfo during NF-Discovery.
|
||||
# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
|
||||
#
|
||||
# Note that if there is no SmfInfo, any AMF can select this SMF.
|
||||
#
|
||||
# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
#
|
||||
# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# sd: 009000
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
#
|
||||
# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 1
|
||||
#
|
||||
# o If any of conditions below are met:
|
||||
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1-9]
|
||||
# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
|
||||
# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:99970 TAC:10-20,30-40]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 1-9
|
||||
# - s_nssai:
|
||||
# - sst: 2
|
||||
# sd: 000080
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 10-20
|
||||
# - 30-40
|
||||
#
|
||||
# o Complex Example
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# - sst: 1
|
||||
# sd: 000080
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
# - sst: 1
|
||||
# sd: 009000
|
||||
# dnn:
|
||||
# [internet, ims]
|
||||
# - sst: 2
|
||||
# dnn:
|
||||
# - internet
|
||||
# - sst: 3
|
||||
# sd: 123456
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: [1, 2, 3]
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 4
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 5
|
||||
# - 6
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 100-200
|
||||
# - 300-400
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 500-600
|
||||
# - 700-800
|
||||
# - 900-1000
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 99
|
||||
#
|
||||
################################################################################
|
||||
# SBI Server
|
||||
################################################################################
|
||||
# o Override SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Direct communication with NRF interaction
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect communication with delegated discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect communication without delegated discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# discovery:
|
||||
# delegated: no
|
||||
#
|
||||
################################################################################
|
||||
# HTTPS scheme with TLS
|
||||
################################################################################
|
||||
# o Set as default if not individually set
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
# o Add client TLS verification
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# verify_client: true
|
||||
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# client_cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
################################################################################
|
||||
# PFCP Server
|
||||
################################################################################
|
||||
# o Override PFCP address to be advertised to UPF in PFCP association
|
||||
# pfcp:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
################################################################################
|
||||
# PFCP Client
|
||||
################################################################################
|
||||
# o UPF selection by eNodeB TAC
|
||||
# (either single TAC or multiple TACs, DECIMAL representation)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# tac: 1
|
||||
# - address: 127.0.0.12
|
||||
# tac: [3,5,8]
|
||||
#
|
||||
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# dnn: ims
|
||||
# - address: 127.0.0.12
|
||||
# dnn: [internet, web]
|
||||
#
|
||||
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
|
||||
# (either single enb_id or multiple enb_ids, HEX representation)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# e_cell_id: 463
|
||||
# - address: 127.0.0.12
|
||||
# nr_cell_id: [123456789, 9413]
|
||||
#
|
||||
################################################################################
|
||||
# GTP-C Server
|
||||
################################################################################
|
||||
# o Listen on IPv4 and IPv6
|
||||
# gtpc:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# - address: fd69:f21d:873c:fa::3
|
||||
#
|
||||
################################################################################
|
||||
# GTP-U Server
|
||||
################################################################################
|
||||
# o Listen on IPv4 and IPv6
|
||||
# gtpu:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# - address: ::1
|
||||
#
|
||||
################################################################################
|
||||
# 3GPP Specification
|
||||
################################################################################
|
||||
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48
|
||||
# (If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash.)
|
||||
# session:
|
||||
# - subnet: 10.45.0.1/16
|
||||
# dnn: internet
|
||||
# - subnet: 2001:db8:cafe::1/48
|
||||
# dnn: internet
|
||||
# - subnet: 10.46.0.1/16
|
||||
# dnn: ims
|
||||
# - subnet: 2001:db8:babe::1/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Pool Range
|
||||
# session:
|
||||
# - subnet: 10.45.0.1/16
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-
|
||||
# - -10.45.0.200
|
||||
# - subnet: 2001:db8:cafe::1/48
|
||||
# range:
|
||||
# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0
|
||||
# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0
|
||||
#
|
||||
# o Security Indication(5G Core only)
|
||||
# security_indication:
|
||||
# integrity_protection_indication: required|preferred|not-needed
|
||||
# confidentiality_protection_indication: required|preferred|not-needed
|
||||
# maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
|
||||
# maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate
|
||||
@@ -5,65 +5,62 @@ services:
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: open5gs
|
||||
amf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command:
|
||||
- open5gs-amfd
|
||||
restart : on-failure
|
||||
|
||||
ausf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command:
|
||||
- open5gs-ausfd
|
||||
restart : on-failure
|
||||
|
||||
bsf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-bsfd
|
||||
restart : on-failure
|
||||
|
||||
nrf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-nrfd
|
||||
restart : on-failure
|
||||
|
||||
nssf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-nssfd
|
||||
restart : on-failure
|
||||
|
||||
pcf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command:
|
||||
- open5gs-pcfd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart : on-failure
|
||||
|
||||
pcrf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
command: ["open5gs-pcrfd"]
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
scp:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-scpd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
smf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
#It is necessary to mount the configuration file if pcfr is not deployed
|
||||
volumes:
|
||||
- ./config/smf.yaml:/opt/open5gs/etc/open5gs/smf.yaml
|
||||
command: open5gs-smfd
|
||||
restart : on-failure
|
||||
|
||||
udm:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
restart: on-failure
|
||||
command:
|
||||
- open5gs-udmd
|
||||
|
||||
udr:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
@@ -71,7 +68,8 @@ services:
|
||||
- open5gs-udrd
|
||||
|
||||
upf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
user: root
|
||||
command:
|
||||
- open5gs-upfd
|
||||
cap_add:
|
||||
@@ -82,7 +80,7 @@ services:
|
||||
- 2152:2152
|
||||
|
||||
webui:
|
||||
image: openverso/open5gs-webui:2.7.0
|
||||
image: gradiant/open5gs-webui:2.7.1
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
gnb:
|
||||
image: openverso/srsran-5g:23_10_1
|
||||
image: gradiant/srsran-5g:24_04
|
||||
command:
|
||||
- gnb
|
||||
privileged: true
|
||||
@@ -13,7 +13,7 @@ services:
|
||||
AMF_HOSTNAME: amf
|
||||
AMF_BIND_INTERFACE: eth0
|
||||
DEVICE_DRIVER: zmq
|
||||
DEVICE_ARGS: tx_port=tcp://:2000,rx_port=tcp://:2001,id=gnb,base_srate=23.04e6
|
||||
DEVICE_ARGS: default
|
||||
SRATE: 23.04
|
||||
TX_GAIN: 75
|
||||
RX_GAIN: 75
|
||||
@@ -26,7 +26,7 @@ services:
|
||||
OTW_FORMAT: default
|
||||
|
||||
ue:
|
||||
image: openverso/srsran-4g:23_11
|
||||
image: gradiant/srsran-4g:23_11
|
||||
command:
|
||||
- ue
|
||||
privileged: true
|
||||
@@ -51,5 +51,7 @@ services:
|
||||
NR_NOF_CARRIERS: 1
|
||||
NR_MAX_NOF_PRB: 106
|
||||
NR_NOF_PRB: 106
|
||||
SRSUE_5G: true
|
||||
ZMQ: true
|
||||
|
||||
|
||||
@@ -33,4 +33,4 @@ docker cp open5gs-dbctl $MONGO_CONTAINER:/
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-srsran-5g_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
@@ -13,7 +13,7 @@ deploy the ngc core (open5gs) with:
|
||||
docker compose -f ngc.yaml up -d
|
||||
```
|
||||
|
||||
Register subscribers in ngc with `/register_subscriber.sh`.
|
||||
Register subscribers in ngc with `./register_subscriber.sh`.
|
||||
|
||||
|
||||
# Deploy gnodeb
|
||||
@@ -58,4 +58,5 @@ Undeploy with:
|
||||
docker compose -f gnb1.yaml down
|
||||
docker compose -f gnb2.yaml down
|
||||
docker compose -f ngc.yaml down -v
|
||||
|
||||
```
|
||||
359
docs/open5gs-and-ueransim/config/smf.yaml
Normal file
359
docs/open5gs-and-ueransim/config/smf.yaml
Normal file
@@ -0,0 +1,359 @@
|
||||
logger:
|
||||
file:
|
||||
path: /opt/open5gs/var/log/open5gs/smf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
# max:
|
||||
# ue: 1024 # The number of UE can be increased depending on memory size.
|
||||
# peer: 64
|
||||
|
||||
smf:
|
||||
sbi:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 7777
|
||||
client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
scp:
|
||||
- uri: http://scp:7777
|
||||
pfcp:
|
||||
server:
|
||||
- dev: eth0
|
||||
client:
|
||||
upf:
|
||||
- address: upf
|
||||
gtpc:
|
||||
server:
|
||||
- dev: eth0
|
||||
gtpu:
|
||||
server:
|
||||
- dev: eth0
|
||||
metrics:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 9090
|
||||
session:
|
||||
- subnet: 10.45.0.0/16
|
||||
gateway: 10.45.0.1
|
||||
- subnet: 2001:db8:cafe::/48
|
||||
gateway: 2001:db8:cafe::1
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
- 2001:4860:4860::8888
|
||||
- 2001:4860:4860::8844
|
||||
mtu: 1400
|
||||
# p-cscf:
|
||||
# - 127.0.0.1
|
||||
# - ::1
|
||||
ctf:
|
||||
enabled: auto # auto(default)|yes|no
|
||||
# This line is commented so it doesn't try to reach to the pcrf
|
||||
# freeDiameter: /opt/open5gs/etc/freeDiameter/smf.conf
|
||||
################################################################################
|
||||
# SMF Info
|
||||
################################################################################
|
||||
# <SMF Selection - 5G Core only>
|
||||
# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
|
||||
# 2. NRF responds to AMF with SmfInfo during NF-Discovery.
|
||||
# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
|
||||
#
|
||||
# Note that if there is no SmfInfo, any AMF can select this SMF.
|
||||
#
|
||||
# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
#
|
||||
# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# sd: 009000
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
#
|
||||
# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 1
|
||||
#
|
||||
# o If any of conditions below are met:
|
||||
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1-9]
|
||||
# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
|
||||
# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:99970 TAC:10-20,30-40]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 1-9
|
||||
# - s_nssai:
|
||||
# - sst: 2
|
||||
# sd: 000080
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 10-20
|
||||
# - 30-40
|
||||
#
|
||||
# o Complex Example
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# - sst: 1
|
||||
# sd: 000080
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
# - sst: 1
|
||||
# sd: 009000
|
||||
# dnn:
|
||||
# [internet, ims]
|
||||
# - sst: 2
|
||||
# dnn:
|
||||
# - internet
|
||||
# - sst: 3
|
||||
# sd: 123456
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: [1, 2, 3]
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 4
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 5
|
||||
# - 6
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 100-200
|
||||
# - 300-400
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 500-600
|
||||
# - 700-800
|
||||
# - 900-1000
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# tac: 99
|
||||
#
|
||||
################################################################################
|
||||
# SBI Server
|
||||
################################################################################
|
||||
# o Override SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Direct communication with NRF interaction
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect communication with delegated discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect communication without delegated discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# discovery:
|
||||
# delegated: no
|
||||
#
|
||||
################################################################################
|
||||
# HTTPS scheme with TLS
|
||||
################################################################################
|
||||
# o Set as default if not individually set
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
# o Add client TLS verification
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# verify_client: true
|
||||
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# client_cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
################################################################################
|
||||
# PFCP Server
|
||||
################################################################################
|
||||
# o Override PFCP address to be advertised to UPF in PFCP association
|
||||
# pfcp:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
################################################################################
|
||||
# PFCP Client
|
||||
################################################################################
|
||||
# o UPF selection by eNodeB TAC
|
||||
# (either single TAC or multiple TACs, DECIMAL representation)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# tac: 1
|
||||
# - address: 127.0.0.12
|
||||
# tac: [3,5,8]
|
||||
#
|
||||
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# dnn: ims
|
||||
# - address: 127.0.0.12
|
||||
# dnn: [internet, web]
|
||||
#
|
||||
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
|
||||
# (either single enb_id or multiple enb_ids, HEX representation)
|
||||
# pfcp:
|
||||
# client:
|
||||
# upf:
|
||||
# - address: 127.0.0.7
|
||||
# e_cell_id: 463
|
||||
# - address: 127.0.0.12
|
||||
# nr_cell_id: [123456789, 9413]
|
||||
#
|
||||
################################################################################
|
||||
# GTP-C Server
|
||||
################################################################################
|
||||
# o Listen on IPv4 and IPv6
|
||||
# gtpc:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# - address: fd69:f21d:873c:fa::3
|
||||
#
|
||||
################################################################################
|
||||
# GTP-U Server
|
||||
################################################################################
|
||||
# o Listen on IPv4 and IPv6
|
||||
# gtpu:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# - address: ::1
|
||||
#
|
||||
################################################################################
|
||||
# 3GPP Specification
|
||||
################################################################################
|
||||
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48
|
||||
# (If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash.)
|
||||
# session:
|
||||
# - subnet: 10.45.0.1/16
|
||||
# dnn: internet
|
||||
# - subnet: 2001:db8:cafe::1/48
|
||||
# dnn: internet
|
||||
# - subnet: 10.46.0.1/16
|
||||
# dnn: ims
|
||||
# - subnet: 2001:db8:babe::1/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Pool Range
|
||||
# session:
|
||||
# - subnet: 10.45.0.1/16
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-
|
||||
# - -10.45.0.200
|
||||
# - subnet: 2001:db8:cafe::1/48
|
||||
# range:
|
||||
# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0
|
||||
# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0
|
||||
#
|
||||
# o Security Indication(5G Core only)
|
||||
# security_indication:
|
||||
# integrity_protection_indication: required|preferred|not-needed
|
||||
# confidentiality_protection_indication: required|preferred|not-needed
|
||||
# maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
|
||||
# maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
gnb1:
|
||||
image: openverso/ueransim:3.2.6
|
||||
image: gradiant/ueransim:3.2.6
|
||||
container_name: gnb1
|
||||
command:
|
||||
- gnb
|
||||
@@ -14,7 +14,7 @@ services:
|
||||
SST: '1'
|
||||
SD: '0xffffff'
|
||||
ues1:
|
||||
image: openverso/ueransim:3.2.6
|
||||
image: gradiant/ueransim:3.2.6
|
||||
command: ['ue','-n','3']
|
||||
cap_add:
|
||||
- all
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
gnb2:
|
||||
image: openverso/ueransim:3.2.6
|
||||
image: gradiant/ueransim:3.2.6
|
||||
container_name: gnb2
|
||||
command:
|
||||
- gnb
|
||||
@@ -15,7 +15,7 @@ services:
|
||||
SD: '0xffffff'
|
||||
|
||||
ues2:
|
||||
image: openverso/ueransim:3.2.6
|
||||
image: gradiant/ueransim:3.2.6
|
||||
command: ['ue','-n','3']
|
||||
cap_add:
|
||||
- all
|
||||
|
||||
@@ -7,36 +7,36 @@ services:
|
||||
MONGO_INITDB_DATABASE: open5gs
|
||||
|
||||
amf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command:
|
||||
- open5gs-amfd
|
||||
restart: on-failure
|
||||
|
||||
ausf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command:
|
||||
- open5gs-ausfd
|
||||
restart: on-failure
|
||||
|
||||
bsf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command:
|
||||
- open5gs-bsfd
|
||||
restart: on-failure
|
||||
|
||||
nrf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-nrfd
|
||||
restart: on-failure
|
||||
|
||||
nssf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-nssfd
|
||||
restart: on-failure
|
||||
|
||||
|
||||
pcf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command:
|
||||
- open5gs-pcfd
|
||||
environment:
|
||||
@@ -44,25 +44,28 @@ services:
|
||||
restart: on-failure
|
||||
|
||||
scp:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
command: open5gs-scpd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
|
||||
smf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
#It is necessary to mount the configuration file if pcfr is not deployed
|
||||
volumes:
|
||||
- ./config/smf.yaml:/opt/open5gs/etc/open5gs/smf.yaml
|
||||
restart: on-failure
|
||||
command: open5gs-smfd
|
||||
|
||||
udm:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
restart: on-failure
|
||||
command:
|
||||
- open5gs-udmd
|
||||
|
||||
udr:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
@@ -70,7 +73,8 @@ services:
|
||||
- open5gs-udrd
|
||||
|
||||
upf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.1
|
||||
user: root
|
||||
command:
|
||||
- open5gs-upfd
|
||||
cap_add:
|
||||
@@ -83,7 +87,7 @@ services:
|
||||
- 2152:2152
|
||||
|
||||
webui:
|
||||
image: openverso/open5gs-webui:2.7.0
|
||||
image: gradiant/open5gs-webui:2.7.1
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
|
||||
@@ -32,29 +32,29 @@ docker cp open5gs-dbctl $MONGO_CONTAINER:/
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000002 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000002 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000003 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000003 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000011 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000011 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000012 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000012 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000013 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000013 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
epc:
|
||||
image: openverso/srs-lte:20_10_1
|
||||
image: gradiant/srs-lte:20_10_1
|
||||
command:
|
||||
- epc
|
||||
#restart: on-failure
|
||||
@@ -18,7 +18,7 @@ services:
|
||||
- ./srs-config/:/etc/srslte/
|
||||
|
||||
enodeb:
|
||||
image: openverso/srs-lte:20_10_1
|
||||
image: gradiant/srs-lte:20_10_1
|
||||
command:
|
||||
- enb
|
||||
privileged: true
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
services:
|
||||
epc:
|
||||
image: openverso/srs-lte:20_10_1
|
||||
image: gradiant/srs-lte:20_10_1
|
||||
command:
|
||||
- epc
|
||||
privileged: true
|
||||
@@ -10,7 +10,7 @@ services:
|
||||
volumes:
|
||||
- ./user_db.csv:/etc/srslte/user_db.csv
|
||||
enodeb:
|
||||
image: openverso/srs-lte:20_10_1
|
||||
image: gradiant/srs-lte:20_10_1
|
||||
command:
|
||||
- enb
|
||||
privileged: true
|
||||
@@ -21,7 +21,7 @@ services:
|
||||
ENB_HOSTNAME: enodeb
|
||||
UE_HOSTNAME: ue
|
||||
ue:
|
||||
image: openverso/srs-lte:20_10_1
|
||||
image: gradiant/srs-lte:20_10_1
|
||||
command:
|
||||
- ue
|
||||
privileged: true
|
||||
|
||||
@@ -13,7 +13,7 @@ Running uhd_usrp_probe providing uhd-images from host folder:
|
||||
docker run --rm -ti --privileged \
|
||||
-v /dev/bus/usb/:/dev/bus/usb/ \
|
||||
-v /usr/share/uhd/images:/usr/share/uhd/images \
|
||||
openverso/ettus-uhd:3.15.0 uhd_usrp_probe
|
||||
gradiant/ettus-uhd:3.15.0 uhd_usrp_probe
|
||||
|
||||
```
|
||||
|
||||
@@ -23,7 +23,7 @@ Running uhd_find_devices in the uhd-images variant:
|
||||
docker run --rm -ti --privileged \
|
||||
-v /dev/bus/usb/:/dev/bus/usb/ \
|
||||
-v /usr/share/uhd/images:/usr/share/uhd/images \
|
||||
openverso/ettus-uhd:3.15.0 uhd_find_devices
|
||||
gradiant/ettus-uhd:3.15.0 uhd_find_devices
|
||||
```
|
||||
|
||||
Running uhd host example benchmark_rate:
|
||||
@@ -32,6 +32,6 @@ Running uhd host example benchmark_rate:
|
||||
docker run --rm -ti --privileged \
|
||||
-v /dev/bus/usb/:/dev/bus/usb/ \
|
||||
-v /usr/share/uhd/images:/usr/share/uhd/images \
|
||||
openverso/ettus-uhd:3.15.0 benchmark_rate --rx_rate 10e6 --tx_rate 10e6
|
||||
gradiant/ettus-uhd:3.15.0 benchmark_rate --rx_rate 10e6 --tx_rate 10e6
|
||||
|
||||
```
|
||||
@@ -65,7 +65,7 @@ ENV ANT_HOME="/usr/local/apache-ant-1.9.14"
|
||||
ENV LC_ALL=C.UTF-8
|
||||
ENV LANG=C.UTF-8
|
||||
ENV IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org \
|
||||
EPC_DOMAIN=openverso \
|
||||
EPC_DOMAIN=gradiant \
|
||||
MYSQL_HOSTNAME=mysql \
|
||||
DNS_HOSTNAME=dns \
|
||||
FHOSS_HOSTNAME=fhoss
|
||||
|
||||
@@ -5,7 +5,7 @@ services:
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: free5gc
|
||||
webconsole:
|
||||
image: openverso/free5gc-webconsole:1.0.1
|
||||
image: gradiant/free5gc-webconsole:1.0.1
|
||||
restart: on-failure
|
||||
ports:
|
||||
- 5000:5000
|
||||
@@ -16,7 +16,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/nrfcfg.yaml:/etc/free5gc/nrfcfg.yaml
|
||||
command: ["nrf","-nrfcfg","/etc/free5gc/nrfcfg.yaml"]
|
||||
@@ -26,7 +26,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
command: ["udr","-udrcfg","/etc/free5gc/udrcfg.yaml"]
|
||||
restart : on-failure
|
||||
|
||||
@@ -35,7 +35,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/amfcfg.yaml:/etc/free5gc/amfcfg.yaml
|
||||
command: ["amf","-amfcfg","/etc/free5gc/amfcfg.yaml"]
|
||||
@@ -46,7 +46,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/smfcfg.yaml:/etc/free5gc/smfcfg.yaml
|
||||
- ./config/uerouting.yaml:/etc/free5gc/uerouting.yaml
|
||||
@@ -61,7 +61,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/pcfcfg.yaml:/etc/free5gc/pcfcfg.yaml
|
||||
command: ["pcf","-pcfcfg","/etc/free5gc/pcfcfg.yaml"]
|
||||
@@ -71,7 +71,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/udmcfg.yaml:/etc/free5gc/udmcfg.yaml
|
||||
command: ["udm","-udmcfg","/etc/free5gc/udmcfg.yaml"]
|
||||
@@ -81,7 +81,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/nssfcfg.yaml:/etc/free5gc/nssfcfg.yaml
|
||||
command: ["nssf","-nssfcfg","/etc/free5gc/nssfcfg.yaml"]
|
||||
@@ -91,7 +91,7 @@ services:
|
||||
context: .
|
||||
args:
|
||||
version: 3.0.5
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/ausfcfg.yaml:/etc/free5gc/ausfcfg.yaml
|
||||
command: ["ausf","-ausfcfg","/etc/free5gc/ausfcfg.yaml"]
|
||||
@@ -103,7 +103,7 @@ services:
|
||||
version: 3.0.5
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
image: openverso/free5gc:3.0.5
|
||||
image: gradiant/free5gc:3.0.5
|
||||
volumes:
|
||||
- ./config/upfcfg.yaml:/etc/free5gc/upfcfg.yaml
|
||||
command: ["upf","-f","/etc/free5gc/upfcfg.yaml"]
|
||||
|
||||
@@ -42,7 +42,7 @@ RUN mkdir -p /usr/local/src/ && cd /usr/local/src/ && \
|
||||
cd kamailio && git checkout 5.3
|
||||
|
||||
ENV IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org \
|
||||
EPC_DOMAIN=openverso \
|
||||
EPC_DOMAIN=gradiant \
|
||||
MYSQL_HOSTNAME=mysql \
|
||||
PCSCF_HOSTNAME=pcscf \
|
||||
RTPENGINE_HOSTNAME=rtpengine \
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
FROM ubuntu:focal AS build
|
||||
|
||||
ARG version=2023.w28
|
||||
FROM ubuntu:jammy AS build
|
||||
|
||||
ARG version
|
||||
ENV VERSION=$version
|
||||
|
||||
ARG BUILD_OPTION
|
||||
ARG NEEDED_GIT_PROXY
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Europe
|
||||
ENV BUILD_UHD_FROM_SOURCE=True
|
||||
ENV UHD_VERSION=4.4.0.0
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
#install developers pkg/repo
|
||||
@@ -17,11 +19,19 @@ RUN apt-get update && \
|
||||
build-essential \
|
||||
psmisc \
|
||||
git \
|
||||
gcc-12 \
|
||||
g++-12 \
|
||||
xxd \
|
||||
libpcre2-dev \
|
||||
python3-dev \
|
||||
bison \
|
||||
flex \
|
||||
m4 \
|
||||
#unzip is needed for protobuf
|
||||
unzip \
|
||||
# python3-pip for conf template generation
|
||||
python3-pip && \
|
||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12 && \
|
||||
pip3 install --ignore-installed pyyaml
|
||||
|
||||
# In some network environments, GIT proxy is required
|
||||
@@ -42,10 +52,19 @@ RUN /bin/sh oaienv && \
|
||||
RUN /bin/sh oaienv && \
|
||||
cd cmake_targets && \
|
||||
mkdir -p log && \
|
||||
./build_oai --eNB --gNB --RU --UE --nrUE --ninja --build-lib "telnetsrv enbscope uescope nrscope nrqtscope" -w USRP -t Ethernet --verbose-ci --noavx512 -c --cmake-opt -DCMAKE_C_FLAGS=-Werror --cmake-opt -DCMAKE_CXX_FLAGS=-Werror
|
||||
./build_oai -c --ninja \
|
||||
--eNB --gNB --RU --UE --nrUE \
|
||||
--build-lib "telnetsrv enbscope uescope nrscope" \
|
||||
-w USRP -t Ethernet \
|
||||
--build-e2 --cmake-opt -DXAPP_MULTILANGUAGE=OFF \
|
||||
--noavx512 \
|
||||
--cmake-opt -DCMAKE_C_FLAGS=-Werror --cmake-opt -DCMAKE_CXX_FLAGS=-Werror $BUILD_OPTION && \
|
||||
# Mainly to see if the sanitize option was perfectly executed
|
||||
ldd ran_build/build/nr-softmodem
|
||||
|
||||
#start from scratch for target executable
|
||||
FROM ubuntu:focal as oai
|
||||
FROM ubuntu:jammy AS oai
|
||||
ARG BUILD_OPTION
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Europe
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
@@ -68,18 +87,14 @@ RUN apt-get update && \
|
||||
iproute2 \
|
||||
dnsutils \
|
||||
gdb \
|
||||
python \
|
||||
python3 \
|
||||
python3-six \
|
||||
python3-requests \
|
||||
libusb-1.0-0 && \
|
||||
# Install UHD driver from ettus
|
||||
add-apt-repository ppa:ettusresearch/uhd --yes && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||
libuhd-dev \
|
||||
libuhd4.4.0 \
|
||||
uhd-host && \
|
||||
/bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||
libasan5 \
|
||||
libubsan1 \
|
||||
liblapacke; fi' && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=build \
|
||||
@@ -93,6 +108,20 @@ COPY --from=build \
|
||||
COPY --from=build /oai-ran/docker/scripts/*.sh /
|
||||
COPY --from=build /oai-ran/cmake_targets/ran_build/build/*.so /usr/local/lib/
|
||||
|
||||
COPY --from=build /usr/local/bin/uhd_find_devices /usr/local/bin
|
||||
COPY --from=build /usr/local/lib/libuhd.so.4.4.0 /usr/local/lib
|
||||
COPY --from=build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai/bin
|
||||
COPY --from=build \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_regex.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.74.0 \
|
||||
/usr/lib/x86_64-linux-gnu/
|
||||
|
||||
RUN cd /opt/oai/bin && \
|
||||
ln -s nr-softmodem nr-softmodem.Rel15 && \
|
||||
ln -s lte-softmodem lte-softmodem.Rel15 && \
|
||||
|
||||
@@ -4,7 +4,7 @@ oai is a docker image to run Open Air Interface as a container.
|
||||
|
||||
## Usage
|
||||
|
||||
This docker image must be run with a command (docker run -ti openverso/oai CMD)
|
||||
This docker image must be run with a command (docker run -ti gradiant/oai CMD)
|
||||
|
||||
example of commands:
|
||||
- /opt/oai/bin/lte-softmodem.Rel15 -O /oai.conf
|
||||
@@ -33,7 +33,7 @@ The entrypoint does also some magic to deal with hostnames, interface names and
|
||||
For example, if GNB_NG_IF_NAME=eth0, the IP of the eth0 is extracted and assigned to GNB_NG_IP_ADDRESS variable.
|
||||
|
||||
- It resolves the IPs of the names *_HOSTNAME environment variables and generates corresponding *_IP_ADDRESS environment variables.
|
||||
For example, if MME_S1C_HOSTNAME=mme.openverso.org, the entrypoints resolves the IP and assigns it to MME_S1C_IP_ADDRESS variable.
|
||||
For example, if MME_S1C_HOSTNAME=mme.gradiant.org, the entrypoints resolves the IP and assigns it to MME_S1C_IP_ADDRESS variable.
|
||||
|
||||
Set USE_B2XX, USE_X3XX or USE_N3XX to load the USRP binaries.
|
||||
|
||||
@@ -45,7 +45,7 @@ docker run --rm -ti --privileged \
|
||||
-v $PWD/examples/enb.fdd.conf:/opt/oai/etc/enb.fdd.conf \
|
||||
--env-file $PWD/examples/enb-fdd.env \
|
||||
--privileged \
|
||||
openverso/oai:2021.w36 opt/oai/bin/lte-softmodem.Rel15 -O /oai.conf
|
||||
gradiant/oai:2021.w36 opt/oai/bin/lte-softmodem.Rel15 -O /oai.conf
|
||||
```
|
||||
|
||||
### Example 2: gnodeb standalone
|
||||
@@ -56,7 +56,7 @@ docker run --rm -ti --privileged \
|
||||
-v $PWD/examples/gnb.sa.tdd.conf:/opt/oai/etc/gnb.sa.tdd.conf \
|
||||
--env-file $PWD/examples/gnb-sa.env \
|
||||
--privileged \
|
||||
openverso/oai:2021.w36 opt/oai/bin/nr-softmodem.Rel15 -E --sa -O /oai.conf
|
||||
gradiant/oai:2021.w36 opt/oai/bin/nr-softmodem.Rel15 -E --sa -O /oai.conf
|
||||
```
|
||||
|
||||
|
||||
@@ -68,5 +68,5 @@ docker run --rm -ti --privileged \
|
||||
-v $PWD/examples/nr-ue-sim.conf:/opt/oai/etc/nr-ue-sim.conf \
|
||||
--env-file $PWD/examples/nr_ue.env \
|
||||
--privileged \
|
||||
openverso/oai:2021.w36 /opt/oai/bin/nr-uesoftmodem.Rel15 -E --sa -O /oai.conf
|
||||
gradiant/oai:2021.w36 /opt/oai/bin/nr-uesoftmodem.Rel15 -E --sa -O /oai.conf
|
||||
```
|
||||
6
images/oai/entrypoint.sh
Executable file → Normal file
6
images/oai/entrypoint.sh
Executable file → Normal file
@@ -140,11 +140,11 @@ fi
|
||||
|
||||
# Load the USRP binaries
|
||||
if [[ -v USE_B2XX ]]; then
|
||||
/usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
|
||||
/opt/oai/bin/uhd_images_downloader.py -t b2xx
|
||||
elif [[ -v USE_X3XX ]]; then
|
||||
/usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
|
||||
/opt/oai/bin/uhd_images_downloader.py -t x3xx
|
||||
elif [[ -v USE_N3XX ]]; then
|
||||
/usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
|
||||
/opt/oai/bin/uhd_images_downloader.py -t n3xx
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
IMAGE_TAG=2023.w34
|
||||
IMAGE_TAG=2024.w39
|
||||
#comma separated list of platforms. If empty, image will not be multiarch.
|
||||
PLATFORMS=
|
||||
|
||||
@@ -1,16 +1,24 @@
|
||||
FROM mongo:latest
|
||||
|
||||
ARG version
|
||||
ENV VERSION=$version
|
||||
ENV VERSION=$version \
|
||||
USER=open5gs \
|
||||
GROUP=open5gs
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y wget && \
|
||||
apt-get clean
|
||||
|
||||
RUN wget -O /usr/local/bin/open5gs-dbctl https://github.com/open5gs/open5gs/raw/main/misc/db/open5gs-dbctl && \
|
||||
chmod +x /usr/local/bin/open5gs-dbctl
|
||||
|
||||
RUN groupadd -r $GROUP && \
|
||||
useradd --comment "open5gs" --shell /bin/bash -M -r -g $GROUP $USER
|
||||
RUN chown -R $GROUP:$USER /usr/local/bin/open5gs-dbctl
|
||||
USER open5gs
|
||||
|
||||
ENTRYPOINT ["bin/bash", "-c"]
|
||||
|
||||
CMD ["/usr/local/bin/open5gs-dbctl"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:20.10.0-bullseye as dev
|
||||
FROM node:20.10.0-bullseye AS dev
|
||||
LABEL maintainer="cgiraldo@gradiant.org" \
|
||||
organization="gradiant.org"
|
||||
|
||||
@@ -19,8 +19,7 @@ RUN cd /opt/open5gs-${VERSION}/webui && npm install && npm run build
|
||||
FROM node:20.10.0-bullseye-slim
|
||||
|
||||
|
||||
ENV VERSION=$version \
|
||||
USER=open5gs \
|
||||
ENV USER=open5gs \
|
||||
GROUP=open5gs \
|
||||
DB_URI=mongodb://mongo/open5gs
|
||||
|
||||
@@ -33,5 +32,7 @@ WORKDIR /opt/open5gs-webui
|
||||
RUN npm run-script build
|
||||
ENV NODE_ENV=production
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
RUN chown -R $GROUP:$USER /opt/open5gs-webui/
|
||||
USER open5gs
|
||||
ENTRYPOINT ["node", "server/index.js"]
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
IMAGE_TAG=2.7.0
|
||||
IMAGE_TAG=2.7.2
|
||||
#comma separated list of platforms. If empty, image will not be multiarch.
|
||||
PLATFORMS=linux/amd64,linux/arm64
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
FROM debian:bullseye as builder
|
||||
|
||||
ARG version
|
||||
ARG branch=main
|
||||
ENV VERSION=$version
|
||||
ENV BRANCH=$branch
|
||||
|
||||
LABEL org.opencontainers.image.authors="Carlos Giraldo <cgiraldo@gradiant.org>" \
|
||||
org.opencontainers.image.vendor="Gradiant" \
|
||||
@@ -45,8 +47,8 @@ RUN apt-get update && \
|
||||
RUN mkdir -p /opt/open5gs && cd /tmp && git clone https://github.com/open5gs/open5gs && \
|
||||
cd open5gs && \
|
||||
if [ "$VERSION" = "dev" ]; then \
|
||||
git checkout main; \
|
||||
wget https://api.github.com/repos/open5gs/open5gs/git/refs/heads/main -O /open5gs-ver.json; \
|
||||
git checkout $BRANCH; \
|
||||
wget https://api.github.com/repos/open5gs/open5gs/git/refs/heads/$BRANCH -O /open5gs-ver.json; \
|
||||
else \
|
||||
git checkout v$VERSION; \
|
||||
wget https://api.github.com/repos/open5gs/open5gs/git/refs/tags/v$VERSION -O /open5gs-ver.json; \
|
||||
@@ -95,14 +97,15 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
|
||||
ENV APP_ROOT=/opt/open5gs
|
||||
COPY --from=builder /opt/open5gs ${APP_ROOT}
|
||||
|
||||
RUN cd ${APP_ROOT}/lib && ln -s $(uname -m)-linux-gnu/freeDiameter .
|
||||
ENV PATH=${APP_ROOT}/bin:${PATH} HOME=${APP_ROOT}
|
||||
WORKDIR ${APP_ROOT}
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
# TODO: run with non-root user
|
||||
#RUN groupadd -r open5gs && useradd --no-log-init -r -g open5gs open5gs
|
||||
#RUN chown -R open5gs:open5gs ${APP_ROOT}
|
||||
#USER open5gs
|
||||
#Run with non-root user
|
||||
RUN groupadd -r open5gs && useradd --no-log-init -r -g open5gs open5gs
|
||||
RUN chown -R open5gs:open5gs ${APP_ROOT}
|
||||
USER open5gs
|
||||
|
||||
#Default CONF values
|
||||
ENV DB_URI=mongodb://mongo/open5gs
|
||||
|
||||
123
images/open5gs/Dockerfile.riscv-unstable
Normal file
123
images/open5gs/Dockerfile.riscv-unstable
Normal file
@@ -0,0 +1,123 @@
|
||||
FROM debian:unstable as builder
|
||||
|
||||
ARG version
|
||||
ARG branch=main
|
||||
ENV VERSION=$version
|
||||
ENV BRANCH=$branch
|
||||
|
||||
LABEL org.opencontainers.image.authors="Carlos Giraldo <cgiraldo@gradiant.org>" \
|
||||
org.opencontainers.image.vendor="Gradiant" \
|
||||
org.opencontainers.image.licenses="Apache-2.0" \
|
||||
org.opencontainers.image.version="$version"
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
ninja-build \
|
||||
build-essential \
|
||||
flex \
|
||||
bison \
|
||||
git \
|
||||
cmake \
|
||||
meson \
|
||||
libsctp-dev \
|
||||
libgnutls28-dev \
|
||||
libgcrypt-dev \
|
||||
libssl-dev \
|
||||
libidn-dev \
|
||||
libmongoc-dev \
|
||||
libbson-dev \
|
||||
libyaml-dev \
|
||||
libmicrohttpd-dev \
|
||||
libcurl4-gnutls-dev \
|
||||
libnghttp2-dev \
|
||||
libtins-dev \
|
||||
libtalloc-dev \
|
||||
iproute2 \
|
||||
ca-certificates \
|
||||
netbase \
|
||||
pkg-config \
|
||||
wget && \
|
||||
apt-get clean
|
||||
|
||||
RUN mkdir -p /opt/open5gs && cd /tmp && git clone https://github.com/open5gs/open5gs && \
|
||||
cd open5gs && \
|
||||
if [ "$VERSION" = "dev" ]; then \
|
||||
git checkout $BRANCH; \
|
||||
wget https://api.github.com/repos/open5gs/open5gs/git/refs/heads/$BRANCH -O /open5gs-ver.json; \
|
||||
else \
|
||||
git checkout v$VERSION; \
|
||||
wget https://api.github.com/repos/open5gs/open5gs/git/refs/tags/v$VERSION -O /open5gs-ver.json; \
|
||||
fi && \
|
||||
meson build --prefix=/opt/open5gs && \
|
||||
ln -s /opt/open5gs/subprojects/ /opt/open5gs/../subprojects && \
|
||||
ninja -C build install
|
||||
|
||||
|
||||
RUN apt-get update && apt-get install -y net-tools iputils-ping iproute2 dnsutils gettext-base iptables
|
||||
|
||||
## Replace default config values to work in containers (use dev eth0 and reference other containers by name)
|
||||
COPY configs/open5gs/* /opt/open5gs/etc/open5gs/
|
||||
COPY configs/freeDiameter/* /opt/open5gs/etc/freeDiameter/
|
||||
|
||||
|
||||
FROM debian:unstable-slim
|
||||
|
||||
ARG version
|
||||
ENV VERSION=$version
|
||||
|
||||
LABEL org.opencontainers.image.authors="Carlos Giraldo <cgiraldo@gradiant.org>" \
|
||||
org.opencontainers.image.vendor="Gradiant" \
|
||||
org.opencontainers.image.licenses="Apache-2.0" \
|
||||
org.opencontainers.image.version="$version"
|
||||
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
|
||||
curl \
|
||||
libtalloc2 \
|
||||
libgnutls30t64 \
|
||||
libgcrypt20 \
|
||||
libssl3t64 \
|
||||
libbson-1.0-0 \
|
||||
libtins4.5 \
|
||||
libcurl4-gnutls-dev \
|
||||
libyaml-0-2 \
|
||||
libmongoc-1.0-0 \
|
||||
libsctp1 \
|
||||
libidn12 \
|
||||
libcurl4t64 \
|
||||
libmicrohttpd12 \
|
||||
libnghttp2-14 \
|
||||
wondershaper iproute2 iputils-ping procps net-tools iptables iperf3 traceroute tcpdump && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN update-alternatives --set iptables /usr/sbin/iptables-legacy
|
||||
|
||||
ENV APP_ROOT=/opt/open5gs
|
||||
COPY --from=builder /opt/open5gs ${APP_ROOT}
|
||||
|
||||
RUN cd ${APP_ROOT}/lib && ln -s $(uname -m)-linux-gnu/freeDiameter .
|
||||
ENV PATH=${APP_ROOT}/bin:${PATH} HOME=${APP_ROOT}
|
||||
WORKDIR ${APP_ROOT}
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
# TODO: run with non-root user
|
||||
#RUN groupadd -r open5gs && useradd --no-log-init -r -g open5gs open5gs
|
||||
#RUN chown -R open5gs:open5gs ${APP_ROOT}
|
||||
#USER open5gs
|
||||
|
||||
#Default CONF values
|
||||
ENV DB_URI=mongodb://mongo/open5gs
|
||||
|
||||
ENV IPV4_TUN_SUBNET="10.45.0.0/16" \
|
||||
IPV4_TUN_ADDR="10.45.0.1/16" \
|
||||
IPV6_TUN_ADDR="cafe::1/64" \
|
||||
ENABLE_NAT=true
|
||||
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["/bin/bash"]
|
||||
|
||||
@@ -1 +1 @@
|
||||
69AF44D85BF44E431C8B2C50190B2F64CE0E19DA
|
||||
69AF44D85BF44E431C8B2C50190B2F64CE0E19DE
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICaTCCAVECAQAwJDELMAkGA1UEBhMCRVMxFTATBgNVBAMMDGhzcy5ncmFkaWFu
|
||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOjr/91qpUgM9673qd6z
|
||||
DgY/PdFJqKyYLi2Sgf6qS1909sPIL6rEyNHy2FgvL2nfuPtzGSxu2LKDKQFpDLJy
|
||||
zN6cDo2muvF45CvzFlW1bjz6i62dEnD1yFAwdv/lRecvEN+516MZ0YRpX3yoDUzy
|
||||
AQEWEHjbsEb8qnDgy/mZXSqkMi4etSfRKTWf5hXF5utlSo+GhoWebzIk5wBoAQcX
|
||||
4rcvRJdGoaCW7LBaxLD6MzCUlktsaUkKt/nzRdW6XlP546yNk55wj+WIS/iulQFT
|
||||
zP0Lsmw3aPAGRQt/6r94HbitW0whZgjAMQjy+eIR3TH7nWzqBjzXYNW0gg781NGK
|
||||
RD0CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCuBjhD5xAdzNuaUWRig3OryFxM
|
||||
xogqjibaS5hep4oLvqu85ZU/6zGUVVLB1mm1AlrFNmfiDernBoJ94hK1Gdn8DiXs
|
||||
onEZp2fSIGP/WMx5C+5G6N/Ii5GUmQtcE63Z16z9e5XoGLGVIjyCFQYzchs5VbjX
|
||||
7lc4w7r8KPrn7GIKWOCHJMlLI12P+ltZVLy8oZ4eJIifQb4xaXeGOV/tPc3dzuNR
|
||||
MBFqO0r9hVa8Pypf27zDDE8PuDx7ZBLAVGmg6LYVc0lH/9mf2zIBuMD4QyFeHSI/
|
||||
101rB2BZQ9GeFRbpgWKmbhh/30FM5XLOEozqyBTv94+fHf/sqQeESYfx9fuo
|
||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALgz1z39kW5WElXKjizj
|
||||
TC33d3NvCc8tmZMVxrDR8BVc6g457cTnNL5DdkwbuB1Vfw/Hfya19zr3cWVhNARM
|
||||
F6k+copd28d5qDBZXGAcMJqlw4ZPQASPh8qQzArP2eIpAQ+pazkA9YtzG6v58/YF
|
||||
+pAabCFjFkYjUVvAOpFx5udIfb9kfw6z9QP2f1ndvJlsiPxmgP+5KKO1mI7SXj4W
|
||||
h3CpG64DPRVyyePh7NiSwLoyvr0wR3yNeVDn7LpH8yA+IgQpSwTplrLTH6PoWya9
|
||||
2Tc/tijQ+PAOev338EokuI9PBugfbqZDmVb8c6Blvm+/7O5wraALwzZTw+jiNfsp
|
||||
X/8CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQBhQ/dLtGjtHrUUiHxKGNm2Nieg
|
||||
Neur7j17ZcY+uofR6dMws+Cq2SGwrIevQWMT1JNCO7xESIHnCU2vpNDlqUD4ORoa
|
||||
HLgFuFVSqKW6PiMlyNs50cjYcj/pFSIFSxt6wRNEqWqtiAwNDWOh9RKqCTWW3Cl/
|
||||
fx6FKYSQdMxqE8AE071Ckl3mh293abatxo2/YarkXpCx59myhvlp4gLIM7IJiE2m
|
||||
pTuQ6exyyNEoxg0Ul8SIYMJixKi99nL0Nv2KxVGAzk2O9/soM85nOebRfFCvZnY/
|
||||
ubDchIW0Ac5Iw3I6aHOylf/BgAwcsbeTKao0jmSXpojvilxupK0ukZ7lzFny
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhnWMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhnbMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
CzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQHDARWaWdv
|
||||
MREwDwYDVQQKDAhHcmFkaWFudDEVMBMGA1UEAwwMZ3JhZGlhbnQub3JnMB4XDTI0
|
||||
MDEwOTExMjIzNloXDTM0MDEwNjExMjIzNlowJDELMAkGA1UEBhMCRVMxFTATBgNV
|
||||
MDExNzE3MjUzOFoXDTM0MDExNDE3MjUzOFowJDELMAkGA1UEBhMCRVMxFTATBgNV
|
||||
BAMMDGhzcy5ncmFkaWFudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
AOjr/91qpUgM9673qd6zDgY/PdFJqKyYLi2Sgf6qS1909sPIL6rEyNHy2FgvL2nf
|
||||
uPtzGSxu2LKDKQFpDLJyzN6cDo2muvF45CvzFlW1bjz6i62dEnD1yFAwdv/lRecv
|
||||
EN+516MZ0YRpX3yoDUzyAQEWEHjbsEb8qnDgy/mZXSqkMi4etSfRKTWf5hXF5utl
|
||||
So+GhoWebzIk5wBoAQcX4rcvRJdGoaCW7LBaxLD6MzCUlktsaUkKt/nzRdW6XlP5
|
||||
46yNk55wj+WIS/iulQFTzP0Lsmw3aPAGRQt/6r94HbitW0whZgjAMQjy+eIR3TH7
|
||||
nWzqBjzXYNW0gg781NGKRD0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEApa+i8Kjs
|
||||
gl01mhbjWmhHWqRJbNUEceD77Hqm1/YlAqSwICVSbbLR3wtYu2F50XsVxvgPl1Ny
|
||||
IrjTxoa5lFz/S/ayfIAqzdiM4j7VKk4Rls4BpUow6fexSu1d8lKNnLk2ffInEd/6
|
||||
8tb6zUmLNrCapBlz0vi+4jKSCRbzTuijVK7cO8jbLVdCXRs+oGK4ROer0zSMsv2U
|
||||
yMeBR4unOwIWBV9Z3Zjh5YNUek32b3HlcE5joLCk9YH1zX4jmv6UrAEXFHULAgig
|
||||
0lf/yLljavuhTj6zK/Jz2UsjlNG2dr0WdvwHGEVAswguleB/HW6EB+REwwJfup8W
|
||||
MfZwCaTFyByxNA==
|
||||
ALgz1z39kW5WElXKjizjTC33d3NvCc8tmZMVxrDR8BVc6g457cTnNL5DdkwbuB1V
|
||||
fw/Hfya19zr3cWVhNARMF6k+copd28d5qDBZXGAcMJqlw4ZPQASPh8qQzArP2eIp
|
||||
AQ+pazkA9YtzG6v58/YF+pAabCFjFkYjUVvAOpFx5udIfb9kfw6z9QP2f1ndvJls
|
||||
iPxmgP+5KKO1mI7SXj4Wh3CpG64DPRVyyePh7NiSwLoyvr0wR3yNeVDn7LpH8yA+
|
||||
IgQpSwTplrLTH6PoWya92Tc/tijQ+PAOev338EokuI9PBugfbqZDmVb8c6Blvm+/
|
||||
7O5wraALwzZTw+jiNfspX/8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEASixfiGFp
|
||||
Eo2RjCrsEdqlnxffGCl9CzBV/1apq492CkwS51z7ZmajLdxInRaiazHokNNeoTZI
|
||||
/nA2DOu6Jf+YJxbN+f7jzv35WZ84pehQX+D7w0OGb0+sfpVFORG33Ua1fcpO6J+/
|
||||
zeg51qh9fvczDCozY/8cPPrQBORFWq7dMjX7XaY3a/OlagrZ8yrqlaoSum029lBq
|
||||
JsmRZi3HDyykVyd/Obs8bFBlBMyjWJGBH0DVzJ1y3SXLaqKoaAz29owEnt/aSH1M
|
||||
mH5T9/JUv4/ImeKC2tCeCunb+w68m2VbKpcfIUCgcu/AcBvu3cK6Ftssp941vHQK
|
||||
XpnAf0YWA+O3zw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
@@ -224,13 +224,13 @@ TLS_CA = "etc/freeDiameter/cacert.pem";
|
||||
# 4 - full - display the complete information on a single long line
|
||||
# 8 - tree - display the complete information in an easier to read format spanning several lines.
|
||||
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICaTCCAVECAQAwJDELMAkGA1UEBhMCRVMxFTATBgNVBAMMDG1tZS5ncmFkaWFu
|
||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkQyU2Zdf8P5mbn+SjO
|
||||
PzU9XMImluvTz0rznTQdmj8uafPXqsZ7NoA0wVk0WA8x8Takbk9m1UFlObZtigg8
|
||||
hoF4sSv1OjEr2impXu0YAqWGSVWWIyzurZ0d2/VZp66cnRsdmWjJNeTpoxMHiRTP
|
||||
oeJGEjuKI2f72V+WEdCF2uAipLp3R3GtCy9qaxW+/4ejG46JvIlKOwG2X12o5QRg
|
||||
/f+SQo0LGp+15UTgGsQmUr8HJu0rw+DjaTr/g2L+3sJLztKFka2tosp66dOCKGZU
|
||||
BSgN4SjuE56AEa3Syi0KA1WDjj3YB9nLej/Cg6GwQ4/sZT5ELnwnTjL1AoOifOmi
|
||||
GaUCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCYIFJpxsp8EiBZ3F6gjrDuFu9b
|
||||
CqcgeGCI9AviTDUQaXwjuJDkWyNVBVcPzp0G8orgPI3EN83LLUhKd6WUIk6grmJ6
|
||||
fMMD4ve5viuoG7ZYjyfA+KjBFHk2j3K7un1BmD31v9IbF+mpsrFfy65MoWdSkxjk
|
||||
jxOzePx/fO6DXrBMNNzYQ8qnYQUafHHWNG1WsvgOnY0oaSCuCUP3+XXQDveTVX61
|
||||
mZiY7KQ9W15s3Zctrvo3fMlUUQSacGdqd3GBYf5Ef0zcn6LJaAKIPxJ2hPythfBI
|
||||
XEgNQ8t0nEBmEl/W8SWfvGY1+ycTIKYkIQcm+VjA3XyzyolHcEjEnDvW6xUu
|
||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKZCmA2FoOvoY1VNHody
|
||||
abJaBkBQ+fkzexHyxGr2ldGIuXV4aOOfyBFchTzjT5lrpwX6sHNhspidocqDwO48
|
||||
c0ezec9z5dzcR4lmwIAOG4iGR71CBOz9OYwObc4x4JVVAqRnRSyU8tz8FshndIH/
|
||||
c8/t11L+TgvrizUn586OYSdZV5ghkn1J+aYFAYuZDO4rVCYLNaY7gZbK6ddkHPXL
|
||||
syu0AmY0y7wCUF/2G0gIJmGzrQzGCOyaepPx/6rsds8sEsVQxwefBdowj6Iusu6R
|
||||
oXOHThXwXdmFTJzjdTH/eK6U094f+9CIICbC5oKNWWLQS6M6D1y8WDCczcyleBQ0
|
||||
4H8CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCFVoaTTZhPKJFeRjwich3oWS9h
|
||||
hYFWzeAMzbMcE55wU5epVPKNOw4zpfKqeFh3PeeCLGh60GRrRYjDUm5u/8iITPcc
|
||||
ZhAMWmwNRXnKAMwQ5cOet9EJFf/1zmaFyWZoMbR50oY5BlM7gJsmhkc90Wsazkdz
|
||||
EEOd9/djoMHxy2gqBfAqnPvV7h5aottjJ6lyBerdCVKcYeiY2iTCyRAfvnn3BSkz
|
||||
QBzH6m+LOwLtfE/jSdvtXfwAxHp4u5frQtw7BQFVMMSTcMAOozHTIwU3qVgf0ph2
|
||||
mT+on7eVmR8drzcFxsv9/tiTFe/zdBJxEhmiR4QL06tMDpK8ZijXtDaHKh8x
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhnXMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhncMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
CzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQHDARWaWdv
|
||||
MREwDwYDVQQKDAhHcmFkaWFudDEVMBMGA1UEAwwMZ3JhZGlhbnQub3JnMB4XDTI0
|
||||
MDEwOTExMjIzNloXDTM0MDEwNjExMjIzNlowJDELMAkGA1UEBhMCRVMxFTATBgNV
|
||||
MDExNzE3MjUzOFoXDTM0MDExNDE3MjUzOFowJDELMAkGA1UEBhMCRVMxFTATBgNV
|
||||
BAMMDG1tZS5ncmFkaWFudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
ALkQyU2Zdf8P5mbn+SjOPzU9XMImluvTz0rznTQdmj8uafPXqsZ7NoA0wVk0WA8x
|
||||
8Takbk9m1UFlObZtigg8hoF4sSv1OjEr2impXu0YAqWGSVWWIyzurZ0d2/VZp66c
|
||||
nRsdmWjJNeTpoxMHiRTPoeJGEjuKI2f72V+WEdCF2uAipLp3R3GtCy9qaxW+/4ej
|
||||
G46JvIlKOwG2X12o5QRg/f+SQo0LGp+15UTgGsQmUr8HJu0rw+DjaTr/g2L+3sJL
|
||||
ztKFka2tosp66dOCKGZUBSgN4SjuE56AEa3Syi0KA1WDjj3YB9nLej/Cg6GwQ4/s
|
||||
ZT5ELnwnTjL1AoOifOmiGaUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEATTQicV7y
|
||||
ttUVwzc1sglwa6vE5LpaTWF+D5Fq+S4MX6AnCw7Q28pQzrD3sRFl6JeaZXV423Fu
|
||||
RPUuOVLdPCrrPhhxGfFCvCWtCCZE9OOy55QehfeZ3seum/D3Y1xP7N/8FRXZAiYI
|
||||
TwSWFMR9wrgwqVZSQ/2omx+qZ+IruFV8/9QyDewA79zafuEheK+tI5fxMYlBc4qo
|
||||
J11cl8/5iEs2/Vw7idRpwqV+GT6xiX7vSTQJU2TlBUBJWsqvaZLyQfq7b3JhmIHX
|
||||
6mMkLl/M6aUoIhnfXWXUkFmJtWENDvmrJWXMeukui130R2OFCwI7XZIrUADY0ZnB
|
||||
imisXVMP4Uj5MA==
|
||||
AKZCmA2FoOvoY1VNHodyabJaBkBQ+fkzexHyxGr2ldGIuXV4aOOfyBFchTzjT5lr
|
||||
pwX6sHNhspidocqDwO48c0ezec9z5dzcR4lmwIAOG4iGR71CBOz9OYwObc4x4JVV
|
||||
AqRnRSyU8tz8FshndIH/c8/t11L+TgvrizUn586OYSdZV5ghkn1J+aYFAYuZDO4r
|
||||
VCYLNaY7gZbK6ddkHPXLsyu0AmY0y7wCUF/2G0gIJmGzrQzGCOyaepPx/6rsds8s
|
||||
EsVQxwefBdowj6Iusu6RoXOHThXwXdmFTJzjdTH/eK6U094f+9CIICbC5oKNWWLQ
|
||||
S6M6D1y8WDCczcyleBQ04H8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAZ56f4xbt
|
||||
IAELOYqp/vEQ8eqoLh87+z6H8cf7IF9luqHqe+ZlxIJtJkyzRReB5JZlU6BDPXtc
|
||||
HHQncS8xGIVbX+dtRzbcN32E+hF9OA2fm8H1krt2JKs+ZvQwJ8orJog7KBfL65UT
|
||||
11QlDCwVlZwp/3LvY1W7JqzJ9TKRQdB6XV3TlOs6PTOcx8dOhU8yjpJYL7czEDjO
|
||||
EvXP0jd7YfQQOoPC8yy1vG1cn6BfPumQUgaBGvtTDEEDfCDFc/Lb/lbwmRGT41m3
|
||||
Pc/iobkkA7AFz+ZBEUZriLdRUsaOyaTJIurF8pYWjSKKAIhedEdA6qz46BviHK9f
|
||||
gXIOOQ5iFu+fKA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
@@ -224,13 +224,13 @@ TLS_CA = "etc/freeDiameter/cacert.pem";
|
||||
# 4 - full - display the complete information on a single long line
|
||||
# 8 - tree - display the complete information in an easier to read format spanning several lines.
|
||||
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICajCCAVICAQAwJTELMAkGA1UEBhMCRVMxFjAUBgNVBAMMDXBjcmYuZ3JhZGlh
|
||||
bnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwoXb2/NXy1ukG4Fq5
|
||||
wgiwboH6jdwqhYSDc8TppOMBdgrtAj2OMLdbjDKHQCPEDcy4ewphXtQeyaTNPr/H
|
||||
EobbAJGHOd/3nex4HBdfrSHOMipB59nVkIVO7c/ZFeM9U4iQmnxCY5+rmOOfMrdr
|
||||
3FLsVeOFp4/T04llrur5xVMqQZJLqj68dERE8gcH1Rp6fK2MUg2mR9HD9iZE5EcC
|
||||
GPgxEEB2IgNyZkjREvhNA6yqolhosi9oTpmLEDMxV8yEOy6lX48qKU7hibUInIzr
|
||||
30oZAE2IZTMlvOb2G0hhEX9SIoBshL3gZUqHMHI23fYipS5jnie9HPqK7aQES544
|
||||
0PD1AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAjLfsm7w1FjAYIutnf75cjJVj
|
||||
ZHcdfznJhxfuxGmtbBcOjkPSMuhCdcDTU455BHCr0euQf3fw3i3ktGu9My/X9f60
|
||||
k0n1QZiSdla2vRlNdi8ZnKpxdT7j67gBVLsNuJ/1FTtoMEsI1Yd8kdOEMqbkCWSV
|
||||
7wk2KqSZ6M5Z3X4bt/PQfBf042271z4/Zy0v3ec5n2bTdb4TErobnmu+7Oi4x4Yn
|
||||
mqUgD8WNIMn+fH8tD1BSAbSdgxzpAR8jxNo1L0heItpmNMXVkJve5atUbmQCCaxW
|
||||
TJ8GBnbkTwNLwfNHolMUIx3vwo3fey0nQiXOHFGcAN+4tXfg2hFkRiNA6pf4tQ==
|
||||
bnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiYv9uThOeUbwWQlsY
|
||||
Zq1KXtKKOA5xsN8Mz8ohrXvZGs+Bsdyj82UkkQIreMLa3a/xbujnWWSanYcWKos3
|
||||
TDLg5U1hOcu6HQ5oBuq0Ref7CfEeLPilRmR7jUwTaaQVFD6V8G71fv3vxiFzQZkm
|
||||
m8NLBK+Lx++MWZa7MAzODRIQSN4HFQxXDu4CIFIIsHneM0FQuJJU3IJA+DICG67J
|
||||
ktvTAsuQCKGLSCdhk+3V9qlokB+EjtJnNyPiM1zeXPC1HZHXOhvv0oWxPjmuM6qI
|
||||
o5Z4l7+TendQGOPWSrXw4xt0cpq5NnJG/QEdkFBnArKpMYWs4yNYifnG+bht48/z
|
||||
NvXHAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAoKUUBPs29qpw0cK/9ZLZ38gK
|
||||
RWWclwMVLaODMkdTB3A1cx2YqrXoAbhBm72kCh3AoAgX2MqArLBNS+XeteRNpvH7
|
||||
UniXoUVLDajQ2F9W+2IAmbSWJkZUGufiqW0htJpZQ0Qt8Znl+Iq6gy/Si3zVYgkb
|
||||
83OMw+2Ws2IgjKjVkSk2zulEYqIeo8bTyjfGGULSY1beliR0X7Wj1T3qFwGA1Tcn
|
||||
TbyIr2aiuIKtusks5jM8oASUXpqqqArEIpSV9n8lWUJQSWQKHjAOTyrpaT5kynes
|
||||
o8yzrHsAoxU8Qaijf/n8lxox2xQ5Xs/XJu5XTzs2YkdNwngW788uhDWWgpjpHQ==
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDBzCCAe8CFGmvRNhb9E5DHIssUBkLL2TODhnYMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
MIIDBzCCAe8CFGmvRNhb9E5DHIssUBkLL2TODhndMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
CzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQHDARWaWdv
|
||||
MREwDwYDVQQKDAhHcmFkaWFudDEVMBMGA1UEAwwMZ3JhZGlhbnQub3JnMB4XDTI0
|
||||
MDEwOTExMjIzNloXDTM0MDEwNjExMjIzNlowJTELMAkGA1UEBhMCRVMxFjAUBgNV
|
||||
MDExNzE3MjUzOFoXDTM0MDExNDE3MjUzOFowJTELMAkGA1UEBhMCRVMxFjAUBgNV
|
||||
BAMMDXBjcmYuZ3JhZGlhbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
||||
AQCwoXb2/NXy1ukG4Fq5wgiwboH6jdwqhYSDc8TppOMBdgrtAj2OMLdbjDKHQCPE
|
||||
Dcy4ewphXtQeyaTNPr/HEobbAJGHOd/3nex4HBdfrSHOMipB59nVkIVO7c/ZFeM9
|
||||
U4iQmnxCY5+rmOOfMrdr3FLsVeOFp4/T04llrur5xVMqQZJLqj68dERE8gcH1Rp6
|
||||
fK2MUg2mR9HD9iZE5EcCGPgxEEB2IgNyZkjREvhNA6yqolhosi9oTpmLEDMxV8yE
|
||||
Oy6lX48qKU7hibUInIzr30oZAE2IZTMlvOb2G0hhEX9SIoBshL3gZUqHMHI23fYi
|
||||
pS5jnie9HPqK7aQES5440PD1AgMBAAEwDQYJKoZIhvcNAQELBQADggEBABeovoi8
|
||||
jTjPcuKcH+MdhtblG4vBBPcLWMFTQufhzSZ+AtT+ESTl0nGiy18eqJpQna3euIDb
|
||||
KqrzSm/dt5DkmsRAENyRIj7NPYk8VIJ9urjZyAubRXGQk8Btp0tE2BYGoMQR/84O
|
||||
uiC0AEpQy+B5Wvz6YgM1teLXSgmpTsTRLo+Cwb27vc5lR9LMdVeb99S+0DlGTJt5
|
||||
FLCwRJUPmyU7LtXLrpsezoZJSl7QWY5qji533+phbx9vVpRfMAztdKTpn12c/HAc
|
||||
FyuSTCvo473fp+3djJFTVHoPQ+L2jsP3UTb7sgcOl8QoGwUEIAXK0ro1T10MuH61
|
||||
DyYfB8w58zhR/G8=
|
||||
AQCiYv9uThOeUbwWQlsYZq1KXtKKOA5xsN8Mz8ohrXvZGs+Bsdyj82UkkQIreMLa
|
||||
3a/xbujnWWSanYcWKos3TDLg5U1hOcu6HQ5oBuq0Ref7CfEeLPilRmR7jUwTaaQV
|
||||
FD6V8G71fv3vxiFzQZkmm8NLBK+Lx++MWZa7MAzODRIQSN4HFQxXDu4CIFIIsHne
|
||||
M0FQuJJU3IJA+DICG67JktvTAsuQCKGLSCdhk+3V9qlokB+EjtJnNyPiM1zeXPC1
|
||||
HZHXOhvv0oWxPjmuM6qIo5Z4l7+TendQGOPWSrXw4xt0cpq5NnJG/QEdkFBnArKp
|
||||
MYWs4yNYifnG+bht48/zNvXHAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAHPcaYFV
|
||||
7Send0u+wAzHavRTsJFkUeeif+jKTVHfTmZiOMcOI34aCy+bZpy4SfU0/OVbmQlH
|
||||
2T2+3c4F13gRHuYqtcueTgYZgGXWDWZuhHCuMU0td4dOIU31hQjPLb9kr2FYN0Tg
|
||||
ZXsMx9PBnZzg4PO+8yp5rMFcz8l6hnj7WMuJuAedO7y1FsNqltqoW5B/aa00+SFO
|
||||
wMDjBFHt1up6m0qnNTl2ONixxQUaHrg7fwiDN/SyGC4IbWwfFAOJLT/KQdCaE1QR
|
||||
qtSjwJzQrfNNifcXqnPKJpbMxqAPHunGkY3AsWDGUJCNWL7JizmthTioxUsUb5Wt
|
||||
LlD1DXzUCU3X098=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
@@ -224,13 +224,13 @@ TLS_CA = "etc/freeDiameter/cacert.pem";
|
||||
# 4 - full - display the complete information on a single long line
|
||||
# 8 - tree - display the complete information in an easier to read format spanning several lines.
|
||||
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICaTCCAVECAQAwJDELMAkGA1UEBhMCRVMxFTATBgNVBAMMDHNtZi5ncmFkaWFu
|
||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANn7aejXj4GAAki/EATW
|
||||
2PUvNrC9q/03VmLzlUq6CHbNFxYLRxmI5tidhOHNoE2XhfjdtZ6S/v3ZSqYDxzIi
|
||||
UPCMjD0kzuo0lBXVC0++luPtp53cZJHCH00LDQl1ag4w0lzs2drpvqswn0xWe0yD
|
||||
WvDIiMoC0coq2uU+d7CeW7QZDBA5Ta5+NXvHHAipMik+q6bpTHF/c3fj32Dut3tw
|
||||
BaDTLMQdlaxlwwj77fbfpdqQyzYN7JgImowu4xzpTFhf1athUVV2e1r5exIhxX/N
|
||||
u2zpqvXLWc2JPSs9FID/CMjuLMkBKrHIxs6X1q4dZDRBJ9Q6cHrniicBWQnCEZbz
|
||||
eyMCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQBHQlQx6Nm6knEOrNKCWc9T/2rX
|
||||
xHVkRAL/paA45FL9gUvnBHFg0E9XPmOClNBKEBqsKy8wg7Ew8JPiEEKi/ihzBOBK
|
||||
mYGI/SYRxqzbYIs5SpKBTMC6aGJMOyKNhqH3DFjMIgAsXkZO3uYA1W4f1spIztII
|
||||
mvJPyjO2TXMmoODhT9idtuCLuz6dcRJClSmfF7goBCivhfuAL8VOg43rj6yqSJR0
|
||||
EC87knujX+pNlIpuWI+C/TQwqzxf0vTdJ8Rv9Vx073h9Z+D58mmF6LBq0nCO1CV9
|
||||
J0VTMKuMgv7LT9OwCuuX1a8bbEtfzbNGMIV243d1aiVtqhjdPfyrYvBfWhp3
|
||||
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJqQzGtSSY6YMkLxa/gw
|
||||
jJ+PoXPfe1UJImFI9Dtv741SgGdVwOOJrMqOd0vQN1rN/uVdVY1MXHE+evqHX78G
|
||||
vnYd6cJnBAboX34u0/RZYB3rnspBd3R+WPfVHB14N9Sxi+m4W1ENM0i/w/YGPl7T
|
||||
r1/N//myNc6rwY7dODybNOhNXcpBITnVvS9BmO4zLl6Q9RQyq3OiO7SPl2s2JURv
|
||||
a/SZCyL6VjqA4YSTxlZi3pPFs0tqUvgXMeoycCBpBUWxGhjeeMbCk5m4pjHE/hjk
|
||||
Olj1KZiVcjHvLHXELjgHNaZX4zYWc/FMYJg0iyVP7nxBQes9Y9r1+pYi5n83vPEr
|
||||
rzECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQAdytc63JMA0Ro6WwCl50cQYqdO
|
||||
0TxEFcs9RAuvVcIWUp4Hw23SLaStxgZMH2tXA7giyHZD4rfQhz3SzAQ39slABw1P
|
||||
VUJhRq+7zy5fJiAc3+h7ZbpdG3oDZ3iLFSCSAkESbknom9NnRzh7dO5tXPy64HRM
|
||||
fwU4FNwUffuqZfoefyt4tbAhdKEzaKrFG++ztNjTZEVHbxU5WxR8vFNoeAUX1zc6
|
||||
7zH6IDkQbB/Qq9Z0pHb9g8hKz7xL5sQHrtuBaMm3iD61umns2eaV+DouDRFs0aj4
|
||||
/ltmieK7D5LOVz2g3quQFuH45fEpt0gWsvtCN34tVSxTeEW/omOkjd4thCRl
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhnaMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhneMA0GCSqGSIb3DQEBCwUAMFsx
|
||||
CzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQHDARWaWdv
|
||||
MREwDwYDVQQKDAhHcmFkaWFudDEVMBMGA1UEAwwMZ3JhZGlhbnQub3JnMB4XDTI0
|
||||
MDEwOTExMjIzNloXDTM0MDEwNjExMjIzNlowJDELMAkGA1UEBhMCRVMxFTATBgNV
|
||||
MDExNzE3MjUzOFoXDTM0MDExNDE3MjUzOFowJDELMAkGA1UEBhMCRVMxFTATBgNV
|
||||
BAMMDHNtZi5ncmFkaWFudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
ANn7aejXj4GAAki/EATW2PUvNrC9q/03VmLzlUq6CHbNFxYLRxmI5tidhOHNoE2X
|
||||
hfjdtZ6S/v3ZSqYDxzIiUPCMjD0kzuo0lBXVC0++luPtp53cZJHCH00LDQl1ag4w
|
||||
0lzs2drpvqswn0xWe0yDWvDIiMoC0coq2uU+d7CeW7QZDBA5Ta5+NXvHHAipMik+
|
||||
q6bpTHF/c3fj32Dut3twBaDTLMQdlaxlwwj77fbfpdqQyzYN7JgImowu4xzpTFhf
|
||||
1athUVV2e1r5exIhxX/Nu2zpqvXLWc2JPSs9FID/CMjuLMkBKrHIxs6X1q4dZDRB
|
||||
J9Q6cHrniicBWQnCEZbzeyMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAID5xCUt6
|
||||
KsK1zoNIYsD0N2teT2ncoS59/IGSFTBB3s36GJdb4Z87PkImzUejcvU7ULorjOD0
|
||||
8ifmbwSN9LnmsgVxxWE9UednHo3+pmS0g/1fWVFQO9YUArC5WcHxtnpwTbG1shxa
|
||||
geCmt8Wpq7IIWkorDOImtp1t9NbfXBdGkTNCm9rv8pYPV2iweDxeg6vuYbkPR178
|
||||
zmveWuuNBHuuuUKNUDcRgC5RIuZEXnH1XCcnLLg0tp4wuBnON9VSp7wrjPVg4X29
|
||||
5LnqSsEKjrZAH/33EqZZt3HbbjcHkw3aWjfIpM1fSHsDv2FiFXgslypkZzTk4zih
|
||||
iT1KOFH0U5G3gA==
|
||||
AJqQzGtSSY6YMkLxa/gwjJ+PoXPfe1UJImFI9Dtv741SgGdVwOOJrMqOd0vQN1rN
|
||||
/uVdVY1MXHE+evqHX78GvnYd6cJnBAboX34u0/RZYB3rnspBd3R+WPfVHB14N9Sx
|
||||
i+m4W1ENM0i/w/YGPl7Tr1/N//myNc6rwY7dODybNOhNXcpBITnVvS9BmO4zLl6Q
|
||||
9RQyq3OiO7SPl2s2JURva/SZCyL6VjqA4YSTxlZi3pPFs0tqUvgXMeoycCBpBUWx
|
||||
GhjeeMbCk5m4pjHE/hjkOlj1KZiVcjHvLHXELjgHNaZX4zYWc/FMYJg0iyVP7nxB
|
||||
Qes9Y9r1+pYi5n83vPErrzECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAARX1aqRq
|
||||
7B1o1wPEwtRBtD6ghakCz7vo4u1Zt85SCJT2vzmf+9v35t2FsGsRsMlhRxKCHq58
|
||||
ERwN6HpMrT36ElW7liETeg9UOaus+Fkf77EneUkhFFlC6xCmmZ1QtW5I0Un9lu+m
|
||||
daQqBs2PNFOSR72xjbnXcC0mnpjN5GgKa+35Olx0zyrUWiVQGBL7TeemWCu7VZ0M
|
||||
kIPgnAk0glNJqFUps8HOtNF3pFgrXo4RpOMvjy3b1MQyr+RsTvgim1MvOrp1hwYA
|
||||
q3uQnPf69BimHbNkpM9PV+pWJaBzQrHmTYYCeWEyGASDAf/wDnR+Ag54Iy3x63yc
|
||||
hL7A1nr3Jnoysg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
@@ -223,13 +223,13 @@ TLS_CA = "etc/freeDiameter/cacert.pem";
|
||||
# 4 - full - display the complete information on a single long line
|
||||
# 8 - tree - display the complete information in an easier to read format spanning several lines.
|
||||
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_rfc5777.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_mip6i.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nasreq.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nas_mipv6.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca.fdx";
|
||||
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca_3gpp.fdx";
|
||||
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/amf.log
|
||||
path:
|
||||
file: /opt/open5gs/var/log/open5gs/amf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/ausf.log
|
||||
path:
|
||||
file: /opt/open5gs/var/log/open5gs/ausf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/bsf.log
|
||||
path:
|
||||
file: /opt/open5gs/var/log/open5gs/bsf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
db_uri: mongodb://localhost/open5gs
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/hss.log
|
||||
path:
|
||||
file: /opt/open5gs/var/log/open5gs/hss.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/mme.log
|
||||
path:
|
||||
file: /opt/open5gs/var/log/open5gs/mme.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/nrf.log
|
||||
path:
|
||||
file: /opt/open5gs/var/log/open5gs/nrf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
logger:
|
||||
file: /opt/open5gs/var/log/open5gs/nssf.log
|
||||
path:
|
||||
file: /opt/open5gs/var/log/open5gs/nssf.log
|
||||
# level: info # fatal|error|warn|info(default)|debug|trace
|
||||
|
||||
global:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user