Create SCP Model-C and Model-D separate deployments under SCP deployment

This commit is contained in:
Borjis131
2024-08-07 11:24:36 +02:00
parent daf0c3d43e
commit 72bcaaa2df
30 changed files with 561 additions and 31 deletions

View File

@@ -38,7 +38,7 @@ services:
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
#command: "-c /etc/open5gs/custom/scp.yaml"
command: "-c /etc/open5gs/custom/scp.yaml"
networks:
open5gs:
aliases:
@@ -260,24 +260,24 @@ volumes:
configs:
nrf_config:
file: ../../configs/scp-model-d/nrf.yaml
file: ../../../configs/scp/model-c/nrf.yaml
scp_config:
file: ../../configs/scp-model-d/scp.yaml
file: ../../../configs/scp/model-c/scp.yaml
ausf_config:
file: ../../configs/scp-model-d/ausf.yaml
file: ../../../configs/scp/model-c/ausf.yaml
udm_config:
file: ../../configs/scp-model-d/udm.yaml
file: ../../../configs/scp/model-c/udm.yaml
udr_config:
file: ../../configs/scp-model-d/udr.yaml
file: ../../../configs/scp/model-c/udr.yaml
nssf_config:
file: ../../configs/scp-model-d/nssf.yaml
file: ../../../configs/scp/model-c/nssf.yaml
bsf_config:
file: ../../configs/scp-model-d/bsf.yaml
file: ../../../configs/scp/model-c/bsf.yaml
pcf_config:
file: ../../configs/scp-model-d/pcf.yaml
file: ../../../configs/scp/model-c/pcf.yaml
amf_config:
file: ../../configs/scp-model-d/amf.yaml
file: ../../../configs/scp/model-c/amf.yaml
smf_config:
file: ../../configs/scp-model-d/smf.yaml
file: ../../../configs/scp/model-c/smf.yaml
upf_config:
file: ../../configs/scp-model-d/upf.yaml
file: ../../../configs/scp/model-c/upf.yaml

View File

