[SEPP] Initial Update for 5G Roaming (#2739)

[SEPP] Initial Update for 5G Roaming
This commit is contained in:
Sukchan Lee 2023-11-19 19:34:51 +09:00 committed by GitHub
parent e12b1be313
commit e92293e0af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
324 changed files with 26622 additions and 14319 deletions

View file

@ -21,11 +21,10 @@ Let's start the explanation assuming that the connection test of the UE to this
#### Build & Install
We'll start with the `roaming-tier3` branch from now on.
Git clone, compile and install:
```
$ git clone https://github.com/open5gs/open5gs
$ cd open5gs
$ git checkout roaming-tier3
$ meson build --prefix=`pwd`/install
$ ninja -C build install
```
@ -60,7 +59,7 @@ $ diff -u hosts.old hosts.new
```
#### Running V-PLMN 5G Core and H-PLMN 5G Core in the Single Host
#### Run the V-PLMN 5G Core and H-PLMN 5G Core on a single host
5G Core requires root privileges as it uses reserved ports such as http(80) or https(443).
@ -82,8 +81,294 @@ $ ./build/tests/registration/registration -c ./build/configs/examples/gnb-315-01
You can see the sample traffic. -- [[5g-roaming-lbo.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/5g_roaming_lbo.pcapng).
## 2. Roaming Test on a Single Host
## 2. Roaming Deployment
### Home PLMN
NRF shall follow TS23.003(28.3.2.3.2 Format of NRF FQDN) for routing.
- Create h-nrf.yaml
```bash
$ sh -c 'cat << EOF > ./install/etc/open5gs/h-nrf.yaml
logger:
file: /home/acetcom/Documents/git/open5gs/install/var/log/open5gs/h-nrf.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
nrf:
serving: # 5G roaming requires PLMN in NRF
- plmn_id:
mcc: 999
mnc: 70
sbi:
server:
- address: nrf.5gc.mnc070.mcc999.3gppnetwork.org
EOF'
```
- Update scp.yaml
```bash
$ sh -c 'cat << EOF > ./install/etc/open5gs/h-scp.yaml
logger:
file: /home/acetcom/Documents/git/open5gs/install/var/log/open5gs/h-scp.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
scp:
sbi:
server:
- address: 127.0.1.200
port: 7777
client:
nrf:
- uri: http://nrf.5gc.mnc070.mcc999.3gppnetwork.org
EOF'
```
AUSF and UDM shall use FQDN in the Home PLMN.
- Update ausf.yaml
```diff
diff -u ./install/etc/open5gs/ausf.yaml.old ./install/etc/open5gs/ausf.yaml
--- ./install/etc/open5gs/ausf.yaml.old 2023-11-19 17:50:12.469116283 +0900
+++ ./install/etc/open5gs/ausf.yaml 2023-11-19 17:52:35.201116202 +0900
@@ -10,13 +10,12 @@
ausf:
sbi:
server:
- - address: 127.0.0.11
- port: 7777
+ - address: ausf.5gc.mnc070.mcc999.3gppnetwork.org
client:
# nrf:
# - uri: http://127.0.0.10:7777
scp:
- - uri: http://127.0.0.200:7777
+ - uri: http://127.0.1.200:7777
################################################################################
# SBI Server
```
- Update udm.yaml
```diff
$ diff -u ./install/etc/open5gs/udm.yaml.old ./install/etc/open5gs/udm.yaml
--- ./install/etc/open5gs/udm.yaml.old 2023-11-19 17:50:17.713116280 +0900
+++ ./install/etc/open5gs/udm.yaml 2023-11-19 17:52:40.701116199 +0900
@@ -29,13 +29,12 @@
key: /home/acetcom/Documents/git/open5gs/install/etc/open5gs/hnet/secp256r1-6.key
sbi:
server:
- - address: 127.0.0.12
- port: 7777
+ - address: udm.5gc.mnc070.mcc999.3gppnetwork.org
client:
# nrf:
# - uri: http://127.0.0.10:7777
scp:
- - uri: http://127.0.0.200:7777
+ - uri: http://127.0.1.200:7777
#
################################################################################
```
- Update udr.yaml
```diff
$ diff -u ./install/etc/open5gs/udr.yaml.old ./install/etc/open5gs/udr.yaml
--- ./install/etc/open5gs/udr.yaml.old 2023-11-19 18:00:27.049115935 +0900
+++ ./install/etc/open5gs/udr.yaml 2023-11-19 18:00:31.713115932 +0900
@@ -17,7 +17,7 @@
# nrf:
# - uri: http://127.0.0.10:7777
scp:
- - uri: http://127.0.0.200:7777
+ - uri: http://127.0.1.200:7777
################################################################################
# SBI Server
```
- Update sepp1.yaml
```diff
$ diff -u ./install/etc/open5gs/sepp1.yaml.old ./install/etc/open5gs/sepp1.yaml
--- ./install/etc/open5gs/sepp1.yaml.old 2023-11-19 19:11:02.293113538 +0900
+++ ./install/etc/open5gs/sepp1.yaml 2023-11-19 19:11:22.429113526 +0900
@@ -23,7 +23,7 @@
# nrf:
# - uri: http://127.0.0.10:7777
scp:
- - uri: http://127.0.0.200:7777
+ - uri: http://127.0.1.200:7777
n32:
server:
- sender: sepp1.localdomain
```
### Visited PLMN
The Visited Network should be configured using the PLMN ID 001/01, so the NRF and AMF settings should be changed accordingly.
- Update nrf.yaml
```diff
$diff -u ./install/etc/open5gs/nrf.yaml.old ./install/etc/open5gs/nrf.yaml
--- ./install/etc/open5gs/nrf.yaml.old 2023-11-19 18:02:34.105115863 +0900
+++ ./install/etc/open5gs/nrf.yaml 2023-11-19 18:02:59.981115848 +0900
@@ -10,8 +10,8 @@
nrf:
serving: # 5G roaming requires PLMN in NRF
- plmn_id:
- mcc: 999
- mnc: 70
+ mcc: 001
+ mnc: 01
sbi:
server:
- address: 127.0.0.10
```
- Update amf.yaml
```diff
$ diff -u ./install/etc/open5gs/amf.yaml.old ./install/etc/open5gs/amf.yaml
--- ./install/etc/open5gs/amf.yaml.old 2023-11-19 17:50:42.997116266 +0900
+++ ./install/etc/open5gs/amf.yaml 2023-11-19 19:08:59.145113607 +0900
@@ -19,27 +19,34 @@
- uri: http://127.0.0.200:7777
ngap:
server:
- - address: 127.0.0.5
+ - address: 127.0.2.5
metrics:
server:
- address: 127.0.0.5
port: 9090
- guami:
+ access_control:
+ - plmn_id:
+ mcc: 001
+ mnc: 01
- plmn_id:
mcc: 999
mnc: 70
+ guami:
+ - plmn_id:
+ mcc: 001
+ mnc: 01
amf_id:
region: 2
set: 1
tai:
- plmn_id:
- mcc: 999
- mnc: 70
+ mcc: 001
+ mnc: 01
tac: 1
plmn_support:
- plmn_id:
- mcc: 999
- mnc: 70
+ mcc: 001
+ mnc: 01
s_nssai:
- sst: 1
security:
```
Due to the absence of UDR in the visiting network, V-PCF uses locally configured policies. When the UE is located in the home PLMN (001/01), MongoDB is used. On the other hand, when the UE is located in the visiting PLMN (999/70, 315/010), locally configured policies are used. This is because there is no session management policy data for the UE in the visiting network, so locally configured information based on the roaming agreement is used.
- Update pcf.yaml
```diff
$ diff -u ./install/etc/open5gs/pcf.yaml.old ./install/etc/open5gs/pcf.yaml
--- ./install/etc/open5gs/pcf.yaml.old 2023-11-19 18:05:35.389115760 +0900
+++ ./install/etc/open5gs/pcf.yaml 2023-11-19 19:02:27.221113829 +0900
@@ -1,4 +1,3 @@
-db_uri: mongodb://localhost/open5gs
logger:
file: /home/acetcom/Documents/git/open5gs/install/var/log/open5gs/pcf.log
# level: info # fatal|error|warn|info(default)|debug|trace
@@ -22,6 +21,29 @@
server:
- address: 127.0.0.13
port: 9090
+ policy:
+ - plmn_id:
+ mcc: 999
+ mnc: 70
+ slice:
+ - sst: 1 # 1,2,3,4
+ default_indicator: true
+ session:
+ - name: internet
+ type: 3 # 1:IPv4, 2:IPv6, 3:IPv4v6
+ ambr:
+ downlink:
+ value: 1
+ unit: 3 # 0:bps, 1:Kbps, 2:Mbps, 3:Gbps, 4:Tbps
+ uplink:
+ value: 1
+ unit: 3
+ qos:
+ index: 9 # 1, 2, 3, 4, 65, 66, 67, 75, 71, 72, 73, 74, 76, 5, 6, 7, 8, 9, 69, 70, 79, 80, 82, 83, 84, 85, 86
+ arp:
+ priority_level: 8 # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ pre_emption_vulnerability: 1 # 1: Disabled, 2:Enabled
+ pre_emption_capability: 1 # 1: Disabled, 2:Enabled
################################################################################
# Locally configured policy
```
### Run the V-PLMN 5G Core and H-PLMN 5G Core on a single host
#### Home Network
5G Core requires root privileges as it uses reserved ports such as http(80) or https(443).
```
$ sudo ./install/bin/open5gs-nrfd -c ./install/etc/open5gs/h-nrf.yaml
$ ./install/bin/open5gs-scpd -c ./install/etc/open5gs/h-scp.yaml
$ sudo ./install/bin/open5gs-ausfd
$ sudo ./install/bin/open5gs-udmd
$ ./install/bin/open5gs-udrd
$ ./install/bin/open5gs-seppd -c ./install/etc/open5gs/sepp1.yaml
```
#### Visted Network
```
$ ./install/bin/open5gs-nrfd
$ ./install/bin/open5gs-scpd
$ ./install/bin/open5gs-amfd
$ ./install/bin/open5gs-smfd
$ ./install/bin/open5gs-upfd
$ ./install/bin/open5gs-pcfd
$ ./install/bin/open5gs-bsfd
$ ./install/bin/open5gs-nssfd
$ ./install/bin/open5gs-seppd -c ./install/etc/open5gs/sepp2.yaml
```
### Performs a test of UE access while roaming subscribed to H-PLMN.
```
$ ./build/tests/registration/registration -c ./build/configs/examples/gnb-001-01-ue-999-70.yaml simple-test
```
## 3. Roaming Deployment
### VM and Subscriber Information
@ -293,6 +578,64 @@ index e78b018f1..3032a06c6 100644
- subnet: 2001:db8:cafe::1/48
```
Due to the absence of UDR in the visiting network, V-PCF uses locally configured policies. When the UE is located in the home PLMN (999/70), MongoDB is used. On the other hand, when the UE is located in the visiting PLMN (001/01, 315/010), locally configured policies are used. This is because there is no session management policy data for the UE in the visiting network, so locally configured information based on the roaming agreement is used.
- Update pcf.yaml
```diff
$ diff --git a/configs/open5gs/pcf.yaml.in b/configs/open5gs/pcf.yaml.in
index 2df2e9a36..9eea1f1de 100644
--- a/configs/open5gs/pcf.yaml.in
+++ b/configs/open5gs/pcf.yaml.in
@@ -22,6 +22,51 @@ pcf:
server:
- address: 127.0.0.13
port: 9090
+ policy:
+ - plmn_id:
+ mcc: 001
+ mnc: 01
+ slice:
+ - sst: 1 # 1,2,3,4
+ default_indicator: true
+ session:
+ - name: internet
+ type: 3 # 1:IPv4, 2:IPv6, 3:IPv4v6
+ ambr:
+ downlink:
+ value: 1
+ unit: 3 # 0:bps, 1:Kbps, 2:Mbps, 3:Gbps, 4:Tbps
+ uplink:
+ value: 1
+ unit: 3
+ qos:
+ index: 9 # 1, 2, 3, 4, 65, 66, 67, 75, 71, 72, 73, 74, 76, 5, 6, 7, 8, 9, 69, 70, 79, 80, 82, 83, 84, 85, 86
+ arp:
+ priority_level: 8 # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ pre_emption_vulnerability: 1 # 1: Disabled, 2:Enabled
+ pre_emption_capability: 1 # 1: Disabled, 2:Enabled
+ - plmn_id:
+ mcc: 315
+ mnc: 010
+ slice:
+ - sst: 1 # 1,2,3,4
+ default_indicator: true
+ session:
+ - name: internet
+ type: 3 # 1:IPv4, 2:IPv6, 3:IPv4v6
+ ambr:
+ downlink:
+ value: 1
+ unit: 3 # 0:bps, 1:Kbps, 2:Mbps, 3:Gbps, 4:Tbps
+ uplink:
+ value: 1
+ unit: 3
+ qos:
+ index: 9 # 1, 2, 3, 4, 65, 66, 67, 75, 71, 72, 73, 74, 76, 5, 6, 7, 8, 9, 69, 70, 79, 80, 82, 83, 84, 85, 86
+ arp:
+ priority_level: 8 # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ pre_emption_vulnerability: 1 # 1: Disabled, 2:Enabled
+ pre_emption_capability: 1 # 1: Disabled, 2:Enabled
```
For now we will set up SEPP without using TLS.
@ -554,6 +897,64 @@ index e78b018f1..3032a06c6 100644
- subnet: 2001:db8:cafe::1/48
```
Due to the absence of UDR in the visiting network, V-PCF uses locally configured policies. When the UE is located in the home PLMN (001/01), MongoDB is used. On the other hand, when the UE is located in the visiting PLMN (999/70, 315/010), locally configured policies are used. This is because there is no session management policy data for the UE in the visiting network, so locally configured information based on the roaming agreement is used.
- Update pcf.yaml
```diff
$ diff --git a/configs/open5gs/pcf.yaml.in b/configs/open5gs/pcf.yaml.in
index 2df2e9a36..9eea1f1de 100644
--- a/configs/open5gs/pcf.yaml.in
+++ b/configs/open5gs/pcf.yaml.in
@@ -22,6 +22,51 @@ pcf:
server:
- address: 127.0.0.13
port: 9090
+ policy:
+ - plmn_id:
+ mcc: 999
+ mnc: 70
+ slice:
+ - sst: 1 # 1,2,3,4
+ default_indicator: true
+ session:
+ - name: internet
+ type: 3 # 1:IPv4, 2:IPv6, 3:IPv4v6
+ ambr:
+ downlink:
+ value: 1
+ unit: 3 # 0:bps, 1:Kbps, 2:Mbps, 3:Gbps, 4:Tbps
+ uplink:
+ value: 1
+ unit: 3
+ qos:
+ index: 9 # 1, 2, 3, 4, 65, 66, 67, 75, 71, 72, 73, 74, 76, 5, 6, 7, 8, 9, 69, 70, 79, 80, 82, 83, 84, 85, 86
+ arp:
+ priority_level: 8 # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ pre_emption_vulnerability: 1 # 1: Disabled, 2:Enabled
+ pre_emption_capability: 1 # 1: Disabled, 2:Enabled
+ - plmn_id:
+ mcc: 315
+ mnc: 010
+ slice:
+ - sst: 1 # 1,2,3,4
+ default_indicator: true
+ session:
+ - name: internet
+ type: 3 # 1:IPv4, 2:IPv6, 3:IPv4v6
+ ambr:
+ downlink:
+ value: 1
+ unit: 3 # 0:bps, 1:Kbps, 2:Mbps, 3:Gbps, 4:Tbps
+ uplink:
+ value: 1
+ unit: 3
+ qos:
+ index: 9 # 1, 2, 3, 4, 65, 66, 67, 75, 71, 72, 73, 74, 76, 5, 6, 7, 8, 9, 69, 70, 79, 80, 82, 83, 84, 85, 86
+ arp:
+ priority_level: 8 # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ pre_emption_vulnerability: 1 # 1: Disabled, 2:Enabled
+ pre_emption_capability: 1 # 1: Disabled, 2:Enabled
```
For now we will set up SEPP without using TLS.
@ -815,6 +1216,64 @@ index e78b018f1..3032a06c6 100644
- subnet: 2001:db8:cafe::1/48
```
Due to the absence of UDR in the visiting network, V-PCF uses locally configured policies. When the UE is located in the home PLMN (315/010), MongoDB is used. On the other hand, when the UE is located in the visiting PLMN (999/70, 001/01), locally configured policies are used. This is because there is no session management policy data for the UE in the visiting network, so locally configured information based on the roaming agreement is used.
- Update pcf.yaml
```diff
$ diff --git a/configs/open5gs/pcf.yaml.in b/configs/open5gs/pcf.yaml.in
index 2df2e9a36..9eea1f1de 100644
--- a/configs/open5gs/pcf.yaml.in
+++ b/configs/open5gs/pcf.yaml.in
@@ -22,6 +22,51 @@ pcf:
server:
- address: 127.0.0.13
port: 9090
+ policy:
+ - plmn_id:
+ mcc: 999
+ mnc: 70
+ slice:
+ - sst: 1 # 1,2,3,4
+ default_indicator: true
+ session:
+ - name: internet
+ type: 3 # 1:IPv4, 2:IPv6, 3:IPv4v6
+ ambr:
+ downlink:
+ value: 1
+ unit: 3 # 0:bps, 1:Kbps, 2:Mbps, 3:Gbps, 4:Tbps
+ uplink:
+ value: 1
+ unit: 3
+ qos:
+ index: 9 # 1, 2, 3, 4, 65, 66, 67, 75, 71, 72, 73, 74, 76, 5, 6, 7, 8, 9, 69, 70, 79, 80, 82, 83, 84, 85, 86
+ arp:
+ priority_level: 8 # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ pre_emption_vulnerability: 1 # 1: Disabled, 2:Enabled
+ pre_emption_capability: 1 # 1: Disabled, 2:Enabled
+ - plmn_id:
+ mcc: 001
+ mnc: 01
+ slice:
+ - sst: 1 # 1,2,3,4
+ default_indicator: true
+ session:
+ - name: internet
+ type: 3 # 1:IPv4, 2:IPv6, 3:IPv4v6
+ ambr:
+ downlink:
+ value: 1
+ unit: 3 # 0:bps, 1:Kbps, 2:Mbps, 3:Gbps, 4:Tbps
+ uplink:
+ value: 1
+ unit: 3
+ qos:
+ index: 9 # 1, 2, 3, 4, 65, 66, 67, 75, 71, 72, 73, 74, 76, 5, 6, 7, 8, 9, 69, 70, 79, 80, 82, 83, 84, 85, 86
+ arp:
+ priority_level: 8 # 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ pre_emption_vulnerability: 1 # 1: Disabled, 2:Enabled
+ pre_emption_capability: 1 # 1: Disabled, 2:Enabled
```
For now we will set up SEPP without using TLS.
@ -890,7 +1349,7 @@ $ diff -u sepp.yaml.old sepp.yaml
# peer: 64
sepp:
+ defconfig:
+ default:
+ tls:
+ server:
+ private_key: /home/acetcom/Documents/git/my/open5gs/build/configs/open5gs/tls/sepp1.key
@ -952,4 +1411,4 @@ $ diff -u sepp.yaml.old sepp.yaml
- address: 127.0.0.250
```
For more information, please refer to the [LINK](https://github.com/open5gs/open5gs/blob/roaming-tier3/configs/open5gs/sepp1.yaml.in).
For more information, please refer to the [LINK](https://github.com/open5gs/open5gs/blob/main/configs/open5gs/sepp1.yaml.in).