mirror of
https://github.com/open5gs/open5gs.git
synced 2025-10-23 16:13:46 +00:00
Compare commits
133 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
496b5a9e58 | ||
|
916bf752b4 | ||
|
26f14ee7ca | ||
|
ff4695bd5a | ||
|
3b19190f56 | ||
|
5ea9b22209 | ||
|
b0e8dbb31a | ||
|
018b352985 | ||
|
1dc692753a | ||
|
182a61dc0b | ||
|
dc870cc839 | ||
|
9a814ceac9 | ||
|
b4c1987ede | ||
|
ab93fb7613 | ||
|
6cc84b69ce | ||
|
8ca9402d11 | ||
|
5901582281 | ||
|
e5a0dfb444 | ||
|
0b063a57c8 | ||
|
cea1dff5a1 | ||
|
002e3c7ae9 | ||
|
27b25b8993 | ||
|
0b05308188 | ||
|
3b1ebfa9ed | ||
|
959bc6a248 | ||
|
96050ed6e2 | ||
|
49d7fe3b82 | ||
|
19a8e4cd70 | ||
|
8cf606fd6b | ||
|
a58214da76 | ||
|
03e74c93e8 | ||
|
72374e439a | ||
|
fc27f7499b | ||
|
dcfc9ef803 | ||
|
2766a1ce2c | ||
|
20a662a9aa | ||
|
1a13ab3a7d | ||
|
73c3aa54c0 | ||
|
793a82020f | ||
|
e459a85bc1 | ||
|
27285a60da | ||
|
9ff93f0e49 | ||
|
ea89d8dc8e | ||
|
bf5f64b5e5 | ||
|
cc03c91bdd | ||
|
3275584236 | ||
|
83720fff9a | ||
|
688f2bc249 | ||
|
e1c8d89bba | ||
|
520dcf1ff8 | ||
|
11be73cab7 | ||
|
f59cf3eacb | ||
|
8f1e591be5 | ||
|
905fc76faf | ||
|
745ea41096 | ||
|
8710cae0fd | ||
|
27cee12a7b | ||
|
44de4673bf | ||
|
2df8a1836f | ||
|
3c9541992f | ||
|
90f60cad0e | ||
|
26066bb0ca | ||
|
d3eaaff430 | ||
|
d40348c00c | ||
|
613e21c4ff | ||
|
41c6bb4681 | ||
|
23c1fee516 | ||
|
a74050a032 | ||
|
bb38c01229 | ||
|
ec0752cb95 | ||
|
b6ba02f6de | ||
|
5f9785af52 | ||
|
c0396171ff | ||
|
0b3ca447c9 | ||
|
68724c6ec1 | ||
|
cc30aa2a9a | ||
|
3a2a227b48 | ||
|
a76a2503c2 | ||
|
1e2a16fc5b | ||
|
829123dad0 | ||
|
457230a2f6 | ||
|
6ab5c41af5 | ||
|
b22023afb8 | ||
|
b21dc65741 | ||
|
5d2fea994b | ||
|
ebb48ede53 | ||
|
b07d12d3be | ||
|
54f1ccbb6b | ||
|
52cd51ca6a | ||
|
c848919af4 | ||
|
6df2906f42 | ||
|
ebf1c5b0d9 | ||
|
072fb68882 | ||
|
182a680d51 | ||
|
09780e3fed | ||
|
79df32638c | ||
|
d0eec31f5c | ||
|
dc474329e2 | ||
|
22b09443ce | ||
|
7ba77e6cc1 | ||
|
37e0a714f9 | ||
|
0270c0e340 | ||
|
a6e42a4932 | ||
|
0a94e1ece4 | ||
|
569f98f92c | ||
|
7848b6c966 | ||
|
60b75b5f5e | ||
|
82261bc8e4 | ||
|
9e8700f1a2 | ||
|
fc5c9b2af0 | ||
|
56c0987ad2 | ||
|
08751e1b4a | ||
|
de72ccaf91 | ||
|
9af4268bab | ||
|
c6bfbed922 | ||
|
0790674c14 | ||
|
2f2178595d | ||
|
515b5d2b17 | ||
|
31977bf30a | ||
|
d1400897e0 | ||
|
b6bcbac3e3 | ||
|
9b5cc4a568 | ||
|
094d40b073 | ||
|
852756f902 | ||
|
fea48f5a44 | ||
|
b19b3e9dd1 | ||
|
7901a1164f | ||
|
950c4c0a12 | ||
|
5e839e25fe | ||
|
d3fa7619bf | ||
|
6cd755ac97 | ||
|
f597c9e899 | ||
|
9e8303762c |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
# This directory is fetched during first build and is present in this directory
|
||||
subprojects/freeDiameter
|
||||
subprojects/usrsctp
|
||||
|
||||
webui/.next
|
@@ -11,6 +11,7 @@ If you find Open5GS useful for work, please consider supporting this Open Source
|
||||
<img width="260px" src="https://open5gs.org/assets/img/nextepc_logo.jpg">
|
||||
</a>
|
||||
</td>
|
||||
<td width="20px"></td>
|
||||
<td align="center" valign="middle">
|
||||
<a href="https://sdr.eee.strath.ac.uk/" target="_blank">
|
||||
<img width="260px" src="https://open5gs.org/assets/img/strath.png">
|
||||
@@ -40,6 +41,13 @@ If you find Open5GS useful for work, please consider supporting this Open Source
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="middle">
|
||||
<a href="https://skylarkwireless.com/" target="_blank">
|
||||
<img width="222px" src="https://open5gs.org/assets/img/SkylarkWireless-420x78-Web2-R.png">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -10,6 +10,7 @@ parameter:
|
||||
# no_ausf: true
|
||||
# no_udm: true
|
||||
# no_pcf: true
|
||||
# no_nssf: true
|
||||
# no_udr: true
|
||||
# no_mme: true
|
||||
# no_sgwc: true
|
||||
@@ -67,14 +68,17 @@ smf:
|
||||
sbi:
|
||||
- addr: 127.0.0.4
|
||||
port: 7777
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
pdn:
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -129,19 +133,19 @@ amf:
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
hss:
|
||||
freeDiameter:
|
||||
@@ -200,6 +204,16 @@ pcf:
|
||||
- addr: 127.0.0.13
|
||||
port: 7777
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
|
||||
udr:
|
||||
sbi:
|
||||
- addr: 127.0.0.20
|
||||
|
@@ -10,6 +10,7 @@ parameter:
|
||||
# no_ausf: true
|
||||
# no_udm: true
|
||||
# no_pcf: true
|
||||
# no_nssf: true
|
||||
# no_udr: true
|
||||
# no_mme: true
|
||||
# no_sgwc: true
|
||||
@@ -101,14 +102,17 @@ smf:
|
||||
# sbi:
|
||||
# - addr: 127.0.0.4
|
||||
# port: 7777
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
pdn:
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -163,19 +167,19 @@ amf:
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
hss:
|
||||
freeDiameter:
|
||||
@@ -234,6 +238,16 @@ pcf:
|
||||
- addr: 127.0.0.13
|
||||
port: 7777
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
|
||||
udr:
|
||||
sbi:
|
||||
- addr: 127.0.0.20
|
||||
|
@@ -39,7 +39,7 @@ example_conf = '''
|
||||
csfb.yaml
|
||||
volte.yaml
|
||||
vonr.yaml
|
||||
minimal.yaml
|
||||
slice.yaml
|
||||
srslte.yaml
|
||||
sample.yaml
|
||||
'''.split()
|
||||
|
@@ -37,7 +37,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(https://<all address avaiable>:443)
|
||||
# sbi:
|
||||
# tls:
|
||||
# - tls:
|
||||
# key: amf.key
|
||||
# pem: amf.pem
|
||||
#
|
||||
@@ -51,7 +51,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://amf.open5gs.org:80)
|
||||
# sbi:
|
||||
# name: amf.open5gs.org
|
||||
# - name: amf.open5gs.org
|
||||
#
|
||||
# o SBI Server(http://127.0.0.5:7777)
|
||||
# sbi:
|
||||
@@ -60,7 +60,18 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://<eth0 IP address>:80)
|
||||
# sbi:
|
||||
# dev: eth0
|
||||
# - dev: eth0
|
||||
#
|
||||
# o Provide custom SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-amf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# - addr: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
# <NGAP Server>>
|
||||
#
|
||||
@@ -143,7 +154,7 @@ logger:
|
||||
# mnc: 70
|
||||
# s_nssai:
|
||||
# - sst: 1
|
||||
# - sd: 010000
|
||||
# sd: 010000
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
@@ -231,9 +242,6 @@ nrf:
|
||||
#
|
||||
# parameter:
|
||||
#
|
||||
# o Number of output streams per SCTP associations.
|
||||
# sctp_streams: 30
|
||||
#
|
||||
# o Disable use of IPv4 addresses (only IPv6)
|
||||
# no_ipv4: true
|
||||
#
|
||||
@@ -243,12 +251,6 @@ nrf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -268,7 +270,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -276,7 +278,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
@@ -285,6 +287,27 @@ max:
|
||||
#
|
||||
pool:
|
||||
|
||||
#
|
||||
# sockopt:
|
||||
# no_delay : true
|
||||
#
|
||||
sockopt:
|
||||
|
||||
#
|
||||
# sctp:
|
||||
# heartbit_interval : 5000 (5secs)
|
||||
# sack_delay : 200 (200ms)
|
||||
# rto_initial : 3000 (3secs)
|
||||
# rto_min : 1000 (1sec)
|
||||
# rto_max : 5000 (5secs)
|
||||
# max_num_of_ostreams : 30
|
||||
# max_num_of_istreams : 65535
|
||||
# max_attempts : 4
|
||||
# max_initial_timeout : 8000(8secs)
|
||||
# usrsctp_udp_port : 9899
|
||||
#
|
||||
sctp:
|
||||
|
||||
#
|
||||
# time:
|
||||
#
|
||||
|
@@ -37,7 +37,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(https://<all address avaiable>:443)
|
||||
# sbi:
|
||||
# tls:
|
||||
# - tls:
|
||||
# key: ausf.key
|
||||
# pem: ausf.pem
|
||||
#
|
||||
@@ -51,7 +51,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://ausf.open5gs.org:80)
|
||||
# sbi:
|
||||
# name: ausf.open5gs.org
|
||||
# - name: ausf.open5gs.org
|
||||
#
|
||||
# o SBI Server(http://127.0.0.11:7777)
|
||||
# sbi:
|
||||
@@ -60,7 +60,18 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://<eth0 IP address>:80)
|
||||
# sbi:
|
||||
# dev: eth0
|
||||
# - dev: eth0
|
||||
#
|
||||
# o Provide custom SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-ausf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# - addr: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
ausf:
|
||||
sbi:
|
||||
@@ -115,12 +126,6 @@ nrf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -140,7 +145,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -148,7 +153,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -41,12 +41,6 @@ hss:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -66,7 +60,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -74,7 +68,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -33,6 +33,7 @@ open5gs_conf = '''
|
||||
udm.yaml
|
||||
udr.yaml
|
||||
pcf.yaml
|
||||
nssf.yaml
|
||||
'''.split()
|
||||
|
||||
foreach file : open5gs_conf
|
||||
|
@@ -335,9 +335,6 @@ smf:
|
||||
#
|
||||
# parameter:
|
||||
#
|
||||
# o Number of output streams per SCTP associations.
|
||||
# sctp_streams: 30
|
||||
#
|
||||
# o Disable use of IPv4 addresses (only IPv6)
|
||||
# no_ipv4: true
|
||||
#
|
||||
@@ -347,12 +344,6 @@ smf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
# o Use OAI UE
|
||||
# - Remove HashMME in Security-mode command message
|
||||
# - Use the length 1 of EPS network feature support in Attach accept message
|
||||
@@ -377,7 +368,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -385,7 +376,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
@@ -395,17 +386,23 @@ max:
|
||||
pool:
|
||||
|
||||
#
|
||||
# sctp:
|
||||
# sockopt:
|
||||
# no_delay : true
|
||||
#
|
||||
# o heartbit_interval : 5000 (5secs)
|
||||
# o rto_initial : 3000 (3secs)
|
||||
# o rto_min : 1000 (1sec)
|
||||
# o rto_max : 5000 (5secs)
|
||||
# o max_num_of_ostreams : 30
|
||||
# o max_num_of_istreams : 65535
|
||||
# o max_attempts : 4
|
||||
# o max_initial_timeout : 8000(8secs)
|
||||
# o usrsctp_udp_port : 9899
|
||||
sockopt:
|
||||
|
||||
#
|
||||
# sctp:
|
||||
# heartbit_interval : 5000 (5secs)
|
||||
# sack_delay : 200 (200ms)
|
||||
# rto_initial : 3000 (3secs)
|
||||
# rto_min : 1000 (1sec)
|
||||
# rto_max : 5000 (5secs)
|
||||
# max_num_of_ostreams : 30
|
||||
# max_num_of_istreams : 65535
|
||||
# max_attempts : 4
|
||||
# max_initial_timeout : 8000(8secs)
|
||||
# usrsctp_udp_port : 9899
|
||||
#
|
||||
sctp:
|
||||
|
||||
|
@@ -87,12 +87,6 @@ nrf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -112,7 +106,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -120,7 +114,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
234
configs/open5gs/nssf.yaml.in
Normal file
234
configs/open5gs/nssf.yaml.in
Normal file
@@ -0,0 +1,234 @@
|
||||
#
|
||||
# logger:
|
||||
#
|
||||
# o Set OGS_LOG_INFO to all domain level
|
||||
# - If `level` is omitted, the default level is OGS_LOG_INFO)
|
||||
# - If `domain` is omitted, the all domain level is set from 'level'
|
||||
# (Nothing is needed)
|
||||
#
|
||||
# o Set OGS_LOG_ERROR to all domain level
|
||||
# - `level` can be set with none, fatal, error, warn, info, debug, trace
|
||||
# level: error
|
||||
#
|
||||
# o Set OGS_LOG_DEBUG to mme/emm domain level
|
||||
# level: debug
|
||||
# domain: mme,emm
|
||||
#
|
||||
# o Set OGS_LOG_TRACE to all domain level
|
||||
# level: trace
|
||||
# domain: core,sbi,nssf,event,tlv,mem,sock
|
||||
#
|
||||
logger:
|
||||
file: @localstatedir@/log/open5gs/nssf.log
|
||||
#
|
||||
# nssf:
|
||||
#
|
||||
# <SBI Server>
|
||||
#
|
||||
# o SBI Server(http://<all address available>:80)
|
||||
# sbi:
|
||||
#
|
||||
# o SBI Server(http://<any address>:80)
|
||||
# sbi:
|
||||
# - addr:
|
||||
# - 0.0.0.0
|
||||
# - ::0
|
||||
# port: 7777
|
||||
#
|
||||
# o SBI Server(https://<all address avaiable>:443)
|
||||
# sbi:
|
||||
# - tls:
|
||||
# key: nssf.key
|
||||
# pem: nssf.pem
|
||||
#
|
||||
# o SBI Server(https://127.0.0.14:443, http://[::1]:80)
|
||||
# sbi:
|
||||
# - addr: 127.0.0.14
|
||||
# tls:
|
||||
# key: nssf.key
|
||||
# pem: nssf.pem
|
||||
# - addr: ::1
|
||||
#
|
||||
# o SBI Server(http://nssf.open5gs.org:80)
|
||||
# sbi:
|
||||
# - name: nssf.open5gs.org
|
||||
#
|
||||
# o SBI Server(http://127.0.0.14:7777)
|
||||
# sbi:
|
||||
# - addr: 127.0.0.14
|
||||
# port: 7777
|
||||
#
|
||||
# o SBI Server(http://<eth0 IP address>:80)
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
#
|
||||
# o Provide custom SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-nssf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# - addr: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
# <List of avaiable Network Slice Instance(NSI)>
|
||||
#
|
||||
# o One NSI
|
||||
# - NRF[http://::1:7777/nnrf-nfm/v1/nf-instances]
|
||||
# NSSAI[SST:1]
|
||||
#
|
||||
# nsi:
|
||||
# - addr: ::1
|
||||
# port: 7777
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
#
|
||||
# o Three 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]
|
||||
#
|
||||
# 2. NRF[http://127.0.0.10:7777/nnrf-nfm/v1/nf-instances]
|
||||
# NSSAI[SST:1, SD:009000]
|
||||
#
|
||||
# nsi:
|
||||
# - addr: ::1
|
||||
# port: 7777
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
# - addr: 127.0.0.19
|
||||
# port: 7777
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
# sd: 000080
|
||||
# - addr: 127.0.0.10
|
||||
# port: 7777
|
||||
# s_nssai:
|
||||
# sst: 1
|
||||
# sd: 009000
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
|
||||
#
|
||||
# nrf:
|
||||
#
|
||||
# <SBI Client>>
|
||||
#
|
||||
# o SBI Client(http://127.0.0.10:7777)
|
||||
# sbi:
|
||||
# addr: 127.0.0.10
|
||||
# port: 7777
|
||||
#
|
||||
# o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80)
|
||||
# sbi:
|
||||
# - addr: 127.0.0.10
|
||||
# tls:
|
||||
# key: nrf.key
|
||||
# pem: nrf.pem
|
||||
# - name: nrf.open5gs.org
|
||||
#
|
||||
# o SBI Client(http://[fe80::1%@loopback_devname@]:80)
|
||||
# If prefer_ipv4 is true, http://127.0.0.10:80 is selected.
|
||||
#
|
||||
# sbi:
|
||||
# addr:
|
||||
# - 127.0.0.10
|
||||
# - fe80::1%@loopback_devname@
|
||||
#
|
||||
nrf:
|
||||
sbi:
|
||||
- addr:
|
||||
- 127.0.0.10
|
||||
- ::1
|
||||
port: 7777
|
||||
|
||||
#
|
||||
# parameter:
|
||||
#
|
||||
# o Number of output streams per SCTP associations.
|
||||
# sctp_streams: 30
|
||||
#
|
||||
# o Disable use of IPv4 addresses (only IPv6)
|
||||
# no_ipv4: true
|
||||
#
|
||||
# o Disable use of IPv6 addresses (only IPv4)
|
||||
# no_ipv6: true
|
||||
#
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
# max:
|
||||
#
|
||||
# o Maximum Number of UE per AMF/MME
|
||||
# ue: 1024
|
||||
# o Maximum Number of gNB/eNB per AMF/MME
|
||||
# gnb: 32
|
||||
#
|
||||
max:
|
||||
|
||||
#
|
||||
# pool:
|
||||
#
|
||||
# o The default memory pool size was set assuming 1024 UEs.
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
# - Pool-size 8192 => 128 Number
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
# 8192: 128
|
||||
# big: 8
|
||||
#
|
||||
pool:
|
||||
|
||||
#
|
||||
# time:
|
||||
#
|
||||
# o NF Instance Heartbeat (Default : 0)
|
||||
# NFs will not send heart-beat timer in NFProfile
|
||||
# NRF will send heart-beat timer in NFProfile
|
||||
#
|
||||
# o NF Instance Heartbeat (20 seconds)
|
||||
# NFs will send heart-beat timer (20 seconds) in NFProfile
|
||||
# NRF can change heart-beat timer in NFProfile
|
||||
#
|
||||
# nf_instance:
|
||||
# heartbeat: 20
|
||||
#
|
||||
# o NF Instance Heartbeat (Disabled)
|
||||
# nf_instance:
|
||||
# heartbeat: 0
|
||||
#
|
||||
# o NF Instance Heartbeat (10 seconds)
|
||||
# nf_instance:
|
||||
# heartbeat: 10
|
||||
#
|
||||
# o Message Wait Duration (Default : 10,000 ms = 10 seconds)
|
||||
#
|
||||
# o Message Wait Duration (3000 ms)
|
||||
# message:
|
||||
# duration: 3000
|
||||
time:
|
@@ -39,7 +39,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(https://<all address avaiable>:443)
|
||||
# sbi:
|
||||
# tls:
|
||||
# - tls:
|
||||
# key: pcf.key
|
||||
# pem: pcf.pem
|
||||
#
|
||||
@@ -53,7 +53,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://pcf.open5gs.org:80)
|
||||
# sbi:
|
||||
# name: pcf.open5gs.org
|
||||
# - name: pcf.open5gs.org
|
||||
#
|
||||
# o SBI Server(http://127.0.0.13:7777)
|
||||
# sbi:
|
||||
@@ -62,7 +62,18 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://<eth0 IP address>:80)
|
||||
# sbi:
|
||||
# dev: eth0
|
||||
# - dev: eth0
|
||||
#
|
||||
# o Provide custom SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-pcf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# - addr: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
pcf:
|
||||
sbi:
|
||||
@@ -117,12 +128,6 @@ nrf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -142,7 +147,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -150,7 +155,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -40,12 +40,6 @@ pcrf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
# o Legacy support for pre-release LTE 11 devices to do calling
|
||||
# - Replace IPv4/v6 local addr field in AAR Media-Subcomponent AVP by any
|
||||
# no_ipv4v6_local_addr_in_packet_filter: true
|
||||
@@ -69,7 +63,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -77,7 +71,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -45,6 +45,10 @@ logger:
|
||||
# - addr: 127.0.0.3
|
||||
# - addr: ::1
|
||||
#
|
||||
# o PFCP-U Server(127.0.0.1:2152, [::1]:2152)
|
||||
# pfcp:
|
||||
# name: localhost
|
||||
#
|
||||
sgwc:
|
||||
gtpc:
|
||||
- addr: 127.0.0.3
|
||||
@@ -63,15 +67,10 @@ sgwc:
|
||||
#
|
||||
# <SGWU_SELECTION_MODE - EPC only>
|
||||
#
|
||||
# o Round-Robin
|
||||
# (note that round robin can be disabled for a particular node
|
||||
# by setting flag 'rr' to 0)
|
||||
#
|
||||
# sgwu:
|
||||
# pfcp:
|
||||
# - addr: 127.0.0.6
|
||||
# - addr: 127.0.0.12
|
||||
# rr: 0
|
||||
# - addr: 127.0.0.18
|
||||
#
|
||||
# o SGWU selection by eNodeB TAC
|
||||
@@ -122,11 +121,8 @@ sgwu:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
# o Disable selection of SGW-U PFCP in Round-Robin manner
|
||||
# no_pfcp_rr_select: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
@@ -147,7 +143,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -155,7 +151,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -24,16 +24,23 @@ logger:
|
||||
#
|
||||
# sgwu:
|
||||
#
|
||||
# <GTP-U Server>
|
||||
# <PFCP Server>
|
||||
#
|
||||
# o GTP-U Server(all address available)
|
||||
# gtpu:
|
||||
# o PFCP Server(127.0.0.6:8805, ::1:8805)
|
||||
# pfcp:
|
||||
# - addr: 127.0.0.6
|
||||
# - addr: ::1
|
||||
#
|
||||
# o PFCP-U Server(127.0.0.1:2152, [::1]:2152)
|
||||
# pfcp:
|
||||
# - name: localhost
|
||||
#
|
||||
# <GTP-U Server>
|
||||
#
|
||||
# o GTP-U Server(127.0.0.6:2152, [::1]:2152)
|
||||
# gtpu:
|
||||
# - addr:
|
||||
# - 127.0.0.6
|
||||
# - ::1
|
||||
# - addr: 127.0.0.6
|
||||
# - addr: ::1
|
||||
#
|
||||
# o GTP-U Server(127.0.0.1:2152, [::1]:2152)
|
||||
# gtpu:
|
||||
@@ -57,44 +64,37 @@ logger:
|
||||
# o Provide custom SGW-U GTP-U address to be advertised inside S1AP messages
|
||||
# gtpu:
|
||||
# - addr: 10.4.128.21
|
||||
# advertise_addr: 172.24.15.30
|
||||
# advertise: 172.24.15.30
|
||||
#
|
||||
# gtpu:
|
||||
# - addr: 10.4.128.21
|
||||
# advertise_addr:
|
||||
# advertise:
|
||||
# - 127.0.0.1
|
||||
# - ::1
|
||||
#
|
||||
# gtpu:
|
||||
# - addr: 10.4.128.21
|
||||
# advertise_name: sgw1.epc.mnc001.mcc001.3gppnetwork.org
|
||||
# advertise: sgw1.epc.mnc001.mcc001.3gppnetwork.org
|
||||
#
|
||||
# gtpu:
|
||||
# - dev: ens3
|
||||
# advertise_name: sgw1.epc.mnc001.mcc001.3gppnetwork.org
|
||||
#
|
||||
# <PFCP Server>
|
||||
#
|
||||
# o PFCP Server(127.0.0.6:8805, ::1:8805)
|
||||
# pfcp:
|
||||
# - addr: 127.0.0.6
|
||||
# - addr: ::1
|
||||
# advertise: sgw1.epc.mnc001.mcc001.3gppnetwork.org
|
||||
#
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
#
|
||||
# sgwc:
|
||||
#
|
||||
# <PFCP Client>>
|
||||
#
|
||||
# o PFCP Client(127.0.0.6:8805)
|
||||
# o PFCP Client(127.0.0.3:8805)
|
||||
#
|
||||
# pfcp:
|
||||
# addr: 127.0.0.6
|
||||
# addr: 127.0.0.3
|
||||
#
|
||||
sgwc:
|
||||
|
||||
@@ -113,12 +113,6 @@ sgwc:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -138,7 +132,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -146,7 +140,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -37,7 +37,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(https://<all address avaiable>:443)
|
||||
# sbi:
|
||||
# tls:
|
||||
# - tls:
|
||||
# key: smf.key
|
||||
# pem: smf.pem
|
||||
#
|
||||
@@ -51,7 +51,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://smf.open5gs.org:80)
|
||||
# sbi:
|
||||
# name: smf.open5gs.org
|
||||
# - name: smf.open5gs.org
|
||||
#
|
||||
# o SBI Server(http://127.0.0.4:7777)
|
||||
# sbi:
|
||||
@@ -60,7 +60,18 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://<eth0 IP address>:80)
|
||||
# sbi:
|
||||
# dev: eth0
|
||||
# - dev: eth0
|
||||
#
|
||||
# o Provide custom SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-smf.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# - addr: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
# <PFCP Server>
|
||||
#
|
||||
@@ -69,6 +80,10 @@ logger:
|
||||
# - addr: 127.0.0.4
|
||||
# - addr: ::1
|
||||
#
|
||||
# o PFCP-U Server(127.0.0.1:2152, [::1]:2152)
|
||||
# pfcp:
|
||||
# name: localhost
|
||||
#
|
||||
# <GTP-C Server>
|
||||
#
|
||||
# o GTP-C Server(127.0.0.4:2123, [fe80::3%@loopback_devname@]:2123)
|
||||
@@ -83,74 +98,78 @@ logger:
|
||||
# - addr: 127.0.0.4
|
||||
# - addr: fe80::3%@loopback_devname@
|
||||
#
|
||||
# <PDN Configuration with UE Pool>
|
||||
# <GTP-U Server>>
|
||||
#
|
||||
# o GTP-U Server(127.0.0.4:2152, [::1]:2152)
|
||||
# gtpu:
|
||||
# - addr: 127.0.0.4
|
||||
# - addr: ::1
|
||||
#
|
||||
# o GTP-U Server(127.0.0.1:2152, [::1]:2152)
|
||||
# gtpu:
|
||||
# name: localhost
|
||||
#
|
||||
# <Subnet for UE Pool>
|
||||
#
|
||||
# o IPv4 Pool
|
||||
# pdn:
|
||||
# subnet:
|
||||
# addr: 10.45.0.1/16
|
||||
#
|
||||
# o IPv4/IPv6 Pool
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
#
|
||||
#
|
||||
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, cafe:2::1/64
|
||||
# pdn:
|
||||
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:230:babe::1/48
|
||||
#
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# dnn: internet
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
# dnn: internet
|
||||
# - addr: 10.46.0.1/16
|
||||
# dnn: ims
|
||||
# - addr: cafe:2::1/64
|
||||
# - addr: 2001:230:babe::1/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Multiple Devices (default: ogstun)
|
||||
# pdn:
|
||||
# - addr: 10.45.0.1/16
|
||||
# dnn: internet
|
||||
# - addr: cafe:1::1/64
|
||||
# dnn: internet
|
||||
# dev: ogstun2
|
||||
# - addr: 10.46.0.1/16
|
||||
# dnn: ims
|
||||
# dev: ogstun3
|
||||
# - addr: cafe:2::1/64
|
||||
# dnn: ims
|
||||
# dev: ogstun3
|
||||
#
|
||||
# o Pool Range Sample
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range: 10.45.0.100-10.45.0.200
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range:
|
||||
# - 10.45.0.5-10.45.0.50
|
||||
# - 10.45.0.100-
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range:
|
||||
# - -10.45.0.200
|
||||
# - 10.45.0.210-10.45.0.220
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-10.45.1.200
|
||||
# - addr: cafe::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
# range:
|
||||
# - cafe::a0-cafe:b0
|
||||
# - cafe::c0-cafe:d0
|
||||
# - 2001:230:cafe:a0::0-2001:230:cafe:b0::0
|
||||
# - 2001:230:cafe:c0::0-2001:230:cafe:d0::0
|
||||
#
|
||||
# <Domain Name Server>
|
||||
#
|
||||
# o Primary/Secondary can be configured. Others are ignored.
|
||||
#
|
||||
# dns:
|
||||
# - 8.8.8.8
|
||||
# - 8.8.4.4
|
||||
# - 2001:4860:4860::8888
|
||||
# - 2001:4860:4860::8844
|
||||
#
|
||||
# <MTU Size>
|
||||
#
|
||||
# o Provisioning a limit on the size of the packets sent by the MS
|
||||
@@ -167,19 +186,152 @@ logger:
|
||||
# - 127.0.0.1
|
||||
# - ::1
|
||||
#
|
||||
# <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:90170 TAC:1]
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# tac: 1
|
||||
#
|
||||
# o If any of conditions below are met:
|
||||
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:90170 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:90170 TAC:10-20,30-40]
|
||||
#
|
||||
# info:
|
||||
# - s_nssai:
|
||||
# - sst: 1
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# range:
|
||||
# - 1-9
|
||||
# - s_nssai:
|
||||
# - sst: 2
|
||||
# sd: 000080
|
||||
# dnn:
|
||||
# - internet
|
||||
# - ims
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# range:
|
||||
# - 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: 901
|
||||
# mnc: 70
|
||||
# tac: [1, 2, 3]
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# tac: 4
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# tac:
|
||||
# - 5
|
||||
# - 6
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# range:
|
||||
# - 100-200
|
||||
# - 300-400
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# range:
|
||||
# - 500-600
|
||||
# - 700-800
|
||||
# - 900-1000
|
||||
# - s_nssai:
|
||||
# - sst: 4
|
||||
# dnn:
|
||||
# - internet
|
||||
# tai:
|
||||
# - plmn_id:
|
||||
# mcc: 901
|
||||
# mnc: 70
|
||||
# tac: 99
|
||||
#
|
||||
|
||||
smf:
|
||||
sbi:
|
||||
- addr: 127.0.0.4
|
||||
port: 7777
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pdn:
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -231,10 +383,10 @@ nrf:
|
||||
# pfcp:
|
||||
# addr: 127.0.0.7
|
||||
#
|
||||
# <UPF_SELECTION_MODE - EPC only>
|
||||
# <UPF Selection>
|
||||
#
|
||||
# o Round-Robin
|
||||
# (note that round robin can be disabled for a particular node
|
||||
# o Round-Robin
|
||||
# (note that round robin can be disabled for a particular node
|
||||
# by setting flag 'rr' to 0)
|
||||
#
|
||||
# upf:
|
||||
@@ -244,8 +396,8 @@ nrf:
|
||||
# rr: 0
|
||||
# - addr: 127.0.0.19
|
||||
#
|
||||
# o UPF selection by eNodeB TAC
|
||||
# (either single TAC or multiple TACs, DECIMAL representation)
|
||||
# o UPF selection by eNodeB TAC
|
||||
# (either single TAC or multiple TACs, DECIMAL representation)
|
||||
#
|
||||
# upf:
|
||||
# pfcp:
|
||||
@@ -254,7 +406,7 @@ nrf:
|
||||
# - addr: 127.0.0.12
|
||||
# tac: [3,5,8]
|
||||
#
|
||||
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
|
||||
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
|
||||
#
|
||||
# upf:
|
||||
# pfcp:
|
||||
@@ -263,8 +415,8 @@ nrf:
|
||||
# - addr: 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)
|
||||
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
|
||||
# (either single enb_id or multiple enb_ids, HEX representation)
|
||||
#
|
||||
# upf:
|
||||
# pfcp:
|
||||
@@ -292,11 +444,8 @@ upf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
# o Disable selection of UPF PFCP in Round-Robin manner
|
||||
# no_pfcp_rr_select: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
@@ -317,7 +466,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -325,7 +474,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -37,7 +37,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(https://<all address avaiable>:443)
|
||||
# sbi:
|
||||
# tls:
|
||||
# - tls:
|
||||
# key: udm.key
|
||||
# pem: udm.pem
|
||||
#
|
||||
@@ -51,7 +51,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://udm.open5gs.org:80)
|
||||
# sbi:
|
||||
# name: udm.open5gs.org
|
||||
# - name: udm.open5gs.org
|
||||
#
|
||||
# o SBI Server(http://127.0.0.12:7777)
|
||||
# sbi:
|
||||
@@ -60,7 +60,18 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://<eth0 IP address>:80)
|
||||
# sbi:
|
||||
# dev: eth0
|
||||
# - dev: eth0
|
||||
#
|
||||
# o Provide custom SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-udm.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# - addr: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
udm:
|
||||
sbi:
|
||||
@@ -115,12 +126,6 @@ nrf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -140,7 +145,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -148,7 +153,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -39,7 +39,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(https://<all address avaiable>:443)
|
||||
# sbi:
|
||||
# tls:
|
||||
# - tls:
|
||||
# key: udr.key
|
||||
# pem: udr.pem
|
||||
#
|
||||
@@ -53,7 +53,7 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://udr.open5gs.org:80)
|
||||
# sbi:
|
||||
# name: udr.open5gs.org
|
||||
# - name: udr.open5gs.org
|
||||
#
|
||||
# o SBI Server(http://127.0.0.20:7777)
|
||||
# sbi:
|
||||
@@ -62,7 +62,18 @@ logger:
|
||||
#
|
||||
# o SBI Server(http://<eth0 IP address>:80)
|
||||
# sbi:
|
||||
# dev: eth0
|
||||
# - dev: eth0
|
||||
#
|
||||
# o Provide custom SBI address to be advertised to NRF
|
||||
# sbi:
|
||||
# - dev: eth0
|
||||
# advertise: open5gs-udr.svc.local
|
||||
#
|
||||
# sbi:
|
||||
# - addr: localhost
|
||||
# advertise:
|
||||
# - 127.0.0.99
|
||||
# - ::1
|
||||
#
|
||||
udr:
|
||||
sbi:
|
||||
@@ -117,12 +128,6 @@ nrf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -142,7 +147,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -150,7 +155,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -31,16 +31,16 @@ logger:
|
||||
# - addr: 127.0.0.7
|
||||
# - addr: ::1
|
||||
#
|
||||
# <GTP-U Server>>
|
||||
# o PFCP-U Server(127.0.0.1:2152, [::1]:2152)
|
||||
# pfcp:
|
||||
# name: localhost
|
||||
#
|
||||
# o GTP-U Server(all address available)
|
||||
# gtpu:
|
||||
# <GTP-U Server>>
|
||||
#
|
||||
# o GTP-U Server(127.0.0.7:2152, [::1]:2152)
|
||||
# gtpu:
|
||||
# - addr:
|
||||
# - 127.0.0.7
|
||||
# - ::1
|
||||
# - addr: 127.0.0.7
|
||||
# - addr: ::1
|
||||
#
|
||||
# o GTP-U Server(127.0.0.1:2152, [::1]:2152)
|
||||
# gtpu:
|
||||
@@ -64,121 +64,96 @@ logger:
|
||||
# o Provide custom UPF GTP-U address to be advertised inside NGAP messages
|
||||
# gtpu:
|
||||
# - addr: 10.4.128.21
|
||||
# advertise_addr: 172.24.15.30
|
||||
# advertise: 172.24.15.30
|
||||
#
|
||||
# gtpu:
|
||||
# - addr: 10.4.128.21
|
||||
# advertise_addr:
|
||||
# advertise:
|
||||
# - 127.0.0.1
|
||||
# - ::1
|
||||
#
|
||||
# gtpu:
|
||||
# - addr: 10.4.128.21
|
||||
# advertise_name: upf1.5gc.mnc001.mcc001.3gppnetwork.org
|
||||
# advertise: upf1.5gc.mnc001.mcc001.3gppnetwork.org
|
||||
#
|
||||
# gtpu:
|
||||
# - dev: ens3
|
||||
# advertise_name: upf1.5gc.mnc001.mcc001.3gppnetwork.org
|
||||
# advertise: upf1.5gc.mnc001.mcc001.3gppnetwork.org
|
||||
#
|
||||
# <Subnet for UE network>
|
||||
#
|
||||
# <PDN Configuration with UE Pool>
|
||||
# Note that you need to setup your UE network using TUN device.
|
||||
# (ogstun, ogstun2, ogstunX, ..)
|
||||
#
|
||||
# o IPv4 Pool
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# addr: 10.45.0.1/16
|
||||
#
|
||||
# o IPv4/IPv6 Pool
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev ogstun
|
||||
# $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
#
|
||||
#
|
||||
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, cafe:2::1/64
|
||||
# All other APNs use 10.45.0.1/16, cafe:1::1/64
|
||||
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:230:babe::1/48
|
||||
# All other APNs use 10.45.0.1/16, 2001:230:cafe::1/48
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add 10.46.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev ogstun
|
||||
# $ sudo ip addr add cafe:2::1/64 dev ogstun
|
||||
# $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
# $ sudo ip addr add 2001:230:babe::1/48 dev ogstun
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# dnn: internet
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
# dnn: internet
|
||||
# - addr: 10.46.0.1/16
|
||||
# dnn: ims
|
||||
# - addr: cafe:2::1/64
|
||||
# - addr: 2001:230:babe::1/48
|
||||
# dnn: ims
|
||||
#
|
||||
# o Multiple Devices (default: ogstun)
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev ogstun2
|
||||
# $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun2
|
||||
# $ sudo ip addr add 10.46.0.1/16 dev ogstun3
|
||||
# $ sudo ip addr add cafe:2::1/64 dev ogstun3
|
||||
# $ sudo ip addr add 2001:230:babe::1/48 dev ogstun3
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# dnn: internet
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
# dnn: internet
|
||||
# dev: ogstun2
|
||||
# - addr: 10.46.0.1/16
|
||||
# dnn: ims
|
||||
# dev: ogstun3
|
||||
# - addr: cafe:2::1/64
|
||||
# - addr: 2001:230:babe::1/48
|
||||
# dnn: ims
|
||||
# dev: ogstun3
|
||||
#
|
||||
# o Pool Range Sample
|
||||
# pdn:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range: 10.45.0.100-10.45.0.200
|
||||
#
|
||||
# pdn:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range:
|
||||
# - 10.45.0.5-10.45.0.50
|
||||
# - 10.45.0.100-
|
||||
#
|
||||
# pdn:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range:
|
||||
# - -10.45.0.200
|
||||
# - 10.45.0.210-10.45.0.220
|
||||
#
|
||||
# pdn:
|
||||
# - addr: 10.45.0.1/16
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-10.45.1.200
|
||||
# - addr: cafe::1/64
|
||||
# range:
|
||||
# - cafe::a0-cafe:b0
|
||||
# - cafe::c0-cafe:d0
|
||||
#
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
#
|
||||
# smf:
|
||||
#
|
||||
# <PFCP Client>>
|
||||
#
|
||||
# o PFCP Client(127.0.0.3:8805)
|
||||
# o PFCP Client(127.0.0.4:8805)
|
||||
#
|
||||
# pfcp:
|
||||
# addr: 127.0.0.3
|
||||
# addr: 127.0.0.4
|
||||
#
|
||||
smf:
|
||||
|
||||
@@ -197,13 +172,6 @@ smf:
|
||||
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
|
||||
# prefer_ipv4: true
|
||||
#
|
||||
# o Enable Multicast traffic to the UE
|
||||
# multicast: true
|
||||
#
|
||||
# o Disable Stateless Address Autoconfiguration for IPv6
|
||||
# no_slaac: true
|
||||
#
|
||||
#
|
||||
parameter:
|
||||
|
||||
#
|
||||
@@ -223,7 +191,7 @@ max:
|
||||
# To connect more UEs, you need to increase the size further.
|
||||
#
|
||||
# - Pool-size 128 => 65536 Number
|
||||
# - Pool-size 256 => 8192 Number
|
||||
# - Pool-size 256 => 16384 Number
|
||||
# - Pool-size 512 => 4096 Number
|
||||
# - Pool-size 1024 => 1024 Number
|
||||
# - Pool-size 2048 => 512 Number
|
||||
@@ -231,7 +199,7 @@ max:
|
||||
# - Pool-size 1024*1024 => 8 Number
|
||||
#
|
||||
# 128: 65536
|
||||
# 256: 8192
|
||||
# 256: 16384
|
||||
# 512: 4096
|
||||
# 1024: 1024
|
||||
# 2048: 512
|
||||
|
@@ -10,6 +10,7 @@ parameter:
|
||||
# no_ausf: true
|
||||
# no_udm: true
|
||||
# no_pcf: true
|
||||
# no_nssf: true
|
||||
# no_udr: true
|
||||
# no_mme: true
|
||||
# no_sgwc: true
|
||||
@@ -67,14 +68,17 @@ smf:
|
||||
sbi:
|
||||
- addr: 127.0.0.4
|
||||
port: 7777
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
pdn:
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -129,19 +133,19 @@ amf:
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
hss:
|
||||
freeDiameter:
|
||||
@@ -200,6 +204,15 @@ pcf:
|
||||
- addr: 127.0.0.13
|
||||
port: 7777
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
udr:
|
||||
sbi:
|
||||
- addr: 127.0.0.20
|
||||
|
@@ -10,6 +10,7 @@ parameter:
|
||||
# no_ausf: true
|
||||
# no_udm: true
|
||||
# no_pcf: true
|
||||
# no_nssf: true
|
||||
# no_udr: true
|
||||
# no_mme: true
|
||||
# no_sgwc: true
|
||||
@@ -67,14 +68,17 @@ smf:
|
||||
sbi:
|
||||
- addr: 127.0.0.4
|
||||
port: 7777
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
pdn:
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -105,25 +109,26 @@ amf:
|
||||
- addr: 127.0.0.5
|
||||
guami:
|
||||
- plmn_id:
|
||||
mcc: 208
|
||||
mnc: 93
|
||||
mcc: 901
|
||||
mnc: 70
|
||||
amf_id:
|
||||
region: 202
|
||||
set: 1016
|
||||
tai:
|
||||
- plmn_id:
|
||||
mcc: 208
|
||||
mnc: 93
|
||||
mcc: 901
|
||||
mnc: 70
|
||||
tac: 1
|
||||
plmn_support:
|
||||
- plmn_id:
|
||||
mcc: 208
|
||||
mnc: 93
|
||||
mcc: 901
|
||||
mnc: 70
|
||||
s_nssai:
|
||||
- sst: 1
|
||||
sd: 010203
|
||||
- sst: 1
|
||||
sd: 112233
|
||||
sd: 000080
|
||||
- sst: 1
|
||||
sd: 009000
|
||||
security:
|
||||
integrity_order : [ NIA2, NIA1 ]
|
||||
ciphering_order : [ NEA0, NEA1, NEA2 ]
|
||||
@@ -132,19 +137,19 @@ amf:
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
hss:
|
||||
freeDiameter:
|
||||
@@ -203,6 +208,26 @@ pcf:
|
||||
- addr: 127.0.0.13
|
||||
port: 7777
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
- addr: 127.0.0.19
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
sd: 000080
|
||||
- addr: 127.0.0.10
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
sd: 009000
|
||||
|
||||
udr:
|
||||
sbi:
|
||||
- addr: 127.0.0.20
|
@@ -10,6 +10,7 @@ parameter:
|
||||
# no_ausf: true
|
||||
# no_udm: true
|
||||
# no_pcf: true
|
||||
# no_nssf: true
|
||||
# no_udr: true
|
||||
# no_mme: true
|
||||
# no_sgwc: true
|
||||
@@ -67,14 +68,17 @@ smf:
|
||||
# sbi:
|
||||
# - addr: 127.0.0.4
|
||||
# port: 7777
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
pdn:
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -129,19 +133,19 @@ amf:
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
hss:
|
||||
freeDiameter:
|
||||
@@ -200,6 +204,16 @@ pcf:
|
||||
- addr: 127.0.0.13
|
||||
port: 7777
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
|
||||
udr:
|
||||
sbi:
|
||||
- addr: 127.0.0.20
|
||||
|
@@ -3,4 +3,4 @@ Name=ogstun
|
||||
|
||||
[Network]
|
||||
Address=10.45.0.1/16
|
||||
Address=cafe::1/64
|
||||
Address=2001:230:cafe::1/48
|
||||
|
@@ -28,6 +28,7 @@ systemd_conf_in = '''
|
||||
open5gs-ausfd.service
|
||||
open5gs-udmd.service
|
||||
open5gs-pcfd.service
|
||||
open5gs-nssfd.service
|
||||
open5gs-udrd.service
|
||||
'''.split()
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=Open5GS NRF Daemon
|
||||
After=networking.service
|
||||
Wants=mongodb.service mongod.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
18
configs/systemd/open5gs-nssfd.service.in
Normal file
18
configs/systemd/open5gs-nssfd.service.in
Normal file
@@ -0,0 +1,18 @@
|
||||
[Unit]
|
||||
Description=Open5GS NSSF Daemon
|
||||
After=networking.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
||||
User=open5gs
|
||||
Group=open5gs
|
||||
|
||||
Restart=always
|
||||
ExecStart=@bindir@/open5gs-nssfd -c @sysconfdir@/open5gs/nssf.yaml
|
||||
RestartSec=2
|
||||
RestartPreventExitStatus=1
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=Open5GS PCF Daemon
|
||||
After=networking.service
|
||||
Wants=mongodb.service mongod.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=Open5GS UDR Daemon
|
||||
After=networking.service
|
||||
Wants=mongodb.service mongod.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
@@ -10,6 +10,7 @@ parameter:
|
||||
# no_ausf: true
|
||||
# no_udm: true
|
||||
# no_pcf: true
|
||||
# no_nssf: true
|
||||
# no_udr: true
|
||||
# no_mme: true
|
||||
# no_sgwc: true
|
||||
@@ -67,14 +68,17 @@ smf:
|
||||
# sbi:
|
||||
# - addr: 127.0.0.4
|
||||
# port: 7777
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
pdn:
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -132,19 +136,19 @@ amf:
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
hss:
|
||||
freeDiameter:
|
||||
@@ -163,6 +167,8 @@ hss:
|
||||
connect:
|
||||
- identity: mme.localdomain
|
||||
addr: 127.0.0.2
|
||||
- identity: ims.localdomain
|
||||
addr: 127.0.0.1
|
||||
pcrf:
|
||||
freeDiameter:
|
||||
identity: pcrf.localdomain
|
||||
@@ -180,7 +186,7 @@ pcrf:
|
||||
connect:
|
||||
- identity: smf.localdomain
|
||||
addr: 127.0.0.4
|
||||
- identity: pcscf.localdomain
|
||||
- identity: ims.localdomain
|
||||
addr: 127.0.0.1
|
||||
|
||||
#nrf:
|
||||
@@ -205,6 +211,16 @@ pcf:
|
||||
- addr: 127.0.0.13
|
||||
port: 7777
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
|
||||
udr:
|
||||
sbi:
|
||||
- addr: 127.0.0.20
|
||||
|
@@ -10,6 +10,7 @@ parameter:
|
||||
# no_ausf: true
|
||||
# no_udm: true
|
||||
# no_pcf: true
|
||||
# no_nssf: true
|
||||
# no_udr: true
|
||||
# no_mme: true
|
||||
# no_sgwc: true
|
||||
@@ -67,14 +68,17 @@ smf:
|
||||
sbi:
|
||||
- addr: 127.0.0.4
|
||||
port: 7777
|
||||
pfcp:
|
||||
- addr: 127.0.0.4
|
||||
gtpc:
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pfcp:
|
||||
gtpu:
|
||||
- addr: 127.0.0.4
|
||||
pdn:
|
||||
- addr: ::1
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
@@ -132,19 +136,19 @@ amf:
|
||||
amf_name: open5gs-amf0
|
||||
|
||||
sgwu:
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
pfcp:
|
||||
- addr: 127.0.0.6
|
||||
gtpu:
|
||||
- addr: 127.0.0.6
|
||||
|
||||
upf:
|
||||
pfcp:
|
||||
- addr: 127.0.0.7
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
hss:
|
||||
freeDiameter:
|
||||
@@ -205,6 +209,16 @@ pcf:
|
||||
- addr: 127.0.0.13
|
||||
port: 7777
|
||||
|
||||
nssf:
|
||||
sbi:
|
||||
- addr: 127.0.0.14
|
||||
port: 7777
|
||||
nsi:
|
||||
- addr: ::1
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
|
||||
udr:
|
||||
sbi:
|
||||
- addr: 127.0.0.20
|
||||
|
198
debian/changelog
vendored
198
debian/changelog
vendored
@@ -1,3 +1,201 @@
|
||||
open5gs (2.2.8) unstable; urgency=medium
|
||||
|
||||
* Security Protection
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 09 May 2021 11:23:01 +0900
|
||||
|
||||
open5gs (2.2.8~bionic) bionic; urgency=medium
|
||||
|
||||
* Security Protection
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 09 May 2021 11:22:02 +0900
|
||||
|
||||
open5gs (2.2.8~focal) focal; urgency=medium
|
||||
|
||||
* Security Protection
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sun, 09 May 2021 11:20:13 +0900
|
||||
|
||||
open5gs (2.2.7) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 30 Apr 2021 14:20:47 +0900
|
||||
|
||||
open5gs (2.2.7~focal3) focal; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 30 Apr 2021 14:19:39 +0900
|
||||
|
||||
open5gs (2.2.7~bionic3) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 30 Apr 2021 14:17:11 +0900
|
||||
|
||||
open5gs (2.2.6) unstable; urgency=medium
|
||||
|
||||
* HSS Cx Added
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 09 Apr 2021 21:10:43 +0900
|
||||
|
||||
open5gs (2.2.6~bionic) bionic; urgency=medium
|
||||
|
||||
* HSS Cx Added
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 09 Apr 2021 21:09:14 +0900
|
||||
|
||||
open5gs (2.2.6~focal) focal; urgency=medium
|
||||
|
||||
* HSS Cx Added
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 09 Apr 2021 21:07:19 +0900
|
||||
|
||||
open5gs (2.2.5) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 03 Apr 2021 14:16:23 +0900
|
||||
|
||||
open5gs (2.2.5~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 03 Apr 2021 14:14:53 +0900
|
||||
|
||||
open5gs (2.2.5~focal) focal; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Sat, 03 Apr 2021 14:13:33 +0900
|
||||
|
||||
open5gs (2.2.4) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 01 Apr 2021 16:45:22 +0900
|
||||
|
||||
open5gs (2.2.4~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 01 Apr 2021 16:43:54 +0900
|
||||
|
||||
open5gs (2.2.4~focal) focal; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 01 Apr 2021 16:42:31 +0900
|
||||
|
||||
open5gs (2.2.3) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 29 Mar 2021 22:44:54 +0900
|
||||
|
||||
open5gs (2.2.3~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 29 Mar 2021 22:43:54 +0900
|
||||
|
||||
open5gs (2.2.3~focal) focal; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 29 Mar 2021 22:42:53 +0900
|
||||
|
||||
open5gs (2.2.2) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 19 Mar 2021 21:48:13 +0900
|
||||
|
||||
open5gs (2.2.2~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 19 Mar 2021 21:47:12 +0900
|
||||
|
||||
open5gs (2.2.2~focal) focal; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Fri, 19 Mar 2021 21:45:47 +0900
|
||||
|
||||
open5gs (2.2.1) unstable; urgency=medium
|
||||
|
||||
* UE IPv6 Support
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 15 Mar 2021 10:06:16 +0900
|
||||
|
||||
open5gs (2.2.1~bionic) bionic; urgency=medium
|
||||
|
||||
* UE IPv6 Support
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 15 Mar 2021 10:05:00 +0900
|
||||
|
||||
open5gs (2.2.1~focal) focal; urgency=medium
|
||||
|
||||
* UE IPv6 Support
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 15 Mar 2021 10:03:39 +0900
|
||||
|
||||
open5gs (2.2.0) unstable; urgency=medium
|
||||
|
||||
* DB Schame Changes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 08 Mar 2021 21:31:35 +0900
|
||||
|
||||
open5gs (2.2.0~bionic) bionic; urgency=medium
|
||||
|
||||
* DB Schame Changes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 08 Mar 2021 21:30:31 +0900
|
||||
|
||||
open5gs (2.2.0~focal) focal; urgency=medium
|
||||
|
||||
* DB Schame Changes
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 08 Mar 2021 21:29:03 +0900
|
||||
|
||||
open5gs (2.1.7) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 08 Feb 2021 22:27:23 -0500
|
||||
|
||||
open5gs (2.1.7~bionic) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 08 Feb 2021 22:26:08 -0500
|
||||
|
||||
open5gs (2.1.7~focal) focal; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Mon, 08 Feb 2021 22:23:55 -0500
|
||||
|
||||
open5gs (2.1.6) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 04 Feb 2021 09:18:13 -0500
|
||||
|
||||
open5gs (2.1.6~bionic1) bionic; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 04 Feb 2021 09:17:04 -0500
|
||||
|
||||
open5gs (2.1.6~focal1) focal; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
||||
-- Sukchan Lee <acetcom@gmail.com> Thu, 04 Feb 2021 09:14:17 -0500
|
||||
|
||||
open5gs (2.1.5) unstable; urgency=medium
|
||||
|
||||
* Bug Fixed
|
||||
|
13
debian/control
vendored
13
debian/control
vendored
@@ -199,6 +199,18 @@ Description: PCF (Policy Control Function)
|
||||
.
|
||||
This package provides the PCF (Policy Control Function)
|
||||
|
||||
Package: open5gs-nssf
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
open5gs-common (= ${binary:Version})
|
||||
Description: NSSF (Network Slice Selection Function)
|
||||
Open5GS is a C-language implementation of 5G Core and EPC
|
||||
Packet Core, i.e. the core network of an NR/LTE network (Release-16)
|
||||
.
|
||||
This package provides the NSSF (Network Slice Selection Function)
|
||||
|
||||
Package: open5gs-udr
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
@@ -228,6 +240,7 @@ Depends: ${misc:Depends},
|
||||
open5gs-ausf (= ${binary:Version}),
|
||||
open5gs-udm (= ${binary:Version}),
|
||||
open5gs-pcf (= ${binary:Version}),
|
||||
open5gs-nssf (= ${binary:Version}),
|
||||
open5gs-udr (= ${binary:Version})
|
||||
Description: 5G Core and EPC (metapackage)
|
||||
Open5GS is a C-language implementation of 5G Core and EPC
|
||||
|
2
debian/open5gs-common.install
vendored
2
debian/open5gs-common.install
vendored
@@ -3,4 +3,4 @@ usr/lib/*/libfd*.so*
|
||||
usr/lib/*/freeDiameter/*.fdx
|
||||
configs/freeDiameter/cacert.pem /etc/freeDiameter
|
||||
configs/logrotate/open5gs /etc/logrotate.d
|
||||
misc/db/open5gs-dbctl /usr/bin
|
||||
#misc/db/open5gs-dbctl /usr/bin
|
||||
|
3
debian/open5gs-nssf.install
vendored
Normal file
3
debian/open5gs-nssf.install
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
usr/bin/open5gs-nssfd
|
||||
configs/open5gs/nssf.yaml etc/open5gs
|
||||
configs/systemd/open5gs-nssfd.service lib/systemd/system
|
@@ -1,76 +1,112 @@
|
||||
Docker running example
|
||||
===========================================
|
||||
* Build Image
|
||||
$ docker-compose build
|
||||
|
||||
`$ docker-compose build`
|
||||
|
||||
* Development
|
||||
$ docker-compose run dev
|
||||
|
||||
`$ docker-compose run dev`
|
||||
|
||||
* Runtime
|
||||
```
|
||||
$ docker-compose \
|
||||
-f docker-compose.yml -f docker-compose.run.yml run run
|
||||
```
|
||||
|
||||
* Test
|
||||
```
|
||||
$ docker-compose \
|
||||
-f docker-compose.yml -f docker-compose.test.yml run test
|
||||
```
|
||||
|
||||
* Test(ubuntu:artful)
|
||||
```
|
||||
$ TAG=eoan docker-compose build
|
||||
$ TAG=eoan docker-compose \
|
||||
-f docker-compose.yml -f docker-compose.test.yml run test
|
||||
```
|
||||
|
||||
* Development(fedora:latest)
|
||||
```
|
||||
$ DIST=fedora docker-compose build
|
||||
$ DIST=fedora docker-compose run dev
|
||||
```
|
||||
|
||||
* Runtime(debian:jessie)
|
||||
```
|
||||
$ DIST=debian TAG=stretch docker-compose build
|
||||
$ DIST=debian TAG=stretch docker-compose
|
||||
-f docker-compose.yml -f docker-compose.run.yml run run
|
||||
```
|
||||
|
||||
* All Test with All Environment
|
||||
$ ./check.sh
|
||||
|
||||
`$ ./check.sh`
|
||||
|
||||
* Run WebUI
|
||||
$ docker-compose up -d
|
||||
|
||||
`$ docker-compose up -d`
|
||||
|
||||
For OpenSUSE Build Service Release
|
||||
===========================================
|
||||
|
||||
* Build Package
|
||||
|
||||
```
|
||||
$ ./build-aux/git-version-gen . > .tarball-version
|
||||
$ dpkg-source -b .
|
||||
$ rm -f .tarball-version
|
||||
```
|
||||
|
||||
* Get Release Key
|
||||
|
||||
```
|
||||
$ wget http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/Release.key
|
||||
$ sudo apt-key add Release.key
|
||||
```
|
||||
|
||||
* Setup Repository
|
||||
```
|
||||
$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/ ./' > /etc/apt/sources.list.d/open5gs-latest.list"
|
||||
$ sudo apt-get update
|
||||
```
|
||||
|
||||
For Launchpad Release
|
||||
===========================================
|
||||
|
||||
* Run Docker
|
||||
|
||||
```
|
||||
$ docker-compose run dev
|
||||
```
|
||||
|
||||
* Setup Debian Environment
|
||||
|
||||
```
|
||||
export DEBFULLNAME='Sukchan Lee'
|
||||
export DEBEMAIL='acetcom@gmail.com'
|
||||
```
|
||||
|
||||
* Transfer GPG key
|
||||
|
||||
```
|
||||
$ gpg --export-secret-keys --armor --output private.asc
|
||||
$ gpg --import private.asc
|
||||
$ gpg --export > public.asc
|
||||
$ gpg --import public.asc
|
||||
```
|
||||
|
||||
* Version Change
|
||||
|
||||
```
|
||||
$ vi meson.build
|
||||
$ ./misc/git-version-gen . > .tarball-version 2>/dev/null
|
||||
```
|
||||
|
||||
* Upload OpenBuildService
|
||||
|
||||
```
|
||||
$ dch -i
|
||||
$ meson subprojects download freeDiameter
|
||||
$ debuild -S -uc -us -d
|
||||
@@ -78,16 +114,25 @@ export DEBEMAIL='acetcom@gmail.com'
|
||||
$ cd home\:acetcom\:open5gs/latest/
|
||||
$ cp ~/git/open5gs_1.0.0.* .
|
||||
$ osc ci -m "Update it"
|
||||
```
|
||||
|
||||
* Upload LaunchPad
|
||||
|
||||
```
|
||||
$ dch -i
|
||||
$ meson subprojects download freeDiameter
|
||||
$ debuild -S -d
|
||||
$ dput ppa:open5gs/latest *.source.changes
|
||||
```
|
||||
|
||||
* Tagging
|
||||
|
||||
```
|
||||
$ git tag v1.x.x -a
|
||||
```
|
||||
|
||||
* Build package
|
||||
|
||||
```
|
||||
$ dpkg-buildpackage -d
|
||||
|
||||
```
|
||||
|
26
docker/alpine/latest/base/Dockerfile
Normal file
26
docker/alpine/latest/base/Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
||||
ARG dist=alpine
|
||||
ARG tag=latest
|
||||
FROM ${dist}:${tag}
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
RUN apk update && \
|
||||
apk add --no-cache \
|
||||
alpine-sdk \
|
||||
bison \
|
||||
flex \
|
||||
git \
|
||||
meson \
|
||||
bash \
|
||||
linux-headers \
|
||||
bsd-compat-headers \
|
||||
yaml-dev \
|
||||
lksctp-tools-dev \
|
||||
gnutls-dev \
|
||||
libgcrypt-dev \
|
||||
libidn-dev \
|
||||
mongo-c-driver-dev \
|
||||
libmicrohttpd-dev \
|
||||
curl-dev \
|
||||
nghttp2-dev \
|
||||
iproute2
|
20
docker/alpine/latest/dev/Dockerfile
Normal file
20
docker/alpine/latest/dev/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
ARG dist=alpine
|
||||
ARG tag=latest
|
||||
ARG username=acetcom
|
||||
FROM ${username}/${dist}-${tag}-open5gs-base
|
||||
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
COPY setup.sh /root
|
||||
|
||||
RUN apk update && \
|
||||
apk add --no-cache \
|
||||
vim \
|
||||
sudo
|
||||
|
||||
ARG username=acetcom
|
||||
RUN adduser -u 1000 acetcom -D && \
|
||||
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
|
||||
chmod 0440 /etc/sudoers.d/${username}
|
||||
|
||||
WORKDIR /home/${username}
|
10
docker/alpine/latest/dev/setup.sh
Executable file
10
docker/alpine/latest/dev/setup.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! grep "ogstun" /proc/net/dev > /dev/null; then
|
||||
ip tuntap add name ogstun mode tun
|
||||
fi
|
||||
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
|
||||
ip addr add 10.45.0.1/16 dev ogstun
|
||||
ip addr del 2001:230:cafe::1/48 dev ogstun 2> /dev/null
|
||||
ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
ip link set ogstun up
|
@@ -10,10 +10,10 @@ COPY setup.sh /root
|
||||
|
||||
ARG USER=open5gs
|
||||
ARG REPO=open5gs
|
||||
ARG BRANCH=master
|
||||
RUN git clone https://github.com/$USER/$REPO
|
||||
ARG BRANCH=main
|
||||
RUN git clone https://github.com/$USER/$REPO
|
||||
ADD https://api.github.com/repos/$USER/$REPO/git/refs/heads/$BRANCH /root/open5gs-ver.json
|
||||
|
||||
RUN cd $REPO && \
|
||||
git fetch && git checkout -f -B $BRANCH origin/$BRANCH && \
|
||||
RUN cd $REPO && \
|
||||
git fetch && git checkout -f -B $BRANCH origin/$BRANCH && \
|
||||
meson build && ninja -C build install
|
||||
|
@@ -5,6 +5,6 @@ if ! grep "ogstun" /proc/net/dev > /dev/null; then
|
||||
fi
|
||||
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
|
||||
ip addr add 10.45.0.1/16 dev ogstun
|
||||
ip addr del cafe::1/64 dev ogstun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev ogstun
|
||||
ip addr del 2001:230:cafe::1/48 dev ogstun 2> /dev/null
|
||||
ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
ip link set ogstun up
|
||||
|
@@ -5,6 +5,6 @@ if ! grep "ogstun" /proc/net/dev > /dev/null; then
|
||||
fi
|
||||
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
|
||||
ip addr add 10.45.0.1/16 dev ogstun
|
||||
ip addr del cafe::1/64 dev ogstun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev ogstun
|
||||
ip addr del 2001:230:cafe::1/48 dev ogstun 2> /dev/null
|
||||
ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
ip link set ogstun up
|
||||
|
@@ -5,6 +5,6 @@ if ! grep "ogstun" /proc/net/dev > /dev/null; then
|
||||
fi
|
||||
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
|
||||
ip addr add 10.45.0.1/16 dev ogstun
|
||||
ip addr del cafe::1/64 dev ogstun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev ogstun
|
||||
ip addr del 2001:230:cafe::1/48 dev ogstun 2> /dev/null
|
||||
ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
ip link set ogstun up
|
||||
|
@@ -15,4 +15,4 @@ services:
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=0
|
||||
hostname: open5gs-test
|
||||
command: /bin/bash -c "/root/setup.sh; cd open5gs && ninja -C build test"
|
||||
command: /bin/bash -c "/root/setup.sh; cd open5gs/build && meson test -v"
|
||||
|
@@ -5,6 +5,6 @@ if ! grep "ogstun" /proc/net/dev > /dev/null; then
|
||||
fi
|
||||
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
|
||||
ip addr add 10.45.0.1/16 dev ogstun
|
||||
ip addr del cafe::1/64 dev ogstun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev ogstun
|
||||
ip addr del 2001:230:cafe::1/48 dev ogstun 2> /dev/null
|
||||
ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
ip link set ogstun up
|
||||
|
@@ -23,12 +23,12 @@ RUN apt-get update && \
|
||||
net-tools && \
|
||||
apt-get clean
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y software-properties-common && \
|
||||
sudo add-apt-repository ppa:wireshark-dev/stable -y && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y wireshark
|
||||
#RUN apt-get update && \
|
||||
# apt-get install -y software-properties-common && \
|
||||
# sudo add-apt-repository ppa:wireshark-dev/stable -y && \
|
||||
# apt-get update && \
|
||||
# DEBIAN_FRONTEND=noninteractive \
|
||||
# apt-get install -y wireshark
|
||||
|
||||
COPY setup.sh /root
|
||||
|
||||
|
@@ -5,6 +5,6 @@ if ! grep "ogstun" /proc/net/dev > /dev/null; then
|
||||
fi
|
||||
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
|
||||
ip addr add 10.45.0.1/16 dev ogstun
|
||||
ip addr del cafe::1/64 dev ogstun 2> /dev/null
|
||||
ip addr add cafe::1/64 dev ogstun
|
||||
ip addr del 2001:230:cafe::1/48 dev ogstun 2> /dev/null
|
||||
ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
ip link set ogstun up
|
||||
|
@@ -3,7 +3,7 @@ FROM node:carbon
|
||||
MAINTAINER Sukchan Lee <acetcom@gmail.com>
|
||||
|
||||
ARG PACKAGE=open5gs
|
||||
ARG VERSION=1.0.0
|
||||
ARG VERSION=2.2.6
|
||||
|
||||
RUN set -e; \
|
||||
cd /usr/src; \
|
||||
|
@@ -9,7 +9,8 @@ source "https://rubygems.org"
|
||||
# This will help ensure the proper Jekyll version is running.
|
||||
# Happy Jekylling!
|
||||
|
||||
gem "jekyll", "~> 3.8.5"
|
||||
gem "jekyll", "~> 4.2.0"
|
||||
gem "webrick", "~> 1.7.0"
|
||||
gem "minima", "~> 2.0"
|
||||
gem 'jekyll-seo-tag'
|
||||
|
||||
|
@@ -1,77 +1,83 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.6.0)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.1.5)
|
||||
em-websocket (0.5.1)
|
||||
concurrent-ruby (1.1.8)
|
||||
em-websocket (0.5.2)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.10.0)
|
||||
ffi (1.15.0)
|
||||
forwardable-extended (2.6.0)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (0.9.5)
|
||||
i18n (1.8.9)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (3.8.5)
|
||||
jekyll (4.2.0)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 0.7)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
i18n (~> 1.0)
|
||||
jekyll-sass-converter (~> 2.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 1.14)
|
||||
kramdown (~> 2.3)
|
||||
kramdown-parser-gfm (~> 1.0)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3.3)
|
||||
mercenary (~> 0.4.0)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 1.7, < 4)
|
||||
rouge (~> 3.0)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-feed (0.12.1)
|
||||
terminal-table (~> 2.0)
|
||||
jekyll-feed (0.15.1)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-redirect-from (0.15.0)
|
||||
jekyll-redirect-from (0.16.0)
|
||||
jekyll (>= 3.3, < 5.0)
|
||||
jekyll-sass-converter (1.5.2)
|
||||
sass (~> 3.4)
|
||||
jekyll-seo-tag (2.6.0)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-sass-converter (2.1.0)
|
||||
sassc (> 2.0.1, < 3.0)
|
||||
jekyll-seo-tag (2.7.1)
|
||||
jekyll (>= 3.8, < 5.0)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
kramdown (1.17.0)
|
||||
kramdown (2.3.1)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.3)
|
||||
listen (3.1.5)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
mercenary (0.3.6)
|
||||
minima (2.5.0)
|
||||
jekyll (~> 3.5)
|
||||
listen (3.5.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
minima (2.5.1)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (3.0.3)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.10.0)
|
||||
public_suffix (4.0.6)
|
||||
rb-fsevent (0.10.4)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rouge (3.3.0)
|
||||
ruby_dep (1.5.0)
|
||||
rexml (3.2.4)
|
||||
rouge (3.26.0)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sassc (2.4.0)
|
||||
ffi (~> 1.9)
|
||||
terminal-table (2.0.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
unicode-display_width (1.7.0)
|
||||
webrick (1.7.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
jekyll (~> 3.8.5)
|
||||
jekyll (~> 4.2.0)
|
||||
jekyll-feed (~> 0.6)
|
||||
jekyll-redirect-from
|
||||
jekyll-seo-tag
|
||||
minima (~> 2.0)
|
||||
webrick (~> 1.7.0)
|
||||
|
||||
BUNDLED WITH
|
||||
2.0.1
|
||||
2.2.15
|
||||
|
@@ -34,7 +34,7 @@ The Open5GS 4G/ 5G NSA Core contains the following components:
|
||||
|
||||
The core has two main planes: the control plane and the user plane. These are physically separated in Open5GS as CUPS (control/ user plane separation) is implemented.
|
||||
|
||||
The MME is the main **control plane** hub of the core. It primarily manages sessions, mobilty, paging and bearers. It links to the HSS, which generates SIM authentication vectors and holds the subscriber profile; and also to the SGWC and PGWC/SMF, which are the control planes of the gateway servers. All the eNBs in the mobile network (4G basestations) connect to the MME. The final element of the control plane is the PCRF, which sits in-between the PGWC/SMF and the HSS, and handles charging and enforces subscriber policies.
|
||||
The MME is the main **control plane** hub of the core. It primarily manages sessions, mobility, paging and bearers. It links to the HSS, which generates SIM authentication vectors and holds the subscriber profile; and also to the SGWC and PGWC/SMF, which are the control planes of the gateway servers. All the eNBs in the mobile network (4G basestations) connect to the MME. The final element of the control plane is the PCRF, which sits in-between the PGWC/SMF and the HSS, and handles charging and enforces subscriber policies.
|
||||
|
||||
The **user plane** carries user data packets between the eNB/ NSA gNB (5G NSA basestations) and the external WAN. The two user plane core components are the SGWU and PGWU/UPF. Each of these connect back to their control plane counterparts. eNBs/ NSA gNBs connect to the SGWU, which connects to the PGWU/UPF, and on to the WAN. *By having the control and user planes physically separated like this, it means you can deploy multiple user plane servers in the field (eg somewhere with a high speed Internet connection), whilst keeping control functionality centralised. This enables support of MEC use cases, for example.*
|
||||
|
||||
@@ -52,8 +52,9 @@ The Open5GS 5G SA Core contains the following functions:
|
||||
* UDM - Unified Data Management
|
||||
* UDR - Unified Data Repository
|
||||
* PCF - Policy and Charging Function
|
||||
* NSSF - Network Slice Selection Function
|
||||
|
||||
The 5G SA core works in a different way to the 4G core - it uses a **Service Based Architecture** (SBI). **Control plane** functions are configured to register with the NRF, and the NRF then helps them discover the other core functions. Running through the other functions: The AMF handles connection and mobility management; a subset of what the 4G MME is tasked with. gNBs (5G basestations) connect to the AMF. The UDM, AUSF and UDR carry out similar operations as the 4G HSS, generating SIM authentication vectors and holding the subscriber profile. Session management is all handled by the SMF (previously the responsibility of the 4G MME/ SGWC/ PGWC). Finally there is the PCF, used for charging and enforcing subscriber policies.
|
||||
The 5G SA core works in a different way to the 4G core - it uses a **Service Based Architecture** (SBI). **Control plane** functions are configured to register with the NRF, and the NRF then helps them discover the other core functions. Running through the other functions: The AMF handles connection and mobility management; a subset of what the 4G MME is tasked with. gNBs (5G basestations) connect to the AMF. The UDM, AUSF and UDR carry out similar operations as the 4G HSS, generating SIM authentication vectors and holding the subscriber profile. Session management is all handled by the SMF (previously the responsibility of the 4G MME/ SGWC/ PGWC). The NSSF provides a way to select the network slice. Finally there is the PCF, used for charging and enforcing subscriber policies.
|
||||
|
||||
The 5G SA core **user plane** is much simpler, as it only contains a single function. The UPF carries user data packets between the gNB and the external WAN. It connects back to the SMF too.
|
||||
|
||||
@@ -153,7 +154,7 @@ https://download.opensuse.org/repositories/network:/osmocom:/nightly/xUbuntu_20.
|
||||
## 3. Install the WebUI of Open5GS
|
||||
---
|
||||
|
||||
The WebUI allows you to interactively edit subscriber data. While it is not essential to use this, it makes things easier when you are just starting out on your Open5GS adventure. (A [command line tool](https://github.com/{{ site.github_username }}/open5gs/blob/master/misc/db/open5gs-dbctl) is available for advanced users).
|
||||
The WebUI allows you to interactively edit subscriber data. While it is not essential to use this, it makes things easier when you are just starting out on your Open5GS adventure. (A [command line tool](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/db/open5gs-dbctl) is available for advanced users).
|
||||
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to install the WebUI of Open5GS
|
||||
@@ -163,7 +164,7 @@ The WebUI allows you to interactively edit subscriber data. While it is not esse
|
||||
```bash
|
||||
$ sudo apt update
|
||||
$ sudo apt install curl
|
||||
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||
$ curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
|
||||
$ sudo apt install nodejs
|
||||
```
|
||||
|
||||
@@ -176,7 +177,7 @@ The WebUI allows you to interactively edit subscriber data. While it is not esse
|
||||
You can now install WebUI of Open5GS.
|
||||
|
||||
```bash
|
||||
$ curl -sL {{ site.url }}{{ site.baseurl }}/assets/webui/install | sudo -E bash -
|
||||
$ curl -fsSL {{ site.url }}{{ site.baseurl }}/assets/webui/install | sudo -E bash -
|
||||
```
|
||||
|
||||
## 4. Configure Open5GS
|
||||
@@ -191,13 +192,14 @@ MongoDB = 127.0.0.1 (subscriber data) - http://localhost:3000
|
||||
|
||||
MME-s1ap = 127.0.0.2 :36412 for S1-MME
|
||||
MME-gtpc = 127.0.0.2 :2123 for S11
|
||||
MME-frDi = 127.0.0.2 :3868 for S6a auth
|
||||
MME-frDi = 127.0.0.2 :3868 for S6a
|
||||
|
||||
SGWC-gtpc = 127.0.0.3 :2123 for S11
|
||||
SGWC-pfcp = 127.0.0.3 :8805 for Sxa
|
||||
|
||||
SMF-gtpc = 127.0.0.4 :2123 for S5/8c, N11
|
||||
SMF-pfcp = 127.0.0.4 :8805 for N4
|
||||
SMF-gtpc = 127.0.0.4 :2123 for S5c, N11
|
||||
SMF-gtpu = 127.0.0.4 :2152 for N4u (Sxu)
|
||||
SMF-pfcp = 127.0.0.4 :8805 for N4 (Sxb)
|
||||
SMF-frDi = 127.0.0.4 :3868 for Gx auth
|
||||
SMF-sbi = 127.0.0.4 :7777 for 5G SBI (N7,N10,N11)
|
||||
|
||||
@@ -205,19 +207,20 @@ AMF-ngap = 127.0.0.5 :38412 for N2
|
||||
AMF-sbi = 127.0.0.5 :7777 for 5G SBI (N8,N12,N11)
|
||||
|
||||
SGWU-pfcp = 127.0.0.6 :8805 for Sxa
|
||||
SGWU-gtpu = 127.0.0.6 :2152 for S1-U, S5/8u
|
||||
SGWU-gtpu = 127.0.0.6 :2152 for S1-U, S5u
|
||||
|
||||
UPF-pfcp = 127.0.0.7 :8805 for N4
|
||||
UPF-gtpu = 127.0.0.7 :2152 for S5/8u, N3
|
||||
UPF-pfcp = 127.0.0.7 :8805 for N4 (Sxb)
|
||||
UPF-gtpu = 127.0.0.7 :2152 for S5u, N3, N4u (Sxu)
|
||||
|
||||
HSS-frDi = 127.0.0.8 :3868 for S6a auth
|
||||
HSS-frDi = 127.0.0.8 :3868 for S6a, Cx
|
||||
|
||||
PCRF-frDi = 127.0.0.9 :3868 for Gx auth
|
||||
PCRF-frDi = 127.0.0.9 :3868 for Gx
|
||||
|
||||
NRF-sbi = 127.0.0.10:7777 for 5G SBI
|
||||
AUSF-sbi = 127.0.0.11:7777 for 5G SBI
|
||||
UDM-sbi = 127.0.0.12:7777 for 5G SBI
|
||||
PCF-sbi = 127.0.0.13:7777 for 5G SBI
|
||||
NSSF-sbi = 127.0.0.14:7777 for 5G SBI
|
||||
UDR-sbi = 127.0.0.20:7777 for 5G SBI
|
||||
```
|
||||
|
||||
@@ -228,7 +231,7 @@ You will need to modify your 4G MME config to support your PLMN and TAC. The int
|
||||
If you are aiming to connect an external eNB to your core, you will also need to change the S1AP bind address of the MME **and** the GTP-U bind address of the SGWU. If you are running an eNB stack locally, you will not need to make these changes.
|
||||
|
||||
|
||||
Modify [/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
Modify [/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
@@ -260,7 +263,7 @@ $ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
|
||||
```
|
||||
|
||||
Modify [/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/sgwu.yaml.in) to set the GTP-U IP address.
|
||||
Modify [/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/sgwu.yaml.in) to set the GTP-U IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/sgwu.yaml.old /etc/open5gs/sgwu.yaml
|
||||
|
||||
@@ -287,7 +290,7 @@ You will need to modify your 5G AMF config to support your PLMN and TAC. The int
|
||||
If you are aiming to connect an external gNB to your core, you will also need to change the NGAP bind address of the AMF **and** the GTPU bind address of the UPF. If you are running an gNB stack locally, you will not need to make these changes.
|
||||
|
||||
|
||||
Modify [/etc/open5gs/amf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/amf.yaml.in) to set the NGAP IP address, PLMN ID, TAC and NSSAI.
|
||||
Modify [/etc/open5gs/amf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/amf.yaml.in) to set the NGAP IP address, PLMN ID, TAC and NSSAI.
|
||||
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/amf.yaml.old /etc/open5gs/amf.yaml
|
||||
@@ -316,7 +319,7 @@ amf:
|
||||
+ mcc: 001 # set your PLMN-MCC
|
||||
+ mnc: 01 # set your PLMN-MNC
|
||||
+ tac: 2 # should match the TAC used by your gNB
|
||||
plmn:
|
||||
plmn_support:
|
||||
- plmn_id:
|
||||
- mcc: 901
|
||||
- mnc: 70
|
||||
@@ -328,7 +331,7 @@ amf:
|
||||
|
||||
```
|
||||
|
||||
Modify [/etc/open5gs/upf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/upf.yaml.in) to set the GTP-U address.
|
||||
Modify [/etc/open5gs/upf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/upf.yaml.in) to set the GTP-U address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/upf.yaml.old /etc/open5gs/upf.yaml
|
||||
|
||||
@@ -338,9 +341,9 @@ upf:
|
||||
gtpu:
|
||||
- - addr: 127.0.0.7
|
||||
+ - addr: 10.11.0.7 # for external gNB - a local address that can be reached by the gNB
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
```
|
||||
|
||||
@@ -414,11 +417,13 @@ target prot opt source destination
|
||||
|
||||
To enable forwarding and add the NAT rule, enter
|
||||
```bash
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
### Enable IPv4/IPv6 Forwarding
|
||||
$ sudo sysctl -w net.ipv4.ip_forward=1
|
||||
$ sudo sysctl -w net.ipv6.conf.all.forwarding=1
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
|
||||
$ sudo ip6tables -t nat -A POSTROUTING -s 2001:230:cafe::/48 ! -o ogstun -j MASQUERADE
|
||||
```
|
||||
|
||||
|
||||
@@ -461,6 +466,7 @@ $ sudo systemctl stop open5gs-nrfd
|
||||
$ sudo systemctl stop open5gs-ausfd
|
||||
$ sudo systemctl stop open5gs-udmd
|
||||
$ sudo systemctl stop open5gs-pcfd
|
||||
$ sudo systemctl stop open5gs-nssfd
|
||||
$ sudo systemctl stop open5gs-udrd
|
||||
$ sudo systemctl stop open5gs-webui
|
||||
```
|
||||
@@ -478,6 +484,7 @@ $ sudo systemctl restart open5gs-nrfd
|
||||
$ sudo systemctl restart open5gs-ausfd
|
||||
$ sudo systemctl restart open5gs-udmd
|
||||
$ sudo systemctl restart open5gs-pcfd
|
||||
$ sudo systemctl restart open5gs-nssfd
|
||||
$ sudo systemctl restart open5gs-udrd
|
||||
$ sudo systemctl restart open5gs-webui
|
||||
```
|
||||
@@ -509,6 +516,6 @@ $ sudo rm -Rf /var/log/open5gs
|
||||
The WebUI of Open5GS can be removed as follows:
|
||||
|
||||
```bash
|
||||
curl -sL {{ site.url }}{{ site.baseurl }}/assets/webui/uninstall | sudo -E bash -
|
||||
curl -fsSL {{ site.url }}{{ site.baseurl }}/assets/webui/uninstall | sudo -E bash -
|
||||
```
|
||||
|
||||
|
@@ -30,11 +30,11 @@ Create the TUN device with the interface name `ogstun`.
|
||||
```bash
|
||||
$ sudo ip tuntap add name ogstun mode tun
|
||||
$ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
$ sudo ip addr add cafe::1/64 dev ogstun
|
||||
$ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
$ sudo ip link set ogstun up
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/master/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./misc/netconf.sh`
|
||||
{: .notice--info}
|
||||
|
||||
@@ -93,7 +93,7 @@ $ cd ../
|
||||
|
||||
##### 5G Core
|
||||
|
||||
Modify [install/etc/open5gs/amf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/amf.yaml.in) to set the NGAP IP address, PLMN ID, TAC and NSSAI.
|
||||
Modify [install/etc/open5gs/amf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/amf.yaml.in) to set the NGAP IP address, PLMN ID, TAC and NSSAI.
|
||||
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/amf.yaml.old /etc/open5gs/amf.yaml
|
||||
@@ -122,7 +122,7 @@ $ diff -u /etc/open5gs/amf.yaml.old /etc/open5gs/amf.yaml
|
||||
+ mcc: 001
|
||||
+ mnc: 01
|
||||
+ tac: 2
|
||||
plmn:
|
||||
plmn_support:
|
||||
- plmn_id:
|
||||
- mcc: 901
|
||||
- mnc: 70
|
||||
@@ -133,7 +133,7 @@ $ diff -u /etc/open5gs/amf.yaml.old /etc/open5gs/amf.yaml
|
||||
security:
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/upf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/upf.yaml.in) to set the GTP-U and PFCP IP address.
|
||||
Modify [install/etc/open5gs/upf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/upf.yaml.in) to set the GTP-U and PFCP IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/upf.yaml.old /etc/open5gs/upf.yaml
|
||||
--- upf.yaml 2020-09-05 20:52:28.652234967 -0400
|
||||
@@ -146,13 +146,13 @@ $ diff -u /etc/open5gs/upf.yaml.old /etc/open5gs/upf.yaml
|
||||
- - 127.0.0.7
|
||||
- - ::1
|
||||
+ - addr: 10.11.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
```
|
||||
##### 4G EPC
|
||||
|
||||
Modify [install/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
Modify [install/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
@@ -187,7 +187,7 @@ $ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
ciphering_order : [ EEA0, EEA1, EEA2 ]
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/sgwu.yaml.in) to set the GTP-U IP address.
|
||||
Modify [install/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/sgwu.yaml.in) to set the GTP-U IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/sgwu.yaml.old /etc/open5gs/sgwu.yaml
|
||||
--- sgwu.yaml 2020-09-05 20:50:39.393022566 -0400
|
||||
@@ -211,7 +211,7 @@ If you modify the config files while Open5GS daemons are running, please restart
|
||||
|
||||
```bash
|
||||
$ cd install/bin/
|
||||
$ ./install/bin/open5gs-mmed
|
||||
$ ./install/bin/open5gs-mmed
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:53:47.328: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/mme.yaml' (../src/main.c:54)
|
||||
@@ -221,7 +221,7 @@ Open5GS daemon v2.1.0
|
||||
08/21 22:53:47.365: [gtp] INFO: gtp_connect() [127.0.0.3]:2123 (../lib/gtp/path.c:59)
|
||||
08/21 22:53:47.366: [mme] INFO: s1ap_server() [127.0.0.2]:36412 (../src/mme/s1ap-sctp.c:57)
|
||||
|
||||
$ ./install/bin/open5gs-sgwcd
|
||||
$ ./install/bin/open5gs-sgwcd
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:54:43.059: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/sgwc.yaml' (../src/main.c:54)
|
||||
@@ -253,7 +253,7 @@ Open5GS daemon v2.1.0
|
||||
08/21 22:55:14.040: [sbi] INFO: sbi_server() [127.0.0.5]:7777 (../lib/sbi/server.c:298)
|
||||
08/21 22:55:14.040: [amf] INFO: ngap_server() [127.0.0.5]:38412 (../src/amf/ngap-sctp.c:56)
|
||||
|
||||
$ ./install/bin/open5gs-sgwud
|
||||
$ ./install/bin/open5gs-sgwud
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:54:10.357: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/sgwu.yaml' (../src/main.c:54)
|
||||
@@ -262,7 +262,7 @@ Open5GS daemon v2.1.0
|
||||
08/21 22:54:10.360: [app] INFO: SGW-U initialize...done (../src/sgwu/app.c:31)
|
||||
08/21 22:54:10.361: [gtp] INFO: gtp_server() [127.0.0.6]:2152 (../lib/gtp/path.c:32)
|
||||
|
||||
$ ./install/bin/open5gs-upfd
|
||||
$ ./install/bin/open5gs-upfd
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:54:21.596: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/upf.yaml' (../src/main.c:54)
|
||||
@@ -280,7 +280,7 @@ Open5GS daemon v2.1.0
|
||||
08/21 22:57:17.451: [dbi] INFO: MongoDB URI: 'mongodb://localhost/open5gs' (../lib/dbi/ogs-mongoc.c:99)
|
||||
08/21 22:57:17.519: [app] INFO: HSS initialize...done (../src/hss/app-init.c:31)
|
||||
|
||||
$ ./install/bin/open5gs-pcrfd
|
||||
$ ./install/bin/open5gs-pcrfd
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:57:45.894: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/pcrf.yaml' (../src/main.c:54)
|
||||
@@ -305,7 +305,7 @@ Open5GS daemon v2.1.0
|
||||
08/21 22:55:41.900: [app] INFO: AUSF initialize...done (../src/ausf/app.c:31)
|
||||
08/21 22:55:41.900: [sbi] INFO: sbi_server() [127.0.0.11]:7777 (../lib/sbi/server.c:298)
|
||||
|
||||
$ ./install/bin/open5gs-udmd
|
||||
$ ./install/bin/open5gs-udmd
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:56:02.154: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/udm.yaml' (../src/main.c:54)
|
||||
@@ -313,7 +313,7 @@ Open5GS daemon v2.1.0
|
||||
08/21 22:56:02.155: [app] INFO: UDM initialize...done (../src/udm/app.c:31)
|
||||
08/21 22:56:02.155: [sbi] INFO: sbi_server() [127.0.0.12]:7777 (../lib/sbi/server.c:298)
|
||||
|
||||
$ ./install/bin/open5gs-pcfd
|
||||
$ ./install/bin/open5gs-pcfd
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:56:02.154: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/pcf.yaml' (../src/main.c:54)
|
||||
@@ -321,7 +321,15 @@ Open5GS daemon v2.1.0
|
||||
08/21 22:56:02.155: [app] INFO: PCF initialize...done (../src/pcf/app.c:31)
|
||||
08/21 22:56:02.155: [sbi] INFO: sbi_server() [127.0.0.12]:7777 (../lib/sbi/server.c:298)
|
||||
|
||||
$ ./install/bin/open5gs-udrd
|
||||
$ ./install/bin/open5gs-nssfd
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:56:02.154: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/nssfd.yaml' (../src/main.c:54)
|
||||
08/21 22:56:02.154: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/nssfd.log' (../src/main.c:57)
|
||||
08/21 22:56:02.155: [app] INFO: NSSF initialize...done (../src/nssfd/app.c:31)
|
||||
08/21 22:56:02.155: [sbi] INFO: sbi_server() [127.0.0.12]:7777 (../lib/sbi/server.c:298)
|
||||
|
||||
$ ./install/bin/open5gs-udrd
|
||||
Open5GS daemon v2.1.0
|
||||
|
||||
08/21 22:56:15.810: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/udr.yaml' (../src/main.c:54)
|
||||
@@ -367,7 +375,7 @@ $ ./build/tests/app/app ## Both 5G Core and EPC with ./build/configs/sample.yaml
|
||||
|
||||
```bash
|
||||
$ sudo apt install curl
|
||||
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||
$ curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
|
||||
$ sudo apt install nodejs
|
||||
```
|
||||
|
||||
@@ -375,7 +383,7 @@ Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
$ cd webui
|
||||
$ npm install
|
||||
$ npm ci --no-optional
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
@@ -444,11 +452,13 @@ target prot opt source destination
|
||||
Chain POSTROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
### Enable IPv4/IPv6 Forwarding
|
||||
$ sudo sysctl -w net.ipv4.ip_forward=1
|
||||
$ sudo sysctl -w net.ipv6.conf.all.forwarding=1
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
|
||||
$ sudo ip6tables -t nat -A POSTROUTING -s 2001:230:cafe::/48 ! -o ogstun -j MASQUERADE
|
||||
```
|
||||
|
||||
**Note:** The above assumes you do not have any existing rules in the filter and nat tables. If a program such as docker has already set up rules, you may need to add the Open5GS related rules differently.
|
||||
@@ -460,6 +470,42 @@ $ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
|
||||
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
|
||||
- You can view the log at `$INSTALL_PREFIX/var/log/open5gs/*.log`.
|
||||
|
||||
### Re-install with updated source code
|
||||
|
||||
You need to update the Open5GS source and all subprojects.
|
||||
|
||||
```bash
|
||||
$ cd open5gs
|
||||
$ git pull ## Update the Open5GS source
|
||||
$ meson subprojects update ## Update all subprojects
|
||||
```
|
||||
|
||||
To compile with meson:
|
||||
|
||||
```bash
|
||||
$ ninja -C build
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
```bash
|
||||
$ cd build
|
||||
$ meson test -v
|
||||
```
|
||||
|
||||
Install Open5GS without making any configuration file changes.
|
||||
```bash
|
||||
$ ninja install
|
||||
```
|
||||
|
||||
**Note:** The configuration files in the installation directory are not changed. If you want to initialize the configuration files as well, you need to delete the existing installation directory and install it.
|
||||
{: .notice--danger}
|
||||
|
||||
Install Open5GS and initialize configuration files.
|
||||
```bash
|
||||
$ rm -Rf ../install
|
||||
$ ninja install
|
||||
```
|
||||
|
||||
### Troubleshooting
|
||||
---
|
||||
|
||||
|
@@ -33,7 +33,8 @@ PCRF-frDi = 127.0.0.9 :3868 for Gx auth
|
||||
NRF-sbi = 127.0.0.10:7777 for 5G SBI
|
||||
AUSF-sbi = 127.0.0.11:7777 for 5G SBI
|
||||
UDM-sbi = 127.0.0.12:7777 for 5G SBI
|
||||
PCF-sbi = 127.0.0.12:7777 for 5G SBI
|
||||
PCF-sbi = 127.0.0.13:7777 for 5G SBI
|
||||
NSSF-sbi = 127.0.0.14:7777 for 5G SBI
|
||||
UDR-sbi = 127.0.0.20:7777 for 5G SBI
|
||||
```
|
||||
|
||||
@@ -50,7 +51,7 @@ You can refer to the network settings at
|
||||
[{{ site.url }}{{ site.baseurl }}/assets/Open5GS-Diagram.pdf]({{ site.url }}{{ site.baseurl }}/assets/Open5GS-Diagram.pdf) provided by [@kbarlee](https://github.com/kbarlee) in issue [#528](https://github.com/{{ site.github_username }}/open5gs/issues/528)
|
||||
{: .notice--danger}
|
||||
|
||||
Modify [install/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
Modify [install/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
@@ -85,7 +86,7 @@ $ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
ciphering_order : [ EEA0, EEA1, EEA2 ]
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/sgwc.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/sgwc.yaml.in) to set the PFCP IP address.
|
||||
Modify [install/etc/open5gs/sgwc.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/sgwc.yaml.in) to set the PFCP IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/sgwc.yaml.old /etc/open5gs/sgwc.yaml
|
||||
@@ -49,7 +49,7 @@
|
||||
@@ -108,7 +109,7 @@ $ diff -u /etc/open5gs/sgwc.yaml.old /etc/open5gs/sgwc.yaml
|
||||
# parameter:
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/smf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/smf.yaml.in) to set the PFCP IP address.
|
||||
Modify [install/etc/open5gs/smf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/smf.yaml.in) to set the PFCP IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/smf.yaml.old /etc/open5gs/smf.yaml
|
||||
--- smf.yaml.old 2020-08-22 11:37:39.990816411 -0400
|
||||
@@ -120,9 +121,9 @@ $ diff -u /etc/open5gs/smf.yaml.old /etc/open5gs/smf.yaml
|
||||
- - addr: 127.0.0.4
|
||||
- - addr: ::1
|
||||
+ - addr: 10.10.0.4
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
@@ -282,7 +281,7 @@
|
||||
#
|
||||
upf:
|
||||
@@ -135,7 +136,7 @@ $ diff -u /etc/open5gs/smf.yaml.old /etc/open5gs/smf.yaml
|
||||
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/amf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/amf.yaml.in) to set the NGAP IP address, PLMN ID, TAC and NSSAI.
|
||||
Modify [install/etc/open5gs/amf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/amf.yaml.in) to set the NGAP IP address, PLMN ID, TAC and NSSAI.
|
||||
|
||||
```diff
|
||||
diff -u /etc/open5gs/amf.yaml.old /etc/open5gs/amf.yaml
|
||||
@@ -164,7 +165,7 @@ diff -u /etc/open5gs/amf.yaml.old /etc/open5gs/amf.yaml
|
||||
+ mcc: 901
|
||||
+ mnc: 70
|
||||
+ tac: 1
|
||||
plmn:
|
||||
plmn_support:
|
||||
- plmn_id:
|
||||
- mcc: 001
|
||||
- mnc: 01
|
||||
@@ -178,7 +179,7 @@ diff -u /etc/open5gs/amf.yaml.old /etc/open5gs/amf.yaml
|
||||
ciphering_order : [ NEA0, NEA1, NEA2 ]
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/sgwu.yaml.in) to set the GTP-U and PFCP IP address.
|
||||
Modify [install/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/sgwu.yaml.in) to set the GTP-U and PFCP IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/sgwu.yaml.old /etc/open5gs/sgwu.yaml
|
||||
--- sgwu.yaml.old 2020-08-22 11:41:09.214670723 -0400
|
||||
@@ -197,7 +198,7 @@ $ diff -u /etc/open5gs/sgwu.yaml.old /etc/open5gs/sgwu.yaml
|
||||
# sgwc:
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/upf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/upf.yaml.in) to set the GTP-U and PFCP IP address.
|
||||
Modify [install/etc/open5gs/upf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/upf.yaml.in) to set the GTP-U and PFCP IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/upf.yaml.old /etc/open5gs/upf.yaml
|
||||
--- upf.yaml.old 2020-08-22 11:42:57.781750067 -0400
|
||||
@@ -213,9 +214,9 @@ $ diff -u /etc/open5gs/upf.yaml.old /etc/open5gs/upf.yaml
|
||||
- - 127.0.0.7
|
||||
- - ::1
|
||||
+ - addr: 10.11.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
```
|
||||
|
||||
After changing conf files, please restart Open5GS daemons.
|
||||
|
@@ -5,46 +5,42 @@ head_inline: "<style> .blue { color: blue; } .bold { font-weight: bold; } </styl
|
||||
|
||||
This page lists Radio hardware that has been tested by members of the Open5GS community,
|
||||
|
||||
Listed eNodeBs have at a minimum connected to Open5GS. This does not mean all functionality (dedicated bearers, GBRs, etc) has been tested.
|
||||
|
||||
If you have tested radio hardware from a vendor not listed with Open5GS, please add it to this page [by creating a PR on GitHub.](https://github.com/open5gs/open5gs)
|
||||
|
||||
### Commercial Macro BTS
|
||||
---
|
||||
|
||||
* Huawei BTS 3900 (S/W version V100R011C10SPC230)
|
||||
|
||||
### Small Cells
|
||||
### Commercial 5G
|
||||
---
|
||||
* Airspan 5G OpenRange vCU + Airspan 5G OpenRange vDU + Airspan 5G OpenRANGE06 AirVelocity 2700 RU
|
||||
* NOKIA AEQE (SW: 5G20A)
|
||||
* NOKIA AEQD (SW: 5G20A)
|
||||
|
||||
### Commercial 4G
|
||||
---
|
||||
|
||||
* Accelleran E1010 (LTE TDD B42)
|
||||
* AirHarmony 4000
|
||||
* AirHarmony 4200
|
||||
* AirHarmony 4400
|
||||
* Airspan AirSpeed 1030
|
||||
* Airspan AirHarmony 1000
|
||||
* Baicells Neutrino
|
||||
* Baicells Nova 243
|
||||
* Baicells Nova 246
|
||||
* Baicells Nova 436Q
|
||||
* Baicells Nova 227 (EBS & CBRS)
|
||||
* Baicells Nova 233
|
||||
* Airspan AirSpeed 1030
|
||||
* Airspan AirHarmony 1000
|
||||
* AirHarmony 4000
|
||||
* AirHarmony 4200
|
||||
* AirHarmony 4400
|
||||
* Gemtek WLTGFC-101 (S/W version 2.1.1746.1116)
|
||||
* Huawei BTS 3900 (S/W version V100R011C10SPC230)
|
||||
* NOKIA FW2PC BC28 Flexi Zone G2 Outdoor Micro FDD LTE 700 MHz High Power
|
||||
* NOKIA FWH1 B38 Flexi Zone Outdoor Micro TD LTE 2600 MHz
|
||||
|
||||
### OpenRAN Hardware
|
||||
---
|
||||
|
||||
|
||||
### 4G/5G Software Stacks + SDRs
|
||||
---
|
||||
|
||||
* [srsLTE / srsENB](https://github.com/srsLTE/srsLTE) + LimeSDR, USRP, BladeRF x40 (BladeRF Not stable)
|
||||
* [Amarisoft](https://www.amarisoft.com/) + LimeSDR, USRP, Amarisoft PCI Express Card
|
||||
* [srsLTE / srsENB](https://github.com/srsLTE/srsLTE) + LimeSDR, USRP, BladeRF x40 (BladeRF Not stable)
|
||||
|
||||
### Misc Radio Hardware
|
||||
---
|
||||
* [OpenAirInterface v1.0.3](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/v1.0.3) 4G RAN Simulator
|
||||
* [OsmoBTS](https://osmocom.org/projects/osmobts/wiki) controlled ip.access NanoBTS (Used for CSFB with Osmocom)
|
||||
* [UERANSIM](https://github.com/aligungr/UERANSIM) 5G RAN Simulator
|
||||
* [OpenAirInterface v1.0.3](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/v1.0.3) 4G RAN Simulator
|
||||
|
||||
|
@@ -67,7 +67,7 @@ $ sudo sh -c "cat << EOF > /etc/systemd/network/99-open5gs.network
|
||||
Name=ogstun
|
||||
[Network]
|
||||
Address=10.45.0.1/16
|
||||
Address=cafe::1/64
|
||||
Address=2001:230:cafe::1/48
|
||||
EOF"
|
||||
```
|
||||
|
||||
@@ -84,7 +84,7 @@ Make sure it is set up properly.
|
||||
$ ifconfig ogstun
|
||||
ogstun: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
|
||||
inet 10.45.0.1 netmask 255.255.0.0 destination 10.45.0.1
|
||||
inet6 cafe::1 prefixlen 64 scopeid 0x0<global>
|
||||
inet6 2001:230:cafe::1 prefixlen 64 scopeid 0x0<global>
|
||||
inet6 fe80::e86e:86d8:ea24:f8ee prefixlen 64 scopeid 0x20<link>
|
||||
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
|
||||
RX packets 0 bytes 0 (0.0 B)
|
||||
|
@@ -236,7 +236,7 @@ Set the IP address on the `ogstun` TUN interface.
|
||||
|
||||
```bash
|
||||
$ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
$ sudo ip addr add cafe::1/64 dev ogstun
|
||||
$ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
```
|
||||
|
||||
Make sure it is set up properly.
|
||||
@@ -247,7 +247,7 @@ $ ip link show
|
||||
|
||||
**Notice:** This configuration is not persistent after rebooting. The
|
||||
script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{
|
||||
site.github_username }}/open5gs/blob/master/misc/netconf.sh) makes it easy
|
||||
site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy
|
||||
to configure the TUN device as follows:
|
||||
`$ sudo ./misc/netconf.sh`
|
||||
{: .notice--info}
|
||||
@@ -325,7 +325,7 @@ $ cd ../
|
||||
$ ls install/bin
|
||||
open5gs-amfd open5gs-hssd open5gs-nrfd open5gs-sgwcd open5gs-smfd open5gs-udrd
|
||||
open5gs-ausfd open5gs-mmed open5gs-pcrfd open5gs-sgwud open5gs-udmd open5gs-pcfd
|
||||
open5gs-upfd
|
||||
open5gs-upfd open5gs-nssfd
|
||||
```
|
||||
|
||||
## Building WebUI of Open5GS
|
||||
@@ -342,7 +342,7 @@ Install the dependencies to run WebUI
|
||||
```bash
|
||||
$ cd ~/open5gs
|
||||
$ cd webui
|
||||
$ npm install
|
||||
$ npm ci --no-optional
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
@@ -52,7 +52,7 @@ You are now ready to set the IP address on TUN device.
|
||||
|
||||
```bash
|
||||
$ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
$ sudo ip addr add cafe::1/64 dev ogstun
|
||||
$ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
```
|
||||
|
||||
Make sure it is set up properly.
|
||||
@@ -61,7 +61,7 @@ $ sudo ip link set ogstun up
|
||||
$ ip link show
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/master/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./misc/netconf.sh`
|
||||
{: .notice--info}
|
||||
|
||||
@@ -127,7 +127,7 @@ Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
$ cd webui
|
||||
$ npm install
|
||||
$ npm ci --no-optional
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
@@ -1,29 +1,53 @@
|
||||
---
|
||||
title: FreeBSD
|
||||
title: Mac OS X
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **FreeBSD Relase 11.1**.
|
||||
This guide is based on macOS Big Sur 11.2 on a Macbook Air(Apple M1 Chips) computer.
|
||||
{: .blue}
|
||||
|
||||
### Install Xcode Command-Line Tools
|
||||
---
|
||||
|
||||
Homebrew requires the Xcode command-line tools from Apple's Xcode.
|
||||
```bash
|
||||
$ xcode-select --install
|
||||
```
|
||||
|
||||
### Installing Homebrew
|
||||
---
|
||||
|
||||
Install brew using the official Homebrew installation instructions.
|
||||
```bash
|
||||
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Install MongoDB with package manager.
|
||||
Install MongoDB with Package Manager.
|
||||
```bash
|
||||
$ sudo pkg install mongodb
|
||||
$ brew tap mongodb/brew
|
||||
$ brew install mongodb-community
|
||||
```
|
||||
|
||||
Run MongoDB server.
|
||||
```bash
|
||||
$ mkdir -p ./data/db
|
||||
$ mongod --dbpath ./data/db
|
||||
$ mongod --config /usr/local/etc/mongod.conf
|
||||
```
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
**Tip:** MongoDB is persistent after rebooting with the following commands:
|
||||
`$ brew services start mongodb-community`
|
||||
{: .notice--info}
|
||||
|
||||
|
||||
### Setting up network (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Configure the TUN device.
|
||||
Note that Open5GS uses built-in "utun" device driver. So, You don't have to install external TUN/TAP driver.
|
||||
{: .blue}
|
||||
|
||||
Configure the loopback interface.
|
||||
```bash
|
||||
$ sudo ifconfig lo0 alias 127.0.0.2 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.3 netmask 255.255.255.255
|
||||
@@ -38,15 +62,26 @@ $ sudo ifconfig lo0 alias 127.0.0.10 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.11 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.12 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.13 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.14 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.15 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.16 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.17 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.18 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.19 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.20 netmask 255.255.255.255
|
||||
```
|
||||
|
||||
Enable IP forwarding
|
||||
Enable IP forwarding & Masquerading
|
||||
```bash
|
||||
$ sudo sysctl -w net.inet.ip.forwarding=1
|
||||
$ sudo sysctl -w net.inet6.ip6.forwarding=1
|
||||
$ sudo sh -c "echo 'nat on {en0} from 10.45.0.0/16 to any -> {en0}' > /etc/pf.anchors/org.open5gs"
|
||||
$ sudo sh -c "echo 'nat on {en0} from 2001:230:cafe::1/48 to any -> {en0}' > /etc/pf.anchors/org.open5gs"
|
||||
$ sudo pfctl -e -f /etc/pf.anchors/org.open5gs
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/support/network/restart.sh](https://github.com/{{ site.github_username }}/open5gs/blob/master/support/network/restart.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./support/network/restart.sh`
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./misc/netconf.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building Open5GS
|
||||
@@ -54,13 +89,19 @@ $ sudo sysctl -w net.inet.ip.forwarding=1
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ sudo pkg install py36-pip ninja gcc bison gsed pkgconf git mongo-c-driver gnutls libgcrypt libidn libyaml libmicrohttpd curl
|
||||
$ brew install mongo-c-driver gnutls libgcrypt libidn libyaml libmicrohttpd nghttp2 pkg-config bison libusrsctp
|
||||
```
|
||||
|
||||
Install Meson using Python.
|
||||
Configure Homebrew PATH
|
||||
```bash
|
||||
$ sudo pip install --upgrade pip
|
||||
$ sudo pip install meson
|
||||
$ export PATH="/opt/homebrew/opt/bison/bin:/opt/homebrew/bin:$PATH"
|
||||
$ export LIBRARY_PATH=/opt/homebrew/lib
|
||||
$ export C_INCLUDE_PATH=/opt/homebrew/include
|
||||
```
|
||||
|
||||
Install Meson using Homebrew.
|
||||
```bash
|
||||
$ brew install meson
|
||||
```
|
||||
|
||||
Git clone.
|
||||
@@ -107,20 +148,21 @@ $ ninja install
|
||||
$ cd ../
|
||||
```
|
||||
|
||||
|
||||
### Building WebUI of Open5GS
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of Open5GS
|
||||
|
||||
```bash
|
||||
$ sudo pkg install node
|
||||
$ brew install node
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
$ cd webui
|
||||
$ npm install
|
||||
$ npm ci --no-optional
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
@@ -128,4 +170,3 @@ The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
```bash
|
||||
$ npm run dev
|
||||
```
|
||||
|
@@ -3,14 +3,23 @@ title: Mac OS X
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **macOS Big Sur 11.0.1**.
|
||||
This guide is based on macOS Big Sur 11.2 on a Macbook Pro(Intel Chips) computer.
|
||||
{: .blue}
|
||||
|
||||
### Install Xcode Command-Line Tools
|
||||
---
|
||||
|
||||
Homebrew requires the Xcode command-line tools from Apple's Xcode.
|
||||
```bash
|
||||
$ xcode-select --install
|
||||
```
|
||||
|
||||
### Installing Homebrew
|
||||
---
|
||||
|
||||
Install brew using the official Homebrew installation instructions.
|
||||
```bash
|
||||
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
|
||||
### Getting MongoDB
|
||||
@@ -32,14 +41,13 @@ $ mongod --config /usr/local/etc/mongod.conf
|
||||
{: .notice--info}
|
||||
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
### Setting up network (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Install TUN/TAP driver
|
||||
- You can download it from [http://tuntaposx.sourceforge.net/](http://tuntaposx.sourceforge.net/)
|
||||
- And then, run tuntap_20150118.pkg to install TUN/TAP driver.
|
||||
Note that Open5GS uses built-in "utun" device driver. So, You don't have to install external TUN/TAP driver.
|
||||
{: .blue}
|
||||
|
||||
Configure the TUN device.
|
||||
Configure the loopback interface.
|
||||
```bash
|
||||
$ sudo ifconfig lo0 alias 127.0.0.2 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.3 netmask 255.255.255.255
|
||||
@@ -54,16 +62,25 @@ $ sudo ifconfig lo0 alias 127.0.0.10 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.11 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.12 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.13 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.14 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.15 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.16 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.17 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.18 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.19 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.20 netmask 255.255.255.255
|
||||
```
|
||||
|
||||
Enable IP forwarding & Masquerading
|
||||
```bash
|
||||
$ sudo sysctl -w net.inet.ip.forwarding=1
|
||||
$ sudo sysctl -w net.inet6.ip6.forwarding=1
|
||||
$ sudo sh -c "echo 'nat on {en0} from 10.45.0.0/16 to any -> {en0}' > /etc/pf.anchors/org.open5gs"
|
||||
$ sudo sh -c "echo 'nat on {en0} from 2001:230:cafe::1/48 to any -> {en0}' > /etc/pf.anchors/org.open5gs"
|
||||
$ sudo pfctl -e -f /etc/pf.anchors/org.open5gs
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/master/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./misc/netconf.sh`
|
||||
{: .notice--info}
|
||||
|
||||
@@ -72,7 +89,7 @@ $ sudo pfctl -e -f /etc/pf.anchors/org.open5gs
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ brew install mongo-c-driver gnutls libgcrypt libidn libyaml libmicrohttpd nghttp2 pkg-config
|
||||
$ brew install mongo-c-driver gnutls libgcrypt libidn libyaml libmicrohttpd nghttp2 pkg-config libusrsctp
|
||||
```
|
||||
|
||||
Install Bison and Create soft link.
|
||||
@@ -96,7 +113,7 @@ To compile with meson:
|
||||
|
||||
```bash
|
||||
$ cd open5gs
|
||||
$ meson build --prefix=`pwd`/install -D c_std=c99
|
||||
$ meson build --prefix=`pwd`/install
|
||||
$ ninja -C build
|
||||
```
|
||||
|
||||
@@ -144,7 +161,7 @@ Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
$ cd webui
|
||||
$ npm install
|
||||
$ npm ci --no-optional
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
@@ -152,4 +169,3 @@ The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
```bash
|
||||
$ npm run dev
|
||||
```
|
||||
|
216
docs/_docs/platform/07-freebsd.md
Normal file
216
docs/_docs/platform/07-freebsd.md
Normal file
@@ -0,0 +1,216 @@
|
||||
---
|
||||
title: FreeBSD
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **FreeBSD-11.4-STABLE**.
|
||||
{: .blue}
|
||||
|
||||
## Install **FreeBSD-11.4-STABLE** from Vagrant box (optional)
|
||||
---
|
||||
Vagrant provides a simple way to create and deploy Virtual Machines from
|
||||
pre-built images using VirtualBox, libvirt, or VMWare as a hypervisor engine.
|
||||
This allows the user to quickly create a virtual machine without the hassle
|
||||
of installing the operating system by hand.
|
||||
|
||||
### Install Vagrant
|
||||
---
|
||||
|
||||
The instructions to install Vagrant are provided at
|
||||
[vagrantup.com](https://www.vagrantup.com/).
|
||||
|
||||
|
||||
### Create a FreeBSD-11.4-STABLE Virtual Machine using Vagrant
|
||||
---
|
||||
|
||||
Use the supplied `Vagrantfile` in the `vagrant` directory to create the
|
||||
virtual machine.
|
||||
|
||||
Note that this Vagrantfile is identical to the base FreeBSD 11 box, with
|
||||
the exception that the amount of virtual memory has been increased to 1GB:
|
||||
|
||||
```bash
|
||||
cd vagrant/freebsd
|
||||
vagrant up --provider virtualbox
|
||||
```
|
||||
|
||||
### Log into the newly created FreeBSD VM
|
||||
---
|
||||
|
||||
Use SSH to log into the FreeBSD 11 VM:
|
||||
|
||||
```bash
|
||||
vagrant ssh
|
||||
```
|
||||
|
||||
Note that the Open5GS source is *not* copied into the VM. The instructions
|
||||
below provide the step by step instructions for setting up Open5GS for
|
||||
either a bare metal or virtual FreeBSD 11 system.
|
||||
|
||||
The rest of the commands below are performed inside the FreeBSD VM as the
|
||||
user 'vagrant', or on your bare metal FreeBSD 11 system as any normal user.
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Install MongoDB with package manager.
|
||||
```bash
|
||||
$ sudo pkg install mongodb44
|
||||
```
|
||||
|
||||
Run MongoDB server.
|
||||
```bash
|
||||
$ mkdir -p ./data/db
|
||||
$ mongod --dbpath ./data/db
|
||||
```
|
||||
|
||||
### Setting up network (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Configure the loopback interface.
|
||||
```bash
|
||||
$ sudo ifconfig lo0 alias 127.0.0.2 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.3 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.4 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.5 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.5 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.6 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.7 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.8 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.9 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.10 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.11 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.12 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.13 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.14 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.15 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.16 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.17 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.18 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.19 netmask 255.255.255.255
|
||||
$ sudo ifconfig lo0 alias 127.0.0.20 netmask 255.255.255.255
|
||||
```
|
||||
|
||||
Enable IP forwarding
|
||||
```bash
|
||||
$ sudo sysctl -w net.inet.ip.forwarding=1
|
||||
$ sudo sysctl -w net.inet6.ip6.forwarding=1
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./misc/netconf.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building Open5GS
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ sudo pkg install meson ninja gcc bison gsed pkgconf git mongo-c-driver gnutls libgcrypt libidn libyaml libmicrohttpd nghttp2
|
||||
```
|
||||
|
||||
Configure gcc PATH
|
||||
```bash
|
||||
$ setenv LIBRARY_PATH /usr/local/lib
|
||||
$ setenv C_INCLUDE_PATH /usr/local/include
|
||||
```
|
||||
|
||||
If you are using BASH instead of default CSH,
|
||||
```bash
|
||||
$ export LIBRARY_PATH=/usr/local/lib
|
||||
$ export C_INCLUDE_PATH=/usr/local/include
|
||||
```
|
||||
|
||||
Git clone.
|
||||
|
||||
```bash
|
||||
$ git clone https://github.com/{{ site.github_username }}/open5gs
|
||||
```
|
||||
|
||||
To compile with meson:
|
||||
|
||||
```bash
|
||||
$ cd open5gs
|
||||
$ meson build --prefix=`pwd`/install
|
||||
$ ninja -C build
|
||||
```
|
||||
|
||||
**Note:** No source code changes are required for FreeBSD 11.x version. However, in FreeBSD 12.x version, we'll getting a crash with segmentation fault when calling basename(3). To avoid this, you need to change the freeDiameter source code as below.
|
||||
{: .blue}
|
||||
|
||||
```diff
|
||||
$ cd open5gs/subprojects/freeDiameter
|
||||
|
||||
$ diff --git a/include/freeDiameter/libfdproto.h b/include/freeDiameter/libfdproto.h
|
||||
index 52c11ef..cd7f383 100644
|
||||
--- a/include/freeDiameter/libfdproto.h
|
||||
+++ b/include/freeDiameter/libfdproto.h
|
||||
@@ -293,7 +293,7 @@ extern int fd_g_debug_lvl;
|
||||
|
||||
/* A version of __FILE__ without the full path. This is specific to each C file being compiled */
|
||||
static char * file_bname = NULL;
|
||||
-static char * file_bname_init(char * full) { file_bname = basename(full); return file_bname; }
|
||||
+static char * file_bname_init(char * full) { file_bname = __old_basename(full); return file_bname; }
|
||||
#define __STRIPPED_FILE__ (file_bname ?: file_bname_init((char *)__FILE__))
|
||||
|
||||
```
|
||||
|
||||
Now, compile again:
|
||||
{: .blue}
|
||||
|
||||
```bash
|
||||
$ cd open5gs
|
||||
$ ninja -C build
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
|
||||
```bash
|
||||
$ sudo ./build/tests/attach/attach ## EPC Only
|
||||
$ sudo ./build/tests/registration/registration ## 5G Core Only
|
||||
```
|
||||
|
||||
Run all test programs as below.
|
||||
|
||||
**Note:** This should require *sudo* due to access `/dev/tun0`.
|
||||
{: .notice--danger}
|
||||
|
||||
```bash
|
||||
$ cd build
|
||||
$ sudo meson test -v
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || pfcp || diameter || gtp || ngap || http2.data.data || http2.headers`. You can see the virtually created packets. [testattach.pcapng]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testattach.pcapng)/[testregistration.pcapng]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testregistration.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
You need to perform the **installation process**.
|
||||
```bash
|
||||
$ cd build
|
||||
$ ninja install
|
||||
$ cd ../
|
||||
```
|
||||
|
||||
### Building WebUI of Open5GS
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of Open5GS
|
||||
|
||||
```bash
|
||||
$ sudo pkg install node
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
$ cd webui
|
||||
$ npm ci --no-optional
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
||||
```bash
|
||||
$ npm run dev
|
||||
```
|
115
docs/_docs/platform/08-alpine.md
Normal file
115
docs/_docs/platform/08-alpine.md
Normal file
@@ -0,0 +1,115 @@
|
||||
---
|
||||
title: Alpine
|
||||
head_inline: "<style> .blue { color: blue; } </style>"
|
||||
---
|
||||
|
||||
This guide is based on **Alpine 3.13** Distribution.
|
||||
{: .blue}
|
||||
|
||||
### Getting MongoDB
|
||||
---
|
||||
|
||||
Install MongoDB with package manager.
|
||||
```bash
|
||||
$ sudo apk update
|
||||
$ sudo apk add mongodb
|
||||
```
|
||||
|
||||
Run MongoDB server.
|
||||
```bash
|
||||
$ mkdir -p ./data/db
|
||||
$ mongod --dbpath ./data/db
|
||||
```
|
||||
|
||||
### Setting up TUN device (No persistent after rebooting)
|
||||
---
|
||||
|
||||
Create the TUN device. Interface name will be `ogstun`.
|
||||
```bash
|
||||
$ sudo apk add iproute2
|
||||
$ sudo ip tuntap add name ogstun mode tun
|
||||
$ ip link show
|
||||
```
|
||||
|
||||
You are now ready to set the IP address on TUN device.
|
||||
|
||||
```bash
|
||||
$ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
$ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
```
|
||||
|
||||
Make sure it is set up properly.
|
||||
```bash
|
||||
$ sudo ip link set ogstun up
|
||||
$ ip link show
|
||||
```
|
||||
|
||||
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/main/misc/netconf.sh) makes it easy to configure the TUN device as follows:
|
||||
`$ sudo ./misc/netconf.sh`
|
||||
{: .notice--info}
|
||||
|
||||
### Building Open5GS
|
||||
---
|
||||
|
||||
Install the depedencies for building the source code.
|
||||
```bash
|
||||
$ sudo apk add alpine-sdk bison flex git meson bash sudo linux-headers bsd-compat-headers yaml-dev lksctp-tools-dev gnutls-dev libgcrypt-dev libidn-dev mongo-c-driver-dev libmicrohttpd-dev curl-dev nghttp2-dev
|
||||
```
|
||||
|
||||
Git clone.
|
||||
|
||||
```bash
|
||||
$ git clone https://github.com/{{ site.github_username }}/open5gs
|
||||
```
|
||||
|
||||
To compile with meson:
|
||||
|
||||
```bash
|
||||
$ cd open5gs
|
||||
$ meson build --prefix=`pwd`/install
|
||||
$ ninja -C build
|
||||
```
|
||||
|
||||
Check whether the compilation is correct.
|
||||
```bash
|
||||
$ ./build/tests/attach/attach ## EPC Only
|
||||
$ ./build/tests/registration/registration ## 5G Core Only
|
||||
```
|
||||
|
||||
Run all test programs as below.
|
||||
```bash
|
||||
$ cd build
|
||||
$ meson test -v
|
||||
```
|
||||
|
||||
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || pfcp || diameter || gtp || ngap || http2.data.data || http2.headers`. You can see the virtually created packets. [testattach.pcapng]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testattach.pcapng)/[testregistration.pcapng]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testregistration.pcapng)
|
||||
{: .notice--info}
|
||||
|
||||
You need to perform the **installation process**.
|
||||
```bash
|
||||
$ cd build
|
||||
$ ninja install
|
||||
$ cd ../
|
||||
```
|
||||
|
||||
### Building WebUI of Open5GS
|
||||
---
|
||||
|
||||
[Node.js](https://nodejs.org/) is required to build WebUI of Open5GS
|
||||
|
||||
```bash
|
||||
$ sudo apk add nodejs
|
||||
```
|
||||
|
||||
Install the dependencies to run WebUI
|
||||
|
||||
```bash
|
||||
$ cd webui
|
||||
$ npm ci --no-optional
|
||||
```
|
||||
|
||||
The WebUI runs as an [npm](https://www.npmjs.com/) script.
|
||||
|
||||
```bash
|
||||
$ npm run dev
|
||||
```
|
@@ -24,10 +24,11 @@ open5gs 27485 0.0 0.0 243816 15064 ? Ssl 12:13 0:00 /usr/bin/open5g
|
||||
open5gs 27543 0.0 0.0 222416 9672 ? Ssl 12:13 0:00 /usr/bin/open5gs-ausfd -c /etc/open5gs/ausf.yaml
|
||||
open5gs 27600 0.0 0.0 222328 9668 ? Ssl 12:13 0:00 /usr/bin/open5gs-udmd -c /etc/open5gs/udm.yaml
|
||||
open5gs 27600 0.0 0.0 222329 9669 ? Ssl 12:13 0:00 /usr/bin/open5gs-pcfd -c /etc/open5gs/pcf.yaml
|
||||
open5gs 27600 0.0 0.0 222329 9669 ? Ssl 12:13 0:00 /usr/bin/open5gs-nssfd -c /etc/open5gs/nssf.yaml
|
||||
open5gs 27697 0.0 0.0 243976 13716 ? Ssl 12:13 0:00 /usr/bin/open5gs-udrd -c /etc/open5gs/udr.yaml
|
||||
```
|
||||
|
||||
You should see each of the above services, MME, SGW-C, SMF, AMF, SGW-U, UPF, HSS, PCRF, NRF, AUSF, UDM, PCF & UDR are all running.
|
||||
You should see each of the above services, MME, SGW-C, SMF, AMF, SGW-U, UPF, HSS, PCRF, NRF, AUSF, UDM, PCF, NSSF & UDR are all running.
|
||||
|
||||
If your instance doesn't show this make sure you're started each service:
|
||||
```bash
|
||||
@@ -43,6 +44,7 @@ $ systemctl start open5gs-nrfd.service
|
||||
$ systemctl start open5gs-ausfd.service
|
||||
$ systemctl start open5gs-udmd.service
|
||||
$ systemctl start open5gs-pcfd.service
|
||||
$ systemctl start open5gs-nssfd.service
|
||||
$ systemctl start open5gs-udrd.service
|
||||
```
|
||||
|
||||
|
@@ -10,35 +10,372 @@ head_inline: "<style> .blue { color: blue; } </style>"
|
||||
}
|
||||
</style>
|
||||
|
||||
#### Cannot open shared object file when running daemon
|
||||
#### MME Diameter Error using v2.2.x
|
||||
|
||||
An error occurred when running as follows.
|
||||
If you see the Attach reject [EMM_CAUSE:15] with Diameter Error [Result-Code:3002], it means that you may use the old format DB schema.
|
||||
|
||||
```
|
||||
$ ./install/bin/open5gs-nrfd
|
||||
./install/bin/open5gs-nrfd: error while loading shared libraries: libogscrypt.so.2: cannot open shared object file: No such file or directory
|
||||
```
|
||||
|
||||
You need to specify the absolute path to the shared library as follows.
|
||||
|
||||
```bash
|
||||
$ echo $(cd $(dirname ./install/lib/x86_64-linux-gnu/) && pwd -P)/$(basename ./install/lib/x86_64-linux-gnu/)
|
||||
/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
|
||||
$ export LD_LIBRARY_PATH=/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
|
||||
$ ldd ./install/bin/open5gs-amfd
|
||||
...
|
||||
libogsapp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogsapp.so.1 (0x00007f161ab51000)
|
||||
libogscore.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogscore.so.1 (0x00007f161a922000)
|
||||
libogssctp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogssctp.so.1 (0x00007f161a71d000)
|
||||
libogss1ap.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogss1ap.so.1 (0x00007f161a519000)
|
||||
5/08 18:22:23.584: [diam] ERROR: pid:Routing-OUT (0x563969fc2060) in md_hook_cb_tree@dbg_msg_dumps.c:113: AVP: 'Vendor-Specific-Application-Id'(260) l=8 f=-M val=(grouped)
|
||||
((null):0)
|
||||
05/08 18:22:23.584: [diam] ERROR: pid:Routing-OUT (0x563969fc2060) in md_hook_cb_tree@dbg_msg_dumps.c:113: AVP: 'Vendor-Id'(266) l=12 f=-M val=10415 (0x28af)
|
||||
((null):0)
|
||||
05/08 18:22:23.584: [diam] ERROR: pid:Routing-OUT (0x563969fc2060) in md_hook_cb_tree@dbg_msg_dumps.c:113: AVP: 'Auth-Application-Id'(258) l=12 f=-M val=16777251 (0x1000023)
|
||||
((null):0)
|
||||
05/08 18:22:23.584: [mme] INFO: Result Code: 3002 (../src/mme/mme-fd-path.c:301)
|
||||
05/08 18:22:23.585: [mme] INFO: [001010123456792] Attach reject [EMM_CAUSE:15] (../src/mme/mme-sm.c:448)
|
||||
05/08 18:22:23.612: [mme] INFO: UE Context Release [Action:3] (../src/mme/s1ap-handler.c:1328)
|
||||
05/08 18:22:23.612: [mme] INFO: ENB_UE_S1AP_ID[1] MME_UE_S1AP_ID[1] (../src/mme/s1ap-handler.c:1330)
|
||||
05/08 18:22:23.612: [mme] INFO: IMSI[001010123456792] (../src/mme/s1ap-handler.c:1332)
|
||||
05/08 18:22:23.612: [mme] INFO: [Removed] Number of eNB-UEs is now 0 (../src/mme/mme-context.c:3228)
|
||||
...
|
||||
```
|
||||
|
||||
If you want to set the shared library path permanently, you can use ldconfig.
|
||||
```bash
|
||||
$ sudo sh -c "echo /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu > /etc/ld.so.conf.d/open5gs.conf"
|
||||
$ sudo ldconfig
|
||||
At this time, you need to check the DB schema is in the form below by using the command the below.
|
||||
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
> db.subscribers.find().pretty()
|
||||
{
|
||||
"_id" : ObjectId("60969fe79459f8b40d8d3f68"),
|
||||
"imsi" : "901700000000001",
|
||||
"__v" : 0,
|
||||
"access_restriction_data" : 32,
|
||||
"ambr" : {
|
||||
"uplink" : {
|
||||
"value" : 1,
|
||||
"unit" : 3
|
||||
},
|
||||
"downlink" : {
|
||||
"value" : 1,
|
||||
"unit" : 3
|
||||
}
|
||||
},
|
||||
"network_access_mode" : 2,
|
||||
"security" : {
|
||||
"k" : "465b5ce8b199b49faa5f0a2ee238a6bc",
|
||||
"amf" : "8000",
|
||||
"op" : null,
|
||||
"opc" : "e8ed289deba952e4283b54e88e6183ca",
|
||||
"sqn" : NumberLong(97)
|
||||
},
|
||||
"slice" : [
|
||||
{
|
||||
"sst" : 1,
|
||||
"default_indicator" : true,
|
||||
"_id" : ObjectId("60969fe7de8743b3c7b1a973"),
|
||||
"session" : [
|
||||
{
|
||||
"name" : "internet",
|
||||
"type" : 3,
|
||||
"_id" : ObjectId("60969fe7de8743b3c7b1a974"),
|
||||
"pcc_rule" : [ ],
|
||||
"ambr" : {
|
||||
"uplink" : {
|
||||
"value" : 1,
|
||||
"unit" : 3
|
||||
},
|
||||
"downlink" : {
|
||||
"value" : 1,
|
||||
"unit" : 3
|
||||
}
|
||||
},
|
||||
"qos" : {
|
||||
"index" : 9,
|
||||
"arp" : {
|
||||
"priority_level" : 8,
|
||||
"pre_emption_capability" : 1,
|
||||
"pre_emption_vulnerability" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"subscribed_rau_tau_timer" : 12,
|
||||
"subscriber_status" : 0
|
||||
}
|
||||
```
|
||||
|
||||
If you see below, you are using the old format DB schema. Therefore, MME sends Attach Reject [EMM_CAUSE:15] with Diameter Error [Result-Code: 3002] and it does not work properly.
|
||||
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
> db.subscribers.find().pretty()
|
||||
{
|
||||
"_id" : ObjectId("609715fda08851a0744e6ae7"),
|
||||
"imsi" : "901700000021309",
|
||||
"__v" : 0,
|
||||
"access_restriction_data" : 32,
|
||||
"ambr" : {
|
||||
"downlink" : NumberLong(1024000),
|
||||
"uplink" : NumberLong(1024000)
|
||||
},
|
||||
"network_access_mode" : 2,
|
||||
"pdn" : [
|
||||
{
|
||||
"apn" : "internet",
|
||||
"_id" : ObjectId("609715fd455bcd38c884ce85"),
|
||||
"pcc_rule" : [ ],
|
||||
"ambr" : {
|
||||
"downlink" : NumberLong(1024000),
|
||||
"uplink" : NumberLong(1024000)
|
||||
},
|
||||
"qos" : {
|
||||
"qci" : 9,
|
||||
"arp" : {
|
||||
"priority_level" : 8,
|
||||
"pre_emption_vulnerability" : 1,
|
||||
"pre_emption_capability" : 0
|
||||
}
|
||||
},
|
||||
"type" : 0
|
||||
}
|
||||
],
|
||||
"security" : {
|
||||
"k" : "70D49A71DD1A2B806A25ABE0EF749F1E",
|
||||
"amf" : "8000",
|
||||
"op" : null,
|
||||
"opc" : "6F1BF53D624B3A43AF6592854E2444C7"
|
||||
},
|
||||
"subscribed_rau_tau_timer" : 12,
|
||||
"subscriber_status" : 0
|
||||
}
|
||||
```
|
||||
|
||||
If you are using old format DB schema, please perform the following step.
|
||||
|
||||
1. Delete all DB subscriber info
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
switched to db open5gs
|
||||
> db.subscribers.drop()
|
||||
true
|
||||
```
|
||||
2. WebUI logout
|
||||
3. Install new WebUI with the following command.
|
||||
```
|
||||
$ curl -fsSL https://open5gs.org/open5gs/assets/webui/install | sudo -E bash -
|
||||
```
|
||||
|
||||
4. Log in to the new WebUI and add new subscriber information.
|
||||
5. Make sure it is a new DB schema as below:
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
> db.subscribers.find().pretty()
|
||||
{
|
||||
...
|
||||
"slice" : [
|
||||
{
|
||||
"sst" : 1,
|
||||
"default_indicator" : true,
|
||||
"_id" : ObjectId("60969fe7de8743b3c7b1a973"),
|
||||
"session" : [
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
#### HSS crash using v2.2.x
|
||||
|
||||
If the following MME log occurs while connecting to the UE, it means that the Open5GS upgrade was not properly performed.
|
||||
|
||||
```
|
||||
04/14 20:14:21.981: [diam] ERROR: pid:PSM/hss.localdomain in fd_psm_change_state@p_psm.c:287: 'STATE_OPEN' -> 'STATE_CLOSED' 'hss.localdomain'
|
||||
((null):0)
|
||||
04/14 20:14:21.982: [diam] ERROR: pid:PSM/hss.localdomain in md_hook_cb_tree@dbg_msg_dumps.c:89: FAILOVER from 'hss.localdomain':
|
||||
((null):0)
|
||||
04/14 20:14:21.982: [diam] ERROR: pid:PSM/hss.localdomain in md_hook_cb_tree@dbg_msg_dumps.c:90: 'Update-Location-Request'
|
||||
((null):0)
|
||||
```
|
||||
|
||||
In this case, the HSS may crash as shown below.
|
||||
|
||||
```
|
||||
04/12 10:13:45.025: [app] INFO: Configuration: '/home/open5gs/install/etc/open5gs/hss.yaml' (../lib/app/ogs-init.c:129)
|
||||
04/12 10:13:45.025: [app] INFO: File Logging: '/home/open5gs/install/var/log/open5gs/hss.log' (../lib/app/ogs-init.c:132)
|
||||
04/12 10:13:45.028: [dbi] INFO: MongoDB URI: 'mongodb://localhost/open5gs' (../lib/dbi/ogs-mongoc.c:129)
|
||||
04/12 10:13:45.068: [diam] INFO: CONNECTED TO 'mme.epc.mnc001.mcc001.3gppnetwork.org' (SCTP,soc#17): (../lib/diameter/common/logger.c:108)
|
||||
04/12 10:13:45.069: [app] INFO: HSS initialize...done (../src/hss/app-init.c:31)
|
||||
04/12 10:14:27.167: [core] FATAL: ogs_slice_find_by_s_nssai: Assertion `num_of_slice_data' failed. (../lib/core/ogs-3gpp-types.c:529)
|
||||
04/12 10:14:27.168: [core] FATAL: backtrace() returned 10 addresses (../lib/core/ogs-abort.c:37)
|
||||
/home/open5gs/install/lib/x86_64-linux-gnu/libogscore.so.2(ogs_slice_find_by_s_nssai+0xd2) [0x7f3b720a126e]
|
||||
./install/bin/open5gs-hssd(+0xd12e) [0x55a57bb6f12e]
|
||||
/home/open5gs/install/lib/x86_64-linux-gnu/libfdproto.so.7(fd_disp_call_cb_int+0x270) [0x7f3b7135acb3]
|
||||
/home/open5gs/install/lib/x86_64-linux-gnu/libfdproto.so.7(fd_msg_dispatch+0xdca) [0x7f3b7137442f]
|
||||
home/open5gs/install/lib/x86_64-linux-gnu/libfdcore.so.7(+0x67c3c) [0x7f3b715f9c3c]
|
||||
/home/open5gs/install/lib/x86_64-linux-gnu/libfdcore.so.7(+0x6ca99) [0x7f3b715fea99]
|
||||
/open5gs/install/lib/x86_64-linux-gnu/libfdcore.so.7(+0x6cd06) [0x7f3b715fed06]
|
||||
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db) [0x7f3b70d016db]
|
||||
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f3b70a2a71f]
|
||||
```
|
||||
|
||||
First of all, it is recommended to use the following command to remove all existing subscription DB.
|
||||
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
switched to db open5gs
|
||||
> db.subscribers.drop()
|
||||
true
|
||||
```
|
||||
|
||||
Then, if you are using a version of WebUI prior to v2.1.7, you need to log out. Finally, install the latest version of WebUI and add subscriber information.
|
||||
|
||||
If the above problem still occurs, we recommend that you delete all Open5GS and start from scratch.
|
||||
|
||||
#### 5G Core test failed (e.g. `./build/tests/registration/registration`)
|
||||
|
||||
The AUSF(or SMF) has already been started, but NRF-discovery fails and the test program does not work as shown below.
|
||||
|
||||
```
|
||||
$ ./build/tests/registration/registration
|
||||
|
||||
...
|
||||
04/12 14:26:25.885: [app] ERROR: Cannot discover [AUSF] (../lib/sbi/path.c:119)
|
||||
...
|
||||
04/12 14:27:25.666: [app] ERROR: Cannot discover [SMF] (../lib/sbi/path.c:119)
|
||||
```
|
||||
|
||||
This is a test program bug and has not yet been resolved.
|
||||
{: .blue}
|
||||
|
||||
To restart the test program, first remove all subscriber information using MongoDB Client
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
switched to db open5gs
|
||||
> db.subscribers.find() ### Check the test subscriber
|
||||
> db.subscribers.drop() ### Remove all subscriber
|
||||
> db.subscribers.find() ### Check that all subscribers are empty
|
||||
```
|
||||
|
||||
Kill all processes.
|
||||
```bash
|
||||
$ ps -ef | grep open5gs
|
||||
$ sudo pkill -9 open5gs-mmed
|
||||
$ sudo pkill -9 open5gs-sgwcd
|
||||
$ sudo pkill -9 open5gs-smfd
|
||||
$ sudo pkill -9 open5gs-amfd
|
||||
$ sudo pkill -9 open5gs-sgwud
|
||||
$ sudo pkill -9 open5gs-upfd
|
||||
$ sudo pkill -9 open5gs-hssd
|
||||
$ sudo pkill -9 open5gs-pcrfd
|
||||
$ sudo pkill -9 open5gs-nrfd
|
||||
$ sudo pkill -9 open5gs-ausfd
|
||||
$ sudo pkill -9 open5gs-udmd
|
||||
$ sudo pkill -9 open5gs-pcfd
|
||||
$ sudo pkill -9 open5gs-nssfd
|
||||
$ sudo pkill -9 open5gs-udrd
|
||||
```
|
||||
|
||||
Run `./build/tests/registration/registration` again
|
||||
```
|
||||
$ ./build/tests/registration/registration
|
||||
guti-test : SUCCESS
|
||||
auth-test : SUCCESS
|
||||
idle-test : SUCCESS
|
||||
dereg-test : SUCCESS
|
||||
paging-test : SUCCESS
|
||||
identity-test : SUCCESS
|
||||
gmm-status-test : SUCCESS
|
||||
ue-context-test : SUCCESS
|
||||
reset-test : SUCCESS
|
||||
All tests passed.
|
||||
```
|
||||
|
||||
In general, if this test program succeeds at least once, you can assume that you have successfully built the development environment.
|
||||
|
||||
#### How to use a different Slice for each SMF
|
||||
|
||||
To add a slice with SST of 1 and SD of 000080, you need to update the configuration file as shown below.
|
||||
|
||||
```diff
|
||||
### amf.yaml
|
||||
|
||||
$ diff --git a/configs/open5gs/amf.yaml.in b/configs/open5gs/amf.yaml.in
|
||||
index 7e939e81..dfe4456d 100644
|
||||
--- a/configs/open5gs/amf.yaml.in
|
||||
+++ b/configs/open5gs/amf.yaml.in
|
||||
@@ -199,6 +199,12 @@ amf:
|
||||
mnc: 70
|
||||
s_nssai:
|
||||
- sst: 1
|
||||
+ - plmn_id:
|
||||
+ mcc: 901
|
||||
+ mnc: 70
|
||||
+ s_nssai:
|
||||
+ - sst: 1
|
||||
+ sd: 000080
|
||||
security:
|
||||
integrity_order : [ NIA2, NIA1, NIA0 ]
|
||||
ciphering_order : [ NEA0, NEA1, NEA2 ]
|
||||
|
||||
### FIRST smf.yaml
|
||||
|
||||
$ diff --git a/configs/open5gs/smf.yaml.in b/configs/open5gs/smf.yaml.in
|
||||
index d45aa60f..701ee533 100644
|
||||
--- a/configs/open5gs/smf.yaml.in
|
||||
+++ b/configs/open5gs/smf.yaml.in
|
||||
@@ -317,6 +317,11 @@ logger:
|
||||
#
|
||||
|
||||
smf:
|
||||
+ info:
|
||||
+ - s_nssai:
|
||||
+ - sst: 1
|
||||
+ dnn:
|
||||
+ - internet
|
||||
sbi:
|
||||
- addr: 127.0.0.4
|
||||
port: 7777
|
||||
|
||||
### SECOND smf.yaml
|
||||
|
||||
$ diff --git a/configs/open5gs/smf.yaml.in b/configs/open5gs/smf.yaml.in
|
||||
index d45aa60f..949da220 100644
|
||||
--- a/configs/open5gs/smf.yaml.in
|
||||
+++ b/configs/open5gs/smf.yaml.in
|
||||
@@ -317,6 +317,12 @@ logger:
|
||||
#
|
||||
|
||||
smf:
|
||||
+ info:
|
||||
+ - s_nssai:
|
||||
+ - sst: 1
|
||||
+ sd: 000080
|
||||
+ dnn:
|
||||
+ - internet
|
||||
sbi:
|
||||
- addr: 127.0.0.4
|
||||
port: 7777
|
||||
|
||||
### nssf.yaml
|
||||
$ diff --git a/configs/open5gs/nssf.yaml.in b/configs/open5gs/nssf.yaml.in
|
||||
index ecd4f7e2..04d9c4ba 100644
|
||||
--- a/configs/open5gs/nssf.yaml.in
|
||||
+++ b/configs/open5gs/nssf.yaml.in
|
||||
@@ -119,6 +119,11 @@ nssf:
|
||||
port: 7777
|
||||
s_nssai:
|
||||
sst: 1
|
||||
+ - addr: 127.0.0.10
|
||||
+ port: 7777
|
||||
+ s_nssai:
|
||||
+ sst: 1
|
||||
+ sd: 000080
|
||||
|
||||
#
|
||||
# nrf:
|
||||
```
|
||||
|
||||
Then add a slice to MongoDB's subscriber info.
|
||||
|
||||

|
||||
|
||||
|
||||
#### Can I disable specific services if 5G functionally is not needed?
|
||||
|
||||
@@ -64,6 +401,7 @@ $ open5gs-amfd
|
||||
$ open5gs-ausfd
|
||||
$ open5gs-udmd
|
||||
$ open5gs-pcfd
|
||||
$ open5gs-nssfd
|
||||
$ open5gs-udrd
|
||||
```
|
||||
|
||||
@@ -133,7 +471,7 @@ $ diff -u /etc/systemd/network/99-open5gs.network /etc/systemd/network/99-open5g
|
||||
[Network]
|
||||
-Address=10.45.0.1/16
|
||||
+Address=10.46.0.1/16
|
||||
Address=cafe::1/64
|
||||
Address=2001:230:cafe::1/48
|
||||
```
|
||||
|
||||
Restart systemd-networkd
|
||||
@@ -141,6 +479,11 @@ Restart systemd-networkd
|
||||
$ sudo systemctl restart systemd-networkd
|
||||
```
|
||||
|
||||
And then, you need to chanage NAT table as below.
|
||||
```
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 10.46.0.0/16 ! -o ogstun -j MASQUERADE
|
||||
```
|
||||
|
||||
Now, you need to modify the configuration file of Open5GS to adjust the UE IP Pool. UE IP Pool can be allocated by SMF or UPF, but in this tutorial, we will modify both configuration files.
|
||||
|
||||
```diff
|
||||
@@ -150,10 +493,10 @@ $ diff -u smf.yaml smf.yaml.new
|
||||
@@ -190,7 +190,7 @@
|
||||
- addr: 127.0.0.4
|
||||
- addr: ::1
|
||||
pdn:
|
||||
subnet:
|
||||
- - addr: 10.45.0.1/16
|
||||
+ - addr: 10.46.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
```
|
||||
@@ -165,10 +508,10 @@ $ diff -u upf.yaml upf.yaml.new
|
||||
@@ -139,7 +139,7 @@
|
||||
gtpu:
|
||||
- addr: 127.0.0.7
|
||||
pdn:
|
||||
subnet:
|
||||
- - addr: 10.45.0.1/16
|
||||
+ - addr: 10.46.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
|
||||
#
|
||||
```
|
||||
@@ -263,6 +606,7 @@ $ sudo pkill -9 open5gs-nrfd
|
||||
$ sudo pkill -9 open5gs-ausfd
|
||||
$ sudo pkill -9 open5gs-udmd
|
||||
$ sudo pkill -9 open5gs-pcfd
|
||||
$ sudo pkill -9 open5gs-nssfd
|
||||
$ sudo pkill -9 open5gs-udrd
|
||||
```
|
||||
|
||||
@@ -357,9 +701,10 @@ Timeout: 0
|
||||
|
||||
#### Is it possible to setup IP/NAT table along with Docker?
|
||||
|
||||
Enable IP Forward.
|
||||
Enable IPv4/IPv6 Forward.
|
||||
```
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
$ sudo sysctl -w net.ipv4.ip_forward=1
|
||||
$ sudo sysctl -w net.ipv6.conf.all.forwarding=1
|
||||
```
|
||||
|
||||
The following is the default docker IP/NAT table.
|
||||
@@ -435,6 +780,11 @@ And then, apply **newtables** as below.
|
||||
$ sudo iptables-restore < newtables
|
||||
```
|
||||
|
||||
Docker doesn't have IPv6 NAT rules. In this case, you just add the NAT rule as below.
|
||||
```
|
||||
$ sudo ip6tables -t nat -A POSTROUTING -s 2001:230:cafe::/48 ! -o ogstun -j MASQUERADE
|
||||
```
|
||||
|
||||
The above operation is the same as described in the following manuals.
|
||||
```
|
||||
### Check IP Tables
|
||||
@@ -462,11 +812,13 @@ target prot opt source destination
|
||||
Chain POSTROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
### Enable IPv4/IPv6 Forwarding
|
||||
$ sudo sysctl -w net.ipv4.ip_forward=1
|
||||
$ sudo sysctl -w net.ipv6.conf.all.forwarding=1
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
|
||||
$ sudo ip6tables -t nat -A POSTROUTING -s 2001:230:cafe::/48 ! -o ogstun -j MASQUERADE
|
||||
```
|
||||
|
||||
#### How to use a different DNN/APN for each SMF
|
||||
@@ -521,81 +873,64 @@ The IP address of the UE can also use a different UE pool depending on the DNN/A
|
||||
|
||||
```
|
||||
### For reference, see `smf.yaml`
|
||||
# <PDN Configuration with UE Pool>
|
||||
# <Subnet for UE Pool>
|
||||
#
|
||||
# o IPv4 Pool
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# addr: 10.45.0.1/16
|
||||
#
|
||||
# o IPv4/IPv6 Pool
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev ogstun
|
||||
# $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
#
|
||||
#
|
||||
# o Specific DNN/APN(e.g 'volte') uses 10.46.0.1/16, cafe:2::1/64
|
||||
# All other DNNs/APNs use 10.45.0.1/16, cafe:1::1/64
|
||||
# o Specific DNN/APN(e.g 'volte') uses 10.46.0.1/16, 2001:230:babe::1/48
|
||||
# All other DNNs/APNs use 10.45.0.1/16, 2001:230:cafe::1/48
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add 10.46.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev ogstun
|
||||
# $ sudo ip addr add cafe:2::1/64 dev ogstun
|
||||
# $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
|
||||
# $ sudo ip addr add 2001:230:babe::1/48 dev ogstun
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
# - addr: 10.46.0.1/16
|
||||
# dnn: volte
|
||||
# - addr: cafe:2::1/64
|
||||
# - addr: 2001:230:babe::1/48
|
||||
# dnn: volte
|
||||
#
|
||||
# o Multiple Devices (default: ogstun)
|
||||
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
|
||||
# $ sudo ip addr add cafe:1::1/64 dev ogstun2
|
||||
# $ sudo ip addr add 10.46.0.1/16 dev ogstun3
|
||||
# $ sudo ip addr add cafe:2::1/64 dev ogstun3
|
||||
#
|
||||
# pdn:
|
||||
# - addr: 10.45.0.1/16
|
||||
# - addr: cafe:1::1/64
|
||||
# dev: ogstun2
|
||||
# - addr: 10.46.0.1/16
|
||||
# dnn: volte
|
||||
# dev: ogstun3
|
||||
# - addr: cafe:2::1/64
|
||||
# dnn: volte
|
||||
# dev: ogstun3
|
||||
#
|
||||
# o Pool Range Sample
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range: 10.45.0.100-10.45.0.200
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range:
|
||||
# - 10.45.0.5-10.45.0.50
|
||||
# - 10.45.0.100-
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/24
|
||||
# range:
|
||||
# - -10.45.0.200
|
||||
# - 10.45.0.210-10.45.0.220
|
||||
#
|
||||
# pdn:
|
||||
# subnet:
|
||||
# - addr: 10.45.0.1/16
|
||||
# range:
|
||||
# - 10.45.0.100-10.45.0.200
|
||||
# - 10.45.1.100-10.45.1.200
|
||||
# - addr: cafe::1/64
|
||||
# - addr: 2001:230:cafe::1/48
|
||||
# range:
|
||||
# - cafe::a0-cafe:b0
|
||||
# - cafe::c0-cafe:d0
|
||||
# - 2001:230:cafe:a0::0-2001:230:cafe:b0::0
|
||||
# - 2001:230:cafe:c0::0-2001:230:cafe:d0::0
|
||||
#
|
||||
```
|
||||
|
||||
@@ -693,7 +1028,7 @@ You should configure the domain name on your computer. Otherwise, freeDiameter r
|
||||
|
||||
#### How many of UEs can Open5GS support?
|
||||
|
||||
See the [lib/core/ogs-3gpp-types.h](https://github.com/{{ site.github_username }}/open5gs/blob/master/lib/core/ogs-3gpp-types.h).
|
||||
See the [lib/core/ogs-3gpp-types.h](https://github.com/{{ site.github_username }}/open5gs/blob/main/lib/core/ogs-3gpp-types.h).
|
||||
|
||||
```
|
||||
#define MAX_NUM_OF_ENB 128
|
||||
@@ -731,6 +1066,7 @@ Currently, the number of UE is limited to `128*128`.
|
||||
* AUSF : 127.0.0.11
|
||||
* UDM : 127.0.0.12
|
||||
* PCF : 127.0.0.13
|
||||
* NSSF : 127.0.0.14
|
||||
* UDR : 127.0.0.20
|
||||
```
|
||||
|
||||
@@ -774,7 +1110,7 @@ Currently, the number of UE is limited to `128*128`.
|
||||
|
||||
```
|
||||
* IPv4 : 10.45.0.1/16
|
||||
* IPv6 : cafe::1/64
|
||||
* IPv6 : 2001:230:cafe::1/48
|
||||
```
|
||||
|
||||
- DNS
|
||||
@@ -904,3 +1240,33 @@ getsockopt level=132 optname=0 not yet supported
|
||||
|
||||
The SCTP module is not included in the QEMU kernel. I believe that if the Linux kernel installed on your target platform contains an SCTP module, it will work normally.
|
||||
{: .notice--warning}
|
||||
|
||||
#### Cannot open shared object file when running daemon
|
||||
|
||||
An error occurred when running as follows.
|
||||
|
||||
```
|
||||
$ ./install/bin/open5gs-nrfd
|
||||
./install/bin/open5gs-nrfd: error while loading shared libraries: libogscrypt.so.2: cannot open shared object file: No such file or directory
|
||||
```
|
||||
|
||||
You need to specify the absolute path to the shared library as follows.
|
||||
|
||||
```bash
|
||||
$ echo $(cd $(dirname ./install/lib/x86_64-linux-gnu/) && pwd -P)/$(basename ./install/lib/x86_64-linux-gnu/)
|
||||
/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
|
||||
$ export LD_LIBRARY_PATH=/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
|
||||
$ ldd ./install/bin/open5gs-amfd
|
||||
...
|
||||
libogsapp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogsapp.so.1 (0x00007f161ab51000)
|
||||
libogscore.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogscore.so.1 (0x00007f161a922000)
|
||||
libogssctp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogssctp.so.1 (0x00007f161a71d000)
|
||||
libogss1ap.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogss1ap.so.1 (0x00007f161a519000)
|
||||
...
|
||||
```
|
||||
|
||||
If you want to set the shared library path permanently, you can use ldconfig.
|
||||
```bash
|
||||
$ sudo sh -c "echo /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu > /etc/ld.so.conf.d/open5gs.conf"
|
||||
$ sudo ldconfig
|
||||
```
|
||||
|
@@ -173,9 +173,9 @@ $ sudo apt install open5gs
|
||||
The following shows how to install the Web UI of Open5GS.
|
||||
|
||||
```bash
|
||||
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||
$ curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
|
||||
$ sudo apt install nodejs
|
||||
$ curl -sL https://open5gs.org/open5gs/assets/webui/install | sudo -E bash -
|
||||
$ curl -fsSL https://open5gs.org/open5gs/assets/webui/install | sudo -E bash -
|
||||
```
|
||||
|
||||
### Configuration & Running
|
||||
@@ -222,7 +222,7 @@ Then proceed as follows:
|
||||
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
|
||||
4. Click `SAVE` Button
|
||||
|
||||
Modify [install/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
Modify [install/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/mme.yaml.in) to set the S1AP IP address, PLMN ID, and TAC.
|
||||
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
@@ -257,7 +257,7 @@ $ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
|
||||
ciphering_order : [ EEA0, EEA1, EEA2 ]
|
||||
```
|
||||
|
||||
Modify [install/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/sgwu.yaml.in) to set the GTP-U IP address.
|
||||
Modify [install/etc/open5gs/sgwu.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/main/configs/open5gs/sgwu.yaml.in) to set the GTP-U IP address.
|
||||
```diff
|
||||
$ diff -u /etc/open5gs/sgwu.yaml.old /etc/open5gs/sgwu.yaml
|
||||
--- sgwu.yaml.old 2020-08-22 12:08:44.782880778 -0400
|
||||
@@ -308,11 +308,13 @@ target prot opt source destination
|
||||
Chain POSTROUTING (policy ACCEPT)
|
||||
target prot opt source destination
|
||||
|
||||
### Enable IPv4 Forwarding
|
||||
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
### Enable IPv4/IPv6 Forwarding
|
||||
$ sudo sysctl -w net.ipv4.ip_forward=1
|
||||
$ sudo sysctl -w net.ipv6.conf.all.forwarding=1
|
||||
|
||||
### Add NAT Rule
|
||||
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
|
||||
$ sudo ip6tables -t nat -A POSTROUTING -s 2001:230:cafe::/48 ! -o ogstun -j MASQUERADE
|
||||
```
|
||||
|
||||
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
|
||||
|
@@ -754,22 +754,22 @@ Below startup script can be used for setting up interfaces:
|
||||
```
|
||||
#!/bin/bash
|
||||
|
||||
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
sh -c "echo 1 > /proc/sys/net/ipv6/ip_forward"
|
||||
sudo sysctl -w net.ipv4.ip_forward=1
|
||||
sudo sysctl -w net.ipv6.conf.all.forwarding=1
|
||||
|
||||
ip tuntap add name ogstun mode tun
|
||||
ip addr add 192.168.100.1/24 dev ogstun
|
||||
ip addr add fd84:6aea:c36e:2b69::/64 dev ogstun
|
||||
ip addr add fd84:6aea:c36e:2b69::/48 dev ogstun
|
||||
ip link set ogstun mtu 1400
|
||||
ip link set ogstun up
|
||||
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 ! -o ogstun -j MASQUERADE
|
||||
ip6tables -t nat -A POSTROUTING -s fd84:6aea:c36e:2b69::/64 ! -o ogstun -j MASQUERADE
|
||||
ip6tables -t nat -A POSTROUTING -s fd84:6aea:c36e:2b69::/48 ! -o ogstun -j MASQUERADE
|
||||
iptables -I INPUT -i ogstun -j ACCEPT
|
||||
ip6tables -I INPUT -i ogstun -j ACCEPT
|
||||
|
||||
ip tuntap add name ogstun2 mode tun
|
||||
ip addr add 192.168.101.1/24 dev ogstun2
|
||||
ip addr add fd1f:76f3:da9b:0101::/64 dev ogstun2
|
||||
ip addr add fd1f:76f3:da9b:0101::/48 dev ogstun2
|
||||
ip link set ogstun2 mtu 1400
|
||||
ip link set ogstun2 up
|
||||
iptables -I INPUT -i ogstun2 -j ACCEPT
|
||||
@@ -787,6 +787,7 @@ APN Configuration:
|
||||
---------------------------------------------------------------------------------------------------------------------
|
||||
| ims | IPv4 | 5 | 1 | Disabled | Disabled | 3850/1530 | | |
|
||||
| | | 1 | 2 | Enabled | Enabled | 128/128 | 128/128 | |
|
||||
| | | 2 | 4 | Enabled | Enabled | 128/128 | 128/128 | |
|
||||
---------------------------------------------------------------------------------------------------------------------
|
||||
</pre>
|
||||
|
||||
@@ -1131,13 +1132,13 @@ Visited Network = ims.mnc001.mcc001.3gppnetwork.org
|
||||
Click Add
|
||||
|
||||
Associate IMPI(s) to IMPU
|
||||
IMPI Identity = 001011234567891@ims.mnc001.mcc001.3gppnetwork.org
|
||||
IMPI Identity = 001010123456791@ims.mnc001.mcc001.3gppnetwork.org
|
||||
Click Add
|
||||
|
||||
2. sip:0198765432100
|
||||
2. sip:0198765432100@ims.mnc001.mcc001.3gppnetwork.org
|
||||
|
||||
Public User Identity -IMPU-
|
||||
Identity = sip:0198765432100
|
||||
Identity = sip:0198765432100@ims.mnc001.mcc001.3gppnetwork.org
|
||||
Service Profile = default_sp
|
||||
Charging-Info Set = default_charging_set
|
||||
Can Register = Yes
|
||||
@@ -1150,12 +1151,12 @@ Visited Network = ims.mnc001.mcc001.3gppnetwork.org
|
||||
Click Add
|
||||
|
||||
Associate IMPI(s) to IMPU
|
||||
IMPI Identity = 001011234567891@ims.mnc001.mcc001.3gppnetwork.org
|
||||
IMPI Identity = 001010123456791@ims.mnc001.mcc001.3gppnetwork.org
|
||||
Click Add
|
||||
|
||||
And, finally add these IMPUs as implicit set of IMSI derived IMPU in HSS i.e sip:001011234567891@ims.mnc001.mcc001.3gppnetwork.org as follows:
|
||||
And, finally add these IMPUs as implicit set of IMSI derived IMPU in HSS i.e sip:001010123456791@ims.mnc001.mcc001.3gppnetwork.org as follows:
|
||||
|
||||
1. Goto to IMPU sip:001011234567891@ims.mnc001.mcc001.3gppnetwork.org
|
||||
1. Goto to IMPU sip:001010123456791@ims.mnc001.mcc001.3gppnetwork.org
|
||||
2. In "Add IMPU(s) to Implicit-Set" section give IMPU Identity created above to be added to this IMPU
|
||||
```
|
||||
|
||||
|
@@ -14,42 +14,31 @@ Setup description:
|
||||
#### 0. Introduction
|
||||
|
||||
This tutorial introduces an install-and-run lab for Open5GS + Kamailio IMS
|
||||
VoLTE study, a follow-up project of [Open5GS Tutorial: VoLTE Setup with Kamailio IMS and Open5GS](https://open5gs.org/open5gs/docs/tutorial/02-VoLTE-setup/).
|
||||
The tutorial is based on Herle Supreeth's [docker_open5gs](https://github.com/herlesupreeth/docker_open5gs) and his fork of Open5GS and Kamailio.
|
||||
VoLTE study, a follow-up project of [Open5GS Tutorial: VoLTE Setup with Kamailio IMS and Open5GS](https://open5gs.org/open5gs/docs/tutorial/02-VoLTE-setup/).
|
||||
|
||||
The main purpose is to save researchers' and students' time to debug for a
|
||||
minimum-viable environment before actual study can be proceeded.
|
||||
|
||||
**Important notice before you start**
|
||||
|
||||
1. Herle Supreeth's fork of Kamailio is used to support IPsec.
|
||||
1. Java 7 is downloaded from an alternative location. You have to agree with
|
||||
Oracle's term of service and have an Oracle account, to legally use Java SDK
|
||||
7u80. By using this repo, I assume you have the legal right to use it and
|
||||
hold no liability.
|
||||
|
||||
You have to prepare IMSI, Ki, OP (yes, not **OPc**), SQN of your SIM cards.
|
||||
Even though Open5GS supports OPc, FHoSS merely takes OP. You may also want to
|
||||
disable SQN checking in the SIM card (even though we are not sure whether it is
|
||||
effective.) Check out https://github.com/herlesupreeth/sysmo-usim-tool for a
|
||||
slightly modified sysmo-usim-tool.
|
||||
|
||||
You have to prepare IMSI, Ki, OP/OPc, SQN of your SIM cards.
|
||||
|
||||
#### 1. Prepare SIM cards for VoLTE
|
||||
|
||||
**N.B.**
|
||||
1. Wrong KIC / KID / KIK bricks your SIM card.
|
||||
1. Use MCC = 001, MNC = 01 for a testing network, unless you know your MCC/MNC is supported by Android Carrier Privileges.
|
||||
2. Use MCC = 001, MNC = 01 for a test network, unless you know your MCC/MNC is supported by Android Carrier Privileges.
|
||||
|
||||
Refer to: https://osmocom.org/projects/cellular-infrastructure/wiki/VoLTE_IMS_Android_Carrier_Privileges
|
||||
* gp --key-enc KIC1 --key-mac KID1 --key-dek KIK1 -lvi
|
||||
* gp --key-enc KIC1 --key-mac KID1 --key-dek KIK1 --unlock
|
||||
Refer to: https://github.com/herlesupreeth/CoIMS_Wiki/blob/master/README.md
|
||||
* gp --key-enc <KIC1> --key-mac <KID1> --key-dek <KIK1> -lvi
|
||||
* gp --key-enc <KIC1> --key-mac <KID1> --key-dek <KIK1> --unlock
|
||||
* gp --install applet.cap
|
||||
* gp -a 00A4040009A00000015141434C0000 -a 80E2900033F031E22FE11E4F06FFFFFFFFFFFFC114E46872F28B350B7E1F140DE535C2A8D5804F0BE3E30DD00101DB080000000000000001
|
||||
* gp --acr-list
|
||||
|
||||
If you use gp.jar from Herle Supreeth's [CoSIM Wiki](https://github.com/herlesupreeth/CoIMS_Wiki), replace `gp --acr-list` with `gp --acr-list-aram`.
|
||||
|
||||
* gp --acr-list-aram
|
||||
|
||||
#### 2. Build Open5GS, Kamailio with docker-compose
|
||||
|
||||
@@ -62,54 +51,76 @@ Install docker-compose and make sure it works before going forward.
|
||||
Clone the repository and build base docker images of open5gs and Kamailio:
|
||||
|
||||
```
|
||||
git clone https://github.com/miaoski/docker_open5gs
|
||||
git clone https://github.com/herlesupreeth/docker_open5gs
|
||||
cd docker_open5gs/base
|
||||
docker build --no-cache --force-rm -t docker_open5gs .
|
||||
|
||||
cd ../kamailio_base
|
||||
docker build --no-cache --force-rm -t open5gs_kamailio .
|
||||
|
||||
cd ..
|
||||
docker-compose build --no-cache
|
||||
|
||||
# Copy DNS setting to containers. Do this whenever you change IP in .env
|
||||
./copy-env.sh
|
||||
|
||||
# Start MySQL and MongoDB first, in order to initialize the databases
|
||||
docker-compose up mongo mysql dns
|
||||
|
||||
# To start Open5GS core network without IMS
|
||||
docker-compose up hss mme pcrf pgw sgw
|
||||
|
||||
# To start IMS
|
||||
docker-compose up rtpengine fhoss pcscf icscf scscf
|
||||
|
||||
# To test whether DNS is properly running
|
||||
./test-dns.sh
|
||||
```
|
||||
|
||||
You may want to review `.env` for IP allocation.
|
||||
#### 3. Configuring your setup
|
||||
|
||||
`.env` is the only file most of them need to edit as per their deployment needs
|
||||
{: .notice--warning}
|
||||
|
||||
#### 3. (Optional) Run srsENB in a separate container
|
||||
Edit only the following parameters in `.env` as per your setup
|
||||
|
||||
```
|
||||
MCC
|
||||
MNC
|
||||
TEST_NETWORK --> Change this only if it clashes with the internal network at your home/office
|
||||
DOCKER_HOST_IP --> This is the IP address of the host running your docker setup
|
||||
SGWU_ADVERTISE_IP --> Change this to value of DOCKER_HOST_IP set above only if eNB is not running the same docker network/host
|
||||
```
|
||||
|
||||
If eNB is NOT running in the same docker network/host as the host running the dockerized Core + IMS then follow the below additional steps
|
||||
|
||||
Under `mme` section in docker compose file (`docker-compose.yaml`, `nsa-deploy.yaml`), uncomment the following part
|
||||
|
||||
```
|
||||
...
|
||||
# ports:
|
||||
# - "36412:36412/sctp"
|
||||
...
|
||||
```
|
||||
|
||||
Under `sgwu` section in docker compose file (`docker-compose.yaml`, `nsa-deploy.yaml`), uncomment the following part
|
||||
|
||||
```
|
||||
...
|
||||
# ports:
|
||||
# - "2152:2152/udp"
|
||||
...
|
||||
```
|
||||
|
||||
#### 4. Building 4G/5G Core + IMS related components images
|
||||
|
||||
```
|
||||
cd docker_open5gs
|
||||
source .env
|
||||
docker-compose build --no-cache
|
||||
```
|
||||
|
||||
#### 5. (Optional) Run srsENB in a separate container
|
||||
|
||||
I use srsENB and USRP B210 in the lab. Sometimes you may want to restart
|
||||
srsENB while keeping the core network running. It is thus recommended to run
|
||||
srsENB separately.
|
||||
|
||||
Edit `.env` first to set EARFCN, TX_GAIN, RX_GAIN. Thereafter,
|
||||
|
||||
```
|
||||
cd docker_open5gs
|
||||
source .env
|
||||
docker-compose -f srsenb.yaml build --no-cache
|
||||
docker-compose -f srsenb.yaml up
|
||||
```
|
||||
|
||||
#### 6. Configuration and register two UE
|
||||
|
||||
#### 4. Configuration and register two UE
|
||||
|
||||
The configuration files for each of the Core Network component can be found
|
||||
under their respective folder. Edit the .yaml files of the components and run
|
||||
If there is a need to change the Core Network component configuration files
|
||||
found under their respective folder, make sure to re-compile images using
|
||||
`docker-compose build` again.
|
||||
{: .notice--warning}
|
||||
|
||||
Open (http://<DOCKER_HOST_IP>:3000) in a web browser, where <DOCKER_HOST_IP> is
|
||||
the IP of the machine/VM running the open5gs containers. Login with following
|
||||
@@ -129,14 +140,12 @@ Follow the instructions in [VoLTE Setup](https://open5gs.org/open5gs/docs/tutori
|
||||

|
||||
|
||||
For already running systems, copy SQN from Open5GS and type it in FHoSS. You
|
||||
can type SQN in decimal. FHoSS will automagically convert it to hex.
|
||||
can type SQN in decimal. FHoSS will automagically convert it to hex.
|
||||
|
||||
Pay special attention to copy/paste. You might have leading or trailing spaces
|
||||
Pay special attention to copy/paste. You might have leading or trailing spaces
|
||||
in FHoSS, resulting in failed connections!
|
||||
|
||||
|
||||
|
||||
#### 5. Debugging with Wireshark
|
||||
#### 7. Debugging with Wireshark
|
||||
|
||||
Thanks to Open5GS, the topology is super similar to [SAE on Wikipedia](https://en.wikipedia.org/wiki/System_Architecture_Evolution#/media/File:Evolved_Packet_Core.svg).
|
||||
|
||||
@@ -174,8 +183,7 @@ order to add xfrm state and policy.
|
||||
|
||||

|
||||
|
||||
|
||||
#### 6. Successful calls
|
||||
#### 8. Successful calls
|
||||
|
||||
Herle Supreeth has shared PCAP files of successful calls, including
|
||||
- [IPSec UE registration for VoLTE]({{ site.url }}{{ site.baseurl }}/assets/pcapng/ipsec_reg.pcapng)
|
||||
@@ -230,14 +238,11 @@ Trying, a UE that does not support IPSec is sent a SIP INVITE in clear text:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### 7. Known issues
|
||||
#### 9. Known issues
|
||||
|
||||
- IPv6 is not supported.
|
||||
|
||||
|
||||
#### 8. References
|
||||
#### 10. References
|
||||
|
||||
- [https://github.com/onmyway133/blog/issues/284](https://github.com/onmyway133/blog/issues/284)
|
||||
- [https://realtimecommunication.wordpress.com/2015/05/26/at-your-service/](https://realtimecommunication.wordpress.com/2015/05/26/at-your-service/)
|
||||
|
@@ -14,15 +14,17 @@ Open5GS is a C-language Open Source implementation of 5GC and EPC, i.e. the core
|
||||
- Support of USIM cards using Milenage
|
||||
- IPv6 support
|
||||
- Multiple PDU session
|
||||
- S1/X2 and Xn Handover
|
||||
- Handover(5GC Xn/N2 and EPC S1/X2)
|
||||
- CSFB(Circuit Switched Fall Back) and SMSoS(SMS Over SGs)
|
||||
- VoLTE(Voice over LTE)
|
||||
|
||||
#### Known Limitations
|
||||
---
|
||||
|
||||
- No OCS/OFCS
|
||||
- No VoNR(Voice over NR)
|
||||
- No Interworking with EPC
|
||||
- No NB-IoT
|
||||
- No OCS/OFCS
|
||||
- No eMBMS
|
||||
- No SRVCC
|
||||
- No Roaming
|
||||
|
@@ -8,19 +8,11 @@ head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
- User's Guide
|
||||
- [Quickstart](guide/01-quickstart)
|
||||
- [Building Open5GS from Sources](guide/02-building-open5gs-from-sources)
|
||||
- [Splitting Network Functions](guide/03-splitting-network-functions)
|
||||
|
||||
- Tutorials
|
||||
- [Your First LTE](tutorial/01-your-first-lte)
|
||||
- [EPC Advanced Example with OpenAirInterface UE/RAN](https://github.com/s5uishida/open5gs_epc_oai_sample_config)
|
||||
- [VoLTE Setup with Kamailio IMS and Open5GS](tutorial/02-VoLTE-setup)
|
||||
- [Dockerized VoLTE Setup](tutorial/03-VoLTE-dockerized)
|
||||
- [My first 5G Core : Open5GS and UERANSIM](http://nickvsnetworking.com/my-first-5g-core-open5gs-and-ueransim/)
|
||||
- [5GC Advanced Example with UERANSIM](https://github.com/s5uishida/open5gs_5gc_ueransim_sample_config)
|
||||
- [Sending SMS in Open5GS LTE Networks using the SGs Interface and OsmoMSC](https://nickvsnetworking.com/sending-sms-in-open5gs-lte-networks-using-the-sgs-interface-and-osmomsc-with-smsos/)
|
||||
- [OsmoMSC and Open5GS MME – SGs Interface for CSCF / InterRAT Handover](https://nickvsnetworking.com/osmomsc-and-open5gs-mme-sgs-interface-for-cscf-interran-handover/)
|
||||
- [Static IPs for UEs](http://nickvsnetworking.com/open5gs-epc-static-ip-addresses-for-ues-apns-subscribers/)
|
||||
- [Kubernetes Open5GS Deployment](https://dev.to/infinitydon/virtual-4g-simulation-using-kubernetes-and-gns3-3b7k?fbclid=IwAR1p99h13a-mCfejanbBQe0H0-jp5grXkn5mWf1WrTHf47UtegB2-UHGGZQ)
|
||||
|
||||
- Troubleshooting
|
||||
- [Simple Issues](troubleshoot/01-simple-issues)
|
||||
@@ -30,8 +22,24 @@ head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
- [Debian/Ubuntu](platform/01-debian-ubuntu)
|
||||
- [CentOS](platform/02-centos)
|
||||
- [Fedora](platform/03-fedora)
|
||||
- [MacOSX](platform/05-macosx)
|
||||
- [MacOSX(Apple Silicon)](platform/05-macosx-apple-silicon)
|
||||
- [MacOSX(Intel)](platform/06-macosx-intel)
|
||||
- [FreeBSD](platform/07-freebsd)
|
||||
- [Alpine](platform/08-alpine)
|
||||
|
||||
- Hardware Specific Notes
|
||||
- [Tested e/gNodeBs](hardware/01-genodebs)
|
||||
- [eNodeBs/gNodeBs tested on Open5GS](hardware/01-genodebs)
|
||||
|
||||
- @infinitydon
|
||||
- [Kubernetes Open5GS Deployment](https://dev.to/infinitydon/virtual-4g-simulation-using-kubernetes-and-gns3-3b7k?fbclid=IwAR1p99h13a-mCfejanbBQe0H0-jp5grXkn5mWf1WrTHf47UtegB2-UHGGZQ)
|
||||
|
||||
- @nickvsnetworking
|
||||
- [My first 5G Core : Open5GS and UERANSIM](http://nickvsnetworking.com/my-first-5g-core-open5gs-and-ueransim/)
|
||||
- [Sending SMS in Open5GS LTE Networks using the SGs Interface and OsmoMSC](https://nickvsnetworking.com/sending-sms-in-open5gs-lte-networks-using-the-sgs-interface-and-osmomsc-with-smsos/)
|
||||
- [OsmoMSC and Open5GS MME – SGs Interface for CSCF / InterRAT Handover](https://nickvsnetworking.com/osmomsc-and-open5gs-mme-sgs-interface-for-cscf-interran-handover/)
|
||||
- [Static IPs for UEs](http://nickvsnetworking.com/open5gs-epc-static-ip-addresses-for-ues-apns-subscribers/)
|
||||
|
||||
- @s5uishida
|
||||
- [EPC Advanced Example with OpenAirInterface UE/RAN](https://github.com/s5uishida/open5gs_epc_oai_sample_config)
|
||||
- [5GC Advanced Example with UERANSIM](https://github.com/s5uishida/open5gs_5gc_ueransim_sample_config)
|
||||
|
||||
|
@@ -79,7 +79,7 @@ pgw:
|
||||
- addr: ::1
|
||||
ue_pool:
|
||||
- addr: 10.45.0.1/16
|
||||
- addr: cafe::1/64
|
||||
- addr: 2001:230:cafe::1/48
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 8.8.4.4
|
||||
|
29
docs/_posts/2021-02-02-release-v2.1.5.md
Normal file
29
docs/_posts/2021-02-02-release-v2.1.5.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: "v2.1.5 - 5G Core N2 based handover"
|
||||
date: 2021-02-02 14:52:00 -0500
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
---
|
||||
|
||||
#### New feature
|
||||
- [5GC] N2 Handver ([49a9e58](https://github.com/open5gs/open5gs/commit/49a9e58efe3f6ecd482c3b77b98cd0841688b647), [ff5236f](https://github.com/open5gs/open5gs/commit/ff5236f3e01ee6984bc78eaacc7d84e08c321266))
|
||||
|
||||
#### Enhancement
|
||||
- [AMF/MME] Check IMEISV length == 16 digits ([388e642](https://github.com/open5gs/open5gs/commit/388e64213fcebc257eb7bd0223105c3055c56252))
|
||||
- [AMF] Add Handling Duplicated PDU Session ID ([d9417be](https://github.com/open5gs/open5gs/commit/d9417be9a62255efa91a11ee2c424ec1e739b919))
|
||||
- [ASN] S1AP/NGAP update to v16.4.0(2021-01-04) ([ada01fc](https://github.com/open5gs/open5gs/commit/ada01fca8ffaea029d2ae04e6bc1bb499ab37894))
|
||||
- [AMF/MME] Add UserLocation Handling in UplinkNASTransport ([#772](https://github.com/open5gs/open5gs/pull/772)) -- [zhonglin6666](https://github.com/zhonglin6666)
|
||||
|
||||
#### Bug Fixes
|
||||
- [UDR] Modify SmfSelectionSubscriptionData ([#785](https://github.com/open5gs/open5gs/pull/785)) -- [zhonglin6666](https://github.com/zhonglin6666)
|
||||
- [MME] ENBDirectInformationTransfer decoding problem ([#783](https://github.com/open5gs/open5gs/issues/783)) -- [kuanghanqian](https://github.com/kuanghanqian)
|
||||
- [AMF] PartOfNG-Interface in NGReset decoding problem ([#773](https://github.com/open5gs/open5gs/issues/773)) -- [acetcom](https://github.com/acetcom)
|
||||
- [AMF] Fix UE Context Request IE Handling ([#771](https://github.com/open5gs/open5gs/issues/771)) -- [kuanghanqian](https://github.com/kuanghanqian)
|
||||
- [5GC] Fix the AMF/SMF/UDM crash issues ([#770](https://github.com/open5gs/open5gs/issues/770), [#771](https://github.com/open5gs/open5gs/issues/771)) -- [kuanghanqian](https://github.com/kuanghanqian)
|
||||
|
||||
Download -- [v2.1.5.tar.gz](https://github.com/open5gs/open5gs/archive/v2.1.5.tar.gz)
|
||||
{: .notice--info}
|
22
docs/_posts/2021-02-08-release-v2.1.7.md
Normal file
22
docs/_posts/2021-02-08-release-v2.1.7.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "v2.1.7 - 5G Core Hotfix"
|
||||
date: 2021-02-07 22:31:00 -0500
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
---
|
||||
|
||||
#### Bug Fixes
|
||||
- [5GC/EPC] Pool size adjusted to support 1,024 UEs ([#753](https://github.com/open5gs/open5gs/issues/753)) -- [zhouxiang93123](https://github.com/zhouxiang93123)
|
||||
- [AMF] Crash during handling Duplicated PDU Session ID ([#793](https://github.com/open5gs/open5gs/issues/783)) -- [kuanghanqian](https://github.com/kuanghanqian)
|
||||
|
||||
#### New Platform
|
||||
- MacOSX with Apple M1 Silicon ([7901a1](https://github.com/open5gs/open5gs/commit/7901a1164fdaa04cf72a5a944f50474d569f619d))
|
||||
- FreeBSD ([852756](https://github.com/open5gs/open5gs/commit/852756f90222a8e0821f6e1994baa32eafbdc47c))
|
||||
|
||||
|
||||
Download -- [v2.1.7.tar.gz](https://github.com/open5gs/open5gs/archive/v2.1.7.tar.gz)
|
||||
{: .notice--info}
|
30
docs/_posts/2021-03-08-release-v2.2.0.md
Normal file
30
docs/_posts/2021-03-08-release-v2.2.0.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "v2.2.0 - DB Schema Changes"
|
||||
date: 2021-03-08 21:35:00 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
|
||||
---
|
||||
|
||||
#### DB Schema Changes
|
||||
- No backward compatibility. If you are using an old subscription DB, you should change to the new DB schema.
|
||||
|
||||
#### New features
|
||||
- NSSF(Network Slice Selection Function) is added.
|
||||
- SMF selection is added.
|
||||
|
||||
#### Enhancement
|
||||
- [DB] Masking MongoDB credentials when logging ([#827](https://github.com/open5gs/open5gs/pull/827)) -- [cglewis](https://github.com/cglewis)
|
||||
- [EPC/5GC] Branch name changes from master to main ([#811](https://github.com/open5gs/open5gs/pull/811)) -- [PawelMack](https://github.com/PawelMack)
|
||||
- [AMF] Cause of UEContextRelaseCommand uses Cause of UEContextReleaseRequest ([#789](https://github.com/open5gs/open5gs/issues/789)) -- [PawelMack](https://github.com/PawelMack)
|
||||
|
||||
#### Bug Fixes
|
||||
- [SMF] Fix the bug for DataForwardingNotPossible ([31977bf](https://github.com/open5gs/open5gs/commit/31977bf30a396389557c8be0f82cfdfb8152d580))
|
||||
- [AMF] Fix the exception handling routine when UE/gNB repeatedly sends NGAP messages ([#804](https://github.com/open5gs/open5gs/issues/804)) -- [strongcourage](https://github.com/strongcourage)
|
||||
|
||||
|
||||
Download -- [v2.2.0.tar.gz](https://github.com/open5gs/open5gs/archive/v2.2.0.tar.gz)
|
||||
{: .notice--info}
|
31
docs/_posts/2021-03-15-release-v2.2.1.md
Normal file
31
docs/_posts/2021-03-15-release-v2.2.1.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: "v2.2.1 - UE IPv6 Support"
|
||||
date: 2021-03-15 09:38:00 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } .blue { color: blue; }</style>"
|
||||
---
|
||||
|
||||
#### IMPORTANT
|
||||
|
||||
To use the new WebUI v2.2.1, you have to log out and log back in to reset your browser token information.
|
||||
{: .blue}
|
||||
|
||||
#### UE IPv6 Support
|
||||
- If the SMF receives Router Solicitation Message through UPF, it sends Router Advertisement Message to the UE through UPF.
|
||||
- If the UPF matches the IPv6 Prefix instead of Full IPv6 address, it forwards the packet to the UE. ([#808](https://github.com/open5gs/open5gs/issues/808)) -- [kbarlee](https://github.com/kbarlee), [byteburner](https://github.com/byteburner)
|
||||
|
||||
#### Enhancement
|
||||
- Adding API tokens to WebUI to improve security vulnerabilities ([#838](https://github.com/open5gs/open5gs/pull/838)) -- [rashley-iqt](https://github.com/rashley-iqt)
|
||||
|
||||
#### Bug Fixes
|
||||
- [AMF] Fixed a problem that occurs when the UE does not send S-NSSAI in UL NAS Transport message ([#845](https://github.com/open5gs/open5gs/issues/845)) -- [mcatalancid](https://github.com/mcatalancid)
|
||||
- [AMF] Fixed a problem that occurs when the UE does not send Request-NSSAI in Registration request([#844](https://github.com/open5gs/open5gs/issues/844)) -- [ggardikis](https://github.com/ggardikis)
|
||||
- [MME] Fixed the infinit loop related to Delete-Session-Request ([#568](https://github.com/open5gs/open5gs/issues/568)) -- [domgth](https://github.com/domgth)
|
||||
|
||||
|
||||
Download -- [v2.2.1.tar.gz](https://github.com/open5gs/open5gs/archive/v2.2.1.tar.gz)
|
||||
{: .notice--info}
|
93
docs/_posts/2021-04-09-release-v2.2.6.md
Normal file
93
docs/_posts/2021-04-09-release-v2.2.6.md
Normal file
@@ -0,0 +1,93 @@
|
||||
---
|
||||
title: "v2.2.6 - HSS Cx Added"
|
||||
date: 2021-04-09 21:15:00 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } .blue { color: blue; }</style>"
|
||||
---
|
||||
|
||||
#### New Features
|
||||
- [HSS] Cx Interface Added
|
||||
- [EPC] Added E-RABModificationIndication/E-RABModificationConfirm ([#834](https://github.com/open5gs/open5gs/issues/834)) -- [alf-askey](https://github.com/alf-askey)
|
||||
- [ALL] Advertising address for all SBI and GTP-U interfaces ([#825](https://github.com/open5gs/open5gs/issues/825)) -- [infinitydon](https://github.com/infinitydon)
|
||||
|
||||
#### Enhancement
|
||||
- [MME/AMF] Added SACK_DELAY_TIME in the AMF/MME configuration files ([#895](https://github.com/open5gs/open5gs/issues/895)) -- [RafalArciszewski](https://github.com/RafalArciszewski)
|
||||
- [DB] Updated Python Lib docs and script to migrate DB data to new format ([#889](https://github.com/open5gs/open5gs/pull/889)) -- [nickvsnetworking](https://github.com/nickvsnetworking)
|
||||
|
||||
#### Bug Fixes
|
||||
- [AMF] Fixed a crash when gNB with 40+ connected UE's disconnect ([#925](https://github.com/open5gs/open5gs/issues/925)) -- [Spectranis](https://github.com/Spectranis)
|
||||
- [WebUI] Fixed the installation script for solving the debian mongod dependency problem ([#915](https://github.com/open5gs/open5gs/issues/915)) -- [iman432](https://github.com/iman432)
|
||||
- [AMF] Fixed a crash for unknown timezone offset ([#914](https://github.com/open5gs/open5gs/issues/914)) -- [iman432](https://github.com/iman432)
|
||||
- [AMF] Always Include Allow NSSAI in Registration accept ([#910](https://github.com/open5gs/open5gs/issues/910)) -- [chliny2016](https://github.com/chliny2016)
|
||||
- [freeDiameter] A crash has been fixed when using a version prior to v2.2.3 ([#898](https://github.com/open5gs/open5gs/issues/898)) -- [Nour963](https://github.com/Nour963), [kbarlee](https://github.com/kbarlee)
|
||||
- [AMF] Fixed a crash when a lot of number simultaneous connections occur. ([#886](https://github.com/open5gs/open5gs/issues/886)) -- [dongzx666](https://github.com/dongzx666)
|
||||
- [MME/AMF] Fixed a bug when S-TMSI does not exist in InitialUEMessage ([#890](https://github.com/open5gs/open5gs/issues/890)) -- [chliny2016](https://github.com/chliny2016)
|
||||
- [MME] Fix an issue where Modify Bearer Request was not sent ([#885](https://github.com/open5gs/open5gs/issues/885)) -- [RafalArciszewski](https://github.com/RafalArciszewski)
|
||||
- [PFCP/GTP] Fix to be able to ignore unknown TLV type ([#871](https://github.com/open5gs/open5gs/issues/871)) -- [infinitydon](https://github.com/infinitydon)
|
||||
- [IMS] Fix the problem with managingg multiple calls ([#869](https://github.com/open5gs/open5gs/issues/869)) -- [ngvoice](https://github.com/ngvoice)
|
||||
- [AMF] Fix creating allowed-NSSAI ([#859](https://github.com/open5gs/open5gs/issues/859)) -- [AniketTiw](https://github.com/AniketTiw)
|
||||
- [5GC] When PDR is created without deleting session, there is a bug to create new PDR. ([#860](https://github.com/open5gs/open5gs/issues/860)) -- [kbarlee](https://github.com/kbarlee)
|
||||
- [NSSF] Add default NSI configuration for NSSF ([#859](https://github.com/open5gs/open5gs/issues/859)) -- [AniketTiw](https://github.com/AniketTiw)
|
||||
- [MME] Fixed the MME crash during HandoverCancel without Target eNB ([#855](https://github.com/open5gs/open5gs/issues/855)) -- [kuanghanqian](https://github.com/kuanghanqian)
|
||||
|
||||
#### IMPORTANT Using v2.2.x
|
||||
|
||||
- **DB Schema Changes:** If you are using an existing subscription DB, you should delete the existing DB. Then you can add a new subscription DB.
|
||||
{: .blue}
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
switched to db open5gs
|
||||
> db.subscribers.drop()
|
||||
true
|
||||
```
|
||||
|
||||
- **The New WebUI:** You have to log out using the old WebUI backend/frontend. Then, you can log back in again using the new WebUI backend/frontend.
|
||||
{: .blue}
|
||||
```
|
||||
$ git checkout v2.1.7
|
||||
$ cd webui
|
||||
$ rm -Rf ./node_modules
|
||||
$ npm ci --no-optional
|
||||
$ npm run dev
|
||||
|
||||
## You should log out
|
||||
|
||||
$ git checkout main
|
||||
$ cd webui
|
||||
$ rm -Rf ./node_modules
|
||||
$ npm ci --no-optional
|
||||
$ npm run dev
|
||||
|
||||
## You can log back in
|
||||
```
|
||||
|
||||
- freeDiameter version has changed from 1.3.2 to 1.5.0. If you want to compile the source code, you need to update meson subprojects as shown below.
|
||||
{: .blue}
|
||||
|
||||
```
|
||||
$ cd open5gs
|
||||
$ git pull
|
||||
$ meson subprojects update
|
||||
$ cd build
|
||||
$ ninja
|
||||
```
|
||||
|
||||
Or just use a clean github repository.
|
||||
|
||||
```
|
||||
$ rm -Rf open5gs
|
||||
$ git clone https://github.com/open5gs/open5gs
|
||||
$ cd open5gs
|
||||
$ meson build --prefix=`pwd`/install
|
||||
$ cd build
|
||||
$ ninja
|
||||
```
|
||||
|
||||
|
||||
Download -- [v2.2.6.tar.gz](https://github.com/open5gs/open5gs/archive/v2.2.6.tar.gz)
|
||||
{: .notice--info}
|
87
docs/_posts/2021-04-30-release-v2.2.7.md
Normal file
87
docs/_posts/2021-04-30-release-v2.2.7.md
Normal file
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: "v2.2.7 - Tested with 500 UEs simultaneous connection"
|
||||
date: 2021-04-30 14:29:00 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } .blue { color: blue; }</style>"
|
||||
---
|
||||
|
||||
#### Bug Fixes
|
||||
- [ALL] 500 UEs simultaneous connection test with [UERANSIM](https://github.com/aligungr/UERANSIM) ([#949](https://github.com/open5gs/open5gs/issues/949)) -- [chenhao5651](https://github.com/chenhao5651)
|
||||
- [MME] Fix the Invalid AMBR Unit ([#967](https://github.com/open5gs/open5gs/issues/967)) -- [matt9j](https://github.com/matt9j)
|
||||
- [PFCP] Fix the DNS delay during PFCP association ([#891](https://github.com/open5gs/open5gs/issues/891)) -- [DendoD96](https://github.com/DendoD96)
|
||||
- [Cx] Change the order of IMPUs sent in XML ([#921](https://github.com/open5gs/open5gs/issues/921)) -- [herlesupreeth](https://github.com/herlesupreeth)
|
||||
- [PFCP] Changed the PFCP RR selection method ([#953](https://github.com/open5gs/open5gs/issues/953)) -- [infinitydon](https://github.com/infinitydon)
|
||||
- [ALL] Changed the terminate sequence to avoid crash when an invalid IP address is configured ([#938](https://github.com/open5gs/open5gs/issues/938)) -- [myonlystarWang](https://github.com/myonlystarWang)
|
||||
- [Docker] Update WebUI version to latest ([#945](https://github.com/open5gs/open5gs/issues/945)) -- [rriggio](https://github.com/rriggio)
|
||||
|
||||
#### Enhancement
|
||||
- [MME/AMF] Retransmission on timer expiration for Registration accept / Attach accept
|
||||
- [MME/AMF] GUTI generation changed ([#910](https://github.com/open5gs/open5gs/issues/910)) -- [chliny2016](https://github.com/chliny2016)
|
||||
- [DB] Update open5gs-dbctl ([#940](https://github.com/open5gs/open5gs/pull/940)) -- [Spectranis](https://github.com/Spectranis)
|
||||
|
||||
#### New Features
|
||||
- [DB] Added DB migration script ([#956](https://github.com/open5gs/open5gs/pull/956), [#968](https://github.com/open5gs/open5gs/pull/968)) -- [matt9j](https://github.com/matt9j)
|
||||
- [AMF] Added RANConfigurationUpdate ([#943](https://github.com/open5gs/open5gs/issues/943)) -- [navidsol9](https://github.com/navidsol9)
|
||||
|
||||
|
||||
#### IMPORTANT Using v2.2.x
|
||||
|
||||
- **DB Schema Changes:** If you are using an existing subscription DB, you should delete the existing DB. Then you can add a new subscription DB.
|
||||
{: .blue}
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
switched to db open5gs
|
||||
> db.subscribers.drop()
|
||||
true
|
||||
```
|
||||
|
||||
- **The New WebUI:** You have to log out using the old WebUI backend/frontend. Then, you can log back in again using the new WebUI backend/frontend.
|
||||
{: .blue}
|
||||
```
|
||||
$ git checkout v2.1.7
|
||||
$ cd webui
|
||||
$ rm -Rf ./node_modules
|
||||
$ npm ci --no-optional
|
||||
$ npm run dev
|
||||
|
||||
## You should log out
|
||||
|
||||
$ git checkout main
|
||||
$ cd webui
|
||||
$ rm -Rf ./node_modules
|
||||
$ npm ci --no-optional
|
||||
$ npm run dev
|
||||
|
||||
## You can log back in
|
||||
```
|
||||
|
||||
- freeDiameter version has changed from 1.3.2 to 1.5.0. If you want to compile the source code, you need to update meson subprojects as shown below.
|
||||
{: .blue}
|
||||
|
||||
```
|
||||
$ cd open5gs
|
||||
$ git pull
|
||||
$ meson subprojects update
|
||||
$ cd build
|
||||
$ ninja
|
||||
```
|
||||
|
||||
Or just use a clean github repository.
|
||||
|
||||
```
|
||||
$ rm -Rf open5gs
|
||||
$ git clone https://github.com/open5gs/open5gs
|
||||
$ cd open5gs
|
||||
$ meson build --prefix=`pwd`/install
|
||||
$ cd build
|
||||
$ ninja
|
||||
```
|
||||
|
||||
|
||||
Download -- [v2.2.7.tar.gz](https://github.com/open5gs/open5gs/archive/v2.2.7.tar.gz)
|
||||
{: .notice--info}
|
83
docs/_posts/2021-05-09-release-v2.2.8.md
Normal file
83
docs/_posts/2021-05-09-release-v2.2.8.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
title: "v2.2.8 - Security Protection"
|
||||
date: 2021-05-09 11:27:00 +0900
|
||||
categories:
|
||||
- Release
|
||||
tags:
|
||||
- News
|
||||
- Release
|
||||
head_inline: "<style> ul { padding-bottom: 1em; } .blue { color: blue; }</style>"
|
||||
---
|
||||
|
||||
#### Bug Fixes
|
||||
- [AMF] Distinguish between Cleartext and Non-cleartext IEs ([#958](https://github.com/open5gs/open5gs/issues/958), [UERANSIM#316](https://github.com/aligungr/UERANSIM/issues/316)) -- [p1-bmu](https://github.com/p1-bmu), [aligungr](https://github.com/aligungr)
|
||||
- [AMF] Fix SBI convert error for ng_ap_cause ([UERANSIM#316](https://github.com/aligungr/UERANSIM/issues/316)) -- [aligungr](https://github.com/aligungr)
|
||||
- [AMF] Allocate ngKSI other than the value already used ([UERANSIM#316](https://github.com/aligungr/UERANSIM/issues/316)) -- [aligungr](https://github.com/aligungr)
|
||||
- [AMF] fix the UE-AMBR usage in NGAP message ([#979](https://github.com/open5gs/open5gs/issues/979)) -- [mcatalancid](https://github.com/mcatalancid)
|
||||
- [SMF/UPF] Add assertion for getprotobyname() error when decoding IPFilterRule ([#977](https://github.com/open5gs/open5gs/issues/977)) -- [herlesupreeth](https://github.com/herlesupreeth)
|
||||
- [MME/SGW-C] Fix the bug of encoding GTPv2 PLMN-ID ([#969](https://github.com/open5gs/open5gs/issues/969)) -- [gusbourg](https://github.com/gusbourg)
|
||||
- [MME] Fix the bug of encoding NAS AMBR ([#967](https://github.com/open5gs/open5gs/issues/967)) -- [matt9j](https://github.com/matt9j)
|
||||
- [AMF] Protetion of malformed NGAP message ([#960](https://github.com/open5gs/open5gs/issues/960)) -- [p1-bmu](https://github.com/p1-bmu)
|
||||
- [AMF] Protetion of malformed NAS message ([#959](https://github.com/open5gs/open5gs/issues/959)) -- [p1-bmu](https://github.com/p1-bmu)
|
||||
- [WebUI] fix the security flaw in default admin account ([#764](https://github.com/open5gs/open5gs/issues/764)) -- [martinzhou2015](https://github.com/martinzhou2015)
|
||||
|
||||
#### New Features
|
||||
- [OS] Support Alpine ([#957](https://github.com/open5gs/open5gs/pull/957), [#968](https://github.com/open5gs/open5gs/pull/968)) -- [venkatpilla](https://github.com/venkatpilla)
|
||||
|
||||
#### IMPORTANT Using v2.2.x
|
||||
|
||||
- **DB Schema Changes:** If you are using an existing subscription DB, you should delete the existing DB. Then you can add a new subscription DB.
|
||||
{: .blue}
|
||||
```
|
||||
$ mongo
|
||||
> use open5gs
|
||||
switched to db open5gs
|
||||
> db.subscribers.drop()
|
||||
true
|
||||
```
|
||||
|
||||
- **The New WebUI:** You have to log out using the old WebUI backend/frontend. Then, you can log back in again using the new WebUI backend/frontend.
|
||||
{: .blue}
|
||||
```
|
||||
$ git checkout v2.1.7
|
||||
$ cd webui
|
||||
$ rm -Rf ./node_modules
|
||||
$ npm ci --no-optional
|
||||
$ npm run dev
|
||||
|
||||
## You should log out
|
||||
|
||||
$ git checkout main
|
||||
$ cd webui
|
||||
$ rm -Rf ./node_modules
|
||||
$ npm ci --no-optional
|
||||
$ npm run dev
|
||||
|
||||
## You can log back in
|
||||
```
|
||||
|
||||
- freeDiameter version has changed from 1.3.2 to 1.5.0. If you want to compile the source code, you need to update meson subprojects as shown below.
|
||||
{: .blue}
|
||||
|
||||
```
|
||||
$ cd open5gs
|
||||
$ git pull
|
||||
$ meson subprojects update
|
||||
$ cd build
|
||||
$ ninja
|
||||
```
|
||||
|
||||
Or just use a clean github repository.
|
||||
|
||||
```
|
||||
$ rm -Rf open5gs
|
||||
$ git clone https://github.com/open5gs/open5gs
|
||||
$ cd open5gs
|
||||
$ meson build --prefix=`pwd`/install
|
||||
$ cd build
|
||||
$ ninja
|
||||
```
|
||||
|
||||
|
||||
Download -- [v2.2.8.tar.gz](https://github.com/open5gs/open5gs/archive/v2.2.8.tar.gz)
|
||||
{: .notice--info}
|
Binary file not shown.
Before Width: | Height: | Size: 300 KiB After Width: | Height: | Size: 326 KiB |
File diff suppressed because one or more lines are too long
BIN
docs/assets/images/subscriber_info_with_two_slice.png
Normal file
BIN
docs/assets/images/subscriber_info_with_two_slice.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
@@ -4,13 +4,13 @@
|
||||
#
|
||||
# Run as root or insert `sudo -E` before `bash`:
|
||||
#
|
||||
# curl -sL http://open5gs.org/static/setup_3.x | bash -
|
||||
# curl -fsSL https://open5gs.org/open5gs/assets/webui/install | sudo -E bash -
|
||||
# or
|
||||
# wget -qO- http://open5gs.org/static/setup_3.x | bash -
|
||||
# wget -qO- https://open5gs.org/open5gs/assets/webui/install | sudo -E bash -
|
||||
#
|
||||
|
||||
PACKAGE="open5gs"
|
||||
VERSION="2.0.0"
|
||||
VERSION="2.2.8"
|
||||
|
||||
print_status() {
|
||||
echo
|
||||
@@ -68,16 +68,28 @@ exec_cmd() {
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
exec_cmd_nobail "deb-systemd-invoke stop open5gs-webui"
|
||||
exec_cmd_nobail "systemctl disable open5gs-webui"
|
||||
exec_cmd_nobail "rm -f /lib/systemd/system/${PACKAGE}-webui.service"
|
||||
exec_cmd_nobail "systemctl daemon-reload"
|
||||
if [ -f /lib/systemd/system/${PACKAGE}-webui.service ]; then
|
||||
STATUS="$(systemctl is-active open5gs-webui.service)"
|
||||
if [ "${STATUS}" = "active" ]; then
|
||||
exec_cmd_nobail "deb-systemd-invoke stop open5gs-webui"
|
||||
fi
|
||||
|
||||
STATUS="$(systemctl is-enabled open5gs-webui.service)"
|
||||
if [ "${STATUS}" = "enabled" ]; then
|
||||
exec_cmd_nobail "systemctl disable open5gs-webui"
|
||||
fi
|
||||
|
||||
exec_cmd_nobail "rm -f /lib/systemd/system/${PACKAGE}-webui.service"
|
||||
exec_cmd_nobail "systemctl daemon-reload"
|
||||
fi
|
||||
|
||||
if [ -d /usr/lib/node_modules/${PACKAGE} ]; then
|
||||
exec_cmd_nobail "rm -rf /usr/lib/node_modules/${PACKAGE}"
|
||||
fi
|
||||
|
||||
exec_cmd "rm -rf ./${PACKAGE}-${VERSION}"
|
||||
exec_cmd "rm -rf /usr/lib/node_modules/${PACKAGE}"
|
||||
}
|
||||
|
||||
setup() {
|
||||
preinstall() {
|
||||
|
||||
PRE_INSTALL_PKGS=""
|
||||
|
||||
@@ -228,7 +240,7 @@ if [[ $RC != 0 ]]; then
|
||||
fi
|
||||
|
||||
print_status "Build the Open5GS WebUI..."
|
||||
exec_cmd "cd ./${PACKAGE}-${VERSION}/webui && npm install && npm run build"
|
||||
exec_cmd "cd ./${PACKAGE}-${VERSION}/webui && npm ci --no-optional && npm run build"
|
||||
|
||||
print_status "Install the Open5GS WebUI..."
|
||||
exec_cmd "mv ./${PACKAGE}-${VERSION}/webui /usr/lib/node_modules/${PACKAGE}"
|
||||
@@ -237,8 +249,7 @@ exec_cmd_nobail "chown -R open5gs:open5gs /usr/lib/node_modules/${PACKAGE}"
|
||||
exec_cmd "cat << EOF > /lib/systemd/system/open5gs-webui.service
|
||||
[Unit]
|
||||
Description=Open5GS WebUI
|
||||
BindTo=mongodb.service
|
||||
After=networking.service mongodb.service
|
||||
Wants=mongodb.service mongod.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
@@ -260,6 +271,23 @@ exec_cmd "deb-systemd-invoke start open5gs-webui"
|
||||
exec_cmd "rm -rf ./${PACKAGE}-${VERSION}"
|
||||
}
|
||||
|
||||
postinstall() {
|
||||
|
||||
print_status "Default Administrator Account [Username:admin, Password:1423]..."
|
||||
|
||||
exec_cmd "cat << EOF > ./account.js
|
||||
db = db.getSiblingDB('open5gs')
|
||||
cursor = db.accounts.find()
|
||||
if ( cursor.count() == 0 ) {
|
||||
db.accounts.insert({ salt: 'f5c15fa72622d62b6b790aa8569b9339729801ab8bda5d13997b5db6bfc1d997', hash: '402223057db5194899d2e082aeb0802f6794622e1cbc47529c419e5a603f2cc592074b4f3323b239ffa594c8b756d5c70a4e1f6ecd3f9f0d2d7328c4cf8b1b766514effff0350a90b89e21eac54cd4497a169c0c7554a0e2cd9b672e5414c323f76b8559bc768cba11cad2ea3ae704fb36abc8abc2619231ff84ded60063c6e1554a9777a4a464ef9cfdfa90ecfdacc9844e0e3b2f91b59d9ff024aec4ea1f51b703a31cda9afb1cc2c719a09cee4f9852ba3cf9f07159b1ccf8133924f74df770b1a391c19e8d67ffdcbbef4084a3277e93f55ac60d80338172b2a7b3f29cfe8a36738681794f7ccbe9bc98f8cdeded02f8a4cd0d4b54e1d6ba3d11792ee0ae8801213691848e9c5338e39485816bb0f734b775ac89f454ef90992003511aa8cceed58a3ac2c3814f14afaaed39cbaf4e2719d7213f81665564eec02f60ede838212555873ef742f6666cc66883dcb8281715d5c762fb236d72b770257e7e8d86c122bb69028a34cf1ed93bb973b440fa89a23604cd3fefe85fbd7f55c9b71acf6ad167228c79513f5cfe899a2e2cc498feb6d2d2f07354a17ba74cecfbda3e87d57b147e17dcc7f4c52b802a8e77f28d255a6712dcdc1519e6ac9ec593270bfcf4c395e2531a271a841b1adefb8516a07136b0de47c7fd534601b16f0f7a98f1dbd31795feb97da59e1d23c08461cf37d6f2877d0f2e437f07e25015960f63', username: 'admin', roles: [ 'admin' ], "__v" : 0})
|
||||
}
|
||||
EOF"
|
||||
exec_cmd "mongo open5gs ./account.js"
|
||||
exec_cmd "rm -f ./account.js"
|
||||
}
|
||||
|
||||
## Defer setup until we have the complete script
|
||||
setup
|
||||
uninstall
|
||||
preinstall
|
||||
install
|
||||
postinstall
|
||||
|
@@ -4,9 +4,9 @@
|
||||
#
|
||||
# Run as root or insert `sudo -E` before `bash`:
|
||||
#
|
||||
# curl -sL http://open5gs.org/static/uninstall_webui.sh | bash -
|
||||
# curl -fsSL https://open5gs.org/open5gs/assets/webui/uninstall | sudo -E bash -
|
||||
# or
|
||||
# wget -qO- http://open5gs.org/static/uninstall_webui.shx | bash -
|
||||
# wget -qO- https://open5gs.org/open5gs/assets/webui/uninstall | sudo -E bash -
|
||||
#
|
||||
|
||||
exec_cmd_nobail() {
|
||||
|
@@ -78,6 +78,9 @@ void ausf_terminate(void);
|
||||
int pcf_initialize(void);
|
||||
void pcf_terminate(void);
|
||||
|
||||
int nssf_initialize(void);
|
||||
void nssf_terminate(void);
|
||||
|
||||
int upf_initialize(void);
|
||||
void upf_terminate(void);
|
||||
|
||||
|
@@ -71,9 +71,12 @@ static void recalculate_pool_size(void)
|
||||
|
||||
#define MAX_NUM_OF_TIMER 16
|
||||
self.pool.timer = self.max.ue * MAX_NUM_OF_TIMER;
|
||||
self.pool.message = self.max.ue;
|
||||
self.pool.event = self.max.ue;
|
||||
|
||||
self.pool.packet = self.max.ue * OGS_MAX_NUM_OF_PACKET_BUFFER;
|
||||
|
||||
self.pool.nf = self.max.gnb;
|
||||
self.pool.packet = self.max.ue * OGS_MAX_NUM_OF_PACKET_BUFFER;
|
||||
|
||||
#define MAX_NUM_OF_SOCKET 4 /* Num of socket per NF */
|
||||
self.pool.socket = self.pool.nf * MAX_NUM_OF_SOCKET;
|
||||
@@ -86,17 +89,17 @@ static void recalculate_pool_size(void)
|
||||
self.pool.pfcp_node = self.pool.nf;
|
||||
|
||||
#define MAX_NUM_OF_NF_SERVICE 16 /* Num of NF Service per NF Instance */
|
||||
#define MAX_NUM_OF_SBI_MESSAGE 8 /* Num of HTTP(s) Request/Response per NF */
|
||||
#define MAX_NUM_OF_SBI_MESSAGE 4 /* Num of HTTP(s) Request/Response per NF */
|
||||
#define MAX_NUM_OF_NF_SUBSCRIPTION 4 /* Num of Subscription per NF */
|
||||
self.pool.nf_service = self.pool.nf * MAX_NUM_OF_NF_SERVICE;
|
||||
self.pool.sbi_message = self.pool.nf * MAX_NUM_OF_SBI_MESSAGE;
|
||||
self.pool.nf_subscription = self.pool.nf * MAX_NUM_OF_NF_SUBSCRIPTION;
|
||||
|
||||
#define MAX_EVENT_POOL 32
|
||||
self.pool.event = MAX_EVENT_POOL;
|
||||
|
||||
#define MAX_CSMAP_POOL 128
|
||||
self.pool.csmap = MAX_CSMAP_POOL; /* Num of TAI-LAI Mapping Table */
|
||||
|
||||
#define MAX_NUM_OF_IMPU 8
|
||||
self.pool.impi = self.max.ue;
|
||||
self.pool.impu = self.pool.impi * MAX_NUM_OF_IMPU;
|
||||
}
|
||||
|
||||
static void regenerate_all_timer_duration(void)
|
||||
@@ -173,6 +176,18 @@ static void app_context_prepare(void)
|
||||
#define USRSCTP_LOCAL_UDP_PORT 9899
|
||||
self.usrsctp.udp_port = USRSCTP_LOCAL_UDP_PORT;
|
||||
|
||||
self.sctp.heartbit_interval = 5000; /* 5 seconds */
|
||||
self.sctp.sack_delay = 200; /* 200 ms */
|
||||
self.sctp.rto_initial = 3000; /* 3 seconds */
|
||||
self.sctp.rto_min = 1000; /* 1 seconds */
|
||||
self.sctp.rto_max = 5000; /* 5 seconds */
|
||||
self.sctp.max_num_of_ostreams = OGS_DEFAULT_SCTP_MAX_NUM_OF_OSTREAMS;
|
||||
self.sctp.max_num_of_istreams = 65535;
|
||||
self.sctp.max_attempts = 4;
|
||||
self.sctp.max_initial_timeout = 8000; /* 8 seconds */
|
||||
|
||||
self.sockopt.no_delay = true;
|
||||
|
||||
#define MAX_NUM_OF_UE 1024 /* Num of UE per AMF/MME */
|
||||
#define MAX_NUM_OF_GNB 32 /* Num of gNB per AMF/MME */
|
||||
|
||||
@@ -314,6 +329,9 @@ int ogs_app_context_parse_config(void)
|
||||
} else if (!strcmp(parameter_key, "no_pcf")) {
|
||||
self.parameter.no_pcf =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
} else if (!strcmp(parameter_key, "no_nssf")) {
|
||||
self.parameter.no_nssf =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
} else if (!strcmp(parameter_key, "no_udr")) {
|
||||
self.parameter.no_udr =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
@@ -329,9 +347,6 @@ int ogs_app_context_parse_config(void)
|
||||
} else if (!strcmp(parameter_key, "multicast")) {
|
||||
self.parameter.multicast =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
} else if (!strcmp(parameter_key, "no_slaac")) {
|
||||
self.parameter.no_slaac =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
} else if (!strcmp(parameter_key, "use_openair")) {
|
||||
self.parameter.use_openair =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
@@ -339,9 +354,28 @@ int ogs_app_context_parse_config(void)
|
||||
parameter_key, "no_ipv4v6_local_addr_in_packet_filter")) {
|
||||
self.parameter.no_ipv4v6_local_addr_in_packet_filter =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
} else if (!strcmp(parameter_key, "no_pfcp_rr_select")) {
|
||||
self.parameter.no_pfcp_rr_select =
|
||||
ogs_yaml_iter_bool(¶meter_iter);
|
||||
} else
|
||||
ogs_warn("unknown key `%s`", parameter_key);
|
||||
}
|
||||
} else if (!strcmp(root_key, "sockopt")) {
|
||||
ogs_yaml_iter_t sockopt_iter;
|
||||
ogs_yaml_iter_recurse(&root_iter, &sockopt_iter);
|
||||
while (ogs_yaml_iter_next(&sockopt_iter)) {
|
||||
const char *sockopt_key = ogs_yaml_iter_key(&sockopt_iter);
|
||||
ogs_assert(sockopt_key);
|
||||
if (!strcmp(sockopt_key, "no_delay")) {
|
||||
self.sockopt.no_delay =
|
||||
ogs_yaml_iter_bool(&sockopt_iter);
|
||||
} else if (!strcmp(sockopt_key, "linger")) {
|
||||
const char *v = ogs_yaml_iter_value(&sockopt_iter);
|
||||
if (v) self.sockopt.l_linger = atoi(v);
|
||||
self.sockopt.l_onoff = true;
|
||||
} else
|
||||
ogs_warn("unknown key `%s`", sockopt_key);
|
||||
}
|
||||
} else if (!strcmp(root_key, "sctp")) {
|
||||
ogs_yaml_iter_t sctp_iter;
|
||||
ogs_yaml_iter_recurse(&root_iter, &sctp_iter);
|
||||
@@ -350,31 +384,34 @@ int ogs_app_context_parse_config(void)
|
||||
ogs_assert(sctp_key);
|
||||
if (!strcmp(sctp_key, "heartbit_interval")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v) self.sockopt.sctp.heartbit_interval = atoi(v);
|
||||
if (v) self.sctp.heartbit_interval = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "sack_delay")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v) self.sctp.sack_delay = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "rto_initial")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v) self.sockopt.sctp.rto_initial = atoi(v);
|
||||
if (v) self.sctp.rto_initial = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "rto_min")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v) self.sockopt.sctp.rto_min = atoi(v);
|
||||
if (v) self.sctp.rto_min = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "rto_max")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v) self.sockopt.sctp.rto_max = atoi(v);
|
||||
if (v) self.sctp.rto_max = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "max_num_of_ostreams")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v)
|
||||
self.sockopt.sctp.max_num_of_ostreams = atoi(v);
|
||||
self.sctp.max_num_of_ostreams = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "max_num_of_istreams")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v)
|
||||
self.sockopt.sctp.max_num_of_istreams = atoi(v);
|
||||
self.sctp.max_num_of_istreams = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "max_attempts")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v) self.sockopt.sctp.max_attempts = atoi(v);
|
||||
if (v) self.sctp.max_attempts = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "max_initial_timeout")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v)
|
||||
self.sockopt.sctp.max_initial_timeout = atoi(v);
|
||||
self.sctp.max_initial_timeout = atoi(v);
|
||||
} else if (!strcmp(sctp_key, "usrsctp_udp_port")) {
|
||||
const char *v = ogs_yaml_iter_value(&sctp_iter);
|
||||
if (v) self.usrsctp.udp_port = atoi(v);
|
||||
|
@@ -63,6 +63,7 @@ typedef struct ogs_app_context_s {
|
||||
int no_ausf;
|
||||
int no_udm;
|
||||
int no_pcf;
|
||||
int no_nssf;
|
||||
int no_udr;
|
||||
int no_nrf;
|
||||
|
||||
@@ -71,13 +72,31 @@ typedef struct ogs_app_context_s {
|
||||
int no_ipv6;
|
||||
int prefer_ipv4;
|
||||
int multicast;
|
||||
int no_slaac;
|
||||
|
||||
int use_openair;
|
||||
int no_ipv4v6_local_addr_in_packet_filter;
|
||||
|
||||
int no_pfcp_rr_select;
|
||||
} parameter;
|
||||
|
||||
ogs_sockopt_t sockopt;
|
||||
struct {
|
||||
int no_delay;
|
||||
int l_onoff;
|
||||
int l_linger;
|
||||
} sockopt;
|
||||
|
||||
struct {
|
||||
int heartbit_interval;
|
||||
int sack_delay;
|
||||
int rto_initial;
|
||||
int rto_min;
|
||||
int rto_max;
|
||||
int max_num_of_ostreams;
|
||||
int max_num_of_istreams;
|
||||
int max_attempts;
|
||||
int max_initial_timeout;
|
||||
} sctp;
|
||||
|
||||
struct {
|
||||
int udp_port;
|
||||
} usrsctp;
|
||||
@@ -98,17 +117,21 @@ typedef struct ogs_app_context_s {
|
||||
uint64_t tunnel;
|
||||
uint64_t nf_service;
|
||||
uint64_t nf_subscription;
|
||||
uint64_t sbi_message;
|
||||
|
||||
uint64_t csmap;
|
||||
|
||||
uint64_t message;
|
||||
uint64_t event;
|
||||
uint64_t timer;
|
||||
|
||||
uint64_t socket;
|
||||
uint64_t gtp_xact;
|
||||
uint64_t gtp_node;
|
||||
uint64_t pfcp_xact;
|
||||
uint64_t pfcp_node;
|
||||
|
||||
uint64_t impi;
|
||||
uint64_t impu;
|
||||
} pool;
|
||||
|
||||
struct {
|
||||
|
@@ -245,7 +245,6 @@ libcore_sources = files('''
|
||||
ogs-socknode.h
|
||||
ogs-udp.h
|
||||
ogs-tcp.h
|
||||
ogs-tun.h
|
||||
ogs-queue.h
|
||||
ogs-poll.h
|
||||
ogs-notify.h
|
||||
@@ -280,7 +279,6 @@ libcore_sources = files('''
|
||||
ogs-socknode.c
|
||||
ogs-udp.c
|
||||
ogs-tcp.c
|
||||
ogs-tun.c
|
||||
ogs-queue.c
|
||||
ogs-select.c
|
||||
ogs-poll.c
|
||||
|
@@ -473,12 +473,104 @@ char *ogs_ipv6_to_string(uint8_t *addr6)
|
||||
return (char *)OGS_INET6_NTOP(addr6, buf);
|
||||
}
|
||||
|
||||
int ogs_sockaddr_to_user_plane_ip_resource_info(
|
||||
ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
|
||||
ogs_user_plane_ip_resource_info_t *info)
|
||||
{
|
||||
ogs_assert(addr || addr6);
|
||||
ogs_assert(info);
|
||||
|
||||
if (addr) {
|
||||
info->v4 = 1;
|
||||
info->addr = addr->sin.sin_addr.s_addr;
|
||||
}
|
||||
if (addr6) {
|
||||
info->v6 = 1;
|
||||
memcpy(info->addr6, addr6->sin6.sin6_addr.s6_addr, OGS_IPV6_LEN);
|
||||
}
|
||||
|
||||
return OGS_OK;
|
||||
}
|
||||
|
||||
int ogs_user_plane_ip_resource_info_to_sockaddr(
|
||||
ogs_user_plane_ip_resource_info_t *info,
|
||||
ogs_sockaddr_t **addr, ogs_sockaddr_t **addr6)
|
||||
{
|
||||
ogs_assert(addr && addr6);
|
||||
ogs_assert(info);
|
||||
|
||||
*addr = NULL;
|
||||
*addr6 = NULL;
|
||||
|
||||
if (info->v4) {
|
||||
*addr = ogs_calloc(1, sizeof(**addr));
|
||||
ogs_assert(*addr);
|
||||
(*addr)->sin.sin_addr.s_addr = info->addr;
|
||||
(*addr)->ogs_sa_family = AF_INET;
|
||||
}
|
||||
|
||||
if (info->v6) {
|
||||
*addr6 = ogs_calloc(1, sizeof(**addr6));
|
||||
ogs_assert(*addr6);
|
||||
memcpy((*addr6)->sin6.sin6_addr.s6_addr, info->addr6, OGS_IPV6_LEN);
|
||||
(*addr6)->ogs_sa_family = AF_INET6;
|
||||
}
|
||||
|
||||
return OGS_OK;
|
||||
}
|
||||
|
||||
ogs_slice_data_t *ogs_slice_find_by_s_nssai(
|
||||
ogs_slice_data_t *slice_data, int num_of_slice_data,
|
||||
ogs_s_nssai_t *s_nssai)
|
||||
{
|
||||
int i;
|
||||
|
||||
ogs_assert(slice_data);
|
||||
ogs_assert(num_of_slice_data);
|
||||
ogs_assert(s_nssai);
|
||||
|
||||
/* Compare S-NSSAI */
|
||||
for (i = 0; i < num_of_slice_data; i++) {
|
||||
if (s_nssai->sst == slice_data[i].s_nssai.sst &&
|
||||
s_nssai->sd.v == slice_data[i].s_nssai.sd.v) {
|
||||
return slice_data + i;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ogs_subscription_data_free(ogs_subscription_data_t *subscription_data)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
ogs_assert(subscription_data);
|
||||
|
||||
for (i = 0; i < subscription_data->num_of_slice; i++) {
|
||||
ogs_slice_data_t *slice_data = &subscription_data->slice[i];
|
||||
|
||||
for (j = 0; j < slice_data->num_of_session; j++) {
|
||||
if (slice_data->session[j].name)
|
||||
ogs_free(slice_data->session[j].name);
|
||||
}
|
||||
|
||||
slice_data->num_of_session = 0;
|
||||
}
|
||||
|
||||
subscription_data->num_of_slice = 0;
|
||||
|
||||
subscription_data->num_of_msisdn = 0;
|
||||
}
|
||||
|
||||
void ogs_session_data_free(ogs_session_data_t *session_data)
|
||||
{
|
||||
int i;
|
||||
|
||||
ogs_assert(session_data);
|
||||
|
||||
if (session_data->session.name)
|
||||
ogs_free(session_data->session.name);
|
||||
|
||||
for (i = 0; i < session_data->num_of_pcc_rule; i++)
|
||||
OGS_PCC_RULE_FREE(&session_data->pcc_rule[i]);
|
||||
}
|
||||
|
@@ -37,6 +37,8 @@ extern "C" {
|
||||
/* Num of PacketFilter per Bearer(GTP) or QoS(NAS-5GS) */
|
||||
#define OGS_MAX_NUM_OF_PACKET_FILTER 16
|
||||
|
||||
#define OGS_MAX_NUM_OF_GTPU_RESOURCE 4
|
||||
|
||||
#define OGS_MAX_SDU_LEN 8192
|
||||
#define OGS_MAX_PKT_LEN 2048
|
||||
#define OGS_PLMN_ID_LEN 3
|
||||
@@ -88,6 +90,8 @@ extern "C" {
|
||||
|
||||
#define OGS_MAX_QOS_FLOW_ID 63
|
||||
|
||||
#define OGS_DEFAULT_SCTP_MAX_NUM_OF_OSTREAMS 30
|
||||
|
||||
/************************************
|
||||
* PLMN_ID Structure */
|
||||
#define OGS_MAX_NUM_OF_PLMN 6
|
||||
@@ -178,13 +182,11 @@ typedef struct ogs_nr_cgi_s {
|
||||
|
||||
/************************************
|
||||
* S-NSSAI Structure */
|
||||
#define OGS_MAX_NUM_OF_S_NSSAI 16
|
||||
#define OGS_MAX_NUM_OF_SLICE 8
|
||||
#define OGS_S_NSSAI_NO_SD_VALUE 0xffffff
|
||||
typedef struct ogs_s_nssai_s {
|
||||
uint8_t sst;
|
||||
ogs_uint24_t sd;
|
||||
uint8_t mapped_hplmn_sst;
|
||||
ogs_uint24_t mapped_hplmn_sd;
|
||||
} __attribute__ ((packed)) ogs_s_nssai_t;
|
||||
|
||||
char *ogs_s_nssai_sd_to_string(ogs_uint24_t sd);
|
||||
@@ -194,9 +196,10 @@ ogs_uint24_t ogs_s_nssai_sd_from_string(const char *hex);
|
||||
* Common Structure
|
||||
* S1AP : 9.2.2.1 Transport Layer Address, See 36.414
|
||||
* GTP : 8.22 Fully Qualified TEID (F-TEID) */
|
||||
#define OGS_IPV4_LEN 4
|
||||
#define OGS_IPV6_LEN 16
|
||||
#define OGS_IPV4V6_LEN 20
|
||||
#define OGS_IPV4_LEN 4
|
||||
#define OGS_IPV6_LEN 16
|
||||
#define OGS_IPV6_DEFAULT_PREFIX_LEN 64
|
||||
#define OGS_IPV4V6_LEN 20
|
||||
typedef struct ogs_ip_s {
|
||||
uint32_t addr;
|
||||
uint8_t addr6[OGS_IPV6_LEN];
|
||||
@@ -220,26 +223,17 @@ char *ogs_ipv6_to_string(uint8_t *addr6);
|
||||
typedef struct ogs_paa_s {
|
||||
ED2(uint8_t spare:5;,
|
||||
/* 8.34 PDN Type */
|
||||
#define OGS_GTP_PDN_TYPE_IPV4 OGS_PDU_SESSION_TYPE_IPV4
|
||||
#define OGS_GTP_PDN_TYPE_IPV6 OGS_PDU_SESSION_TYPE_IPV6
|
||||
#define OGS_GTP_PDN_TYPE_IPV4V6 OGS_PDU_SESSION_TYPE_IPV4V6
|
||||
#define OGS_GTP_PDN_TYPE_NON_IP OGS_PDU_SESSION_TYPE_NONIP
|
||||
#define OGS_PFCP_PDN_TYPE_IPV4 OGS_PDU_SESSION_TYPE_IPV4
|
||||
#define OGS_PFCP_PDN_TYPE_IPV6 OGS_PDU_SESSION_TYPE_IPV6
|
||||
#define OGS_PFCP_PDN_TYPE_IPV4V6 OGS_PDU_SESSION_TYPE_IPV4V6
|
||||
#define OGS_PFCP_PDN_TYPE_NONIP OGS_PDU_SESSION_TYPE_NONIP
|
||||
#define OGS_PDU_SESSION_TYPE_IS_VALID(x) \
|
||||
((x) == OGS_PDU_SESSION_TYPE_IPV4 || \
|
||||
(x) == OGS_PDU_SESSION_TYPE_IPV6 || \
|
||||
(x) == OGS_PDU_SESSION_TYPE_IPV4V6) \
|
||||
|
||||
#define OGS_GTP_PDN_TYPE_IS_VALID(x) \
|
||||
((x) == OGS_GTP_PDN_TYPE_IPV4 || \
|
||||
(x) == OGS_GTP_PDN_TYPE_IPV6 || \
|
||||
(x) == OGS_GTP_PDN_TYPE_IPV4V6) \
|
||||
|
||||
uint8_t pdn_type:3;)
|
||||
uint8_t session_type:3;)
|
||||
union {
|
||||
/* GTP_PDN_TYPE_IPV4 */
|
||||
/* PDU_SESSION_TYPE_IPV4 */
|
||||
uint32_t addr;
|
||||
|
||||
/* GTP_PDN_TYPE_IPV6 */
|
||||
/* PDU_SESSION_TYPE_IPV6 */
|
||||
struct {
|
||||
/* the IPv6 Prefix Length */
|
||||
uint8_t len;
|
||||
@@ -247,7 +241,7 @@ ED2(uint8_t spare:5;,
|
||||
uint8_t addr6[OGS_IPV6_LEN];
|
||||
};
|
||||
|
||||
/* GTP_PDN_TYPE_BOTH */
|
||||
/* PDU_SESSION_TYPE_IPV4V6 */
|
||||
struct {
|
||||
struct {
|
||||
/* the IPv6 Prefix Length */
|
||||
@@ -270,20 +264,10 @@ typedef struct ogs_bitrate_s {
|
||||
/**********************************
|
||||
* QoS Structure */
|
||||
typedef struct ogs_qos_s {
|
||||
#define OGS_PDN_QCI_1 1
|
||||
#define OGS_PDN_QCI_2 2
|
||||
#define OGS_PDN_QCI_3 3
|
||||
#define OGS_PDN_QCI_4 4
|
||||
#define OGS_PDN_QCI_5 5
|
||||
#define OGS_PDN_QCI_6 6
|
||||
#define OGS_PDN_QCI_7 7
|
||||
#define OGS_PDN_QCI_8 8
|
||||
#define OGS_PDN_QCI_9 9
|
||||
#define OGS_PDN_QCI_65 65
|
||||
#define OGS_PDN_QCI_66 66
|
||||
#define OGS_PDN_QCI_69 69
|
||||
#define OGS_PDN_QCI_70 70
|
||||
uint8_t qci;
|
||||
#define OGS_QOS_INDEX_1 1
|
||||
#define OGS_QOS_INDEX_2 2
|
||||
#define OGS_QOS_INDEX_5 5
|
||||
uint8_t index;
|
||||
|
||||
struct {
|
||||
/* Values 1 to 8 should only be assigned for services that are
|
||||
@@ -291,12 +275,27 @@ typedef struct ogs_qos_s {
|
||||
* Values 9 to 15 may be assigned to resources that are authorized
|
||||
* by the home network and thus applicable when a UE is roaming. */
|
||||
uint8_t priority_level;
|
||||
/*
|
||||
* Ch 7.3.40 Allocation-Retenion-Proirty in TS 29.272 V15.9.0
|
||||
*
|
||||
* If the Pre-emption-Capability AVP is not present in the
|
||||
* Allocation-Retention-Priority AVP, the default value shall be
|
||||
* PRE-EMPTION_CAPABILITY_DISABLED (1).
|
||||
*
|
||||
* If the Pre-emption-Vulnerability AVP is not present in the
|
||||
* Allocation-Retention-Priority AVP, the default value shall be
|
||||
* PRE-EMPTION_VULNERABILITY_ENABLED (0).
|
||||
*
|
||||
* However, to easily set up VoLTE service,
|
||||
* enable Pre-emption Capability/Vulnerablility
|
||||
* in Default Bearer
|
||||
*/
|
||||
#define OGS_EPC_PRE_EMPTION_DISABLED 1
|
||||
#define OGS_EPC_PRE_EMPTION_ENABLED 0
|
||||
|
||||
#define OGS_PDN_PRE_EMPTION_CAPABILITY_ENABLED 0
|
||||
#define OGS_PDN_PRE_EMPTION_CAPABILITY_DISABLED 1
|
||||
#define OGS_5GC_PRE_EMPTION_DISABLED 1
|
||||
#define OGS_5GC_PRE_EMPTION_ENABLED 2
|
||||
uint8_t pre_emption_capability;
|
||||
#define OGS_PDN_PRE_EMPTION_VULNERABILITY_ENABLED 0
|
||||
#define OGS_PDN_PRE_EMPTION_VULNERABILITY_DISABLED 1
|
||||
uint8_t pre_emption_vulnerability;
|
||||
} arp;
|
||||
|
||||
@@ -394,22 +393,21 @@ typedef struct ogs_pcc_rule_s {
|
||||
|
||||
/**********************************
|
||||
* PDN Structure */
|
||||
typedef struct ogs_pdn_s {
|
||||
uint32_t context_identifier;
|
||||
union {
|
||||
char apn[OGS_MAX_APN_LEN+1];
|
||||
char dnn[OGS_MAX_DNN_LEN+1];
|
||||
};
|
||||
#define OGS_DIAM_PDN_TYPE_IPV4 0
|
||||
#define OGS_DIAM_PDN_TYPE_IPV6 1
|
||||
#define OGS_DIAM_PDN_TYPE_IPV4V6 2
|
||||
#define OGS_DIAM_PDN_TYPE_IPV4_OR_IPV6 3
|
||||
typedef struct ogs_session_s {
|
||||
char *name;
|
||||
|
||||
uint32_t context_identifier; /* EPC */
|
||||
bool default_dnn_indicator; /* 5GC */
|
||||
|
||||
#define OGS_PDU_SESSION_TYPE_IPV4 1
|
||||
#define OGS_PDU_SESSION_TYPE_IPV6 2
|
||||
#define OGS_PDU_SESSION_TYPE_IPV4V6 3
|
||||
#define OGS_PDU_SESSION_TYPE_UNSTRUCTURED 4
|
||||
#define OGS_PDU_SESSION_TYPE_ETHERNET 5
|
||||
uint8_t pdn_type;
|
||||
|
||||
#define OGS_PDU_SESSION_TYPE_TO_DIAMETER(x) ((x)-1)
|
||||
#define OGS_PDU_SESSION_TYPE_FROM_DIAMETER(x) ((x)+1)
|
||||
uint8_t session_type;
|
||||
|
||||
#define OGS_SSC_MODE_1 1
|
||||
#define OGS_SSC_MODE_2 2
|
||||
@@ -421,8 +419,8 @@ typedef struct ogs_pdn_s {
|
||||
|
||||
ogs_paa_t paa;
|
||||
ogs_ip_t ue_ip;
|
||||
ogs_ip_t pgw_ip;
|
||||
} ogs_pdn_t;
|
||||
ogs_ip_t smf_ip;
|
||||
} ogs_session_t;
|
||||
|
||||
int ogs_fqdn_build(char *dst, char *src, int len);
|
||||
int ogs_fqdn_parse(char *dst, char *src, int len);
|
||||
@@ -478,6 +476,109 @@ ED3(uint8_t ext:1;,
|
||||
int ogs_pco_parse(ogs_pco_t *pco, unsigned char *data, int data_len);
|
||||
int ogs_pco_build(unsigned char *data, int data_len, ogs_pco_t *pco);
|
||||
|
||||
/*
|
||||
* PFCP Specification
|
||||
*
|
||||
* TS29.244, Ch 8.2.82 User Plane IP Resource Information
|
||||
*
|
||||
* The following flags are coded within Octet 5:
|
||||
* - Bit 1 – V4: If this bit is set to "1", then the IPv4 address field
|
||||
* shall be present, otherwise the IPv4 address field shall not be present.
|
||||
* - Bit 2 – V6: If this bit is set to "1", then the IPv6 address field
|
||||
* shall be present, otherwise the IPv6 address field shall not be present.
|
||||
* - Bit 3-5 – TEID Range Indication (TEIDRI): the value of this field
|
||||
* indicates the number of bits in the most significant octet of a TEID
|
||||
* that are used to partition the TEID range,
|
||||
* e.g. if this field is set to "4", then the first 4 bits in the TEID
|
||||
* are used to partition the TEID range.
|
||||
* - Bit 6 – Associated Network Instance (ASSONI): if this bit is set to "1",
|
||||
* then the Network Instance field shall be present, otherwise the Network
|
||||
* Instance field shall not be present.
|
||||
* - Bit 7 – Associated Source Interface (ASSOSI): if this bit is set to "1",
|
||||
* then the Source Interface field shall be present,
|
||||
* otherwise the Source Interface field shall not be present.
|
||||
* - Bit 8: Spare, for future use and set to 0.
|
||||
*
|
||||
* At least one of the V4 and V6 flags shall be set to "1",
|
||||
* and both may be set to "1".
|
||||
*
|
||||
* If both the ASSONI and ASSOSI flags are set to "0", this shall indicate
|
||||
* that the User Plane IP Resource Information provided can be used
|
||||
* by CP function for any Network Instance and any Source Interface
|
||||
* of GTP-U user plane in the UP function. Octet 6 (TEID Range) shall be
|
||||
* present if the TEID Range Indication is not set to zero and
|
||||
* shall contain a value of the bits which are used to partition the TEID range.
|
||||
* E.g. if the TEID Range Indication is set to "4", then Octet 6 shall be
|
||||
* one of values between 0 and 15. When TEID Range Indication is set to zero,
|
||||
* the Octet 6 shall not be present, the TEID is not partitioned,
|
||||
* i.e. all TEID values are available for use by the CP function.
|
||||
*
|
||||
* Octets "m to (m+3)" and/or "p to (p+15)" (IPv4 address / IPv6 address fields)
|
||||
* , if present, shall contain the respective IP address values.
|
||||
*
|
||||
* Octets "k to l", if present, shall contain a Network Instance value
|
||||
* as encoded in octet "5 to n+4" of the Figure 8.2.4-1 in clause 8.2.4,
|
||||
* identifying a Network Instance with which the IP address or TEID Range
|
||||
* is associated.
|
||||
*
|
||||
* Octet r, if present, shall contain a Source Interface value as encoded
|
||||
* in octet 5 of the Figure 8.2.2-1 in clause 8.2.2,
|
||||
* identifying the Source Interface with which the IP address or TEID Range
|
||||
* is associated.
|
||||
*/
|
||||
|
||||
/* Flags(1) + TEID Range(1) + IPV4(4) + IPV6(16) + Source Interface(1) = 23 */
|
||||
#define OGS_MAX_USER_PLANE_IP_RESOURCE_INFO_LEN \
|
||||
(23 + OGS_MAX_APN_LEN)
|
||||
typedef struct ogs_user_plane_ip_resource_info_s {
|
||||
union {
|
||||
struct {
|
||||
ED6(uint8_t spare:1;,
|
||||
uint8_t assosi:1;,
|
||||
uint8_t assoni:1;,
|
||||
uint8_t teidri:3;,
|
||||
uint8_t v6:1;,
|
||||
uint8_t v4:1;)
|
||||
};
|
||||
uint8_t flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* OGS_PFCP-GTPU-TEID = INDEX | TEID_RANGE
|
||||
* INDEX = OGS_PFCP-GTPU-TEID & ~TEID_RANGE
|
||||
*/
|
||||
#define OGS_PFCP_GTPU_TEID_TO_INDEX(__tEID, __iND, __rANGE) \
|
||||
(__tEID & ~(__rANGE << (32 - __iND)))
|
||||
#define OGS_PFCP_GTPU_INDEX_TO_TEID(__iNDEX, __iND, __rANGE) \
|
||||
(__iNDEX | (__rANGE << (32 - __iND)))
|
||||
uint8_t teid_range;
|
||||
uint32_t addr;
|
||||
uint8_t addr6[OGS_IPV6_LEN];
|
||||
char network_instance[OGS_MAX_APN_LEN];
|
||||
uint8_t source_interface;
|
||||
} __attribute__ ((packed)) ogs_user_plane_ip_resource_info_t;
|
||||
|
||||
int ogs_sockaddr_to_user_plane_ip_resource_info(
|
||||
ogs_sockaddr_t *addr, ogs_sockaddr_t *addr6,
|
||||
ogs_user_plane_ip_resource_info_t *info);
|
||||
int ogs_user_plane_ip_resource_info_to_sockaddr(
|
||||
ogs_user_plane_ip_resource_info_t *info,
|
||||
ogs_sockaddr_t **addr, ogs_sockaddr_t **addr6);
|
||||
|
||||
typedef struct ogs_slice_data_s {
|
||||
ogs_s_nssai_t s_nssai;
|
||||
bool default_indicator;
|
||||
|
||||
uint32_t context_identifier; /* EPC for checking default APN */
|
||||
|
||||
int num_of_session;
|
||||
ogs_session_t session[OGS_MAX_NUM_OF_SESS];
|
||||
} ogs_slice_data_t;
|
||||
|
||||
ogs_slice_data_t *ogs_slice_find_by_s_nssai(
|
||||
ogs_slice_data_t *slice_data, int num_of_slice_data,
|
||||
ogs_s_nssai_t *s_nssai);
|
||||
|
||||
typedef struct ogs_subscription_data_s {
|
||||
#define OGS_ACCESS_RESTRICTION_UTRAN_NOT_ALLOWED (1)
|
||||
#define OGS_ACCESS_RESTRICTION_GERAN_NOT_ALLOWED (1<<1)
|
||||
@@ -500,11 +601,10 @@ typedef struct ogs_subscription_data_s {
|
||||
#define OGS_RAU_TAU_DEFAULT_TIME (12*60) /* 12 min */
|
||||
uint32_t subscribed_rau_tau_timer; /* unit : seconds */
|
||||
|
||||
uint32_t context_identifier; /* default APN */
|
||||
ogs_pdn_t pdn[OGS_MAX_NUM_OF_SESS];
|
||||
int num_of_pdn;
|
||||
int num_of_slice;
|
||||
ogs_slice_data_t slice[OGS_MAX_NUM_OF_SLICE];
|
||||
|
||||
#define OGS_MAX_NUM_OF_MSISDN 4
|
||||
#define OGS_MAX_NUM_OF_MSISDN 2
|
||||
int num_of_msisdn;
|
||||
struct {
|
||||
uint8_t buf[OGS_MAX_MSISDN_LEN];
|
||||
@@ -513,11 +613,13 @@ typedef struct ogs_subscription_data_s {
|
||||
} msisdn[OGS_MAX_NUM_OF_MSISDN];
|
||||
} ogs_subscription_data_t;
|
||||
|
||||
void ogs_subscription_data_free(ogs_subscription_data_t *subscription_data);
|
||||
|
||||
typedef struct ogs_session_data_s {
|
||||
ogs_pdn_t pdn;
|
||||
ogs_session_t session;
|
||||
#define OGS_MAX_NUM_OF_PCC_RULE 8 /* Num of PCC Rule */
|
||||
ogs_pcc_rule_t pcc_rule[OGS_MAX_NUM_OF_PCC_RULE];
|
||||
int num_of_pcc_rule;
|
||||
ogs_pcc_rule_t pcc_rule[OGS_MAX_NUM_OF_PCC_RULE];
|
||||
int num_of_pcc_rule;
|
||||
} ogs_session_data_t;
|
||||
|
||||
void ogs_session_data_free(ogs_session_data_t *session_data);
|
||||
|
@@ -57,6 +57,9 @@
|
||||
#include <errno.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/time.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -230,3 +230,25 @@ uint64_t ogs_uint64_from_string(char *str)
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
void ogs_extract_digit_from_string(char *digit, char *string)
|
||||
{
|
||||
bool extracting = false;
|
||||
int i = 0;
|
||||
|
||||
ogs_assert(string);
|
||||
ogs_assert(digit);
|
||||
|
||||
while (*string && i < OGS_MAX_IMSI_BCD_LEN) {
|
||||
if (*string >= '0' && *string <= '9') {
|
||||
*digit++ = *string;
|
||||
extracting = true;
|
||||
} else if (extracting == true) {
|
||||
break;
|
||||
}
|
||||
string++;
|
||||
i++;
|
||||
}
|
||||
|
||||
*digit = 0;
|
||||
}
|
||||
|
@@ -49,6 +49,8 @@ char *ogs_uint64_to_string(uint64_t x);
|
||||
ogs_uint24_t ogs_uint24_from_string(char *str);
|
||||
uint64_t ogs_uint64_from_string(char *str);
|
||||
|
||||
void ogs_extract_digit_from_string(char *digit, char *string);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -49,7 +49,6 @@
|
||||
#include "core/ogs-socknode.h"
|
||||
#include "core/ogs-udp.h"
|
||||
#include "core/ogs-tcp.h"
|
||||
#include "core/ogs-tun.h"
|
||||
#include "core/ogs-queue.h"
|
||||
#include "core/ogs-poll.h"
|
||||
#include "core/ogs-notify.h"
|
||||
|
@@ -258,7 +258,7 @@ unsigned int ogs_hashfunc_default(const char *char_key, int *klen)
|
||||
}
|
||||
|
||||
static ogs_hash_entry_t **find_entry(ogs_hash_t *ht,
|
||||
const void *key, int klen, const void *val)
|
||||
const void *key, int klen, const void *val, const char *file_line)
|
||||
{
|
||||
ogs_hash_entry_t **hep, *he;
|
||||
unsigned int hash;
|
||||
@@ -283,7 +283,7 @@ static ogs_hash_entry_t **find_entry(ogs_hash_t *ht,
|
||||
if ((he = ht->free) != NULL)
|
||||
ht->free = he->next;
|
||||
else
|
||||
he = ogs_malloc(sizeof(*he));
|
||||
he = ogs_malloc_debug(sizeof(*he), file_line);
|
||||
he->next = NULL;
|
||||
he->hash = hash;
|
||||
he->key = key;
|
||||
@@ -294,7 +294,8 @@ static ogs_hash_entry_t **find_entry(ogs_hash_t *ht,
|
||||
return hep;
|
||||
}
|
||||
|
||||
void *ogs_hash_get(ogs_hash_t *ht, const void *key, int klen)
|
||||
void *ogs_hash_get_debug(ogs_hash_t *ht,
|
||||
const void *key, int klen, const char *file_line)
|
||||
{
|
||||
ogs_hash_entry_t *he;
|
||||
|
||||
@@ -302,14 +303,15 @@ void *ogs_hash_get(ogs_hash_t *ht, const void *key, int klen)
|
||||
ogs_assert(key);
|
||||
ogs_assert(klen);
|
||||
|
||||
he = *find_entry(ht, key, klen, NULL);
|
||||
he = *find_entry(ht, key, klen, NULL, file_line);
|
||||
if (he)
|
||||
return (void *)he->val;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ogs_hash_set(ogs_hash_t *ht, const void *key, int klen, const void *val)
|
||||
void ogs_hash_set_debug(ogs_hash_t *ht,
|
||||
const void *key, int klen, const void *val, const char *file_line)
|
||||
{
|
||||
ogs_hash_entry_t **hep;
|
||||
|
||||
@@ -317,7 +319,7 @@ void ogs_hash_set(ogs_hash_t *ht, const void *key, int klen, const void *val)
|
||||
ogs_assert(key);
|
||||
ogs_assert(klen);
|
||||
|
||||
hep = find_entry(ht, key, klen, val);
|
||||
hep = find_entry(ht, key, klen, val, file_line);
|
||||
if (*hep) {
|
||||
if (!val) {
|
||||
/* delete entry */
|
||||
@@ -338,8 +340,8 @@ void ogs_hash_set(ogs_hash_t *ht, const void *key, int klen, const void *val)
|
||||
/* else key not present and val==NULL */
|
||||
}
|
||||
|
||||
void *ogs_hash_get_or_set(ogs_hash_t *ht,
|
||||
const void *key, int klen, const void *val)
|
||||
void *ogs_hash_get_or_set_debug(ogs_hash_t *ht,
|
||||
const void *key, int klen, const void *val, const char *file_line)
|
||||
{
|
||||
ogs_hash_entry_t **hep;
|
||||
|
||||
@@ -347,7 +349,7 @@ void *ogs_hash_get_or_set(ogs_hash_t *ht,
|
||||
ogs_assert(key);
|
||||
ogs_assert(klen);
|
||||
|
||||
hep = find_entry(ht, key, klen, val);
|
||||
hep = find_entry(ht, key, klen, val, file_line);
|
||||
if (*hep) {
|
||||
val = (*hep)->val;
|
||||
/* check that the collision rate isn't too high */
|
||||
|
@@ -54,10 +54,18 @@ ogs_hash_t *ogs_hash_make(void);
|
||||
ogs_hash_t *ogs_hash_make_custom(ogs_hashfunc_t ogs_hash_func);
|
||||
void ogs_hash_destroy(ogs_hash_t *ht);
|
||||
|
||||
void ogs_hash_set(ogs_hash_t *ht, const void *key, int klen, const void *val);
|
||||
void *ogs_hash_get(ogs_hash_t *ht, const void *key, int klen);
|
||||
void *ogs_hash_get_or_set(ogs_hash_t *ht,
|
||||
const void *key, int klen, const void *val);
|
||||
#define ogs_hash_set(ht, key, klen, val) \
|
||||
ogs_hash_set_debug(ht, key, klen, val, OGS_FILE_LINE)
|
||||
void ogs_hash_set_debug(ogs_hash_t *ht,
|
||||
const void *key, int klen, const void *val, const char *file_line);
|
||||
#define ogs_hash_get(ht, key, klen) \
|
||||
ogs_hash_get_debug(ht, key, klen, OGS_FILE_LINE)
|
||||
void *ogs_hash_get_debug(ogs_hash_t *ht,
|
||||
const void *key, int klen, const char *file_line);
|
||||
#define ogs_hash_get_or_set(ht, key, klen, val) \
|
||||
ogs_hash_get_or_set_debug(ht, key, klen, val, OGS_FILE_LINE)
|
||||
void *ogs_hash_get_or_set_debug(ogs_hash_t *ht,
|
||||
const void *key, int klen, const void *val, const char *file_line);
|
||||
|
||||
ogs_hash_index_t *ogs_hash_first(ogs_hash_t *ht);
|
||||
ogs_hash_index_t *ogs_hash_next(ogs_hash_index_t *hi);
|
||||
|
@@ -108,13 +108,10 @@ extern "C" {
|
||||
#define be64toh(x) OSSwapBigToHostInt64((x))
|
||||
|
||||
#elif defined(__FreeBSD__)
|
||||
#define le16toh(x) letoh16(x)
|
||||
#define le32toh(x) letoh32(x)
|
||||
#define le64toh(x) letoh64(x)
|
||||
#include <sys/endian.h>
|
||||
|
||||
#define be16toh(x) betoh16(x)
|
||||
#define be32toh(x) betoh32(x)
|
||||
#define be64toh(x) betoh64(x)
|
||||
#elif defined(__linux__)
|
||||
#include <endian.h>
|
||||
|
||||
#endif
|
||||
|
||||
@@ -188,7 +185,7 @@ static ogs_inline ogs_uint24_t ogs_htobe24(ogs_uint24_t x)
|
||||
#endif
|
||||
|
||||
#define ogs_container_of(ptr, type, member) \
|
||||
(type *)((u_char *)ptr - offsetof(type, member))
|
||||
(type *)((unsigned char *)ptr - offsetof(type, member))
|
||||
|
||||
#ifndef SWITCH_CASE_INIT
|
||||
#define SWITCH_CASE_INIT
|
||||
@@ -209,6 +206,10 @@ static ogs_inline ogs_uint24_t ogs_htobe24(ogs_uint24_t x)
|
||||
#define OGS_MAX_FILEPATH_LEN 256
|
||||
#define OGS_MAX_IFNAME_LEN 32
|
||||
|
||||
#define OGS_FILE_LINE __FILE__ ":" OGS_STRINGIFY(__LINE__)
|
||||
|
||||
#define ogs_uint64_to_uint32(x) ((x >= 0xffffffffUL) ? 0xffffffffU : x)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -22,7 +22,7 @@
|
||||
#undef OGS_LOG_DOMAIN
|
||||
#define OGS_LOG_DOMAIN __ogs_mem_domain
|
||||
|
||||
void *ogs_malloc(size_t size)
|
||||
void *ogs_malloc_debug(size_t size, const char *file_line)
|
||||
{
|
||||
size_t headroom = 0;
|
||||
ogs_pkbuf_t *pkbuf = NULL;
|
||||
@@ -30,7 +30,7 @@ void *ogs_malloc(size_t size)
|
||||
ogs_assert(size);
|
||||
|
||||
headroom = sizeof(ogs_pkbuf_t *);
|
||||
pkbuf = ogs_pkbuf_alloc(NULL, headroom + size);
|
||||
pkbuf = ogs_pkbuf_alloc_debug(NULL, headroom + size, file_line);
|
||||
ogs_assert(pkbuf);
|
||||
ogs_pkbuf_reserve(pkbuf, headroom);
|
||||
memcpy(pkbuf->head, &pkbuf, headroom);
|
||||
@@ -54,18 +54,18 @@ void ogs_free(void *ptr)
|
||||
ogs_pkbuf_free(pkbuf);
|
||||
}
|
||||
|
||||
void *ogs_calloc(size_t nmemb, size_t size)
|
||||
void *ogs_calloc_debug(size_t nmemb, size_t size, const char *file_line)
|
||||
{
|
||||
void *ptr = NULL;
|
||||
|
||||
ptr = ogs_malloc(nmemb * size);
|
||||
ptr = ogs_malloc_debug(nmemb * size, file_line);
|
||||
ogs_assert(ptr);
|
||||
|
||||
memset(ptr, 0, nmemb * size);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
void *ogs_realloc(void *ptr, size_t size)
|
||||
void *ogs_realloc_debug(void *ptr, size_t size, const char *file_line)
|
||||
{
|
||||
size_t headroom = 0;
|
||||
ogs_pkbuf_t *pkbuf = NULL;
|
||||
@@ -89,7 +89,7 @@ void *ogs_realloc(void *ptr, size_t size)
|
||||
if (size > (cluster->size - headroom)) {
|
||||
void *new = NULL;
|
||||
|
||||
new = ogs_malloc(size);
|
||||
new = ogs_malloc_debug(size, file_line);
|
||||
ogs_assert(new);
|
||||
memcpy(new, ptr, pkbuf->len);
|
||||
|
||||
|
@@ -44,10 +44,13 @@ extern "C" {
|
||||
memcpy((__dST), (__sRC), sizeof(*(__sRC))*sizeof(uint8_t)); \
|
||||
} while(0)
|
||||
|
||||
void *ogs_malloc(size_t size);
|
||||
#define ogs_malloc(size) ogs_malloc_debug(size, OGS_FILE_LINE)
|
||||
void *ogs_malloc_debug(size_t size, const char *file_line);
|
||||
void ogs_free(void *ptr);
|
||||
void *ogs_calloc(size_t nmemb, size_t size);
|
||||
void *ogs_realloc(void *ptr, size_t size);
|
||||
#define ogs_calloc(nmemb, size) ogs_calloc_debug(nmemb, size, OGS_FILE_LINE)
|
||||
void *ogs_calloc_debug(size_t nmemb, size_t size, const char *file_line);
|
||||
#define ogs_realloc(ptr, size) ogs_realloc_debug(ptr, size, OGS_FILE_LINE)
|
||||
void *ogs_realloc_debug(void *ptr, size_t size, const char *file_line);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -93,11 +93,11 @@ void ogs_pkbuf_default_init(ogs_pkbuf_config_t *config)
|
||||
memset(config, 0, sizeof *config);
|
||||
|
||||
config->cluster_128_pool = 65536;
|
||||
config->cluster_256_pool = 8192;
|
||||
config->cluster_256_pool = 16384;
|
||||
config->cluster_512_pool = 4096;
|
||||
config->cluster_1024_pool = 1024;
|
||||
config->cluster_2048_pool = 512;
|
||||
config->cluster_8192_pool = 128;
|
||||
config->cluster_8192_pool = 512;
|
||||
config->cluster_big_pool = 8;
|
||||
}
|
||||
|
||||
@@ -143,11 +143,29 @@ ogs_pkbuf_pool_t *ogs_pkbuf_pool_create(ogs_pkbuf_config_t *config)
|
||||
return pool;
|
||||
}
|
||||
|
||||
#define ogs_pkbuf_pool_final(pool) do { \
|
||||
if (((pool)->size != (pool)->avail)) { \
|
||||
int i; \
|
||||
ogs_error("%d in '%s[%d]' were not released.", \
|
||||
(pool)->size - (pool)->avail, (pool)->name, (pool)->size); \
|
||||
for (i = 0; i < (pool)->size; i++) { \
|
||||
ogs_pkbuf_t *pkbuf = (pool)->index[i]; \
|
||||
if (pkbuf) { \
|
||||
ogs_log_print(OGS_LOG_ERROR, "SIZE[%d] is not freed. (%s)\n", \
|
||||
pkbuf->len, pkbuf->file_line); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
free((pool)->free); \
|
||||
free((pool)->array); \
|
||||
free((pool)->index); \
|
||||
} while (0)
|
||||
|
||||
void ogs_pkbuf_pool_destroy(ogs_pkbuf_pool_t *pool)
|
||||
{
|
||||
ogs_assert(pool);
|
||||
|
||||
ogs_pool_final(&pool->pkbuf);
|
||||
ogs_pkbuf_pool_final(&pool->pkbuf);
|
||||
ogs_pool_final(&pool->cluster);
|
||||
|
||||
ogs_pool_final(&pool->cluster_128);
|
||||
@@ -163,7 +181,8 @@ void ogs_pkbuf_pool_destroy(ogs_pkbuf_pool_t *pool)
|
||||
ogs_pool_free(&pkbuf_pool, pool);
|
||||
}
|
||||
|
||||
ogs_pkbuf_t *ogs_pkbuf_alloc(ogs_pkbuf_pool_t *pool, unsigned int size)
|
||||
ogs_pkbuf_t *ogs_pkbuf_alloc_debug(
|
||||
ogs_pkbuf_pool_t *pool, unsigned int size, const char *file_line)
|
||||
{
|
||||
ogs_pkbuf_t *pkbuf = NULL;
|
||||
ogs_cluster_t *cluster = NULL;
|
||||
@@ -199,6 +218,8 @@ ogs_pkbuf_t *ogs_pkbuf_alloc(ogs_pkbuf_pool_t *pool, unsigned int size)
|
||||
pkbuf->tail = cluster->buffer;
|
||||
pkbuf->end = cluster->buffer + size;
|
||||
|
||||
pkbuf->file_line = file_line; /* For debug */
|
||||
|
||||
pkbuf->pool = pool;
|
||||
|
||||
return pkbuf;
|
||||
|
@@ -50,6 +50,8 @@ typedef struct ogs_pkbuf_s {
|
||||
unsigned char *tail;
|
||||
unsigned char *data;
|
||||
unsigned char *end;
|
||||
|
||||
const char *file_line;
|
||||
|
||||
ogs_pkbuf_pool_t *pool;
|
||||
} ogs_pkbuf_t;
|
||||
@@ -74,7 +76,10 @@ void ogs_pkbuf_default_destroy(void);
|
||||
ogs_pkbuf_pool_t *ogs_pkbuf_pool_create(ogs_pkbuf_config_t *config);
|
||||
void ogs_pkbuf_pool_destroy(ogs_pkbuf_pool_t *pool);
|
||||
|
||||
ogs_pkbuf_t *ogs_pkbuf_alloc(ogs_pkbuf_pool_t *pool, unsigned int size);
|
||||
#define ogs_pkbuf_alloc(pool, size) \
|
||||
ogs_pkbuf_alloc_debug(pool, size, OGS_FILE_LINE)
|
||||
ogs_pkbuf_t *ogs_pkbuf_alloc_debug(
|
||||
ogs_pkbuf_pool_t *pool, unsigned int size, const char *file_line);
|
||||
void ogs_pkbuf_free(ogs_pkbuf_t *pkbuf);
|
||||
|
||||
void *ogs_pkbuf_put_data(
|
||||
|
@@ -124,12 +124,6 @@ void ogs_pollset_remove(ogs_poll_t *poll)
|
||||
ogs_pool_free(&pollset->pool, poll);
|
||||
}
|
||||
|
||||
ogs_poll_t *ogs_pollset_cycle(ogs_pollset_t *pollset, ogs_poll_t *poll)
|
||||
{
|
||||
ogs_assert(pollset);
|
||||
return ogs_pool_cycle(&pollset->pool, poll);
|
||||
}
|
||||
|
||||
void *ogs_pollset_self_handler_data(void)
|
||||
{
|
||||
return &self_handler_data;
|
||||
|
@@ -40,7 +40,6 @@ ogs_poll_t *ogs_pollset_add(ogs_pollset_t *pollset, short when,
|
||||
ogs_socket_t fd, ogs_poll_handler_f handler, void *data);
|
||||
void ogs_pollset_remove(ogs_poll_t *poll);
|
||||
|
||||
ogs_poll_t *ogs_pollset_cycle(ogs_pollset_t *pollset, ogs_poll_t *poll);
|
||||
void *ogs_pollset_self_handler_data(void);
|
||||
|
||||
typedef struct ogs_pollset_actions_s {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user