@@ -0,0 +1,283 @@
services:
db:
container_name: db
image: "mongo:${MONGODB_VERSION}"
command: "mongod --bind_ip 0.0.0.0 --port 27017"
networks:
open5gs:
aliases:
- db.open5gs.org
volumes:
- db_data:/data/db
- db_config:/data/configdb
ports:
- "0.0.0.0:27017:27017/tcp"
nrf:
container_name: nrf
image: "nrf:${OPEN5GS_VERSION}"
build:
context: ../../images/nrf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/nrf.yaml"
networks:
open5gs:
aliases:
- nrf.open5gs.org
configs:
- source: nrf_config
target: /etc/open5gs/custom/nrf.yaml
scp:
container_name: scp
image: "scp:${OPEN5GS_VERSION}"
build:
context: ../../images/scp
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/scp.yaml"
networks:
open5gs:
aliases:
- scp.open5gs.org
configs:
- source: scp_config
target: /etc/open5gs/custom/scp.yaml
ausf:
container_name: ausf
image: "ausf:${OPEN5GS_VERSION}"
build:
context: ../../images/ausf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/ausf.yaml"
networks:
open5gs:
aliases:
- ausf.open5gs.org
configs:
- source: ausf_config
target: /etc/open5gs/custom/ausf.yaml
depends_on:
- nrf
- scp
udm:
container_name: udm
image: "udm:${OPEN5GS_VERSION}"
build:
context: ../../images/udm
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/udm.yaml"
networks:
open5gs:
aliases:
- udm.open5gs.org
configs:
- source: udm_config
target: /etc/open5gs/custom/udm.yaml
depends_on:
- nrf
- scp
udr:
container_name: udr
image: "udr:${OPEN5GS_VERSION}"
build:
context: ../../images/udr
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/udr.yaml"
restart: unless-stopped
networks:
open5gs:
aliases:
- udr.open5gs.org
configs:
- source: udr_config
target: /etc/open5gs/custom/udr.yaml
depends_on:
- db
- nrf
- scp
nssf:
container_name: nssf
image: "nssf:${OPEN5GS_VERSION}"
build:
context: ../../images/nssf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/nssf.yaml"
networks:
open5gs:
aliases:
- nssf.open5gs.org
configs:
- source: nssf_config
target: /etc/open5gs/custom/nssf.yaml
depends_on:
- nrf
- scp
bsf:
container_name: bsf
image: "bsf:${OPEN5GS_VERSION}"
build:
context: ../../images/bsf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/bsf.yaml"
networks:
open5gs:
aliases:
- bsf.open5gs.org
configs:
- source: bsf_config
target: /etc/open5gs/custom/bsf.yaml
depends_on:
- nrf
- scp
pcf:
container_name: pcf
image: "pcf:${OPEN5GS_VERSION}"
build:
context: ../../images/pcf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/pcf.yaml"
restart: unless-stopped
networks:
open5gs:
aliases:
- pcf.open5gs.org
configs:
- source: pcf_config
target: /etc/open5gs/custom/pcf.yaml
depends_on:
- db
- nrf
- scp
amf:
container_name: amf
image: "amf:${OPEN5GS_VERSION}"
build:
context: ../../images/amf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/amf.yaml"
networks:
open5gs:
aliases:
- amf.open5gs.org
configs:
- source: amf_config
target: /etc/open5gs/custom/amf.yaml
depends_on:
- nrf
- scp
ports:
- "0.0.0.0:38412:38412/sctp"
smf:
container_name: smf
image: "smf:${OPEN5GS_VERSION}"
build:
context: ../../images/smf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/smf.yaml"
networks:
open5gs:
aliases:
- smf.open5gs.org
configs:
- source: smf_config
target: /etc/open5gs/custom/smf.yaml
depends_on:
- nrf
- scp
- upf
upf:
container_name: upf
image: "upf:${OPEN5GS_VERSION}"
build:
context: ../../images/upf
args:
- OPEN5GS_VERSION=${OPEN5GS_VERSION}
- UBUNTU_VERSION=${UBUNTU_VERSION}
command: "-c /etc/open5gs/custom/upf.yaml"
networks:
open5gs:
aliases:
- upf.open5gs.org
extra_hosts:
docker-host.external-ip: ${DOCKER_HOST_IP}
configs:
- source: upf_config
target: /etc/open5gs/custom/upf.yaml
ports:
- "0.0.0.0:2152:2152/udp"
privileged: true
cap_add:
- NET_ADMIN
networks:
open5gs:
name: open5gs
driver: bridge
driver_opts:
com.docker.network.bridge.name: br-ogs
ipam:
config:
- subnet: 10.33.33.0/24
volumes:
db_data:
name: open5gs_db_data
labels:
org.open5gs.mongodb_version: ${MONGODB_VERSION}
db_config:
name: open5gs_db_config
labels:
org.open5gs.mongodb_version: ${MONGODB_VERSION}
configs:
nrf_config:
file: ../../../configs/scp/model-d/nrf.yaml
scp_config:
file: ../../../configs/scp/model-d/scp.yaml
ausf_config:
file: ../../../configs/scp/model-d/ausf.yaml
udm_config:
file: ../../../configs/scp/model-d/udm.yaml
udr_config:
file: ../../../configs/scp/model-d/udr.yaml
nssf_config:
file: ../../../configs/scp/model-d/nssf.yaml
bsf_config:
file: ../../../configs/scp/model-d/bsf.yaml
pcf_config:
file: ../../../configs/scp/model-d/pcf.yaml
amf_config:
file: ../../../configs/scp/model-d/amf.yaml
smf_config:
file: ../../../configs/scp/model-d/smf.yaml
upf_config:
file: ../../../configs/scp/model-d/upf.yaml

View File

@@ -0,0 +1,49 @@
logger:
file:
path: /var/log/open5gs/amf.log
global:
amf:
sbi:
server:
- address: amf.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
discovery:
delegated: no
ngap:
server:
- address: amf.open5gs.org
guami:
- plmn_id:
mcc: 001
mnc: 01
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 001
mnc: 01
tac: 1
plmn_support:
- plmn_id:
mcc: 001
mnc: 01
s_nssai:
- sst: 1
sd: 1
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
time:
t3512:
value: 540

View File

@@ -0,0 +1,18 @@
logger:
file:
path: /var/log/open5gs/ausf.log
global:
ausf:
sbi:
server:
- address: ausf.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
discovery:
delegated: no

View File

@@ -0,0 +1,18 @@
logger:
file:
path: /var/log/open5gs/bsf.log
global:
bsf:
sbi:
server:
- address: bsf.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
discovery:
delegated: no

View File

@@ -0,0 +1,23 @@
logger:
file:
path: /var/log/open5gs/nssf.log
global:
nssf:
sbi:
server:
- address: nssf.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
nsi:
- uri: http://nrf.open5gs.org:80
s_nssai:
sst: 1
sd: 1
discovery:
delegated: no

View File

@@ -0,0 +1,20 @@
db_uri: mongodb://db.open5gs.org/open5gs
logger:
file:
path: /var/log/open5gs/pcf.log
global:
pcf:
sbi:
server:
- address: pcf.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
discovery:
delegated: no

View File

