mirror of
https://github.com/Gradiant/5g-images.git
synced 2025-10-23 08:12:12 +00:00
Compare commits
114 Commits
PR-templat
...
f1bfd1879a
Author | SHA1 | Date | |
---|---|---|---|
|
f1bfd1879a | ||
|
005522f01b | ||
|
96b618e042 | ||
|
ec85d9889c | ||
|
7706929da4 | ||
|
b891bf747f | ||
|
1b766a8475 | ||
|
775cf77310 | ||
|
7aa132ac4d | ||
|
66be25b37f | ||
|
ec0a81d89b | ||
|
4db77bbad1 | ||
|
e862d009c4 | ||
|
0abd1f4a96 | ||
|
eb10c45268 | ||
|
1e7c28a06b | ||
|
149cf1d000 | ||
|
f09d5c7ced | ||
|
0548156d73 | ||
|
0c93765b27 | ||
|
d19597372b | ||
|
02dde41c43 | ||
|
41672e25de | ||
|
2109a505ad | ||
|
e877363850 | ||
|
37258d17e1 | ||
|
9b161d045e | ||
|
7ef609ffab | ||
|
ada6654a0b | ||
|
f39cf5c9fc | ||
|
666b0a538b | ||
|
f48b075dc5 | ||
|
23f7721216 | ||
|
2e139082f3 | ||
|
cf05ab20dc | ||
|
b896cae9dc | ||
|
3e6bc3f273 | ||
|
cf9fc33168 | ||
|
cf0acff35a | ||
|
fe3ada8753 | ||
|
465044e694 | ||
|
c3f9595452 | ||
|
acf94d20ee | ||
|
14ab342b62 | ||
|
516561844f | ||
|
2f2b696c19 | ||
|
fde210f72a | ||
|
46c7577f7f | ||
|
12a4646e07 | ||
|
58438546a1 | ||
|
0450ce2b36 | ||
|
807e20471f | ||
|
0cf492c39a | ||
|
e8835d3c20 | ||
|
5ea9348649 | ||
|
d18ba6a799 | ||
|
232a8c1f74 | ||
|
865d792850 | ||
|
6e0af5ad19 | ||
|
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
|
||||
|
||||
```
|
28
.github/workflows/build.yml
vendored
28
.github/workflows/build.yml
vendored
@@ -14,12 +14,12 @@ env:
|
||||
jobs:
|
||||
# Generate the values for images with changes
|
||||
generate-matrix:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
matrix: ${{ steps.generate-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- id: files
|
||||
@@ -28,39 +28,41 @@ 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:
|
||||
needs: generate-matrix
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Get Image Info
|
||||
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
|
||||
uses: docker/setup-qemu-action@v3.4.0
|
||||
with:
|
||||
image: tonistiigi/binfmt:qemu-v7.0.0-28
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3.9.0
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
uses: docker/build-push-action@v6.13.0
|
||||
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 +92,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
|
||||
|
28
.github/workflows/push.yml
vendored
28
.github/workflows/push.yml
vendored
@@ -15,12 +15,12 @@ env:
|
||||
jobs:
|
||||
# Generate the values for images with changes
|
||||
generate-matrix:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
matrix: ${{ steps.generate-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- id: files
|
||||
@@ -29,32 +29,34 @@ 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:
|
||||
needs: generate-matrix
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Get Image Info
|
||||
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
|
||||
uses: docker/setup-qemu-action@v3.4.0
|
||||
with:
|
||||
image: tonistiigi/binfmt:qemu-v7.0.0-28
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3.9.0
|
||||
-
|
||||
name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
@@ -63,11 +65,11 @@ jobs:
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
uses: docker/build-push-action@v6.13.0
|
||||
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 +99,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
|
||||
```
|
357
docs/open5gs-and-packetrusher/config/smf.yaml
Normal file
357
docs/open5gs-and-packetrusher/config/smf.yaml
Normal file
@@ -0,0 +1,357 @@
|
||||
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.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:
|
||||
|
422
docs/open5gs-and-srsran-5g/config/smf.yaml
Normal file
422
docs/open5gs-and-srsran-5g/config/smf.yaml
Normal file
@@ -0,0 +1,422 @@
|
||||
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://nrf: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
|
||||
# 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 Bind to the address on the eth0 and advertise as open5gs-smf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev:eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# o Specify a custom port number 7777 while binding to the given address
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# port: 7777
|
||||
#
|
||||
# o Bind to 127.0.0.4 and advertise as open5gs-smf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# port: 7777
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# o Bind to port 7777 but advertise with a different port number 8888
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# port: 7777
|
||||
# advertise: open5gs-smf.svc.local:8888
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Direct Communication with NRF
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect Communication by Delegating to SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect Communication without Delegation
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: no # Directly communicate NRF discovery
|
||||
# scp:
|
||||
# next: no # Do not delegate to SCP for next-hop
|
||||
#
|
||||
# o Indirect Communication with Delegated Discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: yes # Delegate discovery to SCP
|
||||
# scp:
|
||||
# next: yes # Delegate to SCP for next-hop communications
|
||||
#
|
||||
# o Default delegation: all communications are delegated to the SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# # No 'delegated' section; defaults to AUTO delegation
|
||||
#
|
||||
################################################################################
|
||||
# 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 Enable SSL key logging for Wireshark
|
||||
# - This configuration allows capturing SSL/TLS session keys
|
||||
# for debugging or analysis purposes using Wireshark.
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-server-sslkeylog.log
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-client-sslkeylog.log
|
||||
# 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.0/16
|
||||
# gateway: 10.45.0.1
|
||||
# dnn: internet
|
||||
# - subnet: 2001:db8:cafe::/48
|
||||
# dnn: internet
|
||||
# - subnet: 10.46.0.0/16
|
||||
# gateway: 10.46.0.1
|
||||
# dnn: ims
|
||||
# - subnet: 2001:db8:babe::/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Pool Range
|
||||
# session:
|
||||
# - subnet: 10.45.0.0/16
|
||||
# gateway: 10.45.0.1
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-
|
||||
# - -10.45.0.200
|
||||
# - subnet: 2001:db8:cafe::/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.5
|
||||
command:
|
||||
- open5gs-amfd
|
||||
restart : on-failure
|
||||
|
||||
ausf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command:
|
||||
- open5gs-ausfd
|
||||
restart : on-failure
|
||||
|
||||
bsf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-bsfd
|
||||
restart : on-failure
|
||||
|
||||
nrf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-nrfd
|
||||
restart : on-failure
|
||||
|
||||
nssf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-nssfd
|
||||
restart : on-failure
|
||||
|
||||
pcf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
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.5
|
||||
command: open5gs-scpd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
smf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
#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.5
|
||||
restart: on-failure
|
||||
command:
|
||||
- open5gs-udmd
|
||||
|
||||
udr:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
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.5
|
||||
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.5
|
||||
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"
|
||||
|
61
docs/open5gs-and-ueransim-two-slices/README.md
Normal file
61
docs/open5gs-and-ueransim-two-slices/README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# open5gs and ueransim with two slices
|
||||
|
||||
This tutorial is an adaptation of the Open5GS and UERANSIM tutorial.
|
||||
|
||||
The slices values were changed in the gNBs, and the NSSF and AMF configuration files were added in the config folder. Also, the SMF configuration file was modified, and the register_subscriber.sh script was updated with the new slice values.
|
||||
|
||||
# Deployment NGC and register subscribers
|
||||
|
||||
deploy the ngc core (open5gs) with:
|
||||
|
||||
```
|
||||
docker compose -f ngc.yaml up -d
|
||||
```
|
||||
|
||||
Register subscribers in ngc with `./register_subscriber.sh`.
|
||||
|
||||
|
||||
# Deploy gnodeb
|
||||
|
||||
gnb1.yaml is configured to deploy 1 gnodeb (gnb1) and 3 ues:
|
||||
|
||||
```
|
||||
docker compose -f gnb1.yaml up -d
|
||||
```
|
||||
|
||||
You can use gnb2.yaml to deploy a second gnodeb (gnb2) with 3 additional ues:
|
||||
|
||||
```
|
||||
docker compose -f gnb2.yaml up -d
|
||||
```
|
||||
|
||||
|
||||
# Test
|
||||
|
||||
To test ue connectivity through RAN, enter the gnb1-ues1 container:
|
||||
|
||||
```
|
||||
docker compose -f gnb1.yaml exec ues1 /bin/bash
|
||||
traceroute -i uesimtun0 google.es
|
||||
ping -I uesimtun0 google.es
|
||||
```
|
||||
ues container will have multiple interfaces (one for each ue).
|
||||
You can try each tunnel providing the flag '-i' in traceroute and '-I' in ping.
|
||||
|
||||
If you have deployed a second genodeb (gnb2) the command to enter in the ues container is:
|
||||
|
||||
```
|
||||
docker compose -f gnb2.yaml exec ues2 /bin/bash
|
||||
```
|
||||
|
||||
|
||||
# Clean Up
|
||||
|
||||
Undeploy with:
|
||||
|
||||
```
|
||||
docker compose -f gnb1.yaml down
|
||||
docker compose -f gnb2.yaml down
|
||||
docker compose -f ngc.yaml down -v
|
||||
|
||||
```
|
304
docs/open5gs-and-ueransim-two-slices/config/amf.yaml
Normal file
304
docs/open5gs-and-ueransim-two-slices/config/amf.yaml
Normal file
@@ -0,0 +1,304 @@
|
||||
logger:
|
||||
file:
|
||||
path: /opt/open5gs/var/log/open5gs/amf.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
|
||||
|
||||
amf:
|
||||
sbi:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 7777
|
||||
client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
scp:
|
||||
- uri: http://scp:7777
|
||||
ngap:
|
||||
server:
|
||||
- dev: eth0
|
||||
metrics:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 9090
|
||||
guami:
|
||||
- plmn_id:
|
||||
mcc: 999
|
||||
mnc: 70
|
||||
amf_id:
|
||||
region: 2
|
||||
set: 1
|
||||
tai:
|
||||
- plmn_id:
|
||||
mcc: 999
|
||||
mnc: 70
|
||||
tac: 1
|
||||
plmn_support:
|
||||
- plmn_id:
|
||||
mcc: 999
|
||||
mnc: 70
|
||||
s_nssai:
|
||||
- sd: 0x111111
|
||||
sst: 1
|
||||
- sd: 0x222222
|
||||
sst: 2
|
||||
|
||||
security:
|
||||
integrity_order : [ NIA2, NIA1, NIA0 ]
|
||||
ciphering_order : [ NEA0, NEA1, NEA2 ]
|
||||
network_name:
|
||||
full: Open5GS
|
||||
short: Next
|
||||
amf_name: open5gs-amf0
|
||||
time:
|
||||
# t3502:
|
||||
# value: 720 # 12 minutes * 60 = 720 seconds
|
||||
t3512:
|
||||
value: 540 # 9 minutes * 60 = 540 seconds
|
||||
|
||||
################################################################################
|
||||
# SBI Server
|
||||
################################################################################
|
||||
# o Bind to the address on the eth0 and advertise as open5gs-amf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev:eth0
|
||||
# advertise: open5gs-amf.svc.local
|
||||
#
|
||||
# o Specify a custom port number 7777 while binding to the given address
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: amf.localdomain
|
||||
# port: 7777
|
||||
#
|
||||
# o Bind to 127.0.0.5 and advertise as open5gs-amf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.5
|
||||
# port: 7777
|
||||
# advertise: open5gs-amf.svc.local
|
||||
#
|
||||
# o Bind to port 7777 but advertise with a different port number 8888
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.5
|
||||
# port: 7777
|
||||
# advertise: open5gs-amf.svc.local:8888
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Direct Communication with NRF
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect Communication by Delegating to SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect Communication without Delegation
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: no # Directly communicate NRF discovery
|
||||
# scp:
|
||||
# next: no # Do not delegate to SCP for next-hop
|
||||
#
|
||||
# o Indirect Communication with Delegated Discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: yes # Delegate discovery to SCP
|
||||
# scp:
|
||||
# next: yes # Delegate to SCP for next-hop communications
|
||||
#
|
||||
# o Default delegation: all communications are delegated to the SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# # No 'delegated' section; defaults to AUTO delegation
|
||||
#
|
||||
################################################################################
|
||||
# HTTPS scheme with TLS
|
||||
################################################################################
|
||||
# o Set as default if not individually set
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/amf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/amf.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: amf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
# o Enable SSL key logging for Wireshark
|
||||
# - This configuration allows capturing SSL/TLS session keys
|
||||
# for debugging or analysis purposes using Wireshark.
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/amf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/amf.crt
|
||||
# sslkeylogfile: @localstatedir@/log/open5gs/tls/amf-server-sslkeylog.log
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/amf-client-sslkeylog.log
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: amf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
# o Add client TLS verification
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/amf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/amf.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/amf.key
|
||||
# client_cert: @sysconfdir@/open5gs/tls/amf.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: amf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
#
|
||||
################################################################################
|
||||
# NGAP Server
|
||||
################################################################################
|
||||
# o Listen on address available in `eth0` interface
|
||||
# ngap:
|
||||
# server:
|
||||
# - dev: eth0
|
||||
#
|
||||
################################################################################
|
||||
# 3GPP Specification
|
||||
################################################################################
|
||||
# o GUAMI
|
||||
# guami:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# amf_id:
|
||||
# region: 2
|
||||
# set: 1
|
||||
# pointer: 4
|
||||
# - plmn_id:
|
||||
# mcc: 001
|
||||
# mnc: 01
|
||||
# amf_id:
|
||||
# region: 5
|
||||
# set: 2
|
||||
#
|
||||
# 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 PLMN Support
|
||||
# plmn_support:
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# s_nssai:
|
||||
# - sst: 1
|
||||
# sd: 010000
|
||||
# - plmn_id:
|
||||
# mcc: 999
|
||||
# mnc: 70
|
||||
# s_nssai:
|
||||
# - sst: 1
|
||||
#
|
||||
# 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
|
207
docs/open5gs-and-ueransim-two-slices/config/nssf.yaml
Normal file
207
docs/open5gs-and-ueransim-two-slices/config/nssf.yaml
Normal file
@@ -0,0 +1,207 @@
|
||||
logger:
|
||||
file:
|
||||
path: /opt/open5gs/var/log/open5gs/nssf.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
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
server:
|
||||
- dev: eth0
|
||||
port: 7777
|
||||
client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
scp:
|
||||
- uri: http://scp:7777
|
||||
nsi:
|
||||
- uri: http://nrf:7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
sd: 0x111111
|
||||
- uri: http://nrf:7777
|
||||
s_nssai:
|
||||
sst: 2
|
||||
sd: 0x222222
|
||||
################################################################################
|
||||
# SBI Server
|
||||
################################################################################
|
||||
# o Bind to the address on the eth0 and advertise as open5gs-nssf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev:eth0
|
||||
# advertise: open5gs-nssf.svc.local
|
||||
#
|
||||
# o Specify a custom port number 7777 while binding to the given address
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: nssf.localdomain
|
||||
# port: 7777
|
||||
#
|
||||
# o Bind to 127.0.0.14 and advertise as open5gs-nssf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.14
|
||||
# port: 7777
|
||||
# advertise: open5gs-nssf.svc.local
|
||||
#
|
||||
# o Bind to port 7777 but advertise with a different port number 8888
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.14
|
||||
# port: 7777
|
||||
# advertise: open5gs-nssf.svc.local:8888
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Network Slice Instance(NSI)
|
||||
# 1. NRF[http://::1:7777/nnrf-nfm/v1/nf-instances]
|
||||
# S-NSSAI[SST:1]
|
||||
# 2. NRF[http://127.0.0.19:7777/nnrf-nfm/v1/nf-instances]
|
||||
# NSSAI[SST:1, SD:000080]
|
||||
# 3. NRF[http://127.0.0.10:7777/nnrf-nfm/v1/nf-instances]
|
||||
# NSSAI[SST:1, SD:009000]
|
||||
#
|
||||
# sbi:
|
||||
# client:
|
||||
# nsi:
|
||||
# - uri: http://[::1]:7777
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
# - uri: http://127.0.0.19:7777
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
# sd: 000080
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
# sd: 009000
|
||||
#
|
||||
# o Direct Communication with NRF
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect Communication by Delegating to SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect Communication without Delegation
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: no # Directly communicate NRF discovery
|
||||
# scp:
|
||||
# next: no # Do not delegate to SCP for next-hop
|
||||
#
|
||||
# o Indirect Communication with Delegated Discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: yes # Delegate discovery to SCP
|
||||
# scp:
|
||||
# next: yes # Delegate to SCP for next-hop communications
|
||||
#
|
||||
# o Default delegation: all communications are delegated to the SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# # No 'delegated' section; defaults to AUTO delegation
|
||||
#
|
||||
#
|
||||
################################################################################
|
||||
# HTTPS scheme with TLS
|
||||
################################################################################
|
||||
# o Set as default if not individually set
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/nssf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/nssf.crt
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: nssf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
# nsi:
|
||||
# - uri: https://nrf.localdomain
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
#
|
||||
# o Enable SSL key logging for Wireshark
|
||||
# - This configuration allows capturing SSL/TLS session keys
|
||||
# for debugging or analysis purposes using Wireshark.
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/nssf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/nssf.crt
|
||||
# sslkeylogfile: @localstatedir@/log/open5gs/tls/nssf-server-sslkeylog.log
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/nssf-client-sslkeylog.log
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: nssf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
# nsi:
|
||||
# - uri: https://nrf.localdomain
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
#
|
||||
# o Add client TLS verification
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/nssf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/nssf.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/nssf.key
|
||||
# client_cert: @sysconfdir@/open5gs/tls/nssf.crt
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: nssf.localdomain
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: https://nrf.localdomain
|
||||
# nsi:
|
||||
# - uri: https://nrf.localdomain
|
||||
# s_nssai:
|
||||
# sst: 1
|
438
docs/open5gs-and-ueransim-two-slices/config/smf.yaml
Normal file
438
docs/open5gs-and-ueransim-two-slices/config/smf.yaml
Normal file
@@ -0,0 +1,438 @@
|
||||
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://nrf: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
|
||||
info:
|
||||
- s_nssai:
|
||||
- sst: 1
|
||||
sd: "0x111111"
|
||||
dnn:
|
||||
- internet
|
||||
- sst: 2
|
||||
sd: "0x222222"
|
||||
dnn:
|
||||
- internet
|
||||
tai:
|
||||
- plmn_id:
|
||||
mcc: 999
|
||||
mnc: 70
|
||||
tac: 1
|
||||
session:
|
||||
- subnet: 10.45.0.0/16
|
||||
gateway: 10.45.0.1
|
||||
dnn: internet
|
||||
- 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
|
||||
# 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 Bind to the address on the eth0 and advertise as open5gs-smf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev:eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# o Specify a custom port number 7777 while binding to the given address
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# port: 7777
|
||||
#
|
||||
# o Bind to 127.0.0.4 and advertise as open5gs-smf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# port: 7777
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# o Bind to port 7777 but advertise with a different port number 8888
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# port: 7777
|
||||
# advertise: open5gs-smf.svc.local:8888
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Direct Communication with NRF
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect Communication by Delegating to SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect Communication without Delegation
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: no # Directly communicate NRF discovery
|
||||
# scp:
|
||||
# next: no # Do not delegate to SCP for next-hop
|
||||
#
|
||||
# o Indirect Communication with Delegated Discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: yes # Delegate discovery to SCP
|
||||
# scp:
|
||||
# next: yes # Delegate to SCP for next-hop communications
|
||||
#
|
||||
# o Default delegation: all communications are delegated to the SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# # No 'delegated' section; defaults to AUTO delegation
|
||||
#
|
||||
################################################################################
|
||||
# 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 Enable SSL key logging for Wireshark
|
||||
# - This configuration allows capturing SSL/TLS session keys
|
||||
# for debugging or analysis purposes using Wireshark.
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-server-sslkeylog.log
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-client-sslkeylog.log
|
||||
# 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.0/16
|
||||
# gateway: 10.45.0.1
|
||||
# dnn: internet
|
||||
# - subnet: 2001:db8:cafe::/48
|
||||
# dnn: internet
|
||||
# - subnet: 10.46.0.0/16
|
||||
# gateway: 10.46.0.1
|
||||
# dnn: ims
|
||||
# - subnet: 2001:db8:babe::/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Pool Range
|
||||
# session:
|
||||
# - subnet: 10.45.0.0/16
|
||||
# gateway: 10.45.0.1
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-
|
||||
# - -10.45.0.200
|
||||
# - subnet: 2001:db8:cafe::/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
|
32
docs/open5gs-and-ueransim-two-slices/gnb1.yaml
Normal file
32
docs/open5gs-and-ueransim-two-slices/gnb1.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
version: '3'
|
||||
services:
|
||||
gnb1:
|
||||
image: gradiant/ueransim:3.2.7
|
||||
container_name: gnb1
|
||||
command:
|
||||
- gnb
|
||||
environment:
|
||||
AMF_HOSTNAME: amf
|
||||
GNB_HOSTNAME: gnb1
|
||||
TAC: '1'
|
||||
MCC: '999'
|
||||
MNC: '70'
|
||||
SST: '1'
|
||||
SD: '0x111111'
|
||||
ues1:
|
||||
image: gradiant/ueransim:3.2.7
|
||||
command: ['ue','-n','3']
|
||||
cap_add:
|
||||
- all
|
||||
privileged: true
|
||||
environment:
|
||||
GNB_HOSTNAME: gnb1
|
||||
APN: internet
|
||||
MSISDN: '0000000001'
|
||||
MCC: '999'
|
||||
MNC: '70'
|
||||
KEY: '465B5CE8B199B49FAA5F0A2EE238A6BC'
|
||||
OP_TYPE: OPC
|
||||
OP: 'E8ED289DEBA952E4283B54E88E6183CA'
|
||||
SST: '1'
|
||||
SD: '0x111111'
|
33
docs/open5gs-and-ueransim-two-slices/gnb2.yaml
Normal file
33
docs/open5gs-and-ueransim-two-slices/gnb2.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
version: '3'
|
||||
services:
|
||||
gnb2:
|
||||
image: gradiant/ueransim:3.2.7
|
||||
container_name: gnb2
|
||||
command:
|
||||
- gnb
|
||||
environment:
|
||||
AMF_HOSTNAME: amf
|
||||
GNB_HOSTNAME: gnb2
|
||||
TAC: '1'
|
||||
MCC: '999'
|
||||
MNC: '70'
|
||||
SST: '2'
|
||||
SD: '0x222222'
|
||||
|
||||
ues2:
|
||||
image: gradiant/ueransim:3.2.7
|
||||
command: ['ue','-n','3']
|
||||
cap_add:
|
||||
- all
|
||||
privileged: true
|
||||
environment:
|
||||
GNB_HOSTNAME: gnb2
|
||||
APN: internet
|
||||
MSISDN: '0000000011'
|
||||
MCC: '999'
|
||||
MNC: '70'
|
||||
KEY: '465B5CE8B199B49FAA5F0A2EE238A6BC'
|
||||
OP_TYPE: OPC
|
||||
OP: 'E8ED289DEBA952E4283B54E88E6183CA'
|
||||
SST: '2'
|
||||
SD: '0x222222'
|
107
docs/open5gs-and-ueransim-two-slices/ngc.yaml
Normal file
107
docs/open5gs-and-ueransim-two-slices/ngc.yaml
Normal file
@@ -0,0 +1,107 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
mongo:
|
||||
image: mongo
|
||||
environment:
|
||||
MONGO_INITDB_DATABASE: open5gs
|
||||
|
||||
amf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
volumes:
|
||||
- ./config/amf.yaml:/opt/open5gs/etc/open5gs/amf.yaml
|
||||
command:
|
||||
- open5gs-amfd
|
||||
restart: on-failure
|
||||
|
||||
ausf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command:
|
||||
- open5gs-ausfd
|
||||
restart: on-failure
|
||||
|
||||
bsf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command:
|
||||
- open5gs-bsfd
|
||||
restart: on-failure
|
||||
|
||||
nrf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-nrfd
|
||||
restart: on-failure
|
||||
|
||||
nssf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
volumes:
|
||||
- ./config/nssf.yaml:/opt/open5gs/etc/open5gs/nssf.yaml
|
||||
command: open5gs-nssfd
|
||||
restart: on-failure
|
||||
|
||||
|
||||
pcf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command:
|
||||
- open5gs-pcfd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
|
||||
scp:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-scpd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
|
||||
smf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
#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: gradiant/open5gs:2.7.5
|
||||
restart: on-failure
|
||||
command:
|
||||
- open5gs-udmd
|
||||
|
||||
udr:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
command:
|
||||
- open5gs-udrd
|
||||
|
||||
upf:
|
||||
image: gradiant/open5gs:2.7.5
|
||||
user: root
|
||||
command:
|
||||
- open5gs-upfd
|
||||
cap_add:
|
||||
- all
|
||||
privileged: true
|
||||
restart: on-failure
|
||||
# environment:
|
||||
# ENABLE_NAT: "false"
|
||||
ports:
|
||||
- 2152:2152
|
||||
|
||||
webui:
|
||||
image: gradiant/open5gs-webui:2.7.5
|
||||
restart: on-failure
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
NODE_ENV: dev
|
||||
ports:
|
||||
- 9999:9999
|
||||
|
||||
# portainer:
|
||||
# image: portainer/portainer-ce
|
||||
# ports:
|
||||
# - 9000:9000
|
||||
# volumes:
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
856
docs/open5gs-and-ueransim-two-slices/open5gs-dbctl
Executable file
856
docs/open5gs-and-ueransim-two-slices/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
|
64
docs/open5gs-and-ueransim-two-slices/register_subscriber.sh
Executable file
64
docs/open5gs-and-ueransim-two-slices/register_subscriber.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
MONGO_CONTAINER=open5gs-and-ueransim-two-slices-mongo-1
|
||||
|
||||
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.10.3)
|
||||
FLAGS: --db_uri=mongodb://localhost
|
||||
COMMANDS: >&2
|
||||
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)"
|
||||
}
|
||||
'
|
||||
|
||||
docker cp open5gs-dbctl $MONGO_CONTAINER:/
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim-two-slices_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 0x111111"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim-two-slices_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000002 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 0x111111"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim-two-slices_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000003 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 0x111111"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim-two-slices_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000011 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 2 0x222222"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim-two-slices_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000012 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 2 0x222222"
|
||||
|
||||
docker run -ti --rm \
|
||||
--net open5gs-and-ueransim-two-slices_default \
|
||||
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
|
||||
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000013 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 2 0x222222"
|
@@ -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
|
||||
|
||||
```
|
422
docs/open5gs-and-ueransim/config/smf.yaml
Normal file
422
docs/open5gs-and-ueransim/config/smf.yaml
Normal file
@@ -0,0 +1,422 @@
|
||||
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://nrf: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
|
||||
# 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 Bind to the address on the eth0 and advertise as open5gs-smf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - dev:eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# o Specify a custom port number 7777 while binding to the given address
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: smf.localdomain
|
||||
# port: 7777
|
||||
#
|
||||
# o Bind to 127.0.0.4 and advertise as open5gs-smf.svc.local
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# port: 7777
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# o Bind to port 7777 but advertise with a different port number 8888
|
||||
# sbi:
|
||||
# server:
|
||||
# - address: 127.0.0.4
|
||||
# port: 7777
|
||||
# advertise: open5gs-smf.svc.local:8888
|
||||
#
|
||||
################################################################################
|
||||
# SBI Client
|
||||
################################################################################
|
||||
# o Direct Communication with NRF
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
#
|
||||
# o Indirect Communication by Delegating to SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
#
|
||||
# o Indirect Communication without Delegation
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: no # Directly communicate NRF discovery
|
||||
# scp:
|
||||
# next: no # Do not delegate to SCP for next-hop
|
||||
#
|
||||
# o Indirect Communication with Delegated Discovery
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# delegated:
|
||||
# nrf:
|
||||
# nfm: no # Directly communicate NRF management functions
|
||||
# disc: yes # Delegate discovery to SCP
|
||||
# scp:
|
||||
# next: yes # Delegate to SCP for next-hop communications
|
||||
#
|
||||
# o Default delegation: all communications are delegated to the SCP
|
||||
# sbi:
|
||||
# client:
|
||||
# nrf:
|
||||
# - uri: http://127.0.0.10:7777
|
||||
# scp:
|
||||
# - uri: http://127.0.0.200:7777
|
||||
# # No 'delegated' section; defaults to AUTO delegation
|
||||
#
|
||||
################################################################################
|
||||
# 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 Enable SSL key logging for Wireshark
|
||||
# - This configuration allows capturing SSL/TLS session keys
|
||||
# for debugging or analysis purposes using Wireshark.
|
||||
# default:
|
||||
# tls:
|
||||
# server:
|
||||
# scheme: https
|
||||
# private_key: @sysconfdir@/open5gs/tls/smf.key
|
||||
# cert: @sysconfdir@/open5gs/tls/smf.crt
|
||||
# sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-server-sslkeylog.log
|
||||
# client:
|
||||
# scheme: https
|
||||
# cacert: @sysconfdir@/open5gs/tls/ca.crt
|
||||
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-client-sslkeylog.log
|
||||
# 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.0/16
|
||||
# gateway: 10.45.0.1
|
||||
# dnn: internet
|
||||
# - subnet: 2001:db8:cafe::/48
|
||||
# dnn: internet
|
||||
# - subnet: 10.46.0.0/16
|
||||
# gateway: 10.46.0.1
|
||||
# dnn: ims
|
||||
# - subnet: 2001:db8:babe::/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Pool Range
|
||||
# session:
|
||||
# - subnet: 10.45.0.0/16
|
||||
# gateway: 10.45.0.1
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-
|
||||
# - -10.45.0.200
|
||||
# - subnet: 2001:db8:cafe::/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.5
|
||||
command:
|
||||
- open5gs-amfd
|
||||
restart: on-failure
|
||||
|
||||
ausf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command:
|
||||
- open5gs-ausfd
|
||||
restart: on-failure
|
||||
|
||||
bsf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command:
|
||||
- open5gs-bsfd
|
||||
restart: on-failure
|
||||
|
||||
nrf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-nrfd
|
||||
restart: on-failure
|
||||
|
||||
nssf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-nssfd
|
||||
restart: on-failure
|
||||
|
||||
|
||||
pcf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command:
|
||||
- open5gs-pcfd
|
||||
environment:
|
||||
@@ -44,25 +44,28 @@ services:
|
||||
restart: on-failure
|
||||
|
||||
scp:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
command: open5gs-scpd
|
||||
environment:
|
||||
DB_URI: mongodb://mongo/open5gs
|
||||
restart: on-failure
|
||||
|
||||
smf:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
#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.5
|
||||
restart: on-failure
|
||||
command:
|
||||
- open5gs-udmd
|
||||
|
||||
udr:
|
||||
image: openverso/open5gs:2.7.0
|
||||
image: gradiant/open5gs:2.7.5
|
||||
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.5
|
||||
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.5
|
||||
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
|
||||
|
@@ -1,4 +1,4 @@
|
||||
FROM golang:1.17.8 as builder
|
||||
FROM golang:1.17.8 AS builder
|
||||
|
||||
ARG version=1.0.1
|
||||
ENV VERSION=$version
|
||||
|
@@ -1,4 +1,4 @@
|
||||
FROM golang:1.14 as builder
|
||||
FROM golang:1.14 AS builder
|
||||
|
||||
ARG version=3.0.6
|
||||
ENV VERSION=$version
|
||||
|
@@ -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,31 +87,45 @@ 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 \
|
||||
/oai-ran/cmake_targets/ran_build/build/*softmodem \
|
||||
/oai-ran/cmake_targets/ran_build/build/oairu \
|
||||
/oai-ran/cmake_targets/nas_sim_tools/build/conf2uedata \
|
||||
/oai-ran/cmake_targets/nas_sim_tools/build/nvram \
|
||||
/oai-ran/cmake_targets/nas_sim_tools/build/usim \
|
||||
/oai-ran/cmake_targets/ran_build/build/nr-cuup \
|
||||
/opt/oai/bin/
|
||||
|
||||
COPY --from=build /oai-ran/cmake_targets/ /tmp/all_targets/
|
||||
RUN cd /tmp/all_targets && \
|
||||
find . -name "oairu" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
|
||||
find . -name "nr-cuup" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
|
||||
find . -name "conf2uedata" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
|
||||
find . -name "nvram" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
|
||||
find . -name "usim" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
|
||||
rm -rf /tmp/all_targets
|
||||
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 && \
|
||||
@@ -104,6 +137,7 @@ WORKDIR /opt/oai
|
||||
|
||||
#This is a patch to support IP extraction from interface names and host names
|
||||
COPY entrypoint.sh /
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
||||
|
@@ -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=2025.w38
|
||||
#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,3 +1,3 @@
|
||||
IMAGE_TAG=0.10.3
|
||||
#comma separated list of platforms. If empty, image will not be multiarch.
|
||||
PLATFORMS=linux/amd64,linux/arm64
|
||||
PLATFORMS=linux/amd64 #,linux/arm64
|
||||
|
@@ -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.6
|
||||
#comma separated list of platforms. If empty, image will not be multiarch.
|
||||
PLATFORMS=linux/amd64,linux/arm64
|
||||
PLATFORMS=linux/amd64 #,linux/arm64
|
||||
|
@@ -1,7 +1,9 @@
|
||||
FROM debian:bullseye as builder
|
||||
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; \
|
||||
@@ -89,20 +91,21 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
|
||||
libcurl4 \
|
||||
libmicrohttpd12 \
|
||||
libnghttp2-14 \
|
||||
wondershaper iproute2 iputils-ping procps net-tools iptables iperf3 traceroute tcpdump && \
|
||||
wondershaper iproute2 iputils-ping procps net-tools iptables iperf iperf3 traceroute tcpdump && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
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-----
|
||||
MIIEowIBAAKCAQEA6Ov/3WqlSAz3rvep3rMOBj890UmorJguLZKB/qpLX3T2w8gv
|
||||
qsTI0fLYWC8vad+4+3MZLG7YsoMpAWkMsnLM3pwOjaa68XjkK/MWVbVuPPqLrZ0S
|
||||
cPXIUDB2/+VF5y8Q37nXoxnRhGlffKgNTPIBARYQeNuwRvyqcODL+ZldKqQyLh61
|
||||
J9EpNZ/mFcXm62VKj4aGhZ5vMiTnAGgBBxfity9El0ahoJbssFrEsPozMJSWS2xp
|
||||
SQq3+fNF1bpeU/njrI2TnnCP5YhL+K6VAVPM/QuybDdo8AZFC3/qv3gduK1bTCFm
|
||||
CMAxCPL54hHdMfudbOoGPNdg1bSCDvzU0YpEPQIDAQABAoIBAE7gBEBFqfzRL1rX
|
||||
0XVxqxEgf12NFQqFajXShCTqJCYKJLo94y5v/xVhqDOMnwC6WxkDbAXo74bb9Znd
|
||||
qggP6iKENEVxraKx7oqXgfu6Ob96lKxRIXqRMKk/ED0ttdNI0+z/MO+xgYrWaBh9
|
||||
jCt/VCm7AA79Th9r1oftCAXZEnyqgkeC38Y3WswyFilGzyE8tVLiu/dqaa5FvLPv
|
||||
H6GZNtFHzjTQtxlt7Sj75e7dxLG/ETeZdXW1gaJ7uAx3Zz1/GzD9WQVbkPqaBT6N
|
||||
LH9W5trKo+FFXtkNRT+QMPNnG38FcV3ZR594tb2ePLj6rQUWKwBUDrZjojK19TIY
|
||||
tnFK7aECgYEA+pHQHrhnqy4v83iUEUN9zjgHtecsc+oT0Od8TCRN79qnyXgCo5tm
|
||||
3VfMDILGxdwvuPdkFGSduwEJpYecbEt88Gw82ja719DT0UCOVFFFPUdk0RwtYUZs
|
||||
SZzmoJ7WHoHcNPIn6DWWHN4CNBypoo1XNr80nHIuXZFtyA8vWPTy2lUCgYEA7fhG
|
||||
bdGe+xBd6gQihdIIVNaojQVnXjvbkzBCJQXA9T5XG74AgEAqsHVq9h2SFAS5LO+x
|
||||
HQ9lBmKX/0iZE0Fu52pAQHw+SJpi1dFBnKDt/s7uZucIGij4saeuZ47xZQiYpWV9
|
||||
oglgNfwtXOQQIo95FeRckaP3nj/PdDjtBrvH+kkCgYEA3OtuqYdAr+abFHj9Y3M0
|
||||
GnvAIJtf0BtTuV4/cwqXRKBuSu1qtkEvonvkRiuPgaeu09AbBvfnMZeqn60/NyQf
|
||||
VgK4bFTRrWhLOTVHyAOXnn2x38SOJjPnCcgydu9ULbWlJ3FRyiRk47LCEpwq3Ezt
|
||||
1jEi+8SYKJsuRbNNtYrSC7kCgYAnAyTIrCzcC/rZeoQOXDhxcB+BvvkLQdTldGvj
|
||||
leXkTqwJKET8wYg+FYHLh12DWqLg8wqeMP/m5BL3DvfJaFi+J3URHU04qda6JuwS
|
||||
uW9K7rG2vPlfEIh014CICa8ZWSdtNg46mj7jmsv1Bo5+m/bF2AI0/iSCFQP1kb+J
|
||||
8w79wQKBgCnl6qGGGG8e496FTBllDO/j0Sc39TmSmJKw5O8xyzV4qs/byhZw9lgY
|
||||
eUIc7Cn7yNffBEu6CcblcasuG6oLAgsH0zPKKbxj3Xit1vB3248ZHyyBdJPSZxRO
|
||||
G058MlBvAfBan5ScZ5osEdSVVg9y88MqpUwsZiOhg6X7xUXrbQqY
|
||||
MIIEpAIBAAKCAQEAuDPXPf2RblYSVcqOLONMLfd3c28Jzy2ZkxXGsNHwFVzqDjnt
|
||||
xOc0vkN2TBu4HVV/D8d/JrX3OvdxZWE0BEwXqT5yil3bx3moMFlcYBwwmqXDhk9A
|
||||
BI+HypDMCs/Z4ikBD6lrOQD1i3Mbq/nz9gX6kBpsIWMWRiNRW8A6kXHm50h9v2R/
|
||||
DrP1A/Z/Wd28mWyI/GaA/7koo7WYjtJePhaHcKkbrgM9FXLJ4+Hs2JLAujK+vTBH
|
||||
fI15UOfsukfzID4iBClLBOmWstMfo+hbJr3ZNz+2KND48A56/ffwSiS4j08G6B9u
|
||||
pkOZVvxzoGW+b7/s7nCtoAvDNlPD6OI1+ylf/wIDAQABAoIBAQCTfJ6o+fCKAcyo
|
||||
eIiiFFSYsX4pJQ0bn41JobP3PAEZec3GGkfw0pb+iJGdmswuYJheEAQVALm1sw5O
|
||||
eCfoEO0ZC/E2LLSe4R/zpnk6Uxfvmy4Uyjud6zZ00L8vIQF5/g7ldWduuv/f6giM
|
||||
CJR3to3K9/0ANpBNFFY+OooqjqKtJ5dQZO3VxT6e/X3TxmxU+6VLbTHD6w7GDraB
|
||||
Kozk8Bj5jcowbHa/hpZ+dwfnsTKzSlSFkTxqKZSXwtJyb4pz+ct1LoPMYexbJ9Qy
|
||||
UIKKlnx/oKKjJAf5be93RtQuH+dMqW5bdN6b0BTXWJxMx7A90Kj+dXblRyqLWEG/
|
||||
zW8KgfaBAoGBAOg4op9/BYtzZV5vTDIpEnjHFxb9dIeWd3XHSdAlwMfTV7YF+rnv
|
||||
IUIXgesyBT967PV+mB9lEmck9mJVSkaP2pNbdoz+DVXkBciYs0JtJpg2nFp3cCiq
|
||||
07kWVkH4XLqjr8V4q/+g56tpPIs8G834njGYyvXuDzlZJoYn39UDybvhAoGBAMsQ
|
||||
da2XVd+duBXL8HzZl904uQy0eEVKGdiWDyfQDHZl6ate4VdUgKre0YeiFB0MRsDE
|
||||
F/7mUu0Wc4Py12HneIc9HYU8RdAWVNJzyqGm/5Ke+35o/vP5hhQpdkiTi1+E4ATe
|
||||
NXSeRVGZ95WL1bnWTxlPgf/ioDn1rFVWOvdsPZffAoGAVpFeVlT0zTJ8dILLBdv3
|
||||
zdxyCBj+CtmVuOtM4fJg9l0b0nhSKmQxosC+pt3jxPFfSnkh3npALQFDdA7VfI59
|
||||
7fbnr9G5SO6TFV+PW9Dy1UVube8eeZqNCO+BwmACuXTxvoyomcfy9Rxq/ICw4Myw
|
||||
tE6AQsO3GyrXyKUutOsPliECgYBEKpJWY6cAGgHhz0Q7pQ/Fw3TbPvngyK9EdZtA
|
||||
0iZc2HlIfeFHX6aRtZrA3TfDSIu3yhwEBW1xCUhd0vdadkmPnIR8ZW9KGzT+MMCk
|
||||
41qH7bafCMANRoYr3n9GfcEbn49UEwP+0eKTMgxat0ZXzAlhhb8uFvWSf1YKj5fb
|
||||
1woWIQKBgQDdyQpAXGt7FUVt+WlHgePlXxULlsO9P0nhTiscIcxrR4QXtQuqx9mZ
|
||||
AQE/GHZAaN+BnXAnEtb7Mmq3WWriVZpOZPqAko9FB+HeQtHdUlwRHmjeT+a22HQ0
|
||||
gOg09UhWV3VoyQ45G4iiqm9ttdSvYwWx3OQeoD8doxt/K9x9iyd+Ow==
|
||||
-----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-----
|
||||
MIIEowIBAAKCAQEAuRDJTZl1/w/mZuf5KM4/NT1cwiaW69PPSvOdNB2aPy5p89eq
|
||||
xns2gDTBWTRYDzHxNqRuT2bVQWU5tm2KCDyGgXixK/U6MSvaKale7RgCpYZJVZYj
|
||||
LO6tnR3b9VmnrpydGx2ZaMk15OmjEweJFM+h4kYSO4ojZ/vZX5YR0IXa4CKkundH
|
||||
ca0LL2prFb7/h6Mbjom8iUo7AbZfXajlBGD9/5JCjQsan7XlROAaxCZSvwcm7SvD
|
||||
4ONpOv+DYv7ewkvO0oWRra2iynrp04IoZlQFKA3hKO4TnoARrdLKLQoDVYOOPdgH
|
||||
2ct6P8KDobBDj+xlPkQufCdOMvUCg6J86aIZpQIDAQABAoIBABFtBjd7WsQAoEZS
|
||||
U4DHIuaFd6WEcrOUBzHcjJHqs6p9WVavmRIFahVaYlZe+me74SWvCAAMA8qbmHqY
|
||||
B+ZMpLGuRqiH98nHgkxn+VtD5oPliCQ59ef2NXzU4fBRV9u2PYjfGaHnSF7crRFO
|
||||
pVbDUk/3HyJiGIFjEo3QmK7U284869t317D8zdJ1WCaH6vcQVlIS0b6SPEd1CQFn
|
||||
X/jx/KqZ75HvVYF4ZF2tNCptqUH/YCIO4/ZxnNTccxtEFaerfKae8Xxcywz1cqhV
|
||||
xNKlLPRpgwaW9Z70Y+A1OKGP8UjplEvjRe9Nc0to3PmBiTPHl6n+56bkMHKjYat8
|
||||
ha7TMKUCgYEA3rkLaoRgnSJ6NnXLpE38bl+WMvxsiYJUllE1fEiq/j5UzeeBKAI6
|
||||
Lt9XFQk+Y20w0oGRlE6A8gBcGen3q/MMrSp0/VQtErnG9+kl4D5jqW+iBdj9LwPI
|
||||
HP26jrK7Wa5PEoXWQkA/PQZqIA4CEMtTSPRTrj1Cu27tU3R0n4PXWdMCgYEA1Ldi
|
||||
W0D+Up5Vhs99JZYwrdSCdV9mY/nfTD7WqmPECXASWKZp/Im9re5TuLV6jbib9LKp
|
||||
/ZG9DmDgEEBvflI/kxH9vb0C+PKwZKuTssuNpGBp44WfU3RDGfUe4GMX/h8PGOI2
|
||||
4RR90b5rqctqDTYmOM5AP58aCFbu56ZB2nAV26cCgYAlPk5BZpd9Tzmeh74g4IWY
|
||||
s1U7e2hu6iNY64WFHeWyFBw8Pj0jwpOWKPS36M7M84JZgR8l7Ka1UQgVsUEgOMli
|
||||
35mmjv/mhLhX1l3mDKi/uZIfZjSYOwqohmk+2XZovbQtRcIZXAL3Im52o8EGq+lm
|
||||
ZqzjkwzoqNj4vp2N2w8UzwKBgQC5sg3PFAHxJgAL2/6oXWDJn4bz6AB+rpfc+85y
|
||||
mP1+L7QUZ9KGf8hymmfEC8mdBtg+2enETwH4F2IDTf0HDc4qGb6lcOezZEnQ2Gfr
|
||||
4f8YzIIj+XaJaClb87ysrlU3pu2LD5BRFY5xGAbtB4LhXbAoTwWPhNk5Bosw9tbu
|
||||
VoL+aQKBgEvgKSpusCmKuH9NrGt85K7ht5+XXchD2UZ9CXIvhg4cYuz5RjCu1Ic9
|
||||
BMTh83OdPf2CVwaBtwYKwVB99Ov2PHGVSHm+VPXtS0UvUWY7phaVBDDrWmwrvrvv
|
||||
z/e4bZMJXv8vy6pWK8tJKj/CinPGCpcus3rNAEyoCrrRehc5o55P
|
||||
MIIEowIBAAKCAQEApkKYDYWg6+hjVU0eh3JpsloGQFD5+TN7EfLEavaV0Yi5dXho
|
||||
45/IEVyFPONPmWunBfqwc2GymJ2hyoPA7jxzR7N5z3Pl3NxHiWbAgA4biIZHvUIE
|
||||
7P05jA5tzjHglVUCpGdFLJTy3PwWyGd0gf9zz+3XUv5OC+uLNSfnzo5hJ1lXmCGS
|
||||
fUn5pgUBi5kM7itUJgs1pjuBlsrp12Qc9cuzK7QCZjTLvAJQX/YbSAgmYbOtDMYI
|
||||
7Jp6k/H/qux2zywSxVDHB58F2jCPoi6y7pGhc4dOFfBd2YVMnON1Mf94rpTT3h/7
|
||||
0IggJsLmgo1ZYtBLozoPXLxYMJzNzKV4FDTgfwIDAQABAoIBAFzxBUcp2FeIRV8+
|
||||
CT72epe1M6FooxTn7niOGbchuYa0w9gjQ59bhuANtH3hJHJDd88j4NffWZNvKy6m
|
||||
kIedS2RdtE6AH5NjoKnywtHTERk01425Bj/lHvJoboHB6CYSq7Nz93uAmHNoiOPm
|
||||
0X6KaxdlgeVnPAH13pAMis0xUqZHqFuQ/wuy1Yc0lJvi5N2Fy0ArxSEkr5I5ezIf
|
||||
FXnaPtaR7sQV8PhECmvo2NfYt+/X4kDAUyPHd9SK0BPPwR20c6hfsFJfh+HnvZfh
|
||||
9p3zlRBb0muOueXZB4sEp51LotrIwcZVQCS5V7iOcy4UHtuwQC+CJxTH/0MRBNX3
|
||||
bITNAOECgYEA2uHgPQfxiwgI3aZ7HaSnm0zB7+SsMWGupUyDgE84Ss+UB1NdQUZD
|
||||
rV69hj8vIHPKCd9IElcTTFulD38PTh7H3nEmmLvCnIAL0Dg7WiWWr+nl0P1TXIR/
|
||||
OR+EbYQ7ykq/uPxEjR7bDiqU6aOurJ8v1zG/VjoRMLTRVHb5tN3uJZMCgYEAwnRI
|
||||
P1ENZ2toT36nQEHdjNARwN9Qh/oD8NVEHnmTxCTjmResJ3F9NqP0buev9xVofaKy
|
||||
9VqBiYjdIZkDKlPymnuNQtNd5CEZUcQfWgP3/NSBIV3PpECgk93iJ/K5T3sIwP/T
|
||||
uonO3Abs66Y3/6OhJ41/X3MBU2aM5KTv6rRoLOUCgYB8YOhkpfPq9ljbYzQIxzz6
|
||||
8eYupLn4obJ1egIr0liBom1SsFuIsR3aEcEO3S6xeTqw23GAAn0T4evs313aHYGj
|
||||
9JZjKibPea+81YdclYmIUxhl5t4M77m/wxokhYTYUhuaSbfGnWcLKMVP8tRagWbV
|
||||
GQ7KN9r223ksTyNcVNR0AwKBgAtNONm9Ozs0ieZ85PmeGmNRwIZmNEcC5/G6Y3Al
|
||||
/sman0PJlW7hcLaZRt6fRqHks6MBrscF0JuOwdNvEjkGkgYagjZNFJrqtY8ECBJy
|
||||
QpqGO08WJbhVLUAK2FccC1ssOnEFLWgdFFHDcUes7HpGJ1qmJa4FgCE5x5yOXYdV
|
||||
nuxlAoGBAIRZ/Z4y1m9+Tx1YjesJ4b30QVmf2oWD1gaEYCIc06SgThOKCdq8MKHX
|
||||
07WIWi1Q/O4DUA71tMvYEJ0nx1Rd9IN1mt/qii3DuDmmNOweZ9HfBjg8Yh8L1Gjr
|
||||
5NKQtJhuA3GoFafh/ioApKZviCxkPAv6GyTMJOlarmbzA+3TW059
|
||||
-----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";
|
||||
|
||||
|
||||
##############################################################
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user