@@ -0,0 +1,34 @@
logger:
file:
path: /var/log/open5gs/smf.log
global:
smf:
sbi:
server:
- address: smf.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
discovery:
delegated: no
pfcp:
server:
- address: smf.open5gs.org
client:
upf:
- address: upf.open5gs.org
gtpu:
server:
- address: smf.open5gs.org
session:
- subnet: 10.45.0.0/16
gateway: 10.45.0.1
dns:
- 8.8.8.8
- 8.8.4.4
mtu: 1400

View File

@@ -0,0 +1,18 @@
logger:
file:
path: /var/log/open5gs/udm.log
global:
udm:
sbi:
server:
- address: udm.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
discovery:
delegated: no

View File

@@ -0,0 +1,20 @@
db_uri: mongodb://db.open5gs.org/open5gs
logger:
file:
path: /var/log/open5gs/udr.log
global:
udr:
sbi:
server:
- address: udr.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80
scp:
- uri: http://scp.open5gs.org:80
discovery:
delegated: no

View File

@@ -0,0 +1,11 @@
logger:
file:
path: /var/log/open5gs/nrf.log
global:
nrf:
sbi:
server:
- address: nrf.open5gs.org
port: 80

View File

@@ -0,0 +1,14 @@
logger:
file:
path: /var/log/open5gs/scp.log
global:
scp:
sbi:
server:
- address: scp.open5gs.org
port: 80
client:
nrf:
- uri: http://nrf.open5gs.org:80

View File

@@ -0,0 +1,18 @@
logger:
file:
path: /var/log/open5gs/upf.log
global:
upf:
pfcp:
server:
- address: upf.open5gs.org
client:
gtpu:
server:
- address: upf.open5gs.org
advertise: docker-host.external-ip
session:
- subnet: 10.45.0.0/16
gateway: 10.45.0.1

View File

@@ -1,19 +0,0 @@
# Overview of the scp model d deployment
![Overview of the scp-model-d deployment](../../misc/diagrams/scp-model-d.png)
The `scp-model-d` deployment is prepared to work with external gNBs, exposing:
- `N2` control plane interface on the AMF using `SCTP port 38412`
- `N3` user plane interface on the UPF using `UDP port 2152`
It also exposes the MongoDB database using `TCP port 27017`.
This deployment builds all the Docker images for the Network Functions, because the deployment `basic` lacks the SCP Network Function.
The configuration for this deployment is set up to use the `Model D` or `indirect communication with delegated discovery` for the communication between the Network Functions. This form of communication makes all the Network Functions present in the 5G Core to perform the requests to the SCP and the SCP (acting like a proxy) forwards the request to the appropiate Network Function.
In `Model D` this includes the Network Function discovery mechanisms, so the SCP will receive the discovery request and forward it to the NRF.
![SCP Model D communication diagram](../../misc/diagrams/model-d-diagram.png)
More information can be read in this [Ericsson White Paper about indirect communication](https://www.ericsson.com/en/reports-and-papers/white-papers/indirect-communication-for-service-based-architecture-in-5g-core).

23
docs/deployments/scp.md Normal file
View File

@@ -0,0 +1,23 @@
# Overview of the scp deployment
![Overview of the scp deployment](../../misc/diagrams/scp.png)
The `scp` deployment is prepared to work with external gNBs, exposing:
- `N2` control plane interface on the AMF using `SCTP port 38412`
- `N3` user plane interface on the UPF using `UDP port 2152`
It also exposes the MongoDB database using `TCP port 27017`.
This deployment builds all the Docker images for the Network Functions, because the deployment `basic` lacks the SCP Network Function.
This deployment comes with two variants the `Model C` and the `Model D`.
The `Model D` or `indirect communication with delegated discovery`, makes all the Network Functions present in the 5G Core to perform the requests to the SCP and the SCP (acting like a proxy) forwards the request to the appropiate Network Function. In `Model D` this includes the Network Function discovery mechanisms, so the SCP will receive the discovery request and forward it to the NRF.
![SCP Model D communication diagram](../../misc/diagrams/scp-model-d.png)
The `Model C` or `indirect communication`, makes all the Network Functions present in the 5G Core to perform the requests to the SCP and the SCP (acting like a proxy) forwards the request to the appropiate Network Function. But `Model C` still uses direct communication with the NRF for the Network Function discovery mechanisms.
![SCP Model C communication diagram](../../misc/diagrams/scp-model-c.png)
More information can be read in this [Ericsson White Paper about indirect communication](https://www.ericsson.com/en/reports-and-papers/white-papers/indirect-communication-for-service-based-architecture-in-5g-core).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 13 KiB

BIN
misc/diagrams/scp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB