114 Commits

Author SHA1 Message Date
aebarreiro
f1bfd1879a Updating version oai [2025.w36 -> 2025.w38] 2025-09-21 00:02:02 +00:00
Juan Pontón Rodríguez
005522f01b fix oai (#398) 2025-09-15 13:16:09 +02:00
gradiant-bot
96b618e042 Updating version oai [2025.w29 -> 2025.w30] (#392)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-07-28 08:26:56 +02:00
gradiant-bot
ec85d9889c Updating version open5gs [2.7.5 -> 2.7.6] (#385)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-07-21 08:42:53 +02:00
gradiant-bot
7706929da4 Updating version open5gs-webui [2.7.5 -> 2.7.6] (#386)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-07-21 08:42:37 +02:00
gradiant-bot
b891bf747f Updating version oai [2025.w28 -> 2025.w29] (#388)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-07-21 08:42:25 +02:00
gradiant-bot
1b766a8475 Updating version oai [v2.3.0 -> 2025.w28] (#382)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-07-14 08:52:49 +02:00
gradiant-bot
775cf77310 Updating version srsran-5g [24_10_1 -> 25_04] (#383)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-07-14 08:52:35 +02:00
gradiant-bot
7aa132ac4d Updating version oai [2025.w26 -> v2.3.0] (#379)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-07-10 12:19:54 +02:00
gradiant-bot
66be25b37f Updating version oai [2025.w23 -> 2025.w26] (#378)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-06-30 08:47:33 +02:00
gradiant-bot
ec0a81d89b Updating version oai [2025.w19 -> 2025.w23] (#377)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-06-09 09:52:37 +02:00
gradiant-bot
4db77bbad1 Updating version oai [2025.w18 -> 2025.w19] (#376)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-05-19 09:48:51 +02:00
gradiant-bot
e862d009c4 Updating version oai [2025.w16 -> 2025.w18] (#372)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-05-12 09:32:56 +02:00
Andre Puschmann
0abd1f4a96 open5gs: add iperf binary to final container (#373) 2025-05-12 09:32:12 +02:00
gradiant-bot
eb10c45268 Updating version oai [2025.w14 -> 2025.w16] (#371)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-04-30 09:12:30 +02:00
gradiant-bot
1e7c28a06b Updating version oai [2025.w13 -> 2025.w14] (#370)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-04-19 13:07:43 +02:00
gradiant-bot
149cf1d000 Updating version packetrusher [373fde2 -> 2b26573] (#364)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-04-08 15:25:57 +02:00
gradiant-bot
f09d5c7ced Updating version oai [2025.w12 -> 2025.w13] (#365)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-04-08 15:25:40 +02:00
Juan Pontón Rodríguez
0548156d73 update tutorials to open5gs 2.7.5 (#367) 2025-04-08 15:25:13 +02:00
gradiant-bot
0c93765b27 Updating version oai [2025.w11 -> 2025.w12] (#361)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-03-31 11:37:59 +01:00
gradiant-bot
d19597372b Updating version packetrusher [d51f7cb -> 373fde2] (#360)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-03-31 11:37:39 +01:00
marcob79
02dde41c43 update open5gs to 2.7.5 (#362)
Co-authored-by: Marco Brambilla <marco.brambilla@nttdata.com>
2025-03-31 11:37:19 +01:00
Juan Pontón Rodríguez
41672e25de updates tutorials to 2.7.4 (#357) 2025-03-27 08:29:43 +01:00
marcob79
2109a505ad new open5gs version 2.7.4 (#356)
Co-authored-by: Marco Brambilla <marco.brambilla@nttdata.com>
2025-03-26 12:38:42 +01:00
Tobias Funke
e877363850 fix FromAsCasing warning for AS keyword (#348) 2025-03-25 09:02:38 +01:00
gradiant-bot
37258d17e1 Updating version oai [2025.w08 -> 2025.w11] (#352)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-03-24 11:36:37 +01:00
Álvaro Vázquez
9b161d045e no arm64 until Github fixes runners / open5gs 2.7.3 version (#355) 2025-03-24 11:35:21 +01:00
gradiant-bot
7ef609ffab Updating version packetrusher [1f2c367 -> d51f7cb] (#351)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-03-17 08:50:23 +01:00
Tobias Funke
ada6654a0b Update logging config of open5gs config files (#347) 2025-03-05 08:53:25 +01:00
gradiant-bot
f39cf5c9fc Updating version packetrusher [fd83fec -> 1f2c367] (#344)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-03-03 08:47:15 +01:00
gradiant-bot
666b0a538b Updating version oai [2025.w07 -> 2025.w08] (#345)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-03-03 08:46:52 +01:00
Juan Pontón Rodríguez
f48b075dc5 Ueransim docs two slices (#341)
* tutorial for ueransim with two slices

* Update README.md

* ueransim and open5gs versions updated
2025-02-28 13:08:40 +01:00
gradiant-bot
23f7721216 Updating version oai [2025.w06 -> 2025.w07] (#339)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-02-24 08:00:58 +01:00
gradiant-bot
2e139082f3 [ueransim] Update Version 3.2.6 -> 3.2.7 (#334)
* Updating version ueransim [3.2.6 -> 3.2.7]

* updates Ubuntu version to fix gcc error

* changes github runner OS version to fix segfault

---------

Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
Co-authored-by: Álvaro Vázquez <avrodriguez@gradiant.org>
2025-02-18 12:25:00 +01:00
Álvaro Vázquez
cf05ab20dc Updates push.yml to fix runner and qemu segfault (#336) 2025-02-18 12:24:08 +01:00
Álvaro Vázquez
b896cae9dc Updates qemu-action from build.yml (#335) 2025-02-18 09:46:12 +01:00
gradiant-bot
3e6bc3f273 Updating version oai [2025.w05 -> 2025.w06] (#332) 2025-02-17 08:42:02 +01:00
Álvaro Vázquez
cf9fc33168 Update build.yml (#330) 2025-02-13 17:31:27 +01:00
gradiant-bot
cf0acff35a Updating version oai [2025.w04 -> 2025.w05] (#328)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-02-10 09:09:10 +01:00
gradiant-bot
fe3ada8753 Updating version oai [2025.w03 -> 2025.w04] (#325)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-02-03 09:08:19 +01:00
gradiant-bot
465044e694 Updating version oai [2025.w02 -> 2025.w03] (#320)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-01-27 08:43:52 +01:00
gradiant-bot
c3f9595452 Updating version oai [2024.w51 -> 2025.w02] (#319)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-01-20 08:40:15 +01:00
Álvaro Vázquez
acf94d20ee adds wget to ueransim image (#316) 2025-01-14 12:11:24 +01:00
gradiant-bot
14ab342b62 Updating version srsran-5g [24_10 -> 24_10_1] (#313) 2025-01-13 08:47:52 +01:00
gradiant-bot
516561844f Updating version oai [2024.w48 -> 2024.w51] (#312)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2025-01-08 09:19:37 +01:00
gradiant-bot
2f2b696c19 Updating version oai [2024.w47 -> 2024.w48] (#308)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-12-09 08:49:10 +01:00
gradiant-bot
fde210f72a Updating version oai [v2.2.0 -> 2024.w47] (#306)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-12-02 08:47:38 +01:00
gradiant-bot
46c7577f7f Updating version packetrusher [32a08fa -> fd83fec] (#304)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-12-02 08:47:20 +01:00
gradiant-bot
12a4646e07 Updating version oai [2024.w45 -> v2.2.0] (#301)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-11-25 08:42:58 +01:00
gradiant-bot
58438546a1 Updating version oai [2024.w44 -> 2024.w45] (#298)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-11-18 08:55:15 +01:00
gradiant-bot
0450ce2b36 Updating version oai [2024.w42 -> 2024.w44] (#295)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-11-12 09:44:54 +01:00
gradiant-bot
807e20471f Updating version oai [2024.w41 -> 2024.w42] (#292)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-10-28 08:33:22 +01:00
Álvaro Vázquez
0cf492c39a fixes the update_current_tag openvpn script so that it does not use docker (#289) 2024-10-23 09:06:21 +02:00
Álvaro Vázquez
e8835d3c20 updates ubuntu version to build new release of srsran-project (#290) 2024-10-22 08:53:40 +02:00
gradiant-bot
5ea9348649 Updating version oai [2024.w40 -> 2024.w41] (#287)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-10-21 09:41:21 +02:00
gradiant-bot
d18ba6a799 Updating version oai [2024.w39 -> 2024.w40] (#285)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-10-14 08:48:53 +02:00
Carlos Giraldo
232a8c1f74 [openvpn] update update_current_tag 2024-10-07 11:02:05 +02:00
gradiant-bot
865d792850 Updating version oai [2024.w36 -> 2024.w39] (#281)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-10-07 08:51:48 +02:00
Carlos Giraldo
6e0af5ad19 add openvpn image (#282) 2024-10-04 16:19:10 +02:00
gradiant-bot
26860609f9 Updating version oai [2024.w35 -> 2024.w36] (#280)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-09-16 08:22:27 +02:00
gradiant-bot
64d1e44f84 Updating version oai [2024.w34 -> 2024.w35] (#279)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-09-09 08:46:06 +02:00
Juan Pontón Rodríguez
df6f0126b5 Open5GS WebUI and dbctl images updated to use open5gs user (#278) 2024-09-05 10:28:25 +02:00
gradiant-bot
ddc1920bec Updating version oai [2024.w32 -> 2024.w34] (#277)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-09-05 08:37:32 +02:00
Juan Pontón Rodríguez
be9c9bb86b No-root (#276)
* No-root

* delete TO DO comment
2024-08-22 12:36:40 +02:00
Álvaro Vázquez
1b69775e0c updates OAI dockerfile to ubuntu 22.04 (#275) 2024-08-21 11:54:41 +02:00
gradiant-bot
dcc1724879 Updating version open5gs [2.7.1 -> 2.7.2] (#273)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-08-20 10:29:14 +02:00
gradiant-bot
c10b9ee458 Updating version open5gs-webui [2.7.1 -> 2.7.2] (#274)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-08-20 10:28:47 +02:00
gradiant-bot
90edcdc268 Updating version oai [2024.w28 -> 2024.w29] (#271)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-07-29 08:33:58 +02:00
Álvaro Vázquez
ffaefb138c fixes oai dockerfile (#270) 2024-07-22 09:08:33 +02:00
gradiant-bot
c130e11a5b Updating version oai [2024.w26 -> 2024.w27] (#268)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-07-15 09:05:12 +02:00
Juan Pontón Rodríguez
720e5b2121 smf config files added to avoid using the pcrf (#267)
* smf config files added to avoid using the pcrf

* new config format
2024-07-10 21:28:08 +02:00
Juan Pontón Rodríguez
0a25673fde srsran-5g tag update (#266) 2024-07-09 11:02:18 +02:00
gradiant-bot
2ed390af03 Updating version oai [2024.w25 -> 2024.w26] (#264)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-07-08 10:03:44 +02:00
Juan Pontón Rodríguez
2e2268bb0c Bugs fixed (#263) 2024-07-04 10:17:23 +02:00
Carlos Giraldo
56720bf393 open5gs riscv64 support 2024-07-02 10:18:46 +02:00
Carlos Giraldo
7cf0d18fd2 ueransim from ubuntu 2024-07-02 10:17:48 +02:00
Carlos Giraldo
d5f30c654e ueransim add riscv support 2024-07-02 10:16:06 +02:00
Carlos Giraldo
5966dc5d64 ueransim add N3_ADVERTISE_IP env variable config 2024-07-02 08:50:07 +02:00
Carlos Giraldo
e99e66f0fe Make open5gs freediameter config architecture-independent 2024-07-02 08:44:08 +02:00
gradiant-bot
65abdc44ae Updating version oai [2024.w24 -> 2024.w25] (#260)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-07-01 08:44:39 +02:00
gradiant-bot
2245d7e140 Updating version packetrusher [2bbcc24 -> 32a08fa] (#261)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-07-01 08:44:23 +02:00
gradiant-bot
3ee4225571 Updating version oai [2024.w23 -> 2024.w24] (#259)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-06-24 10:18:55 +02:00
gradiant-bot
23069c499e Updating version oai [2024.w22 -> 2024.w23] (#258)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-06-17 08:38:28 +02:00
gradiant-bot
625de6114f Updating version oai [2024.w21 -> 2024.w22] (#257)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-06-10 09:21:07 +02:00
Álvaro Vázquez
3b2e08880e Updating version oai [2024.w18 -> 2024.w21] (#256)
* Updating version oai [2024.w18 -> 2024.w21]

---------

Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-06-04 08:34:40 +02:00
gradiant-bot
4c6e67809a Updating version packetrusher [578563b -> 2bbcc24] (#254)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-05-27 08:40:04 +02:00
Juan Pontón Rodríguez
55bfcf3244 srsRAN 4G update (#253) 2024-05-23 08:57:33 +02:00
gradiant-bot
19af823d42 Updating version oai [2024.w17 -> 2024.w18] (#251)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-05-13 08:29:47 +02:00
gradiant-bot
a7199f2f21 Updating version oai [2024.w16 -> 2024.w17] (#250)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-05-06 08:30:20 +02:00
gradiant-bot
f90189a19e Updating version oai [2024.w15 -> 2024.w16] (#248)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-29 09:08:47 +02:00
gradiant-bot
6fa2c42ee5 Updating version srsran-5g [23_10_1 -> 24_04] (#249)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-29 09:08:30 +02:00
gradiant-bot
9bdd2b94c4 Updating version open5gs-webui [2.7.0 -> 2.7.1] (#244)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-22 08:28:40 +02:00
gradiant-bot
2821379468 Updating version oai [2024.w14 -> 2024.w15] (#245)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-22 08:28:26 +02:00
gradiant-bot
574f7e8a53 Updating version open5gs [2.7.0 -> 2.7.1] (#246)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-22 08:28:12 +02:00
gradiant-bot
0dedea241c Updating version packetrusher [46f1706 -> 578563b] (#247)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-22 08:27:55 +02:00
gradiant-bot
1ef6877e02 Updating version oai [2024.w13 -> 2024.w14] (#241)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-15 08:53:55 +02:00
Valentin
400d7158be Update PacketRusher's config.yml (#243)
* Update PacketRusher's config.yml

Format of PacketRusher's configuration has been modified in a non backward-compatible way to support multiples AMF (and load balance traffic to multiple AMF using TNL associations).

Sorry for the inconvenience, and thanks for using PacketRusher! :-)

* Update PacketRusher's image_info.sh
2024-04-15 08:51:28 +02:00
gradiant-bot
f81b17c59f Updating version oai [2024.w12 -> 2024.w13] (#239) 2024-04-08 08:53:46 +02:00
gradiant-bot
00354c3524 Updating version packetrusher [612e049 -> f956472] (#240) 2024-04-08 08:53:26 +02:00
gradiant-bot
28e394b628 Updating version oai [2024.w10 -> 2024.w12] (#237)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-01 08:24:00 +02:00
gradiant-bot
c6eab1e839 Updating version packetrusher [97f9f0c -> 612e049] (#238)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-04-01 08:23:42 +02:00
gradiant-bot
6380d3ed7f Updating version oai [2024.w09 -> 2024.w10] (#235)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-03-18 09:08:49 +01:00
gradiant-bot
c04117f5e3 Updating version oai [2024.w08 -> 2024.w09] (#233)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-03-11 09:15:45 +01:00
Álvaro Vázquez
fbc9535c46 changes entrypoint of packetrusher and adds image info automation (#232) 2024-03-04 13:40:46 +01:00
gradiant-bot
4a87fe22b1 Updating version oai [v2.1.0 -> 2024.w08] (#231)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-03-04 10:22:05 +01:00
gradiant-bot
243688fedf Updating version oai [2024.w05 -> v2.1.0] (#230)
Co-authored-by: aebarreiro <aebarreiro@users.noreply.github.com>
2024-02-19 17:20:43 +01:00
Álvaro Vázquez
280baf304e changes OAI Dockerfile to build UHD from source (#229) 2024-02-12 11:52:05 +01:00
Juan Pontón Rodríguez
38968cd175 PR, bug and feature templates added (#226)
* templates added

* Update bugreport.yaml

openverso-->5g

* Update feature_request.yaml

openverso-->5g
2024-02-09 11:22:03 +01:00
Álvaro Vázquez
4972d7ba12 adds packetrusher image and "open5gs & packetrusher" tutorial (#228) 2024-02-05 16:31:37 +01:00
Alvaro Vazquez Rodriguez
a5c12c92f5 adds default DNN to Open5GS SMF and UPF config files 2024-02-05 16:23:23 +01:00
Carlos Giraldo
5c3bd93e7f Merge branch 'main' of github.com:Gradiant/openverso-images into main 2024-01-29 12:22:01 +01:00
Carlos Giraldo
05507ce1b3 Fix set-output command deprecated in gh actions 2024-01-29 12:21:54 +01:00
Maximilian Pohl
6308a151c2 [open5gs]: Add possibility to build images for other branches than main (#211)
Co-authored-by: Carlos Giraldo <cgiraldo@gradiant.org>
2024-01-29 12:08:48 +01:00
Carlos Giraldo
9ddf948279 rename openverso to gradiant (#227) 2024-01-29 11:53:22 +01:00
157 changed files with 9430 additions and 2034 deletions

40
.github/ISSUE_TEMPLATE/bugreport.yaml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: Bug Report
description: File a bug report or issue
title: "[Bug]: "
body:
- type: markdown
attributes:
value: >
**Please note**
This form should only be used if _you can reporoduce_ the bug the in the latest version of 5g-images.
**This form is not for support requests.*
- type: textarea
attributes:
label: Steps to reproduce
description: >
Please describe in detail the steps needed to reproduce this bug. These steps
should reproduce the issue on the most current release of 5g-images. Be sure to
include configuration and platform details.
Please include logs from the relevant daemons as well as any relevant packet captures.
validations:
required: true
- type: textarea
attributes:
label: Logs
description: Provide any relevant captured logs for the issue
render: shell
- type: textarea
attributes:
label: Expected behaviour
description: What did you expect to happen?
validations:
required: true
- type: textarea
attributes:
label: Observed Behaviour
description: What's the observed behaviour?
validations:
required: true

View File

@@ -0,0 +1,40 @@
name: Feature request
description: Propose an enhancement to 5g-images
labels: ['Enhancement']
body:
- type: markdown
attributes:
value: >
## Feature request ##
Please submit your feature request using the form. If your proposal is not sufficiently
well formed, we may request further clarification and expansion.
- type: input
attributes:
label: Components and subsystems
description: Which subsystems and components would this feature be relevant to?
validations:
required: true
- type: textarea
attributes:
label: Proposed functionality
description: >
Provide a detailed description of the feature or behaviour you are proposing. The more detail
you provide, the greater the chance your proposal has of being discussed.
If your feature request does not include anything actionable or sufficient details, you may be asked
to provide further clarification or your request may be rejected.
validations:
required: true
- type: textarea
attributes:
label: External dependencies
description: >
Please detail any new dependencies or implementations that this feature might introduce. e.g. Does the
proposal require the installation of additional packages? Are there further external nodes which may be
required for integration testing? (Not all feature requests will introduce new dependencies)

29
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,29 @@
#### What type of PR is this?
<!--
bug
cleanup
documentation
feature
-->
#### What this PR does / why we need it:
#### Which issue(s) this PR fixes:
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
#### Does this PR introduce new external dependencies?
#### Additional documentation:
```docs
```

View File

@@ -14,12 +14,12 @@ env:
jobs:
# Generate the values for images with changes
generate-matrix:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
outputs:
matrix: ${{ steps.generate-matrix.outputs.matrix }}
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- id: files
@@ -28,39 +28,41 @@ jobs:
id: generate-matrix
run: |
changed=`echo "${{ steps.files.outputs.all_changed_files }}" | sed 's/ /\n/g' | grep $images_dir | cut -f2 -d'/' | uniq | sed 's/^/"/;s/$/"/' | sed -z 's/\n/,/g;s/,$/\n/'`
echo "::set-output name=matrix::{ \"image\": [ ${changed} ] }"
echo "matrix={ \"image\": [ ${changed} ] }" >> $GITHUB_OUTPUT
# build image if changes in code
build-image:
needs: generate-matrix
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
strategy:
matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }}
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get Image Info
id: image-info
run: |
source ./images/${{ matrix.image }}/image_info.sh
echo "::set-output name=platforms::$PLATFORMS"
echo "::set-output name=image_tag::$IMAGE_TAG"
echo "::set-output name=image::${{ matrix.image }}"
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
echo "image=${{ matrix.image }}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v3.4.0
with:
image: tonistiigi/binfmt:qemu-v7.0.0-28
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3.9.0
-
name: Build and push
uses: docker/build-push-action@v3
uses: docker/build-push-action@v6.13.0
with:
context: ./images/${{ steps.image-info.outputs.image }}/
push: false
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
build-args: version=${{ steps.image-info.outputs.image_tag }}
platforms: ${{ steps.image-info.outputs.platforms }}
cache-from: type=gha
@@ -90,7 +92,7 @@ jobs:
context: ./images/${{ steps.image-info.outputs.image }}/
file: ./images/${{ steps.image-info.outputs.image }}/Dockerfile.ubi
push: false
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
build-args: version=${{ steps.image-info.outputs.image_tag }}
platforms: ${{ steps.image-info.outputs.platforms }}
cache-from: type=gha

View File

@@ -24,7 +24,7 @@ jobs:
id: generate-matrix
run: |
IMAGES=$( ls -1 ${{ env.IMAGES_DIR }} | tr '\n' ',' | sed 's/[^,]\+/"\0"/g;s/,$//' )
echo "::set-output name=matrix::{ \"image\": [ ${IMAGES} ] }"
echo "matrix={ \"image\": [ ${IMAGES} ] }" >> $GITHUB_OUTPUT
# ---
# Update the version of the existing images when possible and launch pull request
@@ -46,11 +46,10 @@ jobs:
id: update_tag
run: |
cd ${{ env.IMAGE_DIR }}
echo "::set-output name=old-version::$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )"
echo "old-version=$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )" >> $GITHUB_OUTPUT
[[ -f ./update_current_tag.sh ]] && ./update_current_tag.sh
echo "::set-output name=new-version::$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )"
echo "new-version=$( sed -n '/IMAGE_TAG/s/^.*=//p' image_info.sh || echo 'NOT_FOUND' )" >> $GITHUB_OUTPUT
continue-on-error: true
# Launch Pull Request only when the version is updated

View File

@@ -15,12 +15,12 @@ env:
jobs:
# Generate the values for images with changes
generate-matrix:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
outputs:
matrix: ${{ steps.generate-matrix.outputs.matrix }}
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- id: files
@@ -29,32 +29,34 @@ jobs:
id: generate-matrix
run: |
changed=`echo "${{ steps.files.outputs.all_changed_files }}" | sed 's/ /\n/g' | grep $images_dir | cut -f2 -d'/' | uniq | sed 's/^/"/;s/$/"/' | sed -z 's/\n/,/g;s/,$/\n/'`
echo "::set-output name=matrix::{ \"image\": [ ${changed} ] }"
echo "matrix={ \"image\": [ ${changed} ] }" >> $GITHUB_OUTPUT
# build image if changes in code
build-image:
needs: generate-matrix
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
strategy:
matrix: ${{ fromJson( needs.generate-matrix.outputs.matrix ) }}
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get Image Info
id: image-info
run: |
source ./images/${{ matrix.image }}/image_info.sh
echo "::set-output name=platforms::$PLATFORMS"
echo "::set-output name=image_tag::$IMAGE_TAG"
echo "::set-output name=image::${{ matrix.image }}"
echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT
echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
echo "image=${{ matrix.image }}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v3.4.0
with:
image: tonistiigi/binfmt:qemu-v7.0.0-28
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3.9.0
-
name: Login to DockerHub
uses: docker/login-action@v2
@@ -63,11 +65,11 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }}
-
name: Build and push
uses: docker/build-push-action@v3
uses: docker/build-push-action@v6.13.0
with:
context: ./images/${{ steps.image-info.outputs.image }}/
push: true
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}
build-args: version=${{ steps.image-info.outputs.image_tag }}
platforms: ${{ steps.image-info.outputs.platforms }}
cache-from: type=gha
@@ -97,7 +99,7 @@ jobs:
context: ./images/${{ steps.image-info.outputs.image }}/
file: ./images/${{ steps.image-info.outputs.image }}/Dockerfile.ubi
push: true
tags: openverso/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
tags: gradiant/${{ steps.image-info.outputs.image }}:${{ steps.image-info.outputs.image_tag }}-ubi
build-args: version=${{ steps.image-info.outputs.image_tag }}
platforms: ${{ steps.image-info.outputs.platforms }}
cache-from: type=gha

1
.gitignore vendored
View File

@@ -1 +1,2 @@
uhd_images/
**.cast

View File

@@ -1,11 +1,9 @@
# Container Image Collection of Openverso Project
# Gradiant 5G Images
This repo mantains dockerfiles of Docker Images generated by [Gradiant](https://www.gradiant.org) in [OpenVerso](https://www.openverso.org/).
The main objective of OpenVerso, the National Network of Excellence in 5G and future technologies, is to address the design of an architecture of a comprehensive 5G network, evolvable to 6G technologies, and aimed at creating a federated ecosystem that enables knowledge transfer to the industrial sector. More info at [https://www.openverso.org](https://www.openverso.org).
This repo mantains dockerfiles of Docker Images generated by [Gradiant](https://www.gradiant.org) for its Lab5G platform.
Gradiant is actively researching and developing Cloud-Native Network Functions (CNFs) with special focus on 5G network and evolvable to 6G technologies.
Follow the README.md of each image to evaluate the technologies in your container runtime.
<img src="micinncdti_2021.jpg" alt="micinncdti_2021" width="320"/>
Check also docs folder for deployment examples.

View File

@@ -1,7 +1,7 @@
version: '3'
services:
gnb1:
image: openverso/ueransim:3.1.6
image: gradiant/ueransim:3.1.6
container_name: gnb1
command:
- gnb
@@ -11,7 +11,7 @@ services:
MCC: '208'
MNC: '93'
ue1:
image: openverso/ueransim:3.1.6
image: gradiant/ueransim:3.1.6
container_name: ue1
command:
- ue

View File

@@ -5,23 +5,23 @@ services:
environment:
MONGO_INITDB_DATABASE: free5gc
nrf:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/nrfcfg.yaml:/etc/free5gc/nrfcfg.yaml
command: ["nrf","-nrfcfg","/etc/free5gc/nrfcfg.yaml"]
restart : on-failure
udr:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
command: ["udr","-udrcfg","/etc/free5gc/udrcfg.yaml"]
restart : on-failure
amf:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/amfcfg.yaml:/etc/free5gc/amfcfg.yaml
command: ["amf","-amfcfg","/etc/free5gc/amfcfg.yaml"]
restart : on-failure
smf:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/smfcfg.yaml:/etc/free5gc/smfcfg.yaml
- ./configs/free5gc/uerouting.yaml:/etc/free5gc/uerouting.yaml
@@ -31,25 +31,25 @@ services:
- "--uerouting=/etc/free5gc/uerouting.yaml"
restart : on-failure
pcf:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/pcfcfg.yaml:/etc/free5gc/pcfcfg.yaml
command: ["pcf","-pcfcfg","/etc/free5gc/pcfcfg.yaml"]
restart : on-failure
udm:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/udmcfg.yaml:/etc/free5gc/udmcfg.yaml
command: ["udm","-udmcfg","/etc/free5gc/udmcfg.yaml"]
restart : on-failure
nssf:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/nssfcfg.yaml:/etc/free5gc/nssfcfg.yaml
command: ["nssf","-nssfcfg","/etc/free5gc/nssfcfg.yaml"]
restart : on-failure
ausf:
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/ausfcfg.yaml:/etc/free5gc/ausfcfg.yaml
command: ["ausf","-ausfcfg","/etc/free5gc/ausfcfg.yaml"]
@@ -57,14 +57,14 @@ services:
upf:
cap_add:
- NET_ADMIN
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./configs/free5gc/upfcfg.yaml:/etc/free5gc/upfcfg.yaml
command: ["upf","-f","/etc/free5gc/upfcfg.yaml"]
restart : on-failure
webconsole:
image: openverso/free5gc-webconsole:1.0.1
image: gradiant/free5gc-webconsole:1.0.1
restart: on-failure
ports:
- 5000:5000

View File

@@ -1,4 +1,4 @@
$ORIGIN openverso.
$ORIGIN gradiant.
$TTL 1W
@ 1D IN SOA localhost. root.localhost. (
1 ; serial

View File

@@ -37,7 +37,7 @@ zone "ims.mnc001.mcc001.3gppnetwork.org" {
file "/etc/bind/ims_zone";
};
zone "openverso" {
zone "gradiant" {
type master;
file "/etc/bind/epc_zone";
};

View File

@@ -16,12 +16,12 @@
# This must be a valid FQDN that resolves to the local host.
# Default: hostname's FQDN
#Identity = "aaa.koganei.freediameter.net";
Identity = "hss.openverso";
Identity = "hss.gradiant";
# The Diameter Realm of this daemon.
# Default: the domain part of Identity (after the first dot).
#Realm = "koganei.freediameter.net";
Realm = "openverso";
Realm = "gradiant";
##############################################################
## Transport protocol configuration
@@ -261,6 +261,6 @@ LoadExtension = "/usr/local/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx
# Examples:
#ConnectPeer = "aaa.wide.ad.jp";
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
ConnectPeer = "mme.openverso" { ConnectTo = "mme"; TcTimer = 60; TwTimer = 30; No_TLS; };
ConnectPeer = "mme.gradiant" { ConnectTo = "mme"; TcTimer = 60; TwTimer = 30; No_TLS; };
##############################################################

View File

@@ -17,7 +17,7 @@ mme:
integrity_order : [ EIA2, EIA1, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Openverso
full: gradiant
mme_name: open5gs-mme0
sgwc:

View File

@@ -16,12 +16,12 @@
# This must be a valid FQDN that resolves to the local host.
# Default: hostname's FQDN
#Identity = "aaa.koganei.freediameter.net";
Identity = "pcrf.openverso";
Identity = "pcrf.gradiant";
# The Diameter Realm of this daemon.
# Default: the domain part of Identity (after the first dot).
#Realm = "koganei.freediameter.net";
Realm = "openverso";
Realm = "gradiant";
##############################################################
## Transport protocol configuration
@@ -262,7 +262,7 @@ LoadExtension = "/usr/local/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx
#ConnectPeer = "aaa.wide.ad.jp";
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
ConnectPeer = "smf.openverso" { ConnectTo = "smf"; TcTimer = 60; TwTimer = 30; No_TLS; };
ConnectPeer = "smf.gradiant" { ConnectTo = "smf"; TcTimer = 60; TwTimer = 30; No_TLS; };
ConnectPeer = "pcscf.ims.mnc001.mcc001.3gppnetwork.org" { ConnectTo = "pcscf"; Port = 3871; No_TLS; };
##############################################################

View File

@@ -16,12 +16,12 @@
# This must be a valid FQDN that resolves to the local host.
# Default: hostname's FQDN
#Identity = "aaa.koganei.freediameter.net";
Identity = "smf.openverso";
Identity = "smf.gradiant";
# The Diameter Realm of this daemon.
# Default: the domain part of Identity (after the first dot).
#Realm = "koganei.freediameter.net";
Realm = "openverso";
Realm = "gradiant";
##############################################################
## Transport protocol configuration
@@ -260,6 +260,6 @@ LoadExtension = "/usr/local/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx
# Examples:
#ConnectPeer = "aaa.wide.ad.jp";
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
ConnectPeer = "pcrf.openverso" { ConnectTo = "pcrf"; TcTimer = 60; TwTimer = 30; No_TLS; };
ConnectPeer = "pcrf.gradiant" { ConnectTo = "pcrf"; TcTimer = 60; TwTimer = 30; No_TLS; };
##############################################################

View File

@@ -18,7 +18,7 @@ services:
default:
ipv4_address: 172.22.0.2
webui:
image: openverso/open5gs-webui:2.4.9
image: gradiant/open5gs-webui:2.4.9
container_name: webui
depends_on:
- mongo
@@ -37,7 +37,7 @@ services:
default:
ipv4_address: 172.22.0.26
hss:
image: openverso/open5gs:2.4.9
image: gradiant/open5gs:2.4.9
entrypoint: /entrypoint_open5gs.sh
container_name: hss
command: open5gs-hssd
@@ -62,7 +62,7 @@ services:
default:
ipv4_address: 172.22.0.3
sgwc:
image: openverso/open5gs:2.4.9
image: gradiant/open5gs:2.4.9
entrypoint: /entrypoint_open5gs.sh
command: open5gs-sgwcd
depends_on:
@@ -81,7 +81,7 @@ services:
default:
ipv4_address: 172.22.0.5
sgwu:
image: openverso/open5gs:2.4.9
image: gradiant/open5gs:2.4.9
entrypoint: /entrypoint_open5gs.sh
command: open5gs-sgwud
depends_on:
@@ -100,7 +100,7 @@ services:
default:
ipv4_address: 172.22.0.6
smf:
image: openverso/open5gs:2.4.9
image: gradiant/open5gs:2.4.9
entrypoint: /entrypoint_open5gs.sh
command: open5gs-smfd
container_name: smf
@@ -125,7 +125,7 @@ services:
default:
ipv4_address: 172.22.0.7
upf:
image: openverso/open5gs:2.4.9
image: gradiant/open5gs:2.4.9
entrypoint: /entrypoint_open5gs.sh
command: open5gs-upfd
depends_on:
@@ -151,7 +151,7 @@ services:
default:
ipv4_address: 172.22.0.8
mme:
image: openverso/open5gs:2.4.9
image: gradiant/open5gs:2.4.9
entrypoint: /entrypoint_open5gs.sh
command: open5gs-mmed
depends_on:
@@ -182,7 +182,7 @@ services:
default:
ipv4_address: 172.22.0.9
pcrf:
image: openverso/open5gs:2.4.9
image: gradiant/open5gs:2.4.9
entrypoint: /entrypoint_open5gs.sh
command: open5gs-pcrfd
container_name: pcrf
@@ -226,7 +226,7 @@ services:
default:
ipv4_address: 172.22.0.15
rtpengine:
image: openverso/rtpengine:9.4.1.1
image: gradiant/rtpengine:9.4.1.1
container_name: rtpengine
privileged: true
environment:
@@ -264,11 +264,11 @@ services:
default:
ipv4_address: 172.22.0.17
fhoss:
image: openverso/fhoss:develop
image: gradiant/fhoss:develop
container_name: fhoss
environment:
IMS_DOMAIN: ims.mnc001.mcc001.3gppnetwork.org
EPC_DOMAIN: openverso
EPC_DOMAIN: gradiant
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
@@ -285,7 +285,7 @@ services:
default:
ipv4_address: 172.22.0.18
icscf:
image: openverso/kamailio-ims:5.3-dev
image: gradiant/kamailio-ims:5.3-dev
container_name: icscf
volumes:
- /etc/timezone:/etc/timezone:ro
@@ -293,7 +293,7 @@ services:
environment:
- COMPONENT_NAME=icscf-1
- IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org
- EPC_DOMAIN=openverso
- EPC_DOMAIN=gradiant
depends_on:
- dns
- mysql
@@ -308,7 +308,7 @@ services:
default:
ipv4_address: 172.22.0.19
scscf:
image: openverso/kamailio-ims:5.3-dev
image: gradiant/kamailio-ims:5.3-dev
container_name: scscf
volumes:
- /etc/timezone:/etc/timezone:ro
@@ -316,7 +316,7 @@ services:
environment:
- COMPONENT_NAME=scscf-1
- IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org
- EPC_DOMAIN=openverso
- EPC_DOMAIN=gradiant
depends_on:
- dns
- mysql
@@ -331,7 +331,7 @@ services:
default:
ipv4_address: 172.22.0.20
pcscf:
image: openverso/kamailio-ims:5.3-dev
image: gradiant/kamailio-ims:5.3-dev
container_name: pcscf
privileged: true
cap_add:
@@ -342,7 +342,7 @@ services:
environment:
- COMPONENT_NAME=pcscf-1
- IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org
- EPC_DOMAIN=openverso
- EPC_DOMAIN=gradiant
depends_on:
- dns
- mysql

View File

@@ -1,7 +1,7 @@
version: '3'
services:
enodeb:
image: openverso/srsran:21_10
image: gradiant/srsran:21_10
container_name: srsenb
stdin_open: true
tty: true

View File

@@ -1,7 +1,7 @@
version: '3'
services:
gnb1:
image: openverso/ueransim:3.2.2
image: gradiant/ueransim:3.2.2
container_name: gnb1
command:
- gnb
@@ -15,7 +15,7 @@ services:
SD: '123'
ue1:
image: openverso/ueransim:3.2.2
image: gradiant/ueransim:3.2.2
command: ['ue','-n','1']
cap_add:
- all

View File

@@ -5,42 +5,42 @@ services:
environment:
MONGO_INITDB_DATABASE: open5gs
amf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command:
- open5gs-amfd
restart : on-failure
ausf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command:
- open5gs-ausfd
restart : on-failure
bsf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command:
- open5gs-bsfd
restart : on-failure
hss:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: open5gs-hssd
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
nrf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: open5gs-nrfd
restart : on-failure
nssf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: open5gs-nssfd
restart : on-failure
pcf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command:
- open5gs-pcfd
environment:
@@ -48,36 +48,36 @@ services:
restart : on-failure
pcrf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: ["open5gs-pcrfd"]
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
mme:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: open5gs-mmed
restart: on-failure
sgwc:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: open5gs-sgwcd
restart : on-failure
sgwu:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: open5gs-sgwud
restart : on-failure
smf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command: open5gs-smfd
restart : on-failure
udm:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
restart: on-failure
command:
- open5gs-udmd
udr:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
@@ -85,7 +85,7 @@ services:
- open5gs-udrd
upf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.3.2
command:
- open5gs-upfd
cap_add:
@@ -96,7 +96,7 @@ services:
- 2152:2152
webui:
image: openverso/open5gs-webui:2.3.2
image: gradiant/open5gs-webui:2.3.2
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs

View File

@@ -1,7 +1,7 @@
version: '3'
services:
enodeb:
image: openverso/oai-enb:2021.w31
image: gradiant/oai-enb:2021.w31
privileged: true
volumes:
- /dev/bus/usb:/dev/bus/usb

View File

@@ -1,7 +1,7 @@
version: '3'
services:
enodeb:
image: openverso/oai-gnb:2021.w31
image: gradiant/oai-gnb:2021.w31
privileged: true
volumes:
- /dev/bus/usb:/dev/bus/usb

View File

@@ -0,0 +1,46 @@
# Open5GS and PacketRusher
5G end to end communication demo with Open5GS and PacketRusher.
# Deployment NGC and register subscribers
deploy the NGC core (Open5GS) with:
```
docker compose -f ngc.yaml up -d
```
Subscriber is registered using populate container.
# Deploy PacketRusher
packetrusher.yaml is configured to deploy the basic mode of PacketRusher: 1 gNB and 1 UE
"ffffff" SD is used to match the default behaviour of Open5GS (no SD)
```
docker compose -f packetrusher.yaml up -d
```
# Test
To test UE connectivity through RAN, enter the packetrusher container:
```
docker compose -f packetrusher.yaml exec packetrusher /bin/bash
ip vrf exec vrf0000000001 ping 8.8.8.8
```
Also, you can do a iPerf test:
```
ip vrf exec vrf0000000001 iperf3 -c IPERF_SERVER
```
# Clean Up
Undeploy with:
```
docker compose -f packetrusher.yaml down
docker compose -f ngc.yaml down
```

View File

@@ -0,0 +1,357 @@
logger:
file:
path: /opt/open5gs/var/log/open5gs/smf.log
# level: info # fatal|error|warn|info(default)|debug|trace
global:
# max:
# ue: 1024 # The number of UE can be increased depending on memory size.
# peer: 64
smf:
sbi:
server:
- dev: eth0
port: 7777
client:
# nrf:
# - uri: http://127.0.0.10:7777
scp:
- uri: http://scp:7777
pfcp:
server:
- dev: eth0
client:
upf:
- address: upf
gtpc:
server:
- dev: eth0
gtpu:
server:
- dev: eth0
metrics:
server:
- dev: eth0
port: 9090
session:
- subnet: 10.45.0.1/16
dnn: internet
- subnet: 2001:db8:cafe::1/48
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
# p-cscf:
# - 127.0.0.1
# - ::1
# ctf:
# enabled: auto # auto(default)|yes|no
# freeDiameter: /opt/open5gs/etc/freeDiameter/smf.conf
################################################################################
# SMF Info
################################################################################
# <SMF Selection - 5G Core only>
# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
# 2. NRF responds to AMF with SmfInfo during NF-Discovery.
# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
#
# Note that if there is no SmfInfo, any AMF can select this SMF.
#
# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
#
# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
# info:
# - s_nssai:
# - sst: 1
# sd: 009000
# dnn:
# - internet
# - ims
#
# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 1
#
# o If any of conditions below are met:
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1-9]
# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:99970 TAC:10-20,30-40]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 1-9
# - s_nssai:
# - sst: 2
# sd: 000080
# dnn:
# - internet
# - ims
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 10-20
# - 30-40
#
# o Complex Example
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# - sst: 1
# sd: 000080
# dnn:
# - internet
# - ims
# - sst: 1
# sd: 009000
# dnn:
# [internet, ims]
# - sst: 2
# dnn:
# - internet
# - sst: 3
# sd: 123456
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: [1, 2, 3]
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 4
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 5
# - 6
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 100-200
# - 300-400
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 500-600
# - 700-800
# - 900-1000
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 99
#
################################################################################
# SBI Server
################################################################################
# o Override SBI address to be advertised to NRF
# sbi:
# server:
# - dev: eth0
# advertise: open5gs-smf.svc.local
#
# sbi:
# server:
# - address: localhost
# advertise:
# - 127.0.0.99
# - ::1
#
################################################################################
# SBI Client
################################################################################
# o Direct communication with NRF interaction
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
#
# o Indirect communication with delegated discovery
# sbi:
# client:
# scp:
# - uri: http://127.0.0.200:7777
#
# o Indirect communication without delegated discovery
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# discovery:
# delegated: no
#
################################################################################
# HTTPS scheme with TLS
################################################################################
# o Set as default if not individually set
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Add client TLS verification
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# verify_client: true
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_private_key: @sysconfdir@/open5gs/tls/smf.key
# client_cert: @sysconfdir@/open5gs/tls/smf.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
################################################################################
# PFCP Server
################################################################################
# o Override PFCP address to be advertised to UPF in PFCP association
# pfcp:
# server:
# - dev: eth0
# advertise: open5gs-smf.svc.local
#
################################################################################
# PFCP Client
################################################################################
# o UPF selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# tac: 1
# - address: 127.0.0.12
# tac: [3,5,8]
#
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# dnn: ims
# - address: 127.0.0.12
# dnn: [internet, web]
#
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
# (either single enb_id or multiple enb_ids, HEX representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# e_cell_id: 463
# - address: 127.0.0.12
# nr_cell_id: [123456789, 9413]
#
################################################################################
# GTP-C Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpc:
# server:
# - address: 127.0.0.4
# - address: fd69:f21d:873c:fa::3
#
################################################################################
# GTP-U Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpu:
# server:
# - address: 127.0.0.4
# - address: ::1
#
################################################################################
# 3GPP Specification
################################################################################
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48
# (If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash.)
# session:
# - subnet: 10.45.0.1/16
# dnn: internet
# - subnet: 2001:db8:cafe::1/48
# dnn: internet
# - subnet: 10.46.0.1/16
# dnn: ims
# - subnet: 2001:db8:babe::1/48
# dnn: ims
#
# o Pool Range
# session:
# - subnet: 10.45.0.1/16
# range:
# - 10.45.0.100-10.45.0.200
# - 10.45.1.100-
# - -10.45.0.200
# - subnet: 2001:db8:cafe::1/48
# range:
# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0
# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0
#
# o Security Indication(5G Core only)
# security_indication:
# integrity_protection_indication: required|preferred|not-needed
# confidentiality_protection_indication: required|preferred|not-needed
# maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
# maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate

View File

@@ -0,0 +1,104 @@
version: '3'
services:
mongo:
image: mongo:7.0.2
environment:
MONGO_INITDB_DATABASE: open5gs
amf:
image: gradiant/open5gs:2.7.0
command:
- open5gs-amfd
restart : on-failure
ausf:
image: gradiant/open5gs:2.7.0
command:
- open5gs-ausfd
restart : on-failure
bsf:
image: gradiant/open5gs:2.7.0
command:
- open5gs-bsfd
restart : on-failure
nrf:
image: gradiant/open5gs:2.7.0
command: open5gs-nrfd
restart : on-failure
nssf:
image: gradiant/open5gs:2.7.0
command: open5gs-nssfd
restart : on-failure
pcf:
image: gradiant/open5gs:2.7.0
command:
- open5gs-pcfd
environment:
DB_URI: mongodb://mongo/open5gs
restart : on-failure
scp:
image: gradiant/open5gs:2.7.0
command: open5gs-scpd
environment:
DB_URI: mongodb://mongo/open5gs
restart : on-failure
smf:
image: gradiant/open5gs:2.7.0
command: open5gs-smfd
restart : on-failure
volumes:
- ./config/smf.yaml:/opt/open5gs/etc/open5gs/smf.yaml
udm:
image: gradiant/open5gs:2.7.0
restart: on-failure
command:
- open5gs-udmd
udr:
image: gradiant/open5gs:2.7.0
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
command:
- open5gs-udrd
upf:
image: gradiant/open5gs:2.7.0
command:
- open5gs-upfd
cap_add:
- all
privileged: true
restart: on-failure
# environment:
# ENABLE_NAT: "false"
ports:
- 2152:2152
# network_mode: host
webui:
image: gradiant/open5gs-webui:2.7.0
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
NODE_ENV: dev
ports:
- 3000:3000
populate:
image: gradiant/open5gs-dbctl:0.10.3
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
entrypoint:
- "/bin/bash"
- "-c"
- "open5gs-dbctl add_ue_with_slice 999700000000001 491BB1C6E1179AED538028AE7AD525B3 3B7FB099B3A6D16873B33F023B1679E9 internet 1 ffffff"

View File

@@ -0,0 +1,12 @@
version: '3'
services:
packetrusher:
image: gradiant/packetrusher:cec07b7
container_name: packetrusher
cap_add:
- all
privileged: true
environment:
GNBSD: ffffff
UESD: ffffff

View File

@@ -1,54 +0,0 @@
// All times are in ms. Use -1 for infinity, where available
qci_config = (
{
qci=7;
pdcp_config = {
discard_timer = 100;
pdcp_sn_size = 12;
}
rlc_config = {
ul_um = {
sn_field_length = 10;
};
dl_um = {
sn_field_length = 10;
t_reordering = 45;
};
};
logical_channel_config = {
priority = 13;
prioritized_bit_rate = -1;
bucket_size_duration = 100;
log_chan_group = 2;
};
},
{
qci=9;
pdcp_config = {
discard_timer = -1;
status_report_required = true;
}
rlc_config = {
ul_am = {
t_poll_retx = 120;
poll_pdu = 64;
poll_byte = 750;
max_retx_thresh = 16;
};
dl_am = {
t_reordering = 50;
t_status_prohibit = 50;
};
};
logical_channel_config = {
priority = 11;
prioritized_bit_rate = -1;
bucket_size_duration = 100;
log_chan_group = 3;
};
}
);

View File

@@ -1,300 +0,0 @@
#####################################################################
# srsENB configuration file
#####################################################################
#####################################################################
# eNB configuration
#
# enb_id: 20-bit eNB identifier.
# mcc: Mobile Country Code
# mnc: Mobile Network Code
# mme_addr: IP address of MME for S1 connnection
# gtp_bind_addr: Local IP address to bind for GTP connection
# s1c_bind_addr: Local IP address to bind for S1AP connection
# n_prb: Number of Physical Resource Blocks (6,15,25,50,75,100)
# tm: Transmission mode 1-4 (TM1 default)
# nof_ports: Number of Tx ports (1 port default, set to 2 for TM2/3/4)
#
#####################################################################
[enb]
enb_id = ${ENB_ID}
mcc = ${MCC}
mnc = ${MNC}
mme_addr = ${MME_ADDR}
gtp_bind_addr = ${GTP_BIND_ADDR}
s1c_bind_addr = ${S1C_BIND_ADDR}
n_prb = 50
#tm = 4
#nof_ports = 2
#####################################################################
# eNB configuration files
#
# sib_config: SIB1, SIB2 and SIB3 configuration file
# note: when enabling mbms, use the sib.conf.mbsfn configuration file which includes SIB13
# rr_config: Radio Resources configuration file
# drb_config: DRB configuration file
#####################################################################
[enb_files]
sib_config = sib.conf
rr_config = rr.conf
drb_config = drb.conf
#####################################################################
# RF configuration
#
# dl_earfcn: EARFCN code for DL (only valid if a single cell is configured in rr.conf)
# tx_gain: Transmit gain (dB).
# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled
#
# Optional parameters:
# dl_freq: Override DL frequency corresponding to dl_earfcn
# ul_freq: Override UL frequency corresponding to dl_earfcn (must be set if dl_freq is set)
# device_name: Device driver family.
# Supported options: "auto" (uses first found), "UHD", "bladeRF", "soapy" or "zmq".
# device_args: Arguments for the device driver. Options are "auto" or any string.
# Default for UHD: "recv_frame_size=9232,send_frame_size=9232"
# Default for bladeRF: ""
# time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay
# from antenna to timestamp insertion.
# Default "auto". B210 USRP: 100 samples, bladeRF: 27.
#####################################################################
[rf]
#dl_earfcn = 3350
tx_gain = 80
rx_gain = 40
#device_name = auto
# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings:
# USRP B210: num_recv_frames=64,num_send_frames=64
# And for 75 PRBs, also append ",master_clock_rate=15.36e6" to the device args
# For best performance when BW<5 MHz (25 PRB), use the following device_args settings:
# USRP B210: send_frame_size=512,recv_frame_size=512
#device_args = auto
#time_adv_nsamples = auto
# Example for ZMQ-based operation with TCP transport for I/Q samples
#device_name = zmq
#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
#####################################################################
# Packet capture configuration
#
# MAC Packets are captured to file in the compact format decoded by
# the Wireshark mac-lte-framed dissector and with DLT 147.
# To use the dissector, edit the preferences for DLT_USER to
# add an entry with DLT=147, Payload Protocol=mac-lte-framed.
# For more information see: https://wiki.wireshark.org/MAC-LTE
#
# Please note that this setting will by default only capture MAC
# frames on dedicated channels, and not SIB. You have to build with
# WRITE_SIB_PCAP enabled in srsenb/src/stack/mac/mac.cc if you want
# SIB to be part of the MAC pcap file.
#
# S1AP Packets are captured to file in the compact format decoded by
# the Wireshark s1ap dissector and with DLT 150.
# To use the dissector, edit the preferences for DLT_USER to
# add an entry with DLT=150, Payload Protocol=s1ap.
#
# mac_enable: Enable MAC layer packet captures (true/false)
# mac_filename: File path to use for packet captures
# s1ap_enable: Enable or disable the PCAP.
# s1ap_filename: File name where to save the PCAP.
#
#####################################################################
[pcap]
enable = false
filename = /tmp/enb.pcap
s1ap_enable = false
s1ap_filename = /tmp/enb_s1ap.pcap
#####################################################################
# Log configuration
#
# Log levels can be set for individual layers. "all_level" sets log
# level for all layers unless otherwise configured.
# Format: e.g. phy_level = info
#
# In the same way, packet hex dumps can be limited for each level.
# "all_hex_limit" sets the hex limit for all layers unless otherwise
# configured.
# Format: e.g. phy_hex_limit = 32
#
# Logging layers: rf, phy, phy_lib, mac, rlc, pdcp, rrc, gtpu, s1ap, stack, all
# Logging levels: debug, info, warning, error, none
#
# filename: File path to use for log output. Can be set to stdout
# to print logs to standard output
# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created.
# If set to negative, a single log file will be created.
#####################################################################
[log]
all_level = warning
all_hex_limit = 32
filename = /tmp/enb.log
file_max_size = -1
[gui]
enable = false
#####################################################################
# Scheduler configuration options
#
# max_aggr_level: Optional maximum aggregation level index (l=log2(L) can be 0, 1, 2 or 3)
# pdsch_mcs: Optional fixed PDSCH MCS (ignores reported CQIs if specified)
# pdsch_max_mcs: Optional PDSCH MCS limit
# pusch_mcs: Optional fixed PUSCH MCS (ignores reported CQIs if specified)
# pusch_max_mcs: Optional PUSCH MCS limit
# min_nof_ctrl_symbols: Minimum number of control symbols
# max_nof_ctrl_symbols: Maximum number of control symbols
#
#####################################################################
[scheduler]
#max_aggr_level = -1
#pdsch_mcs = -1
#pdsch_max_mcs = -1
#pusch_mcs = -1
#pusch_max_mcs = 16
#min_nof_ctrl_symbols = 1
#max_nof_ctrl_symbols = 3
#####################################################################
# eMBMS configuration options
#
# enable: Enable MBMS transmission in the eNB
# m1u_multiaddr: Multicast addres the M1-U socket will register to
# m1u_if_addr: Address of the inteferface the M1-U interface will listen for multicast packets.
# mcs: Modulation and Coding scheme for MBMS traffic.
#
#####################################################################
[embms]
#enable = false
#m1u_multiaddr = 239.255.0.1
#m1u_if_addr = 127.0.1.201
#mcs = 20
#####################################################################
# Channel emulator options:
# enable: Enable/Disable internal Downlink/Uplink channel emulator
#
# -- AWGN Generator
# awgn.enable: Enable/disable AWGN generator
# awgn.snr: Target SNR in dB
#
# -- Fading emulator
# fading.enable: Enable/disable fading simulator
# fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc)
#
# -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2
# Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period
# delay.enable: Enable/disable delay simulator
# delay.period_s: Delay period in seconds.
# delay.init_time_s: Delay initial time in seconds.
# delay.maximum_us: Maximum delay in microseconds
# delay.minumum_us: Minimum delay in microseconds
#
# -- Radio-Link Failure (RLF) Emulator
# rlf.enable: Enable/disable RLF simulator
# rlf.t_on_ms: Time for On state of the channel (ms)
# rlf.t_off_ms: Time for Off state of the channel (ms)
#
# -- High Speed Train Doppler model simulator
# hst.enable: Enable/Disable HST simulator
# hst.period_s: HST simulation period in seconds
# hst.fd_hz: Doppler frequency in Hz
# hst.init_time_s: Initial time in seconds
#####################################################################
[channel.dl]
#enable = false
[channel.dl.awgn]
#enable = false
#snr = 30
[channel.dl.fading]
#enable = false
#model = none
[channel.dl.delay]
#enable = false
#period_s = 3600
#init_time_s = 0
#maximum_us = 100
#minimum_us = 10
[channel.dl.rlf]
#enable = false
#t_on_ms = 10000
#t_off_ms = 2000
[channel.dl.hst]
#enable = false
#period_s = 7.2
#fd_hz = 750.0
#init_time_s = 0.0
[channel.ul]
#enable = false
[channel.ul.awgn]
#enable = false
#n0 = -30
[channel.ul.fading]
#enable = false
#model = none
[channel.ul.delay]
#enable = false
#period_s = 3600
#init_time_s = 0
#maximum_us = 100
#minimum_us = 10
[channel.ul.rlf]
#enable = false
#t_on_ms = 10000
#t_off_ms = 2000
[channel.ul.hst]
#enable = false
#period_s = 7.2
#fd_hz = -750.0
#init_time_s = 0.0
#####################################################################
# Expert configuration options
#
# pusch_max_its: Maximum number of turbo decoder iterations (Default 4)
# pusch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental)
# nof_phy_threads: Selects the number of PHY threads (maximum 4, minimum 1, default 3)
# metrics_period_secs: Sets the period at which metrics are requested from the eNB.
# metrics_csv_enable: Write eNB metrics to CSV file.
# metrics_csv_filename: File path to use for CSV metrics.
# pregenerate_signals: Pregenerate uplink signals after attach. Improves CPU performance.
# tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR)
# rrc_inactivity_timer Inactivity timeout used to remove UE context from RRC (in milliseconds).
# max_prach_offset_us: Maximum allowed RACH offset (in us)
# eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1).
# eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0).
#
#####################################################################
[expert]
#pusch_max_its = 8 # These are half iterations
#pusch_8bit_decoder = false
#nof_phy_threads = 3
#metrics_period_secs = 1
#metrics_csv_enable = false
#metrics_csv_filename = /tmp/enb_metrics.csv
#pregenerate_signals = false
#tx_amplitude = 0.6
#rrc_inactivity_timer = 30000
#max_prach_offset_us = 30
#eea_pref_list = EEA0, EEA2, EEA1
#eia_pref_list = EIA2, EIA1, EIA0

View File

@@ -1,176 +0,0 @@
sib1 =
{
intra_freq_reselection = "Allowed";
q_rx_lev_min = -65;
//p_max = 3;
cell_barred = "NotBarred"
si_window_length = 20;
sched_info =
(
{
si_periodicity = 16;
// comma-separated array of SIB-indexes (from 3 to 13), leave empty or commented to just scheduler sib2
si_mapping_info = [ 3 ];
}
);
system_info_value_tag = 0;
};
sib2 =
{
rr_config_common_sib =
{
rach_cnfg =
{
num_ra_preambles = 52;
preamble_init_rx_target_pwr = -104;
pwr_ramping_step = 6; // in dB
preamble_trans_max = 10;
ra_resp_win_size = 10; // in ms
mac_con_res_timer = 64; // in ms
max_harq_msg3_tx = 4;
};
bcch_cnfg =
{
modification_period_coeff = 16; // in ms
};
pcch_cnfg =
{
default_paging_cycle = 32; // in rf
nB = "1";
};
prach_cnfg =
{
root_sequence_index = 128;
prach_cnfg_info =
{
high_speed_flag = false;
prach_config_index = 3;
prach_freq_offset = 2;
zero_correlation_zone_config = 5;
};
};
pdsch_cnfg =
{
/* Warning: Currently disabled and forced to p_b=1 for TM2/3/4 and p_b=0 for TM1
*/
p_b = 1;
rs_power = 0;
};
pusch_cnfg =
{
n_sb = 1;
hopping_mode = "inter-subframe";
pusch_hopping_offset = 2;
enable_64_qam = false; // 64QAM PUSCH is not currently enabled
ul_rs =
{
cyclic_shift = 0;
group_assignment_pusch = 0;
group_hopping_enabled = false;
sequence_hopping_enabled = false;
};
};
pucch_cnfg =
{
delta_pucch_shift = 2;
n_rb_cqi = 2;
n_cs_an = 0;
n1_pucch_an = 12;
};
ul_pwr_ctrl =
{
p0_nominal_pusch = -85;
alpha = 0.7;
p0_nominal_pucch = -107;
delta_flist_pucch =
{
format_1 = 0;
format_1b = 3;
format_2 = 1;
format_2a = 2;
format_2b = 2;
};
delta_preamble_msg3 = 6;
};
ul_cp_length = "len1";
};
ue_timers_and_constants =
{
t300 = 2000; // in ms
t301 = 100; // in ms
t310 = 200; // in ms
n310 = 1;
t311 = 10000; // in ms
n311 = 1;
};
freqInfo =
{
ul_carrier_freq_present = true;
ul_bw_present = true;
additional_spectrum_emission = 1;
};
time_alignment_timer = "INFINITY"; // use "sf500", "sf750", etc.
};
sib3 =
{
cell_reselection_common = {
q_hyst = 2; // in dB
},
cell_reselection_serving = {
s_non_intra_search = 3,
thresh_serving_low = 2,
cell_resel_prio = 6
},
intra_freq_reselection = {
q_rx_lev_min = -61,
p_max = 23,
s_intra_search = 5,
presence_ant_port_1 = true,
neigh_cell_cnfg = 1,
t_resel_eutra = 1
}
};
#####################################################################
# sib7 configuration options (See TS 36.331)
# Contains GERAN neighbor information for CSFB and inter-rat handover.
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
#
# t_resel_geran: Cell reselection timer (seconds)
# carrier_freqs_info_list: A list of carrier frequency groups.
# cell_resel_prio: Absolute priority of the carrier frequency group
# ncc_permitted: 8-bit bitmap of NCC carriers permitted for monitoring
# q_rx_lev_min: Minimum receive level in gsm cell, ([field_val] * 2) - 115 = [level in dBm]
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency
# start_arfcn: Initial search ARFCN value
# band_ind: One of "dcs1800" or "pcs1900" Disambiguates ARFCNs in these bands, has no meaning for other ARFCNs.
# explicit_list_of_arfcns: List of ARFCN numbers in the group
#
#####################################################################
sib7 =
{
t_resel_geran = 1;
carrier_freqs_info_list =
(
{
cell_resel_prio = 0;
ncc_permitted = 255;
q_rx_lev_min = 0;
thresh_x_high = 2;
thresh_x_low = 2;
start_arfcn = 871;
band_ind = "dcs1800";
explicit_list_of_arfcns = (
871
);
}
);
};

View File

@@ -1,437 +0,0 @@
#!/bin/bash
version=0.9.1
display_help() {
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
echo "COMMANDS:" >&2
echo " add {imsi key opc}: adds a user to the database with default values"
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
echo " remove {imsi}: removes a user from the database"
echo " reset: WIPES OUT the database and restores it to an empty default"
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
echo " type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6"
echo " help: displays this message and exits"
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
}
if [ "$#" -lt 1 ]; then
display_help
exit 1
fi
if [ "$1" = "help" ]; then
display_help
exit 1
fi
if [ "$1" = "add" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "addT1" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "remove" ]; then
if [ "$#" -ne 2 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
exit 1
fi
IMSI=$2
mongo --eval "db.subscribers.remove({\"imsi\": \"$IMSI\"});" open5gs
exit 0
fi
if [ "$1" = "reset" ]; then
if [ "$#" -ne 1 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
exit 1
fi
mongo --eval "db.subscribers.remove({});" open5gs
exit 0
fi
if [ "$1" = "static_ip" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr\": \"$IP\" }});" open5gs
exit 0
fi
if [ "$1" = "static_ip6" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr6\": \"$IP\" }});" open5gs
exit 0
fi
if [ "$1" = "type" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
exit 1
fi
IMSI=$2
TYPE=$3
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" open5gs
exit 0
fi
display_help

View File

@@ -1,24 +0,0 @@
#!/bin/bash
MONGO_CONTAINER=open5gs-and-srs-enb-usrp_mongo_1
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.9.1)
COMMANDS:
add {imsi key opc}: adds a user to the database with default values
add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE
addT1 {imsi key opc}: adds a user to the database with 3 differents apns
addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn
remove {imsi}: removes a user from the database
reset: WIPES OUT the database and restores it to an empty default
static_ip {imsi ip4}: adds a static IP assignment to an already-existing user
static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user
type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6
help: displays this message and exits
default values are as follows: APN "internet", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only
'
docker cp open5gs-dbctl $MONGO_CONTAINER:/
#SISMOCOM SIM1
docker exec -ti $MONGO_CONTAINER /open5gs-dbctl add 901700000039226 491BB1C6E1179AED538028AE7AD525B3 3B7FB099B3A6D16873B33F023B1679E9

View File

@@ -1,437 +0,0 @@
#!/bin/bash
version=0.9.1
display_help() {
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
echo "COMMANDS:" >&2
echo " add {imsi key opc}: adds a user to the database with default values"
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
echo " remove {imsi}: removes a user from the database"
echo " reset: WIPES OUT the database and restores it to an empty default"
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
echo " type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6"
echo " help: displays this message and exits"
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
}
if [ "$#" -lt 1 ]; then
display_help
exit 1
fi
if [ "$1" = "help" ]; then
display_help
exit 1
fi
if [ "$1" = "add" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "addT1" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" },
{ \$setOnInsert:
{
\"imsi\" : \"$IMSI\",
\"subscribed_rau_tau_timer\" : NumberInt(12),
\"network_access_mode\" : NumberInt(2),
\"subscriber_status\" : NumberInt(0),
\"access_restriction_data\" : NumberInt(32),
\"slice\" :
[{
\"sst\" : NumberInt(1),
\"default_indicator\" : true,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ue\" :
{
\"addr\" : \"$IP\",
},
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}],
}],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),},
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"security\" :
{
\"k\" : \"$KI\",
\"amf\" : \"8000\",
\"op\" : null,
\"opc\" : \"$OPC\"
},
\"__v\" : 0
},
},
upsert=true);" open5gs
exit 0
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "remove" ]; then
if [ "$#" -ne 2 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
exit 1
fi
IMSI=$2
mongo --eval "db.subscribers.remove({\"imsi\": \"$IMSI\"});" open5gs
exit 0
fi
if [ "$1" = "reset" ]; then
if [ "$#" -ne 1 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
exit 1
fi
mongo --eval "db.subscribers.remove({});" open5gs
exit 0
fi
if [ "$1" = "static_ip" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr\": \"$IP\" }});" open5gs
exit 0
fi
if [ "$1" = "static_ip6" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr6\": \"$IP\" }});" open5gs
exit 0
fi
if [ "$1" = "type" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
exit 1
fi
IMSI=$2
TYPE=$3
mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" open5gs
exit 0
fi
display_help

View File

@@ -7,23 +7,23 @@
deploy the EPC core (open5gs) with:
```
docker-compose -f epc.yaml up -d
docker compose -f epc.yaml up -d
```
Register subscriber in ngc with `/register_subscriber.sh`.
Register subscriber in ngc with `./register_subscriber.sh`.
# Download uhd_images
python3 ../../uhd_image_downloader.py -i ../../uhd_images
python3 uhd_image_downloader.py -i ../../uhd_images
# Deployment RAN (enodeB)
Deploy with
```
docker-compose -f srs-enb.yaml up -d
docker compose -f srs-enb.yaml up -d
```
@@ -39,7 +39,7 @@ To test ue connectivity use a commercial smartphone, insert the SIM card previou
Undeploy with:
```
docker-compose -f srslte.yaml down
docker-compose -f epc.yaml down -v
docker compose -f srs-enb.yaml down
docker compose -f epc.yaml down -v
```

View File

@@ -0,0 +1,94 @@
#!/bin/bash
set -ex
if [ $# -lt 1 ]
then
echo "Usage : $0 [epc|enb|ue]"
exit
fi
# epc tun iface create
function tun_create {
if ! grep "srs_spgw_sgi" /proc/net/dev > /dev/null; then
echo "Creating srs_spgw_sgi device"
ip tuntap add name srs_spgw_sgi mode tun
fi
ip link set srs_spgw_sgi up
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
if [ "$ENABLE_NAT" = true ] ; then
iptables -t nat -A POSTROUTING -s $IPV4_TUN_SUBNET ! -o srs_spgw_sgi -j MASQUERADE
fi
}
# IP address resolution from interfaces or hostnames
if [[ -z "${GTP_BIND_ADDR}" ]] ; then
export GTP_BIND_ADDR=$(ip addr show $GTP_BIND_INTERFACE | grep -Po 'inet \K[\d.]+')
fi
if [[ -z "${S1C_BIND_ADDR}" ]] ; then
export S1C_BIND_ADDR=$(ip addr show $S1C_BIND_INTERFACE | grep -Po 'inet \K[\d.]+')
fi
if [[ -z "${MME_BIND_ADDR}" ]] ; then
export MME_BIND_ADDR=$(ip addr show $MME_BIND_INTERFACE | grep -Po 'inet \K[\d.]+')
fi
if [[ ! -z "$MME_HOSTNAME" ]] ; then
export MME_ADDR="$(host -4 $MME_HOSTNAME |awk '/has.*address/{print $NF; exit}')"
fi
if [[ ! -z "$ENB_HOSTNAME" ]] ; then
export ENB_ADDRESS="$(host -4 $ENB_HOSTNAME |awk '/has.*address/{print $NF; exit}')"
fi
if [[ ! -z "$UE_HOSTNAME" ]] ; then
export UE_ADDRESS="$(host -4 $UE_HOSTNAME |awk '/has.*address/{print $NF; exit}')"
fi
command=$1
shift
case "$command" in
epc)
echo "Launching srsepc"
tun_create
envsubst < /etc/srsran/epc.conf > epc.conf
/bin/srsepc /epc.conf $@
;;
enb)
echo "Launching srsenb"
envsubst < /etc/srsran/enb.conf > enb.conf
if [ "$ZMQ" = true ] ; then
sed -i 's/#device_name = zmq/device_name = zmq\ndevice_args = tx_port=tcp:\/\/*:2000,rx_port=tcp:\/\/${UE_ADDRESS}:2001,id=enb,base_srate=23.04e6/' enb.conf
envsubst < enb.conf > enb_temp.conf
mv enb_temp.conf enb.conf
fi
envsubst < /etc/srsran/rr.conf > rr.conf
/bin/srsenb enb.conf $@
;;
ue)
echo "Launching srsue"
envsubst < /etc/srsran/ue.conf > ue.conf
if [ "$SRSUE_5G" = true ] ; then
sed -i 's/#device_name = zmq/device_name = zmq\ndevice_args = tx_port=tcp:\/\/${UE_ADDRESS}:2001,rx_port=tcp:\/\/${ENB_ADDRESS}:2000,id=ue,base_srate=23.04e6/' ue.conf
sed -i 's/^dl_earfcn =.*/dl_earfcn = ${DL_EARFCN}/' ue.conf
sed -i 's/^# bands = .*/bands = ${BANDS}/' ue.conf
sed -i 's/^#apn =.*/apn = ${APN}/' ue.conf
sed -i 's/^#apn_protocol =.*/apn_protocol = ${APN_PROTOCOL}/' ue.conf
sed -i 's/^#srate =.*/srate = ${SRATE}e6/' ue.conf
sed -i 's/^#rx_gain =.*/rx_gain = ${RX_GAIN}/' ue.conf
sed -i 's/^tx_gain =.*/tx_gain = ${TX_GAIN}/' ue.conf
sed -E -i '/^\[rat\.eutra\]/{n;n;s/^#nof_carriers = .*/nof_carriers = ${EUTRA_NOF_CARRIERS}/}' ue.conf
sed -E -i '/^\[rat\.nr\]/{n;n;s/^# nof_carriers = .*/nof_carriers = ${NR_NOF_CARRIERS}/}' ue.conf
sed -i '/\[rat.nr\]/a\max_nof_prb = ${NR_MAX_NOF_PRB}' ue.conf
sed -i '/\[rat.nr\]/a\nof_prb = ${NR_NOF_PRB}' ue.conf
elif [ "$ZMQ" = true ] ; then
sed -i 's/#device_name = zmq/device_name = zmq\ndevice_args = tx_port=tcp:\/\/${UE_ADDRESS}:2001,rx_port=tcp:\/\/${ENB_ADDRESS}:2000,id=ue,base_srate=23.04e6/' ue.conf
fi
envsubst < ue.conf > ue_temp.conf
mv ue_temp.conf ue.conf
/bin/srsue ue.conf $@
;;
*)
echo "unknown component $1. should be epc, enb or ue."
;;
esac

View File

@@ -0,0 +1,283 @@
logger:
file:
path: /opt/open5gs/var/log/open5gs/mme.log
# level: info # fatal|error|warn|info(default)|debug|trace
global:
# max:
# ue: 1024 # The number of UE can be increased depending on memory size.
# peer: 64
mme:
freeDiameter: /opt/open5gs/etc/freeDiameter/mme.conf
s1ap:
server:
- dev: eth0
gtpc:
server:
- dev: eth0
client:
sgwc:
- address: sgwc
tac: 1
smf:
- address: smf
tac: 1
metrics:
server:
- dev: eth0
port: 9090
gummei:
- plmn_id:
mcc: 999
mnc: 70
mme_gid: 2
mme_code: 1
tai:
- plmn_id:
mcc: 999
mnc: 70
tac: 1
security:
integrity_order: [EIA2, EIA1, EIA0]
ciphering_order: [EEA0, EEA1, EEA2]
network_name:
full: Open5GS
short: Next
mme_name: open5gs-mme0
time:
# t3402:
# value: 720 # 12 minutes * 60 = 720 seconds
# t3412:
# value: 3240 # 54 minutes * 60 = 3240 seconds
# t3423:
# value: 720 # 12 minutes * 60 = 720 seconds
################################################################################
# S1AP Server
################################################################################
# o Listen on address available in `eth0` interface
# ngap:
# server:
# - dev: eth0
#
################################################################################
# GTP-C Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpc:
# server:
# - address: 127.0.0.2
# - address: ::1
#
################################################################################
# GTP-C Client
################################################################################
# o SGW selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
# gtpc:
# client:
# sgwc:
# - address: 127.0.0.3
# tac: 26000
# - address: 127.0.2.2
# tac: [25000, 27000, 28000]
#
# o SGW selection by e_cell_id(28bit)
# (either single or multiple e_cell_id, HEX representation)
# gtpc:
# client:
# sgwc:
# - address: 127.0.0.3
# e_cell_id: abcde01
# - address: 127.0.2.2
# e_cell_id: [12345, a9413, 98765]
#
# o SMF selection by APN
# gtpc:
# client:
# smf:
# - address: 127.0.0.4
# apn: internet
# - address: 127.0.0.5
# apn: volte
#
# o SMF selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
# gtpc:
# client:
# smf:
# - address: 127.0.0.4
# tac: 26000
# - address: 127.0.2.4
# tac: [25000, 27000, 28000]
#
# o SMF selection by e_cell_id(28bit)
# (either single or multiple e_cell_id, HEX representation)
# gtpc:
# client:
# smf:
# - address: 127.0.0.4
# e_cell_id: abcde01
# - address: 127.0.2.4
# e_cell_id: [12345, a9413, 98765]
#
# o One SGSN is defined.
# If prefer_ipv4 is not true, [fd69:f21d:873c:fa::2] is selected.
# gtpc:
# client:
# sgsn:
# - address:
# - 127.0.0.3
# - fd69:f21d:873c:fa::2
# routes:
# - rai:
# lai:
# plmn_id:
# mcc: 001
# mnc: 01
# lac: 43690
# rac: 187
# ci: 1223
#
#
# o Two SGSNs are defined. Last one is used by default if no
# matching RAI+CI route is found.
# gtpc:
# client:
# sgsn:
# - address:
# - 127.0.0.3
# - fd69:f21d:873c:fa::2
# routes:
# - rai:
# lai:
# plmn_id:
# mcc: 001
# mnc: 01
# lac: 43690
# rac: 187
# ci: 1223
# - name: sgsn3.open5gs.org
# default_route: true
#
################################################################################
# SGaAP Server
################################################################################
# o MSC/VLR
# sgsap:
# server:
# - address: 127.0.0.2
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4131
# lai:
# plmn_id:
# mcc: 001
# mnc: 01
# lac: 43691
# map:
# tai:
# plmn_id:
# mcc: 002
# mnc: 02
# tac: 4132
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43692
# - address: msc.open5gs.org
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4133
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43693
#
################################################################################
# 3GPP Specification
################################################################################
# o GUMMEI
# gummei:
# - plmn_id:
# mcc: 001
# mnc: 01
# mme_gid: 2
# mme_code: 1
# - plmn_id:
# - mcc: 002
# mnc: 02
# - mcc: 003
# mnc: 03
# mme_gid: [3, 4]
# mme_code:
# - 2
# - 3
#
# o TAI
# tai:
# - plmn_id:
# mcc: 001
# mnc: 01
# tac: [1, 3, 5]
# tai:
# - plmn_id:
# mcc: 002
# mnc: 02
# tac: [6-10, 15-18]
# tai:
# - plmn_id:
# mcc: 003
# mnc: 03
# tac: 20
# - plmn_id:
# mcc: 004
# mnc: 04
# tac: 21
# tai:
# - plmn_id:
# mcc: 005
# mnc: 05
# tac: [22, 28]
# - plmn_id:
# mcc: 006
# mnc: 06
# tac: [30-32, 34, 36-38, 40-42, 44, 46, 48]
# - plmn_id:
# mcc: 007
# mnc: 07
# tac: 50
# - plmn_id:
# mcc: 008
# mnc: 08
# tac: 60
# - plmn_id:
# mcc: 009
# mnc: 09
# tac: [70, 80]
#
# o Access Control
# access_control:
# - default_reject_cause: 13
# - plmn_id:
# reject_cause: 15
# mcc: 001
# mnc: 01
# - plmn_id:
# mcc: 002
# mnc: 02
# - plmn_id:
# mcc: 999
# mnc: 70
#
# o Relative Capacity
# relative_capacity: 100

View File

@@ -0,0 +1,458 @@
#####################################################################
# srsENB configuration file
#####################################################################
#####################################################################
# eNB configuration
#
# enb_id: 20-bit eNB identifier.
# mcc: Mobile Country Code
# mnc: Mobile Network Code
# mme_addr: IP address of MME for S1 connnection
# gtp_bind_addr: Local IP address to bind for GTP connection
# gtp_advertise_addr: IP address of eNB to advertise for DL GTP-U Traffic
# s1c_bind_addr: Local IP address to bind for S1AP connection
# s1c_bind_port: Source port for S1AP connection (0 means any)
# n_prb: Number of Physical Resource Blocks (6,15,25,50,75,100)
# tm: Transmission mode 1-4 (TM1 default)
# nof_ports: Number of Tx ports (1 port default, set to 2 for TM2/3/4)
#
#####################################################################
[enb]
enb_id = ${ENB_ID}
mcc = ${MCC}
mnc = ${MNC}
mme_addr = ${MME_ADDR}
gtp_bind_addr = ${GTP_BIND_ADDR}
s1c_bind_addr = ${S1C_BIND_ADDR}
n_prb = 50
#tm = 4
#nof_ports = 2
#####################################################################
# eNB configuration files
#
# sib_config: SIB1, SIB2 and SIB3 configuration file
# note: When enabling MBMS, use the sib.conf.mbsfn configuration file which includes SIB13
# rr_config: Radio Resources configuration file
# rb_config: SRB/DRB configuration file
#####################################################################
[enb_files]
sib_config = sib.conf
rr_config = rr.conf
rb_config = rb.conf
#####################################################################
# RF configuration
#
# dl_earfcn: EARFCN code for DL (only valid if a single cell is configured in rr.conf)
# tx_gain: Transmit gain (dB).
# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled
#
# Optional parameters:
# dl_freq: Override DL frequency corresponding to dl_earfcn
# ul_freq: Override UL frequency corresponding to dl_earfcn (must be set if dl_freq is set)
# device_name: Device driver family
# Supported options: "auto" (uses first driver found), "UHD", "bladeRF", "soapy", "zmq" or "Sidekiq"
# device_args: Arguments for the device driver. Options are "auto" or any string.
# Default for UHD: "recv_frame_size=9232,send_frame_size=9232"
# Default for bladeRF: ""
# time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay
# from antenna to timestamp insertion.
# Default "auto". B210 USRP: 100 samples, bladeRF: 27
#####################################################################
[rf]
#dl_earfcn = 3350
tx_gain = 80
rx_gain = 40
#device_name = auto
# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings:
# USRP B210: num_recv_frames=64,num_send_frames=64
# And for 75 PRBs, also append ",master_clock_rate=15.36e6" to the device args
# For best performance when BW<5 MHz (25 PRB), use the following device_args settings:
# USRP B210: send_frame_size=512,recv_frame_size=512
#device_args = auto
#time_adv_nsamples = auto
# Example for ZMQ-based operation with TCP transport for I/Q samples
#device_name = zmq
#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
#####################################################################
# Packet capture configuration
#
# MAC-layer packets are captured to a file in the compact format which can
# be decoded by Wireshark. For decoding, use the UDP dissector and the UDP
# heuristic dissection. Edit the preferences (Edit > Preferences >
# Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with
# Protocol=udp. Further, enable the heuristic dissection in UDP under:
# Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp
# For more information see: https://wiki.wireshark.org/MAC-LTE
# Configuring this Wireshark preferences is needed for decoding the MAC PCAP
# files as well as for the live network capture option.
#
# Please note that this setting will by default only capture MAC
# frames on dedicated channels, and not SIB. You have to build with
# WRITE_SIB_PCAP enabled in srsenb/src/stack/mac/mac.cc if you want
# SIB to be part of the MAC pcap file.
#
# S1AP Packets are captured to a file in the compact format which can
# be decoded by the Wireshark s1ap dissector with DLT 150.
# To use the dissector, edit the preferences for DLT_USER to
# add an entry with DLT=150, Payload Protocol=s1ap.
#
# enable: Enable MAC layer packet captures (true/false)
# filename: File path to use for LTE MAC packet captures
# nr_filename: File path to use for NR MAC packet captures
# s1ap_enable: Enable or disable the PCAP.
# s1ap_filename: File name where to save the PCAP.
#
# mac_net_enable: Enable MAC layer packet captures sent over the network (true/false default: false)
# bind_ip: Bind IP address for MAC network trace (default: "0.0.0.0")
# bind_port: Bind port for MAC network trace (default: 5687)
# client_ip: Client IP address for MAC network trace (default: "127.0.0.1")
# client_port Client IP address for MAC network trace (default: 5847)
#####################################################################
[pcap]
enable = false
filename = /tmp/enb.pcap
s1ap_enable = false
s1ap_filename = /tmp/enb_s1ap.pcap
#####################################################################
# Log configuration
#
# Log levels can be set for individual layers. "all_level" sets log
# level for all layers unless otherwise configured.
# Format: e.g. phy_level = info
#
# In the same way, packet hex dumps can be limited for each level.
# "all_hex_limit" sets the hex limit for all layers unless otherwise
# configured.
# Format: e.g. phy_hex_limit = 32
#
# Logging layers: rf, phy, phy_lib, mac, rlc, pdcp, rrc, gtpu, s1ap, stack, all
# Logging levels: debug, info, warning, error, none
#
# filename: File path to use for log output. Can be set to stdout
# to print logs to standard output
# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created.
# If set to negative, a single log file will be created.
#####################################################################
[log]
all_level = warning
all_hex_limit = 32
filename = /tmp/enb.log
file_max_size = -1
[gui]
enable = false
#####################################################################
# Scheduler configuration options
#
# sched_policy: User MAC scheduling policy (E.g. time_rr, time_pf)
# min_aggr_level: Optional minimum aggregation level index (l=log2(L) can be 0, 1, 2 or 3)
# max_aggr_level: Optional maximum aggregation level index (l=log2(L) can be 0, 1, 2 or 3)
# adaptive_aggr_level: Boolean flag to enable/disable adaptive aggregation level based on target BLER
# pdsch_mcs: Optional fixed PDSCH MCS (ignores reported CQIs if specified)
# pdsch_max_mcs: Optional PDSCH MCS limit
# pusch_mcs: Optional fixed PUSCH MCS (ignores reported CQIs if specified)
# pusch_max_mcs: Optional PUSCH MCS limit
# min_nof_ctrl_symbols: Minimum number of control symbols
# max_nof_ctrl_symbols: Maximum number of control symbols
# pucch_multiplex_enable: Allow PUCCH HARQ to collide with PUSCH and other PUCCH
# pucch_harq_max_rb: Maximum number of RB to be used for PUCCH on the edges of the grid.
# If defined and greater than 0, the scheduler will avoid DL PDCCH allocations if
# PUCCH HARQ falls outside this region
# target_bler: Target BLER (in decimal) to achieve via adaptive link
# max_delta_dl_cqi: Maximum shift in CQI for adaptive DL link
# max_delta_ul_snr: Maximum shift in UL SNR for adaptive UL link
# adaptive_dl_mcs_step_size: Step size or learning rate used in adaptive DL MCS link
# adaptive_ul_mcs_step_size: Step size or learning rate used in adaptive UL MCS link
# min_tpc_tti_interval: Minimum TTI interval between TPCs different than 1
# ul_snr_avg_alpha: Exponential Average alpha coefficient used in estimation of UL SNR
# init_ul_snr_value: Initial UL SNR value used for computing MCS in the first UL grant
# init_dl_cqi: DL CQI value used before any CQI report is available to the eNB
# max_sib_coderate: Upper bound on SIB and RAR grants coderate
# pdcch_cqi_offset: CQI offset in derivation of PDCCH aggregation level
# nr_pdsch_mcs: Optional fixed NR PDSCH MCS (ignores reported CQIs if specified)
# nr_pusch_mcs: Optional fixed NR PUSCH MCS (ignores reported CQIs if specified)
#
#####################################################################
[scheduler]
#policy = time_pf
#policy_args = 2
#min_aggr_level = 0
#max_aggr_level = 3
#adaptive_aggr_level = false
#pdsch_mcs = -1
#pdsch_max_mcs = -1
#pusch_mcs = -1
#pusch_max_mcs = 16
#min_nof_ctrl_symbols = 1
#max_nof_ctrl_symbols = 3
#pucch_multiplex_enable = false
#pucch_harq_max_rb = 0
#target_bler = 0.05
#max_delta_dl_cqi = 5
#max_delta_ul_snr = 5
#adaptive_dl_mcs_step_size = 0.001
#adaptive_ul_mcs_step_size = 0.001
#min_tpc_tti_interval = 1
#ul_snr_avg_alpha=0.05
#init_ul_snr_value=5
#init_dl_cqi=5
#max_sib_coderate=0.3
#pdcch_cqi_offset=0
#nr_pdsch_mcs=28
#nr_pusch_mcs=28
#####################################################################
# Slicing configuration
# enable_eMBB Enables enhanced mobile broadband (eMBB) slice in the gNodeB
# enable_URLLC Enables Ultra Reliable Low Latency Communications (URLLC) slice in the gNodeB
# enable_MIoT Enables Massive Internet of Things (MIoT) slice in the gNodeB
# eMBB_sd eMBB slice differentiator
# URLLC_sd URLLC slice differentiator
# MIoT_sd MIoT slice differentiator
#####################################################################
[slicing]
#enable_eMBB = false
#enable_URLLC = false
#enable_MIoT = false
#eMBB_sd = 1
#URLLC_sd = 1
#MIoT_sd = 1
#####################################################################
# eMBMS configuration options
#
# enable: Enable MBMS transmission in the eNB
# m1u_multiaddr: Multicast address the M1-U socket will register to
# m1u_if_addr: Address of the interface the M1-U interface will listen to for multicast packets
# mcs: Modulation and Coding scheme for MBMS traffic
#
#####################################################################
[embms]
#enable = false
#m1u_multiaddr = 239.255.0.1
#m1u_if_addr = 127.0.1.201
#mcs = 20
#####################################################################
# Channel emulator options:
# enable: Enable/disable internal Downlink/Uplink channel emulator
#
# -- AWGN Generator
# awgn.enable: Enable/disable AWGN generator
# awgn.snr: Target SNR in dB
#
# -- Fading emulator
# fading.enable: Enable/disable fading simulator
# fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc)
#
# -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2
# Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period
# delay.enable: Enable/disable delay simulator
# delay.period_s: Delay period in seconds
# delay.init_time_s: Delay initial time in seconds
# delay.maximum_us: Maximum delay in microseconds
# delay.minumum_us: Minimum delay in microseconds
#
# -- Radio-Link Failure (RLF) Emulator
# rlf.enable: Enable/disable RLF simulator
# rlf.t_on_ms: Time for On state of the channel (ms)
# rlf.t_off_ms: Time for Off state of the channel (ms)
#
# -- High Speed Train Doppler model simulator
# hst.enable: Enable/disable HST simulator
# hst.period_s: HST simulation period in seconds
# hst.fd_hz: Doppler frequency in Hz
# hst.init_time_s: Initial time in seconds
#####################################################################
[channel.dl]
#enable = false
[channel.dl.awgn]
#enable = false
#snr = 30
[channel.dl.fading]
#enable = false
#model = none
[channel.dl.delay]
#enable = false
#period_s = 3600
#init_time_s = 0
#maximum_us = 100
#minimum_us = 10
[channel.dl.rlf]
#enable = false
#t_on_ms = 10000
#t_off_ms = 2000
[channel.dl.hst]
#enable = false
#period_s = 7.2
#fd_hz = 750.0
#init_time_s = 0.0
[channel.ul]
#enable = false
[channel.ul.awgn]
#enable = false
#n0 = -30
[channel.ul.fading]
#enable = false
#model = none
[channel.ul.delay]
#enable = false
#period_s = 3600
#init_time_s = 0
#maximum_us = 100
#minimum_us = 10
[channel.ul.rlf]
#enable = false
#t_on_ms = 10000
#t_off_ms = 2000
[channel.ul.hst]
#enable = false
#period_s = 7.2
#fd_hz = -750.0
#init_time_s = 0.0
#####################################################################
# CFR configuration options
#
# The CFR module provides crest factor reduction for the transmitted signal.
#
# enable: Enable or disable the CFR. Default: disabled
#
# mode: manual: CFR threshold is set by cfr_manual_thres (default).
# auto_ema: CFR threshold is adaptive based on the signal PAPR. Power avg. with Exponential Moving Average.
# The time constant of the averaging can be tweaked with the ema_alpha parameter.
# auto_cma: CFR threshold is adaptive based on the signal PAPR. Power avg. with Cumulative Moving Average.
# Use with care, as CMA's increasingly slow response may be unsuitable for most use cases.
#
# strength: Ratio between amplitude-limited vs unprocessed signal (0 to 1). Default: 1
# manual_thres: Fixed manual clipping threshold for CFR manual mode. Default: 0.5
# auto_target_papr: Signal PAPR target (in dB) in CFR auto modes. output PAPR can be higher due to peak smoothing. Default: 8
# ema_alpha: Alpha coefficient for the power average in auto_ema mode. Default: 1/7
#
#####################################################################
[cfr]
#enable = false
#mode = manual
#manual_thres = 0.5
#strength = 1
#auto_target_papr = 8
#ema_alpha = 0.0143
# E2 Agent configuration options
#
# ric_ip: IP address of the RIC controller
# ric_port: Port of the RIC controller
# ric_bind_ip: Local IP address to bind for RIC connection
# ric_bind_port: Local port to bind for RIC connection
# max_ric_setup_retries: Maximum amount of retries to setup the RIC connection. If this value is exceeded, an alarm is written to the log. -1 means infinity.
# ric_connect_timer: Connection Retry Timer for RIC connection (seconds)
#####################################################################
[e2_agent]
#enable = false
#ric_ip = 127.0.0.1
#ric_port = 36421
#ric_bind_ip = 127.0.0.1
#ric_bind_port = 36425
#max_ric_setup_retries = -1
#ric_connect_timer = 10
#####################################################################
# Expert configuration options
#
# pusch_max_its: Maximum number of turbo decoder iterations (default: 4)
# nr_pusch_max_its: Maximum number of LDPC iterations for NR (Default 10)
# pusch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (experimental)
# nof_phy_threads: Selects the number of PHY threads (maximum: 4, minimum: 1, default: 3)
# metrics_period_secs: Sets the period at which metrics are requested from the eNB
# metrics_csv_enable: Write eNB metrics to CSV file.
# metrics_csv_filename: File path to use for CSV metrics
# report_json_enable: Write eNB report to JSON file (default: disabled)
# report_json_filename: Report JSON filename (default: /tmp/enb_report.json)
# report_json_asn1_oct: Prints ASN1 messages encoded as an octet string instead of plain text in the JSON report file
# alarms_log_enable: Enable Alarms logging (default: disabled)
# alarms_filename: Alarms logging filename (default: /tmp/alarms.log)
# tracing_enable: Write source code tracing information to a file
# tracing_filename: File path to use for tracing information
# tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store
# stdout_ts_enable: Prints once per second the timestamp into stdout
# tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR)
# rrc_inactivity_timer Inactivity timeout used to remove UE context from RRC (in milliseconds)
# max_mac_dl_kos: Maximum number of consecutive KOs in DL before triggering the UE's release (default: 100)
# max_mac_ul_kos: Maximum number of consecutive KOs in UL before triggering the UE's release (default: 100)
# max_prach_offset_us: Maximum allowed RACH offset (in us)
# nof_prealloc_ues: Number of UE memory resources to preallocate during eNB initialization for faster UE creation (default: 8)
# rlf_release_timer_ms: Time taken by eNB to release UE context after it detects an RLF
# eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1)
# eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0)
# gtpu_tunnel_timeout: Time that GTPU takes to release indirect forwarding tunnel since the last received GTPU PDU (0 for no timer)
# ts1_reloc_prep_timeout: S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds
# ts1_reloc_overall_timeout: S1AP TS 36.413 TS1RelocOverall Expiry Timeout value in milliseconds
# rlf_release_timer_ms: Time taken by eNB to release UE context after it detects a RLF
# rlf_min_ul_snr_estim: SNR threshold in dB below which the enb is notified with RLF ko
# s1_setup_max_retries: Maximum amount of retries to setup the S1AP connection. If this value is exceeded, an alarm is written to the log. -1 means infinity.
# s1_connect_timer: Connection Retry Timer for S1 connection (seconds)
# rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings
# use_cedron_f_est_alg: Whether to use Cedron algorithm for TA estimation or not (Default: false)
#####################################################################
[expert]
#pusch_max_its = 8 # These are half iterations
#nr_pusch_max_its = 10
#pusch_8bit_decoder = false
#nof_phy_threads = 3
#metrics_period_secs = 1
#metrics_csv_enable = false
#metrics_csv_filename = /tmp/enb_metrics.csv
#report_json_enable = true
#report_json_filename = /tmp/enb_report.json
#report_json_asn1_oct = false
#alarms_log_enable = true
#alarms_filename = /tmp/enb_alarms.log
#tracing_enable = true
#tracing_filename = /tmp/enb_tracing.log
#tracing_buffcapacity = 1000000
#stdout_ts_enable = false
#tx_amplitude = 0.6
#rrc_inactivity_timer = 30000
#max_mac_dl_kos = 100
#max_mac_ul_kos = 100
#max_prach_offset_us = 30
#nof_prealloc_ues = 8
#rlf_release_timer_ms = 4000
#lcid_padding = 3
#eea_pref_list = EEA0, EEA2, EEA1
#eia_pref_list = EIA2, EIA1, EIA0
#gtpu_tunnel_timeout = 0
#extended_cp = false
#ts1_reloc_prep_timeout = 10000
#ts1_reloc_overall_timeout = 10000
#rlf_release_timer_ms = 4000
#rlf_min_ul_snr_estim = -2
#s1_setup_max_retries = -1
#s1_connect_timer = 10
#rx_gain_offset = 62
#mac_prach_bi = 0
#use_cedron_f_est_alg = false

View File

@@ -0,0 +1,186 @@
// All times are in ms. Use -1 for infinity, where available
// 4G Section
// srb1_config = {
// rlc_config = {
// ul_am = {
// t_poll_retx = 45;
// poll_pdu = -1;
// poll_byte = -1;
// max_retx_thresh = 4;
// };
// dl_am = {
// t_reordering = 35;
// t_status_prohibit = 0;
// };
// enb_specific = {
// dl_max_retx_thresh = 32;
// };
// };
// }
// srb2_config = {
// rlc_config = {
// ul_am = {
// t_poll_retx = 45;
// poll_pdu = -1;
// poll_byte = -1;
// max_retx_thresh = 4;
// };
// dl_am = {
// t_reordering = 35;
// t_status_prohibit = 0;
// };
// enb_specific = {
// dl_max_retx_thresh = 32;
// };
// };
// }
qci_config = (
{
qci = 7;
pdcp_config = {
discard_timer = -1;
pdcp_sn_size = 12;
}
rlc_config = {
ul_um = {
sn_field_length = 10;
};
dl_um = {
sn_field_length = 10;
t_reordering = 45;
};
};
logical_channel_config = {
priority = 13;
prioritized_bit_rate = -1;
bucket_size_duration = 100;
log_chan_group = 2;
};
enb_specific = {
dl_max_retx_thresh = 32;
};
},
{
qci = 9;
pdcp_config = {
discard_timer = 150;
status_report_required = true;
}
rlc_config = {
ul_am = {
t_poll_retx = 120;
poll_pdu = 64;
poll_byte = 750;
max_retx_thresh = 16;
};
dl_am = {
t_reordering = 50;
t_status_prohibit = 50;
};
};
logical_channel_config = {
priority = 11;
prioritized_bit_rate = -1;
bucket_size_duration = 100;
log_chan_group = 3;
};
enb_specific = {
dl_max_retx_thresh = 32;
};
}
);
// 5G Section
srb1_5g_config = {
rlc_config = {
ul_am = {
sn_field_len = 12;
t_poll_retx = 45;
poll_pdu = -1;
poll_byte = -1;
max_retx_thres = 8;
};
dl_am = {
sn_field_len = 12;
t_reassembly = 35;
t_status_prohibit = 10;
};
};
}
srb2_5g_config = {
rlc_config = {
ul_am = {
sn_field_len = 12;
t_poll_retx = 45;
poll_pdu = -1;
poll_byte = -1;
max_retx_thres = 8;
};
dl_am = {
sn_field_len = 12;
t_reassembly = 35;
t_status_prohibit = 10;
};
};
}
five_qi_config = (
{
five_qi = 7;
pdcp_nr_config = {
drb = {
pdcp_sn_size_ul = 18;
pdcp_sn_size_dl = 18;
discard_timer = 50;
integrity_protection = false;
status_report = false;
};
t_reordering = 50;
};
rlc_config = {
um_bi_dir = {
ul_um = {
sn_field_len = 12;
};
dl_um = {
sn_field_len = 12;
t_reassembly = 50;
};
};
};
},
{
five_qi = 9;
pdcp_nr_config = {
drb = {
pdcp_sn_size_ul = 18;
pdcp_sn_size_dl = 18;
discard_timer = 50;
integrity_protection = false;
status_report = false;
};
t_reordering = 50;
};
rlc_config = {
am = {
ul_am = {
sn_field_len = 12;
t_poll_retx = 50;
poll_pdu = 4;
poll_byte = 3000;
max_retx_thres = 4;
};
dl_am = {
sn_field_len = 12;
t_reassembly = 50;
t_status_prohibit = 50;
};
};
};
}
);

View File

@@ -47,6 +47,7 @@ phy_cnfg =
//subframe = [0, 10, 20, 30]; // Optional vector of subframe indices every period where CQI resources will be allocated (default uses all)
nof_prb = 2;
m_ri = 8; // RI period in CQI period
//subband_k = 1; // If enabled and > 0, configures sub-band CQI reporting and defines K (see 36.213 7.2.2). If disabled, configures wideband CQI
};
};
@@ -61,6 +62,15 @@ cell_list =
dl_earfcn = 3350;
//ul_earfcn = 21400;
ho_active = false;
//meas_gap_period = 0; // 0 (inactive), 40 or 80
//meas_gap_offset_subframe = [6, 12, 18, 24, 30];
// target_pusch_sinr = -1;
// target_pucch_sinr = -1;
// enable_phr_handling = false;
// min_phr_thres = 0;
// allowed_meas_bw = 6;
// t304 = 2000; // in msec. possible values: 50, 100, 150, 200, 500, 1000, 2000
// tx_gain = 20.0; // in dB. This gain is set by scaling the source signal.
// CA cells
scell_list = (
@@ -74,17 +84,36 @@ cell_list =
eci = 0x19C02;
dl_earfcn = 2850;
pci = 2;
//direct_forward_path_available = false;
//allowed_meas_bw = 6;
//cell_individual_offset = 0;
}
);
// ReportCfg (only A3 supported)
meas_report_desc = {
a3_report_type = "RSRP";
a3_offset = 6;
a3_hysteresis = 0;
a3_time_to_trigger = 480;
rsrq_config = 4;
};
// Select measurement report configuration (all reports are combined with all measurement objects)
meas_report_desc =
(
{
eventA = 3
a3_offset = 6;
hysteresis = 0;
time_to_trigger = 480;
trigger_quant = "RSRP";
max_report_cells = 1;
report_interv = 120;
report_amount = 1;
}
);
meas_quant_desc = {
// averaging filter coefficient
rsrq_config = 4;
rsrp_config = 4;
};
}
// Add here more cells
);
nr_cell_list =
(
// no NR cells
);

View File

@@ -0,0 +1,303 @@
#####################################################################
# sib1 configuration options (See TS 36.331)
#
# additional_plmns: A list of additional PLMN identities.
# mcc: MCC
# mnc: MNC
# cell_reserved_for_oper: One of "reserved" or "notReserved", default is "notReserved"
#
#####################################################################
sib1 =
{
intra_freq_reselection = "Allowed";
q_rx_lev_min = -65;
//p_max = 3;
cell_barred = "NotBarred"
si_window_length = 20;
sched_info =
(
{
si_periodicity = 16;
// comma-separated array of SIB-indexes (from 3 to 13), leave empty or commented to just scheduler sib2
si_mapping_info = [ 3 ];
}
);
system_info_value_tag = 0;
};
sib2 =
{
rr_config_common_sib =
{
rach_cnfg =
{
num_ra_preambles = 52;
preamble_init_rx_target_pwr = -104;
pwr_ramping_step = 6; // in dB
preamble_trans_max = 10;
ra_resp_win_size = 10; // in ms
mac_con_res_timer = 64; // in ms
max_harq_msg3_tx = 4;
};
bcch_cnfg =
{
modification_period_coeff = 16; // in ms
};
pcch_cnfg =
{
default_paging_cycle = 32; // in rf
nB = "1";
};
prach_cnfg =
{
root_sequence_index = 128;
prach_cnfg_info =
{
high_speed_flag = false;
prach_config_index = 3;
prach_freq_offset = 2;
zero_correlation_zone_config = 5;
};
};
pdsch_cnfg =
{
/* Warning: Currently disabled and forced to p_b=1 for TM2/3/4 and p_b=0 for TM1
*/
p_b = 1;
rs_power = 0;
};
pusch_cnfg =
{
n_sb = 1;
hopping_mode = "inter-subframe";
pusch_hopping_offset = 2;
enable_64_qam = false; // 64QAM PUSCH is not currently enabled
ul_rs =
{
cyclic_shift = 0;
group_assignment_pusch = 0;
group_hopping_enabled = false;
sequence_hopping_enabled = false;
};
};
pucch_cnfg =
{
delta_pucch_shift = 1;
n_rb_cqi = 1;
n_cs_an = 0;
n1_pucch_an = 12;
};
ul_pwr_ctrl =
{
p0_nominal_pusch = -85;
alpha = 0.7;
p0_nominal_pucch = -107;
delta_flist_pucch =
{
format_1 = 0;
format_1b = 3;
format_2 = 1;
format_2a = 2;
format_2b = 2;
};
delta_preamble_msg3 = 6;
};
ul_cp_length = "len1";
};
ue_timers_and_constants =
{
t300 = 2000; // in ms
t301 = 100; // in ms
t310 = 200; // in ms
n310 = 1;
t311 = 10000; // in ms
n311 = 1;
};
freqInfo =
{
ul_carrier_freq_present = true;
ul_bw_present = true;
additional_spectrum_emission = 1;
};
time_alignment_timer = "INFINITY"; // use "sf500", "sf750", etc.
};
sib3 =
{
cell_reselection_common = {
q_hyst = 2; // in dB
},
cell_reselection_serving = {
s_non_intra_search = 3,
thresh_serving_low = 2,
cell_resel_prio = 6
},
intra_freq_reselection = {
q_rx_lev_min = -61,
p_max = 23,
s_intra_search = 5,
presence_ant_port_1 = true,
neigh_cell_cnfg = 1,
t_resel_eutra = 1
}
};
#####################################################################
# sib5 configuration options (See TS 36.331)
# Contains information relevant for inter-frequency cell re-selection.
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
#
# inter_freq_carrier_freq_list: A list of neighbouring inter-frequencies.
# dl_carrier_freq: The EARFCN for the EUTRA carrier frequency.
# q_rx_lev_min: Minimum received RSRP level in the E-UTRA cell, ([field_val] * 2) = [level in dBm].
# p_max: Optional maximum allowed transmission power for the neighbouring E-UTRA cells on this carrier frequency.
# t_resel_eutra: Cell reselection timer (seconds).
# t_resel_eutra_sf: Optional speed dependent ScalingFactor for t_resel_eutra.
# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency.
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency.
# allowed_meas_bw: Maximum allowed measurement bandwidth on a carrier frequency .
# presence_ant_port_1: whether all the neighbouring cells use Antenna Port 1.
# cell_resel_prio: Optional absolute priority of the carrier frequency group.
# neigh_cell_cfg: Information related to MBSFN and TDD UL/DL configuration of neighbour cells.
# q_offset_freq: Frequency specific offset for equal priority E-UTRAN frequencies.
# inter_freq_neigh_cell_list: A List of inter-frequency neighbouring cells with specific cell re-selection parameters.
# phys_cell_id: Physical layer identity of the cell.
# q_offset_cell: Cell spcific offset.
# inter_freq_black_cell_list: A List of blacklisted inter-frequency neighbouring cells.
# start: The lowest physical cell identity in the range.
# range: The number of physical cell identities in the range.
#
#####################################################################
sib5 =
{
inter_freq_carrier_freq_list =
(
{
dl_carrier_freq = 1450;
q_rx_lev_min = -70;
t_resel_eutra = 2;
t_resel_eutra_sf = {
sf_medium = "0.25";
sf_high = "1.0";
};
thresh_x_high = 3;
thresh_x_low = 2;
allowed_meas_bw = 75;
presence_ant_port_1 = True;
cell_resel_prio = 4;
neigh_cell_cfg = 2;
q_offset_freq = -6;
inter_freq_neigh_cell_list =
(
{
phys_cell_id = 500;
q_offset_cell = 2;
}
);
inter_freq_black_cell_list =
(
{
start = 123;
range = 4;
}
);
}
);
};
#####################################################################
# sib6 configuration options (See TS 36.331)
# Contains UTRA neighbor information for inter-rat handover.
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
#
# t_resel_utra: Cell reselection timer (seconds)
# t_resel_utra_sf: Optional speed dependent ScalingFactor for t_resel_utra.
# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
# carrier_freq_list_utra_fdd / carrier_freq_list_utra_tdd: A list of carrier frequencies of UTRA FDD / TDD.
# carrier_freq: The UARFCN for the UTRA carrier frequency.
# cell_resel_prio: Optional absolute priority of the carrier frequency group.
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency.
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency.
# q_rx_lev_min: Minimum receive level in UTRA cell, ([field_val] * 2) + 1 = [level in dBm].
# p_max_utra: The maximum allowed transmission power on the (uplink) carrier frequency.
# q_qual_min: Minimum required quality leve in UTRA cell, applicable only for FDD cells.
#
#####################################################################
sib6 =
{
t_resel_utra = 1;
t_resel_utra_sf = {
sf_medium = "0.25";
sf_high = "1.0";
}
carrier_freq_list_utra_fdd =
(
{
carrier_freq = 9613;
cell_resel_prio = 6;
thresh_x_high = 3;
thresh_x_low = 2;
q_rx_lev_min = -50;
p_max_utra = 4;
q_qual_min = -10;
}
);
carrier_freq_list_utra_tdd =
(
{
carrier_freq = 9505;
thresh_x_high = 1;
thresh_x_low = 2;
q_rx_lev_min = -50;
p_max_utra = -3;
}
);
};
#####################################################################
# sib7 configuration options (See TS 36.331)
# Contains GERAN neighbor information for CSFB and inter-rat handover.
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
#
# t_resel_geran: Cell reselection timer (seconds)
# t_resel_geran_sf: Optional speed dependent ScalingFactor for t_resel_geran.
# sf_medium: Scaling factor if the UE is in Medium Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
# sf_high: Scaling factor if the UE is in High Mobility state, one of "0.25", "0.5", "0.75" or "1.0".
# carrier_freqs_info_list: A list of carrier frequency groups.
# cell_resel_prio: Absolute priority of the carrier frequency group
# ncc_permitted: 8-bit bitmap of NCC carriers permitted for monitoring
# q_rx_lev_min: Minimum receive level in gsm cell, ([field_val] * 2) - 115 = [level in dBm]
# thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency
# thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency
# start_arfcn: Initial search ARFCN value
# band_ind: One of "dcs1800" or "pcs1900" Disambiguates ARFCNs in these bands, has no meaning for other ARFCNs.
# explicit_list_of_arfcns: List of ARFCN numbers in the group
#
#####################################################################
sib7 =
{
t_resel_geran = 1;
carrier_freqs_info_list =
(
{
cell_resel_prio = 0;
ncc_permitted = 255;
q_rx_lev_min = 0;
thresh_x_high = 2;
thresh_x_low = 2;
start_arfcn = 871;
band_ind = "dcs1800";
explicit_list_of_arfcns = (
871
);
}
);
};

View File

@@ -5,36 +5,36 @@ services:
environment:
MONGO_INITDB_DATABASE: open5gs
webui:
image: openverso/open5gs-webui:2.3.2
image: gradiant/open5gs-webui:2.7.1
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
NODE_ENV: dev
ports:
- 3000:3000
nrf:
image: openverso/open5gs:2.3.2
command: open5gs-nrfd
restart : on-failure
- 9999:9999
smf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.7.1
command: open5gs-smfd
restart : on-failure
mme:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.7.1
volumes:
- ./config/mme.yaml:/opt/open5gs/etc/open5gs/mme.yaml
command: open5gs-mmed
restart: on-failure
ports:
- 36412:36412
sgwc:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.7.1
command: open5gs-sgwcd
restart : on-failure
sgwu:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.7.1
command: open5gs-sgwud
restart : on-failure
upf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.7.1
user: root
command: ["open5gs-upfd"]
cap_add:
- all
@@ -43,15 +43,18 @@ services:
ports:
- 2152:2152
pcrf:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.7.1
command: ["open5gs-pcrfd"]
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
hss:
image: openverso/open5gs:2.3.2
image: gradiant/open5gs:2.7.1
command: open5gs-hssd
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
nrf:
image: gradiant/open5gs:2.7.1
command: open5gs-nrfd
restart : on-failure

View File

@@ -0,0 +1,856 @@
#!/bin/bash
version=0.10.3
display_help() {
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
echo "FLAGS: --db_uri=mongodb://localhost"
echo "COMMANDS:" >&2
echo " add {imsi key opc}: adds a user to the database with default values"
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
echo " remove {imsi}: removes a user from the database"
echo " reset: WIPES OUT the database and restores it to an empty default"
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
echo " type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6"
echo " help: displays this message and exits"
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
echo " add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,"
echo " add_ue_with_slice {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd"
echo " update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE"
echo " update_slice {imsi apn sst sd}: adds an slice to an existent UE"
echo " showall: shows the list of subscriber in the db"
echo " showpretty: shows the list of subscriber in the db in a pretty json tree format"
echo " showfiltered: shows {imsi key opc apn ip} information of subscriber"
echo " ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\""
echo " subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)"
}
while test $# -gt 0; do
case "$1" in
--db_uri*)
DB_URI=`echo $1 | sed -e 's/^[^=]*=//g'`
shift
;;
*)
break
;;
esac
done
DB_URI="${DB_URI:-mongodb://localhost/open5gs}"
if [ "$#" -lt 1 ]; then
display_help
exit 1
fi
if [ "$1" = "help" ]; then
display_help
exit 1
fi
if [ "$1" = "add" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "addT1" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}
],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}
],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "remove" ]; then
if [ "$#" -ne 2 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
exit 1
fi
IMSI=$2
mongosh --eval "db.subscribers.deleteOne({\"imsi\": \"$IMSI\"});" $DB_URI
exit $?
fi
if [ "$1" = "reset" ]; then
if [ "$#" -ne 1 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
exit 1
fi
mongosh --eval "db.subscribers.deleteMany({});" $DB_URI
exit $?
fi
if [ "$1" = "static_ip" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv4\": \"$IP\" }});" $DB_URI
exit $?
fi
if [ "$1" = "static_ip6" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv6\": \"$IP\" }});" $DB_URI
exit $?
fi
if [ "$1" = "type" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
exit 1
fi
IMSI=$2
TYPE=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" $DB_URI
exit $?
fi
if [ "$1" = "add_ue_with_apn" ]; then
if [ "$#" -eq 5 ]; then
IMSI=$2
KI=$3
OPC=$4
APN=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_apn imsi key opc apn\""
exit 1
fi
if [ "$1" = "add_ue_with_slice" ]; then
if [ "$#" -eq 7 ]; then
IMSI=$2
KI=$3
OPC=$4
APN=$5
SST=$6
SD=$7
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt($SST),
\"sd\": \"$SD\",
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_slice imsi key opc apn sst sd\""
exit 1
fi
if [ "$1" = "update_apn" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
APN=$3
SLICE_NUM=$4
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$push: { \"slice.$SLICE_NUM.session\":
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_apn imsi apn num_slice\""
exit 1
fi
if [ "$1" = "update_slice" ]; then
if [ "$#" -eq 5 ]; then
IMSI=$2
APN=$3
SST=$4
SD=$5
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$push: { \"slice\":
{
\"sst\" : NumberInt($SST),
\"sd\" : \"$SD\",
\"default_indicator\" : false,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}]
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_slice imsi apn sst sd\""
exit 1
fi
if [ "$1" = "subscriber_status" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
SUB_STATUS=$3
OP_DET_BARRING=$4
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$set: { \"subscriber_status\": $SUB_STATUS,
\"operator_determined_barring\": $OP_DET_BARRING
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl subscriber_status imsi subscriber_status_val={0,1} operator_determined_barring={0..8}"
exit 1
fi
if [ "$1" = "showall" ]; then
mongosh --eval "db.subscribers.find()" $DB_URI
exit $?
fi
if [ "$1" = "showpretty" ]; then
mongosh --eval "db.subscribers.find().pretty()" $DB_URI
exit $?
fi
if [ "$1" = "showfiltered" ]; then
mongosh --eval "db.subscribers.find({},{'_id':0,'imsi':1,'security.k':1, 'security.opc':1,'slice.session.name':1,'slice.session.ue.ipv4':1})" $DB_URI
exit $?
fi
if [ "$1" = "ambr_speed" ]; then
if [ "$#" -eq 6 ]; then
IMSI=$2
DL_VALUE=$3
DL_UNIT=$4
UL_VALUE=$5
UL_UNIT=$6
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},
{\$set: {
\"ambr\" : {
\"downlink\" : {
\"value\" : NumberInt($DL_VALUE),
\"unit\" : NumberInt($DL_UNIT)
},
\"uplink\" :{
\"value\": NumberInt($UL_VALUE),
\"unit\" : NumberInt($UL_UNIT)
}
},
\"slice.0.session.0.ambr\": {
\"downlink\" : {
\"value\" : NumberInt($DL_VALUE),
\"unit\" : NumberInt($DL_UNIT)
},
\"uplink\" :{
\"value\": NumberInt($UL_VALUE),
\"unit\" : NumberInt($UL_UNIT)
}
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl ambr_speed imsi dl_value dl_unit ul_value ul_unit dl is for download and ul is for upload and the unit values are[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ] \""
exit 1
fi
display_help

View File

@@ -0,0 +1,43 @@
#!/bin/bash
MONGO_CONTAINER=open5gs-and-srsran-4g-usrp-mongo-1
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.10.3)
FLAGS: --db_uri=mongodb://localhost
COMMANDS: >&2
add {imsi key opc}: adds a user to the database with default values
add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE
addT1 {imsi key opc}: adds a user to the database with 3 differents apns
addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn
remove {imsi}: removes a user from the database
reset: WIPES OUT the database and restores it to an empty default
static_ip {imsi ip4}: adds a static IP assignment to an already-existing user
static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user
type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6
help: displays this message and exits
default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only
add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,
add {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd
update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE
update_slice {imsi apn sst sd}: adds an slice to an existent UE
showall: shows the list of subscriber in the db
showpretty: shows the list of subscriber in the db in a pretty json tree format
showfiltered: shows {imsi key opc apn ip} information of subscriber
ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\"
subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)
'
docker cp open5gs-dbctl $MONGO_CONTAINER:/
# docker run -ti --rm \
# --net open5gs-and-srsran-4g-usrp_default \
# -e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
# gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
#SISMOCOM SIM
docker run -ti --rm \
--net open5gs-and-srsran-4g-usrp_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000053413 E4902EF16990CD9BB1FCC283D42D60EE 7309B7233842606E80C64DF837A6C9B7"

View File

@@ -1,19 +1,22 @@
version: '3'
services:
enodeb:
image: openverso/srs-lte:20_10_1
image: gradiant/srsran-4g:23_11
command:
- enb
privileged: true
volumes:
- ./config/srs/:/etc/srslte/
- ./config/srs/:/etc/srsran/
- /dev/bus/usb:/dev/bus/usb
- ../../uhd_images:/usr/share/uhd/images
- ./config/entrypoint.sh:/entrypoint.sh
cap_add:
- all
environment:
MME_HOSTNAME: mme
ENB_HOSTNAME: enodeb
MCC: "901"
MCC: "999"
MNC: "70"
TAC: "0001"
TAC: "1"
SRSUE_5G: false
ZMQ: false

View File

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 194 KiB

View File

@@ -0,0 +1,639 @@
#!/usr/local/bin/python3
#
# Copyright 2018 Ettus Research, a National Instruments Company
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
"""
Download image files required for USRPs
"""
from __future__ import print_function
import argparse
import hashlib
import json
import math
import os
import re
import shutil
import sys
import tempfile
import zipfile
import platform
# For all the non-core-library imports, we will be extra paranoid and be very
# nice with error messages so that everyone understands what's up.
try:
from urllib.parse import urljoin # Python 3
except ImportError:
from urlparse import urljoin # Python 2
try:
from builtins import input
except ImportError:
input = raw_input
try:
from six import iteritems
except ImportError:
sys.stdout.write(
"[ERROR] Missing module 'six'! Please install it, e.g., by "
"running 'pip install six' or any other tool that can install "
"Python modules.\n")
if platform.system() == 'Windows':
input('Hit Enter to continue.')
exit(0)
try:
import requests
except ImportError:
sys.stdout.write(
"[ERROR] Missing module 'requests'! Please install it, e.g., by "
"running 'pip install requests' or any other tool that can install "
"Python modules.\n")
if platform.system() == 'Windows':
input('Hit Enter to continue.')
exit(0)
_DEFAULT_TARGET_REGEX = "(fpga|fw|windrv)_default"
_BASE_DIR_STRUCTURE_PARTS = ["share", "uhd", "images"]
_DEFAULT_INSTALL_PATH = os.path.join("/usr", *_BASE_DIR_STRUCTURE_PARTS)
_DEFAULT_BASE_URL = "http://files.ettus.com/binaries/cache/"
_INVENTORY_FILENAME = "inventory.json"
_CONTACT = "support@ettus.com"
_DEFAULT_BUFFER_SIZE = 8192
_DEFAULT_DOWNLOAD_LIMIT = 100 * 1024 * 1024 # Bytes
_ARCHIVE_DEFAULT_TYPE = "zip"
_UHD_VERSION = "3.15.0.0-2build5"
# Note: _MANIFEST_CONTENTS are placed at the bottom of this file for aesthetic reasons
_LOG_LEVELS = {"TRACE": 1,
"DEBUG": 2,
"INFO": 3,
"WARN": 4,
"ERROR": 5}
_LOG_LEVEL = _LOG_LEVELS["INFO"]
_YES = False
_PROXIES = {}
def log(level, message):
"""Logging function"""
message_log_level = _LOG_LEVELS.get(level, 0)
if message_log_level >= _LOG_LEVEL:
sys.stderr.write(
"[{level}] {message}\n".format(level=level, message=message))
def parse_args():
"""
Setup argument parser and parse. Also does some sanity checks and sets some
global variables we want to use.
"""
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-t', '--types', action='append',
help="RegEx to select image sets from the manifest file.")
parser.add_argument('-i', '--install-location',
default=None,
help="Set custom install location for images")
parser.add_argument('-m', '--manifest-location', type=str, default="",
help="Set custom location for the manifest file")
parser.add_argument('-I', '--inventory-location', type=str, default="",
help="Set custom location for the inventory file")
parser.add_argument('-l', '--list-targets', action="store_true", default=False,
help="Print targets in the manifest file to stdout, and exit.\n"
"To get relative paths only, specify an empty base URL (-b '').")
parser.add_argument('--url-only', action="store_true", default=False,
help="With -l, only print the URLs, nothing else.")
parser.add_argument("--buffer-size", type=int, default=_DEFAULT_BUFFER_SIZE,
help="Set download buffer size")
parser.add_argument("--download-limit", type=int, default=_DEFAULT_DOWNLOAD_LIMIT,
help="Set threshold for download limits. Any download "
"larger than this will require approval, either "
"interactively, or by providing --yes.")
parser.add_argument("--http-proxy", type=str,
help="Specify HTTP proxy in the format "
"http://user:pass@1.2.3.4:port\n"
"If this this option is not given, the environment "
"variable HTTP_PROXY can also be used to specify a proxy.")
parser.add_argument("-b", "--base-url", type=str, default=_DEFAULT_BASE_URL,
help="Set base URL for images download location")
parser.add_argument("-k", "--keep", action="store_true", default=False,
help="Keep the downloaded images archives in the image directory")
parser.add_argument("-T", "--test", action="store_true", default=False,
help="Verify the downloaded archives before extracting them")
parser.add_argument("-y", "--yes", action="store_true", default=False,
help="Answer all questions with 'yes' (for scripting purposes).")
parser.add_argument("-n", "--dry-run", action="store_true", default=False,
help="Print selected target without actually downloading them.")
parser.add_argument("--refetch", action="store_true", default=False,
help="Ignore the inventory file and download all images.")
parser.add_argument('-V', '--version', action='version', version=_UHD_VERSION)
parser.add_argument('-q', '--quiet', action='count', default=0,
help="Decrease verbosity level")
parser.add_argument('-v', '--verbose', action='count', default=0,
help="Increase verbosity level")
# Some sanitation that's easier to handle outside of the argparse framework:
args = parser.parse_args()
if not args.base_url.endswith('/') and args.base_url != "":
args.base_url += '/'
if args.yes:
global _YES
_YES = True
if args.http_proxy:
global _PROXIES
_PROXIES['http'] = args.http_proxy
# Set the verbosity
global _LOG_LEVEL
log("TRACE", "Default log level: {}".format(_LOG_LEVEL))
_LOG_LEVEL = _LOG_LEVEL - args.verbose + args.quiet
return args
def get_images_dir(args):
"""
Figure out where to store the images.
"""
if args.install_location:
return args.install_location
if os.environ.get("UHD_IMAGES_DIR"):
log("DEBUG",
"UHD_IMAGES_DIR environment variable is set, using to set "
"install location.")
return os.environ.get("UHD_IMAGES_DIR")
return _DEFAULT_INSTALL_PATH
def ask_permission(question, default_no=True):
"""
Ask the question, and have the user type y or n on the keyboard. If the
global variable _YES is true, this always returns True without asking the
question. Otherwise, return True if the answer is 'yes', 'y', or something
similar.
"""
if _YES:
log("DEBUG", "Assuming the answer is 'yes' for this question: " +
question)
return True
postfix = "[y/N]" if default_no else "[Y/n]"
answer = input(question + " " + postfix)
if answer and answer[0].lower() == 'y':
return True
return False
class TemporaryDirectory:
"""Class to create a temporary directory"""
def __enter__(self):
try:
self.name = tempfile.mkdtemp()
return self.name
except Exception as ex:
log("ERROR", "Failed to create a temporary directory (%s)" % ex)
raise ex
# Can return 'True' to suppress incoming exception
def __exit__(self, exc_type, exc_value, traceback):
try:
shutil.rmtree(self.name)
log("TRACE", "Temp directory deleted.")
except Exception as ex:
log("ERROR", "Could not delete temporary directory: %s (%s)" % (self.name, ex))
return exc_type is None
def get_manifest_raw(args):
"""
Return the raw content of the manifest (i.e. the text file). It
needs to be parsed to be of any practical use.
"""
# If we're given a path to a manifest file, use it
if os.path.exists(args.manifest_location):
manifest_fn = args.manifest_location
log("INFO", "Using manifest file at location: {}".format(manifest_fn))
with open(manifest_fn, 'r') as manifest_file:
manifest_raw = manifest_file.read()
# Otherwise, use the CMake Magic manifest
else:
manifest_raw = _MANIFEST_CONTENTS
log("TRACE", "Raw manifest contents: {}".format(manifest_raw))
return manifest_raw
def parse_manifest(manifest_contents):
"""Parse the manifest file, returns a dictionary of potential targets"""
manifest = {}
for line in manifest_contents.split('\n'):
line_unpacked = line.split()
try:
# Check that the line isn't empty or a comment
if not line_unpacked or line.strip().startswith('#'):
continue
target, repo_hash, url, sha256_hash = line_unpacked
manifest[target] = {"repo_hash": repo_hash,
"url": url,
"sha256_hash": sha256_hash,
}
except ValueError:
log("WARN", "Warning: Invalid line in manifest file:\n"
" {}".format(line))
continue
return manifest
def parse_inventory(inventory_fn):
"""Parse the inventory file, returns a dictionary of installed files"""
try:
if not os.path.exists(inventory_fn):
log("INFO", "No inventory file found at {}. Creating an empty one.".format(inventory_fn))
return {}
with open(inventory_fn, 'r') as inventory_file:
# TODO: verify the contents??
return json.load(inventory_file)
except Exception as ex:
log("WARN", "Error parsing the inventory file. Assuming an empty inventory: {}".format(ex))
return {}
def write_inventory(inventory, inventory_fn):
"""Writes the inventory to file"""
try:
with open(inventory_fn, 'w') as inventory_file:
json.dump(inventory, inventory_file)
return True
except Exception as ex:
log("ERROR", "Error writing the inventory file. Contents may be incomplete or corrupted.\n"
"Error message: {}".format(ex))
return False
def lookup_urls(regex_l, manifest, inventory, refetch=False):
"""Takes a list of RegExs to match within the manifest, returns a list of tuples with
(hash, URL) that match the targets and are not in the inventory"""
selected_targets = []
# Store whether or not we've found a target in the manifest that matches the requested type
found_one = False
for target in manifest.keys():
# Iterate through the possible targets in the manifest.
# If any of them match any of the RegExs supplied, add the URL to the
# return list
if all(map((lambda regex: re.findall(regex, target)), regex_l)):
found_one = True
log("TRACE", "Selected target: {}".format(target))
target_info = manifest.get(target)
target_url = target_info.get("url")
target_hash = target_info.get("repo_hash")
target_sha256 = target_info.get("sha256_hash")
filename = os.path.basename(target_url)
# Check if the same filename and hash appear in the inventory
if not refetch and inventory.get(target, {}).get("repo_hash", "") == target_hash:
# We already have this file, we don't need to download it again
log("INFO", "Target {} is up to date.".format(target))
else:
# We don't have that exact file, add it to the list
selected_targets.append({"target": target,
"repo_hash": target_hash,
"filename": filename,
"url": target_url,
"sha256_hash": target_sha256})
if not found_one:
log("INFO", "No targets matching '{}'".format(regex_l))
return selected_targets
def print_target_list(manifest, args):
"""
Print a list of targets.
"""
char_offset = max(len(x) for x in manifest.keys())
if not args.url_only:
# Print a couple helpful lines,
# then print each (Target, URL) pair in the manifest
log("INFO", "Potential targets in manifest file:\n"
"{} : {}".format(
"# TARGET".ljust(char_offset),
"URL" if args.base_url else "RELATIVE_URL"))
for key, value in sorted(manifest.items()):
print("{target} : {base}{relpath}".format(
target=key.ljust(char_offset),
base=args.base_url,
relpath=value["url"]))
else:
for manifest_item in iteritems(manifest):
print(args.base_url+manifest_item[1]["url"])
def download(
images_url,
filename,
buffer_size=_DEFAULT_BUFFER_SIZE,
print_progress=False,
download_limit=None
):
""" Run the download, show progress """
download_limit = download_limit or _DEFAULT_DOWNLOAD_LIMIT
log("TRACE", "Downloading {} to {}".format(images_url, filename))
try:
resp = requests.get(images_url, stream=True, proxies=_PROXIES,
headers={'User-Agent': 'UHD Images Downloader'})
except TypeError:
# requests library versions pre-4c3b9df6091b65d8c72763222bd5fdefb7231149
# (Dec.'12) workaround
resp = requests.get(images_url, prefetch=False, proxies=_PROXIES,
headers={'User-Agent': 'UHD Images Downloader'})
if resp.status_code != 200:
raise RuntimeError("URL does not exist: {}".format(images_url))
filesize = float(resp.headers['content-length'])
if filesize > download_limit:
if not ask_permission(
"The file size for this target ({:.1f} MiB) exceeds the "
"download limit ({:.1f} MiB). Continue downloading?".format(
filesize/1024**2, download_limit/1024**2)):
return 0, 0, ""
filesize_dl = 0
base_filename = os.path.basename(filename)
if print_progress and not sys.stdout.isatty():
print_progress = False
log("INFO", "Downloading {}, total size: {} kB".format(
base_filename, filesize/1000))
with open(filename, "wb") as temp_file:
sha256_sum = hashlib.sha256()
for buff in resp.iter_content(chunk_size=buffer_size):
if buff:
temp_file.write(buff)
filesize_dl += len(buff)
sha256_sum.update(buff)
if print_progress:
status = r"%05d kB / %05d kB (%03d%%) %s" % (
int(math.ceil(filesize_dl / 1000.)), int(math.ceil(filesize / 1000.)),
int(math.ceil(filesize_dl * 100.) / filesize),
base_filename)
if os.name == "nt":
status += chr(8) * (len(status) + 1)
else:
sys.stdout.write("\x1b[2K\r") # Clear previous line
sys.stdout.write(status)
sys.stdout.flush()
if print_progress:
print('')
return filesize, filesize_dl, sha256_sum.hexdigest()
def delete_from_inv(target_info, inventory, images_dir):
"""
Uses the inventory to delete the contents of the archive file specified by in `target_info`
"""
target = inventory.get(target_info.get("target"), {})
target_name = target.get("target")
log("TRACE", "Removing contents of {} from inventory ({})".format(
target, target.get("contents", [])))
dirs_to_delete = []
# Delete all of the files
for image_fn in target.get("contents", []):
image_path = os.path.join(images_dir, image_fn)
if os.path.isfile(image_path):
os.remove(image_path)
log("TRACE", "Deleted {} from inventory".format(image_path))
elif os.path.isdir(image_path):
dirs_to_delete.append(image_fn)
else: # File doesn't exist
log("WARN", "File {} in inventory does not exist".format(image_path))
# Then delete all of the (empty) directories
for dir_path in dirs_to_delete:
try:
if os.path.isdir(dir_path):
os.removedirs(dir_path)
except os.error as ex:
log("ERROR", "Failed to delete dir: {}".format(ex))
inventory.pop(target_name, None)
return True
def extract(archive_path, images_dir, test_zip=False):
"""
Extract the contents of `archive_path` into `images_dir`
Returns a list of files that were extracted.
If test_zip is set, it will verify the zip file before extracting.
"""
log("TRACE", "Attempting to extracted files from {}".format(archive_path))
with zipfile.ZipFile(archive_path) as images_zip:
# Check that the Zip file is valid, in which case `testzip()` returns
# None. If it's bad, that function will return a list of bad files
try:
if test_zip and images_zip.testzip():
log("ERROR", "Could not extract the following invalid Zip file:"
" {}".format(archive_path))
return []
except OSError:
log("ERROR", "Could not extract the following invalid Zip file:"
" {}".format(archive_path))
return []
images_zip.extractall(images_dir)
archive_namelist = images_zip.namelist()
log("TRACE", "Extracted files: {}".format(archive_namelist))
return archive_namelist
def update_target(target_info, temp_dir, images_dir, inventory, args):
"""
Handle the updating of a single target.
"""
target_name = target_info.get("target")
target_sha256 = target_info.get("sha256_hash")
filename = target_info.get("filename")
temp_path = os.path.join(temp_dir, filename)
# Add a trailing slash to make sure that urljoin handles things properly
full_url = urljoin(args.base_url+'/', target_info.get("url"))
_, downloaded_size, downloaded_sha256 = download(
images_url=full_url,
filename=temp_path,
buffer_size=args.buffer_size,
print_progress=(_LOG_LEVEL <= _LOG_LEVELS.get("INFO", 3))
)
if downloaded_size == 0:
log("INFO", "Skipping target: {}".format(target_name))
return
log("TRACE", "{} successfully downloaded ({} Bytes)"
.format(temp_path, downloaded_size))
# If the SHA256 in the manifest has the value '0', this is a special case
# and we just skip the verification step
if target_sha256 == '0':
log("DEBUG", "Skipping SHA256 check for {}.".format(full_url))
# If the check fails, print an error and don't unzip the file
elif downloaded_sha256 != target_sha256:
log("ERROR", "Downloaded SHA256 does not match manifest for {}!"
.format(full_url))
return
# Note: this skips the --keep option, so we'll never keep image packages
# that fail the SHA256 checksum
## Now copy the contents to the final destination (the images directory)
delete_from_inv(target_info, inventory, images_dir)
if os.path.splitext(temp_path)[1].lower() == '.zip':
archive_namelist = extract(
temp_path,
images_dir,
args.test)
if args.keep:
# If the user wants to keep the downloaded archive,
# save it to the images directory and add it to the inventory
shutil.copy(temp_path, images_dir)
archive_namelist.append(filename)
else:
archive_namelist = []
shutil.copy(temp_path, images_dir)
## Update inventory
inventory[target_name] = {"repo_hash": target_info.get("repo_hash"),
"contents": archive_namelist,
"filename": filename}
def main():
"""
Main function; does whatever the user requested (download or list files).
Returns True on successful execution.
"""
args = parse_args()
images_dir = get_images_dir(args)
log("INFO", "Images destination: {}".format(os.path.abspath(images_dir)))
try:
manifest = parse_manifest(get_manifest_raw(args))
if args.list_targets:
print_target_list(
manifest,
args
)
return True
log("TRACE", "Manifest:\n{}".format(
"\n".join("{}".format(item) for item in manifest.items())
))
# Read the inventory into a dictionary we can perform lookups on
if os.path.isfile(args.inventory_location):
inventory_fn = args.inventory_location
else:
inventory_fn = os.path.join(images_dir, _INVENTORY_FILENAME)
inventory = parse_inventory(inventory_fn=inventory_fn)
log("TRACE", "Inventory: {}\n{}".format(
os.path.abspath(inventory_fn),
"\n".join("{}".format(item) for item in inventory.items())
))
# Determine the URLs to download based on the input regular expressions
if not args.types:
types_regex_l = [_DEFAULT_TARGET_REGEX]
else:
types_regex_l = args.types
log("TRACE", "RegExs for target selection: {}".format(types_regex_l))
targets_info = lookup_urls(types_regex_l, manifest, inventory, args.refetch)
# Exit early if we don't have anything to download
if targets_info:
target_urls = [info.get("url") for info in targets_info]
log("DEBUG", "URLs to download:\n{}".format(
"\n".join("{}".format(item) for item in target_urls)
))
else:
return True
## Now download all the images archives into a temp directory
if args.dry_run:
for target_info in targets_info:
log("INFO", "[Dry Run] Fetch target: {}".format(
target_info.get("filename")))
return True
with TemporaryDirectory() as temp_dir:
for target_info in targets_info:
update_target(
target_info,
temp_dir,
images_dir,
inventory,
args
)
## Update inventory with all the new content
write_inventory(inventory, inventory_fn)
except Exception as ex:
log("ERROR", "Downloader raised an unhandled exception: {ex}\n"
"You can run this again with the '--verbose' flag to see more information\n"
"If the problem persists, please email the output to: {contact}"
.format(contact=_CONTACT, ex=ex))
# Again, we wait on Windows systems because if this is executed in a
# window, and immediately fails, the user doesn't have a way to see the
# error message, and if they're not very savvy, they won't know how to
# execute this in a shell.
if not _YES and platform.system() == 'Windows':
input('Hit Enter to continue.')
return False
log("INFO", "Images download complete.")
return True
# Placing this near the end of the file so we don't clutter the top
_MANIFEST_CONTENTS = """# UHD Image Manifest File
# Target hash url SHA256
# X300-Series
x3xx_x310_fpga_default fpga-fde2a94eb x3xx/fpga-fde2a94eb/x3xx_x310_fpga_default-gfde2a94e.zip ac5bcf4b85773508bdc3b5e882bfa14025a7867b4c1858f5751439919ee6d270
x3xx_x300_fpga_default fpga-fde2a94eb x3xx/fpga-fde2a94eb/x3xx_x300_fpga_default-gfde2a94e.zip 2bdfb7851f6b9aebadfe3aa227d93532bd005fcae4b4d88ae74522f903bd4081
# Example daughterboard targets (none currently exist)
#x3xx_twinrx_cpld_default example_target
#dboard_ubx_cpld_default example_target
# E-Series
e3xx_e310_sg1_fpga_default fpga-fde2a94eb e3xx/fpga-fde2a94eb/e3xx_e310_sg1_fpga_default-gfde2a94e.zip ac5f6db65780e944c565977e0bd5085c76d0bcdf246579f13d5da69211590980
e3xx_e310_sg3_fpga_default fpga-fde2a94eb e3xx/fpga-fde2a94eb/e3xx_e310_sg3_fpga_default-gfde2a94e.zip 84ddae28d98d02cdeb88b560dc6c1f7280f8d9adcc719bec9774deb7ed6dbb3c
e3xx_e320_fpga_default fpga-fde2a94eb e3xx/fpga-fde2a94eb/e3xx_e320_fpga_default-gfde2a94e.zip 95064badda9b93281b01e642faff9577d054883869896899e28293a243d8862c
# E310 Filesystems
e3xx_e310_sdk_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sdk_default-v3.15.0.0.zip 0
e3xx_e310_sg1_mender_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg1_mender_default-v3.15.0.0.zip 0
e3xx_e310_sg1_sdimg_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg1_sdimg_default-v3.15.0.0.zip 0
e3xx_e310_sg3_mender_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg3_mender_default-v3.15.0.0.zip 0
e3xx_e310_sg3_sdimg_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e310_sg3_sdimg_default-v3.15.0.0.zip 0
# E320 Filesystems, etc
e3xx_e320_sdk_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e320_sdk_default-v3.15.0.0.zip 0
e3xx_e320_mender_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e320_mender_default-v3.15.0.0.zip 0
e3xx_e320_sdimg_default meta-ettus-v3.15.0.0 e3xx/meta-ettus-v3.15.0.0/e3xx_e320_sdimg_default-v3.15.0.0.zip 0
# N300-Series
n3xx_n310_fpga_default fpga-fde2a94eb n3xx/fpga-fde2a94eb/n3xx_n310_fpga_default-gfde2a94e.zip 4a45e2d4ec41d34fc550402928248a15488ba7b58d835ef2d4f503556173764a
n3xx_n300_fpga_default fpga-fde2a94eb n3xx/fpga-fde2a94eb/n3xx_n300_fpga_default-gfde2a94e.zip 7f1b512756ae225f8caaf20fd22d2e1537ea211b2fd6c4c9ed1330065fb56645
n3xx_n320_fpga_default fpga-fde2a94eb n3xx/fpga-fde2a94eb/n3xx_n320_fpga_default-gfde2a94e.zip 4fae9de2ede7ff446da8afb61808868c08ba32f8e3092b802c5d4d7643c7175f
n3xx_n310_cpld_default fpga-6bea23d n3xx/fpga-6bea23d/n3xx_n310_cpld_default-g6bea23d.zip ef128dcd265ee8615b673021d4ee84c39357012ffe8b28c8ad7f893f9dcb94cb
n3xx_n320_cpld_default fpga-4bc2c6f n3xx/fpga-4bc2c6f/n3xx_n320_cpld_default-g4bc2c6f.zip 6680a9363efc5fa8b5a68beb3dff44f2e314b94e716e3a1751aba0fed1f384da
# N3XX Mykonos firmware
#n3xx_n310_fw_default fpga-6bea23d n3xx/fpga-6bea23d/n3xx_n310_fw_default-g6bea23d.zip 0
# N300-Series Filesystems, etc
n3xx_common_sdk_default meta-ettus-v3.15.0.0 n3xx/meta-ettus-v3.15.0.0/n3xx_common_sdk_default-v3.15.0.0.zip 0
n3xx_common_mender_default meta-ettus-v3.15.0.0 n3xx/meta-ettus-v3.15.0.0/n3xx_common_mender_default-v3.15.0.0.zip 0
n3xx_common_sdimg_default meta-ettus-v3.15.0.0 n3xx/meta-ettus-v3.15.0.0/n3xx_common_sdimg_default-v3.15.0.0.zip 0
# B200-Series
b2xx_b200_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b200_fpga_default-gfde2a94e.zip 44885476f1bce75657e4dd78ba03830e662a59b6bb612a90e9f8041306deb68e
b2xx_b200mini_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b200mini_fpga_default-gfde2a94e.zip 4318249e394be686e99c58effa162209aa496a039c68ef816f0b2f9247485c12
b2xx_b210_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b210_fpga_default-gfde2a94e.zip 936864ec5e9627f786c3cd3687c761a24a0ff68a99e224fcc2b24cb4d4197dd2
b2xx_b205mini_fpga_default fpga-fde2a94eb b2xx/fpga-fde2a94eb/b2xx_b205mini_fpga_default-gfde2a94e.zip cd3dad8c70925c0c79e728716c0ebb36f2145e1cf929409fa77c953637effd70
b2xx_common_fw_default uhd-2bdad498 b2xx/uhd-2bdad498/b2xx_common_fw_default-g2bdad498.zip a6a867466448f2f75d9d5d290c57ceb8e1d3219391c9f275824fbeb3e7931732
# USRP2 Devices
usrp2_usrp2_fw_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_usrp2_fw_default-g6bea23d.zip d523a18318cb6a7637be40484bf03a6f54766410fee2c1a1f72e8971ea9a9cb6
usrp2_usrp2_fpga_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_usrp2_fpga_default-g6bea23d.zip 505c70aedc8cdfbbfe654bcdbe1ce604c376e733a44cdd1351571f61a7f1cb49
usrp2_n200_fpga_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n200_fpga_default-g6bea23d.zip 833a0098d66c0c502b9c3975d651a79e125133c507f9f4b2c472f9eb96fdaef8
usrp2_n200_fw_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n200_fw_default-g6bea23d.zip 3eee2a6195caafe814912167fccf2dfc369f706446f8ecee36e97d2c0830116f
usrp2_n210_fpga_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n210_fpga_default-g6bea23d.zip 5ce68ac539ee6eeb7d04fb3127c1fabcaff442a8edfaaa2f3746590f9df909bd
usrp2_n210_fw_default fpga-6bea23d usrp2/fpga-6bea23d/usrp2_n210_fw_default-g6bea23d.zip 3646fcd3fc974d18c621cb10dfe97c4dad6d282036dc63b7379995dfad95fb98
n230_n230_fpga_default fpga-fde2a94eb n230/fpga-fde2a94eb/n230_n230_fpga_default-gfde2a94e.zip 5436932bc8a459c6e350885b67f907f7c864edd71c0089f6692636428b3c20a9
# USRP1 Devices
usrp1_usrp1_fpga_default fpga-6bea23d usrp1/fpga-6bea23d/usrp1_usrp1_fpga_default-g6bea23d.zip 03bf72868c900dd0853bf48e2ede91058d579829b0e70c021e51b0e282d1d5be
usrp1_b100_fpga_default fpga-6bea23d usrp1/fpga-6bea23d/usrp1_b100_fpga_default-g6bea23d.zip 7f2306f21e17aa3fae3f966d08c6297d6cf42041974f846ca89f0d633ece8769
usrp1_b100_fw_default fpga-6bea23d usrp1/fpga-6bea23d/usrp1_b100_fw_default-g6bea23d.zip 867f17fac085535dbcb01c226ce87acf49806de6ed0ae9b214d7c8da86e2a71d
# Octoclock
octoclock_octoclock_fw_default uhd-14000041 octoclock/uhd-14000041/octoclock_octoclock_fw_default-g14000041.zip 8da7f1af8cecb7f6259a237a18c39058ba69a11567fa373cffc9704031a1d053
# Legacy USB Windows drivers
usb_common_windrv_default uhd-14000041 usb/uhd-14000041/usb_common_windrv_default-g14000041.zip 835e94b2bdf2312fd3881a1b78e2ec236c1f42b7a5bd3927f85f73cf5e3a5231
"""
if __name__ == "__main__":
sys.exit(not main())

View File

@@ -5,7 +5,7 @@ services:
environment:
MONGO_INITDB_DATABASE: open5gs
webui:
image: openverso/open5gs-webui:2.7.0
image: gradiant/open5gs-webui:2.7.1
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
@@ -13,25 +13,26 @@ services:
ports:
- 9999:9999
smf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.1
command: open5gs-smfd
restart : on-failure
mme:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.1
command: open5gs-mmed
restart: on-failure
ports:
- 36412:36412
sgwc:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.1
command: open5gs-sgwcd
restart : on-failure
sgwu:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.1
command: open5gs-sgwud
restart : on-failure
upf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.1
user: root
command: ["open5gs-upfd"]
cap_add:
- all
@@ -40,19 +41,19 @@ services:
ports:
- 2152:2152
pcrf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.1
command: ["open5gs-pcrfd"]
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
hss:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.1
command: open5gs-hssd
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
nrf:
image: openverso/open5gs:2.4.4
image: gradiant/open5gs:2.7.1
command: open5gs-nrfd
restart : on-failure

View File

@@ -0,0 +1,856 @@
#!/bin/bash
version=0.10.3
display_help() {
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
echo "FLAGS: --db_uri=mongodb://localhost"
echo "COMMANDS:" >&2
echo " add {imsi key opc}: adds a user to the database with default values"
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
echo " remove {imsi}: removes a user from the database"
echo " reset: WIPES OUT the database and restores it to an empty default"
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
echo " type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6"
echo " help: displays this message and exits"
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
echo " add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,"
echo " add_ue_with_slice {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd"
echo " update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE"
echo " update_slice {imsi apn sst sd}: adds an slice to an existent UE"
echo " showall: shows the list of subscriber in the db"
echo " showpretty: shows the list of subscriber in the db in a pretty json tree format"
echo " showfiltered: shows {imsi key opc apn ip} information of subscriber"
echo " ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\""
echo " subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)"
}
while test $# -gt 0; do
case "$1" in
--db_uri*)
DB_URI=`echo $1 | sed -e 's/^[^=]*=//g'`
shift
;;
*)
break
;;
esac
done
DB_URI="${DB_URI:-mongodb://localhost/open5gs}"
if [ "$#" -lt 1 ]; then
display_help
exit 1
fi
if [ "$1" = "help" ]; then
display_help
exit 1
fi
if [ "$1" = "add" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "addT1" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}
],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}
],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "remove" ]; then
if [ "$#" -ne 2 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
exit 1
fi
IMSI=$2
mongosh --eval "db.subscribers.deleteOne({\"imsi\": \"$IMSI\"});" $DB_URI
exit $?
fi
if [ "$1" = "reset" ]; then
if [ "$#" -ne 1 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
exit 1
fi
mongosh --eval "db.subscribers.deleteMany({});" $DB_URI
exit $?
fi
if [ "$1" = "static_ip" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv4\": \"$IP\" }});" $DB_URI
exit $?
fi
if [ "$1" = "static_ip6" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv6\": \"$IP\" }});" $DB_URI
exit $?
fi
if [ "$1" = "type" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
exit 1
fi
IMSI=$2
TYPE=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" $DB_URI
exit $?
fi
if [ "$1" = "add_ue_with_apn" ]; then
if [ "$#" -eq 5 ]; then
IMSI=$2
KI=$3
OPC=$4
APN=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_apn imsi key opc apn\""
exit 1
fi
if [ "$1" = "add_ue_with_slice" ]; then
if [ "$#" -eq 7 ]; then
IMSI=$2
KI=$3
OPC=$4
APN=$5
SST=$6
SD=$7
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt($SST),
\"sd\": \"$SD\",
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_slice imsi key opc apn sst sd\""
exit 1
fi
if [ "$1" = "update_apn" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
APN=$3
SLICE_NUM=$4
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$push: { \"slice.$SLICE_NUM.session\":
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_apn imsi apn num_slice\""
exit 1
fi
if [ "$1" = "update_slice" ]; then
if [ "$#" -eq 5 ]; then
IMSI=$2
APN=$3
SST=$4
SD=$5
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$push: { \"slice\":
{
\"sst\" : NumberInt($SST),
\"sd\" : \"$SD\",
\"default_indicator\" : false,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}]
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_slice imsi apn sst sd\""
exit 1
fi
if [ "$1" = "subscriber_status" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
SUB_STATUS=$3
OP_DET_BARRING=$4
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$set: { \"subscriber_status\": $SUB_STATUS,
\"operator_determined_barring\": $OP_DET_BARRING
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl subscriber_status imsi subscriber_status_val={0,1} operator_determined_barring={0..8}"
exit 1
fi
if [ "$1" = "showall" ]; then
mongosh --eval "db.subscribers.find()" $DB_URI
exit $?
fi
if [ "$1" = "showpretty" ]; then
mongosh --eval "db.subscribers.find().pretty()" $DB_URI
exit $?
fi
if [ "$1" = "showfiltered" ]; then
mongosh --eval "db.subscribers.find({},{'_id':0,'imsi':1,'security.k':1, 'security.opc':1,'slice.session.name':1,'slice.session.ue.ipv4':1})" $DB_URI
exit $?
fi
if [ "$1" = "ambr_speed" ]; then
if [ "$#" -eq 6 ]; then
IMSI=$2
DL_VALUE=$3
DL_UNIT=$4
UL_VALUE=$5
UL_UNIT=$6
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},
{\$set: {
\"ambr\" : {
\"downlink\" : {
\"value\" : NumberInt($DL_VALUE),
\"unit\" : NumberInt($DL_UNIT)
},
\"uplink\" :{
\"value\": NumberInt($UL_VALUE),
\"unit\" : NumberInt($UL_UNIT)
}
},
\"slice.0.session.0.ambr\": {
\"downlink\" : {
\"value\" : NumberInt($DL_VALUE),
\"unit\" : NumberInt($DL_UNIT)
},
\"uplink\" :{
\"value\": NumberInt($UL_VALUE),
\"unit\" : NumberInt($UL_UNIT)
}
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl ambr_speed imsi dl_value dl_unit ul_value ul_unit dl is for download and ul is for upload and the unit values are[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ] \""
exit 1
fi
display_help

View File

@@ -1,6 +1,6 @@
#!/bin/bash
MONGO_CONTAINER=open5gs-and-srslte-mongo-1
MONGO_CONTAINER=open5gs-and-srsran-4g-mongo-1
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.10.3)
FLAGS: --db_uri=mongodb://localhost
@@ -31,6 +31,6 @@ MONGO_CONTAINER=open5gs-and-srslte-mongo-1
docker cp open5gs-dbctl $MONGO_CONTAINER:/
docker run -ti --rm \
--net open5gs-and-srslte_default \
--net open5gs-and-srsran-4g_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"

View File

@@ -1,7 +1,7 @@
version: '3'
services:
enodeb:
image: openverso/srsran-4g:23_11
image: gradiant/srsran-4g:23_11
command:
- enb
privileged: true
@@ -13,9 +13,10 @@ services:
UE_HOSTNAME: ue
MCC: "999"
MNC: "70"
ZMQ: true
ue:
image: openverso/srsran-4g:23_11
image: gradiant/srsran-4g:23_11
command:
- ue
privileged: true
@@ -29,3 +30,5 @@ services:
MSISDN: "0000000001"
KEY: "465B5CE8B199B49FAA5F0A2EE238A6BC"
OPC: "E8ED289DEBA952E4283B54E88E6183CA"
SRSUE_5G: false
ZMQ: true

View File

@@ -2,6 +2,22 @@
5G end to end communication demo with open5gs, srsRANProject and srsUE (srsRAN4G).
# GNB config options
By default, the driver name and arguments are:
```
DEVICE_DRIVER=uhd
DEVICE_ARGS=type=b200,num_recv_frames=64,num_send_frames=64
```
When using DEVICE_DRIVER=zmq and setting DEVICE_ARGS=default, the default values that will be used for zmq are:
```
device_args: tx_port=tcp://${GNB_ADDRESS}:2000,rx_port=tcp://${UE_ADDRESS}:2001,id=gnb,base_srate=${SRATE}e6
```
If different DEVICE_ARGS are set with ZMQ, ensure that they match the addresses of the GNB and UE devices.
# Deployment of the core and register subscribers
deploy the core (open5gs) with:

View File

@@ -0,0 +1,422 @@
logger:
file:
path: /opt/open5gs/var/log/open5gs/smf.log
# level: info # fatal|error|warn|info(default)|debug|trace
global:
# max:
# ue: 1024 # The number of UE can be increased depending on memory size.
# peer: 64
smf:
sbi:
server:
- dev: eth0
port: 7777
client:
# nrf:
# - uri: http://nrf:7777
scp:
- uri: http://scp:7777
pfcp:
server:
- dev: eth0
client:
upf:
- address: upf
gtpc:
server:
- dev: eth0
gtpu:
server:
- dev: eth0
metrics:
server:
- dev: eth0
port: 9090
session:
- subnet: 10.45.0.0/16
gateway: 10.45.0.1
- subnet: 2001:db8:cafe::/48
gateway: 2001:db8:cafe::1
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
# p-cscf:
# - 127.0.0.1
# - ::1
ctf:
enabled: auto # auto(default)|yes|no
# freeDiameter: /opt/open5gs/etc/freeDiameter/smf.conf
################################################################################
# SMF Info
################################################################################
# <SMF Selection - 5G Core only>
# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
# 2. NRF responds to AMF with SmfInfo during NF-Discovery.
# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
#
# Note that if there is no SmfInfo, any AMF can select this SMF.
#
# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
#
# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
# info:
# - s_nssai:
# - sst: 1
# sd: 009000
# dnn:
# - internet
# - ims
#
# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 1
#
# o If any of conditions below are met:
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1-9]
# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:99970 TAC:10-20,30-40]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 1-9
# - s_nssai:
# - sst: 2
# sd: 000080
# dnn:
# - internet
# - ims
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 10-20
# - 30-40
#
# o Complex Example
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# - sst: 1
# sd: 000080
# dnn:
# - internet
# - ims
# - sst: 1
# sd: 009000
# dnn:
# [internet, ims]
# - sst: 2
# dnn:
# - internet
# - sst: 3
# sd: 123456
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: [1, 2, 3]
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 4
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 5
# - 6
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 100-200
# - 300-400
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 500-600
# - 700-800
# - 900-1000
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 99
#
################################################################################
# SBI Server
################################################################################
# o Bind to the address on the eth0 and advertise as open5gs-smf.svc.local
# sbi:
# server:
# - dev:eth0
# advertise: open5gs-smf.svc.local
#
# o Specify a custom port number 7777 while binding to the given address
# sbi:
# server:
# - address: smf.localdomain
# port: 7777
#
# o Bind to 127.0.0.4 and advertise as open5gs-smf.svc.local
# sbi:
# server:
# - address: 127.0.0.4
# port: 7777
# advertise: open5gs-smf.svc.local
#
# o Bind to port 7777 but advertise with a different port number 8888
# sbi:
# server:
# - address: 127.0.0.4
# port: 7777
# advertise: open5gs-smf.svc.local:8888
#
################################################################################
# SBI Client
################################################################################
# o Direct Communication with NRF
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
#
# o Indirect Communication by Delegating to SCP
# sbi:
# client:
# scp:
# - uri: http://127.0.0.200:7777
#
# o Indirect Communication without Delegation
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: no # Directly communicate NRF discovery
# scp:
# next: no # Do not delegate to SCP for next-hop
#
# o Indirect Communication with Delegated Discovery
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: yes # Delegate discovery to SCP
# scp:
# next: yes # Delegate to SCP for next-hop communications
#
# o Default delegation: all communications are delegated to the SCP
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# # No 'delegated' section; defaults to AUTO delegation
#
################################################################################
# HTTPS scheme with TLS
################################################################################
# o Set as default if not individually set
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Enable SSL key logging for Wireshark
# - This configuration allows capturing SSL/TLS session keys
# for debugging or analysis purposes using Wireshark.
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-server-sslkeylog.log
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-client-sslkeylog.log
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Add client TLS verification
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# verify_client: true
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_private_key: @sysconfdir@/open5gs/tls/smf.key
# client_cert: @sysconfdir@/open5gs/tls/smf.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
################################################################################
# PFCP Server
################################################################################
# o Override PFCP address to be advertised to UPF in PFCP association
# pfcp:
# server:
# - dev: eth0
# advertise: open5gs-smf.svc.local
#
################################################################################
# PFCP Client
################################################################################
# o UPF selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# tac: 1
# - address: 127.0.0.12
# tac: [3,5,8]
#
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# dnn: ims
# - address: 127.0.0.12
# dnn: [internet, web]
#
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
# (either single enb_id or multiple enb_ids, HEX representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# e_cell_id: 463
# - address: 127.0.0.12
# nr_cell_id: [123456789, 9413]
#
################################################################################
# GTP-C Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpc:
# server:
# - address: 127.0.0.4
# - address: fd69:f21d:873c:fa::3
#
################################################################################
# GTP-U Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpu:
# server:
# - address: 127.0.0.4
# - address: ::1
#
################################################################################
# 3GPP Specification
################################################################################
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48
# (If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash.)
# session:
# - subnet: 10.45.0.0/16
# gateway: 10.45.0.1
# dnn: internet
# - subnet: 2001:db8:cafe::/48
# dnn: internet
# - subnet: 10.46.0.0/16
# gateway: 10.46.0.1
# dnn: ims
# - subnet: 2001:db8:babe::/48
# dnn: ims
#
# o Pool Range
# session:
# - subnet: 10.45.0.0/16
# gateway: 10.45.0.1
# range:
# - 10.45.0.100-10.45.0.200
# - 10.45.1.100-
# - -10.45.0.200
# - subnet: 2001:db8:cafe::/48
# range:
# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0
# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0
#
# o Security Indication(5G Core only)
# security_indication:
# integrity_protection_indication: required|preferred|not-needed
# confidentiality_protection_indication: required|preferred|not-needed
# maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
# maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate

View File

@@ -5,65 +5,62 @@ services:
environment:
MONGO_INITDB_DATABASE: open5gs
amf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command:
- open5gs-amfd
restart : on-failure
ausf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command:
- open5gs-ausfd
restart : on-failure
bsf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command: open5gs-bsfd
restart : on-failure
nrf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command: open5gs-nrfd
restart : on-failure
nssf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command: open5gs-nssfd
restart : on-failure
pcf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command:
- open5gs-pcfd
environment:
DB_URI: mongodb://mongo/open5gs
restart : on-failure
pcrf:
image: openverso/open5gs:2.7.0
command: ["open5gs-pcrfd"]
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
scp:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command: open5gs-scpd
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
smf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
#It is necessary to mount the configuration file if pcfr is not deployed
volumes:
- ./config/smf.yaml:/opt/open5gs/etc/open5gs/smf.yaml
command: open5gs-smfd
restart : on-failure
udm:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
restart: on-failure
command:
- open5gs-udmd
udr:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
@@ -71,7 +68,8 @@ services:
- open5gs-udrd
upf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
user: root
command:
- open5gs-upfd
cap_add:
@@ -82,7 +80,7 @@ services:
- 2152:2152
webui:
image: openverso/open5gs-webui:2.7.0
image: gradiant/open5gs-webui:2.7.5
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs

View File

@@ -1,7 +1,7 @@
version: '3'
services:
gnb:
image: openverso/srsran-5g:23_10_1
image: gradiant/srsran-5g:24_04
command:
- gnb
privileged: true
@@ -13,7 +13,7 @@ services:
AMF_HOSTNAME: amf
AMF_BIND_INTERFACE: eth0
DEVICE_DRIVER: zmq
DEVICE_ARGS: tx_port=tcp://:2000,rx_port=tcp://:2001,id=gnb,base_srate=23.04e6
DEVICE_ARGS: default
SRATE: 23.04
TX_GAIN: 75
RX_GAIN: 75
@@ -26,7 +26,7 @@ services:
OTW_FORMAT: default
ue:
image: openverso/srsran-4g:23_11
image: gradiant/srsran-4g:23_11
command:
- ue
privileged: true
@@ -51,5 +51,7 @@ services:
NR_NOF_CARRIERS: 1
NR_MAX_NOF_PRB: 106
NR_NOF_PRB: 106
SRSUE_5G: true
ZMQ: true

View File

@@ -33,4 +33,4 @@ docker cp open5gs-dbctl $MONGO_CONTAINER:/
docker run -ti --rm \
--net open5gs-and-srsran-5g_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"

View File

@@ -0,0 +1,61 @@
# open5gs and ueransim with two slices
This tutorial is an adaptation of the Open5GS and UERANSIM tutorial.
The slices values were changed in the gNBs, and the NSSF and AMF configuration files were added in the config folder. Also, the SMF configuration file was modified, and the register_subscriber.sh script was updated with the new slice values.
# Deployment NGC and register subscribers
deploy the ngc core (open5gs) with:
```
docker compose -f ngc.yaml up -d
```
Register subscribers in ngc with `./register_subscriber.sh`.
# Deploy gnodeb
gnb1.yaml is configured to deploy 1 gnodeb (gnb1) and 3 ues:
```
docker compose -f gnb1.yaml up -d
```
You can use gnb2.yaml to deploy a second gnodeb (gnb2) with 3 additional ues:
```
docker compose -f gnb2.yaml up -d
```
# Test
To test ue connectivity through RAN, enter the gnb1-ues1 container:
```
docker compose -f gnb1.yaml exec ues1 /bin/bash
traceroute -i uesimtun0 google.es
ping -I uesimtun0 google.es
```
ues container will have multiple interfaces (one for each ue).
You can try each tunnel providing the flag '-i' in traceroute and '-I' in ping.
If you have deployed a second genodeb (gnb2) the command to enter in the ues container is:
```
docker compose -f gnb2.yaml exec ues2 /bin/bash
```
# Clean Up
Undeploy with:
```
docker compose -f gnb1.yaml down
docker compose -f gnb2.yaml down
docker compose -f ngc.yaml down -v
```

View File

@@ -0,0 +1,304 @@
logger:
file:
path: /opt/open5gs/var/log/open5gs/amf.log
# level: info # fatal|error|warn|info(default)|debug|trace
global:
# max:
# ue: 1024 # The number of UE can be increased depending on memory size.
# peer: 64
amf:
sbi:
server:
- dev: eth0
port: 7777
client:
# nrf:
# - uri: http://127.0.0.10:7777
scp:
- uri: http://scp:7777
ngap:
server:
- dev: eth0
metrics:
server:
- dev: eth0
port: 9090
guami:
- plmn_id:
mcc: 999
mnc: 70
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 999
mnc: 70
tac: 1
plmn_support:
- plmn_id:
mcc: 999
mnc: 70
s_nssai:
- sd: 0x111111
sst: 1
- sd: 0x222222
sst: 2
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
short: Next
amf_name: open5gs-amf0
time:
# t3502:
# value: 720 # 12 minutes * 60 = 720 seconds
t3512:
value: 540 # 9 minutes * 60 = 540 seconds
################################################################################
# SBI Server
################################################################################
# o Bind to the address on the eth0 and advertise as open5gs-amf.svc.local
# sbi:
# server:
# - dev:eth0
# advertise: open5gs-amf.svc.local
#
# o Specify a custom port number 7777 while binding to the given address
# sbi:
# server:
# - address: amf.localdomain
# port: 7777
#
# o Bind to 127.0.0.5 and advertise as open5gs-amf.svc.local
# sbi:
# server:
# - address: 127.0.0.5
# port: 7777
# advertise: open5gs-amf.svc.local
#
# o Bind to port 7777 but advertise with a different port number 8888
# sbi:
# server:
# - address: 127.0.0.5
# port: 7777
# advertise: open5gs-amf.svc.local:8888
#
################################################################################
# SBI Client
################################################################################
# o Direct Communication with NRF
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
#
# o Indirect Communication by Delegating to SCP
# sbi:
# client:
# scp:
# - uri: http://127.0.0.200:7777
#
# o Indirect Communication without Delegation
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: no # Directly communicate NRF discovery
# scp:
# next: no # Do not delegate to SCP for next-hop
#
# o Indirect Communication with Delegated Discovery
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: yes # Delegate discovery to SCP
# scp:
# next: yes # Delegate to SCP for next-hop communications
#
# o Default delegation: all communications are delegated to the SCP
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# # No 'delegated' section; defaults to AUTO delegation
#
################################################################################
# HTTPS scheme with TLS
################################################################################
# o Set as default if not individually set
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/amf.key
# cert: @sysconfdir@/open5gs/tls/amf.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# sbi:
# server:
# - address: amf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Enable SSL key logging for Wireshark
# - This configuration allows capturing SSL/TLS session keys
# for debugging or analysis purposes using Wireshark.
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/amf.key
# cert: @sysconfdir@/open5gs/tls/amf.crt
# sslkeylogfile: @localstatedir@/log/open5gs/tls/amf-server-sslkeylog.log
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/amf-client-sslkeylog.log
# sbi:
# server:
# - address: amf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Add client TLS verification
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/amf.key
# cert: @sysconfdir@/open5gs/tls/amf.crt
# verify_client: true
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_private_key: @sysconfdir@/open5gs/tls/amf.key
# client_cert: @sysconfdir@/open5gs/tls/amf.crt
# sbi:
# server:
# - address: amf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
################################################################################
# NGAP Server
################################################################################
# o Listen on address available in `eth0` interface
# ngap:
# server:
# - dev: eth0
#
################################################################################
# 3GPP Specification
################################################################################
# o GUAMI
# guami:
# - plmn_id:
# mcc: 999
# mnc: 70
# amf_id:
# region: 2
# set: 1
# pointer: 4
# - plmn_id:
# mcc: 001
# mnc: 01
# amf_id:
# region: 5
# set: 2
#
# o TAI
# tai:
# - plmn_id:
# mcc: 001
# mnc: 01
# tac: [1, 3, 5]
# tai:
# - plmn_id:
# mcc: 002
# mnc: 02
# tac: [6-10, 15-18]
# tai:
# - plmn_id:
# mcc: 003
# mnc: 03
# tac: 20
# - plmn_id:
# mcc: 004
# mnc: 04
# tac: 21
# tai:
# - plmn_id:
# mcc: 005
# mnc: 05
# tac: [22, 28]
# - plmn_id:
# mcc: 006
# mnc: 06
# tac: [30-32, 34, 36-38, 40-42, 44, 46, 48]
# - plmn_id:
# mcc: 007
# mnc: 07
# tac: 50
# - plmn_id:
# mcc: 008
# mnc: 08
# tac: 60
# - plmn_id:
# mcc: 009
# mnc: 09
# tac: [70, 80]
#
# o PLMN Support
# plmn_support:
# - plmn_id:
# mcc: 999
# mnc: 70
# s_nssai:
# - sst: 1
# sd: 010000
# - plmn_id:
# mcc: 999
# mnc: 70
# s_nssai:
# - sst: 1
#
# o Access Control
# access_control:
# - default_reject_cause: 13
# - plmn_id:
# reject_cause: 15
# mcc: 001
# mnc: 01
# - plmn_id:
# mcc: 002
# mnc: 02
# - plmn_id:
# mcc: 999
# mnc: 70
#
# o Relative Capacity
# relative_capacity: 100

View File

@@ -0,0 +1,207 @@
logger:
file:
path: /opt/open5gs/var/log/open5gs/nssf.log
# level: info # fatal|error|warn|info(default)|debug|trace
global:
max:
# ue: 1024 # The number of UE can be increased depending on memory size.
# peer: 64
nssf:
sbi:
server:
- dev: eth0
port: 7777
client:
# nrf:
# - uri: http://127.0.0.10:7777
scp:
- uri: http://scp:7777
nsi:
- uri: http://nrf:7777
s_nssai:
sst: 1
sd: 0x111111
- uri: http://nrf:7777
s_nssai:
sst: 2
sd: 0x222222
################################################################################
# SBI Server
################################################################################
# o Bind to the address on the eth0 and advertise as open5gs-nssf.svc.local
# sbi:
# server:
# - dev:eth0
# advertise: open5gs-nssf.svc.local
#
# o Specify a custom port number 7777 while binding to the given address
# sbi:
# server:
# - address: nssf.localdomain
# port: 7777
#
# o Bind to 127.0.0.14 and advertise as open5gs-nssf.svc.local
# sbi:
# server:
# - address: 127.0.0.14
# port: 7777
# advertise: open5gs-nssf.svc.local
#
# o Bind to port 7777 but advertise with a different port number 8888
# sbi:
# server:
# - address: 127.0.0.14
# port: 7777
# advertise: open5gs-nssf.svc.local:8888
#
################################################################################
# SBI Client
################################################################################
# o Network Slice Instance(NSI)
# 1. NRF[http://::1:7777/nnrf-nfm/v1/nf-instances]
# S-NSSAI[SST:1]
# 2. NRF[http://127.0.0.19:7777/nnrf-nfm/v1/nf-instances]
# NSSAI[SST:1, SD:000080]
# 3. NRF[http://127.0.0.10:7777/nnrf-nfm/v1/nf-instances]
# NSSAI[SST:1, SD:009000]
#
# sbi:
# client:
# nsi:
# - uri: http://[::1]:7777
# s_nssai:
# sst: 1
# - uri: http://127.0.0.19:7777
# s_nssai:
# sst: 1
# sd: 000080
# - uri: http://127.0.0.10:7777
# s_nssai:
# sst: 1
# sd: 009000
#
# o Direct Communication with NRF
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
#
# o Indirect Communication by Delegating to SCP
# sbi:
# client:
# scp:
# - uri: http://127.0.0.200:7777
#
# o Indirect Communication without Delegation
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: no # Directly communicate NRF discovery
# scp:
# next: no # Do not delegate to SCP for next-hop
#
# o Indirect Communication with Delegated Discovery
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: yes # Delegate discovery to SCP
# scp:
# next: yes # Delegate to SCP for next-hop communications
#
# o Default delegation: all communications are delegated to the SCP
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# # No 'delegated' section; defaults to AUTO delegation
#
#
################################################################################
# HTTPS scheme with TLS
################################################################################
# o Set as default if not individually set
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/nssf.key
# cert: @sysconfdir@/open5gs/tls/nssf.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# sbi:
# server:
# - address: nssf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
# nsi:
# - uri: https://nrf.localdomain
# s_nssai:
# sst: 1
#
# o Enable SSL key logging for Wireshark
# - This configuration allows capturing SSL/TLS session keys
# for debugging or analysis purposes using Wireshark.
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/nssf.key
# cert: @sysconfdir@/open5gs/tls/nssf.crt
# sslkeylogfile: @localstatedir@/log/open5gs/tls/nssf-server-sslkeylog.log
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/nssf-client-sslkeylog.log
# sbi:
# server:
# - address: nssf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
# nsi:
# - uri: https://nrf.localdomain
# s_nssai:
# sst: 1
#
# o Add client TLS verification
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/nssf.key
# cert: @sysconfdir@/open5gs/tls/nssf.crt
# verify_client: true
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_private_key: @sysconfdir@/open5gs/tls/nssf.key
# client_cert: @sysconfdir@/open5gs/tls/nssf.crt
# sbi:
# server:
# - address: nssf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
# nsi:
# - uri: https://nrf.localdomain
# s_nssai:
# sst: 1

View File

@@ -0,0 +1,438 @@
logger:
file:
path: /opt/open5gs/var/log/open5gs/smf.log
# level: info # fatal|error|warn|info(default)|debug|trace
global:
# max:
# ue: 1024 # The number of UE can be increased depending on memory size.
# peer: 64
smf:
sbi:
server:
- dev: eth0
port: 7777
client:
nrf:
- uri: http://nrf:7777
scp:
- uri: http://scp:7777
pfcp:
server:
- dev: eth0
client:
upf:
- address: upf
gtpc:
server:
- dev: eth0
gtpu:
server:
- dev: eth0
metrics:
server:
- dev: eth0
port: 9090
info:
- s_nssai:
- sst: 1
sd: "0x111111"
dnn:
- internet
- sst: 2
sd: "0x222222"
dnn:
- internet
tai:
- plmn_id:
mcc: 999
mnc: 70
tac: 1
session:
- subnet: 10.45.0.0/16
gateway: 10.45.0.1
dnn: internet
- subnet: 2001:db8:cafe::/48
gateway: 2001:db8:cafe::1
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
# p-cscf:
# - 127.0.0.1
# - ::1
# ctf:
# enabled: auto # auto(default)|yes|no
# freeDiameter: /opt/open5gs/etc/freeDiameter/smf.conf
################################################################################
# SMF Info
################################################################################
# <SMF Selection - 5G Core only>
# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
# 2. NRF responds to AMF with SmfInfo during NF-Discovery.
# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
#
# Note that if there is no SmfInfo, any AMF can select this SMF.
#
# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
#
# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
# info:
# - s_nssai:
# - sst: 1
# sd: 009000
# dnn:
# - internet
# - ims
#
# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 1
#
# o If any of conditions below are met:
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1-9]
# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:99970 TAC:10-20,30-40]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 1-9
# - s_nssai:
# - sst: 2
# sd: 000080
# dnn:
# - internet
# - ims
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 10-20
# - 30-40
#
# o Complex Example
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# - sst: 1
# sd: 000080
# dnn:
# - internet
# - ims
# - sst: 1
# sd: 009000
# dnn:
# [internet, ims]
# - sst: 2
# dnn:
# - internet
# - sst: 3
# sd: 123456
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: [1, 2, 3]
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 4
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 5
# - 6
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 100-200
# - 300-400
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 500-600
# - 700-800
# - 900-1000
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 99
#
################################################################################
# SBI Server
################################################################################
# o Bind to the address on the eth0 and advertise as open5gs-smf.svc.local
# sbi:
# server:
# - dev:eth0
# advertise: open5gs-smf.svc.local
#
# o Specify a custom port number 7777 while binding to the given address
# sbi:
# server:
# - address: smf.localdomain
# port: 7777
#
# o Bind to 127.0.0.4 and advertise as open5gs-smf.svc.local
# sbi:
# server:
# - address: 127.0.0.4
# port: 7777
# advertise: open5gs-smf.svc.local
#
# o Bind to port 7777 but advertise with a different port number 8888
# sbi:
# server:
# - address: 127.0.0.4
# port: 7777
# advertise: open5gs-smf.svc.local:8888
#
################################################################################
# SBI Client
################################################################################
# o Direct Communication with NRF
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
#
# o Indirect Communication by Delegating to SCP
# sbi:
# client:
# scp:
# - uri: http://127.0.0.200:7777
#
# o Indirect Communication without Delegation
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: no # Directly communicate NRF discovery
# scp:
# next: no # Do not delegate to SCP for next-hop
#
# o Indirect Communication with Delegated Discovery
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: yes # Delegate discovery to SCP
# scp:
# next: yes # Delegate to SCP for next-hop communications
#
# o Default delegation: all communications are delegated to the SCP
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# # No 'delegated' section; defaults to AUTO delegation
#
################################################################################
# HTTPS scheme with TLS
################################################################################
# o Set as default if not individually set
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Enable SSL key logging for Wireshark
# - This configuration allows capturing SSL/TLS session keys
# for debugging or analysis purposes using Wireshark.
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-server-sslkeylog.log
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-client-sslkeylog.log
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Add client TLS verification
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# verify_client: true
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_private_key: @sysconfdir@/open5gs/tls/smf.key
# client_cert: @sysconfdir@/open5gs/tls/smf.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
################################################################################
# PFCP Server
################################################################################
# o Override PFCP address to be advertised to UPF in PFCP association
# pfcp:
# server:
# - dev: eth0
# advertise: open5gs-smf.svc.local
#
################################################################################
# PFCP Client
################################################################################
# o UPF selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# tac: 1
# - address: 127.0.0.12
# tac: [3,5,8]
#
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# dnn: ims
# - address: 127.0.0.12
# dnn: [internet, web]
#
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
# (either single enb_id or multiple enb_ids, HEX representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# e_cell_id: 463
# - address: 127.0.0.12
# nr_cell_id: [123456789, 9413]
#
################################################################################
# GTP-C Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpc:
# server:
# - address: 127.0.0.4
# - address: fd69:f21d:873c:fa::3
#
################################################################################
# GTP-U Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpu:
# server:
# - address: 127.0.0.4
# - address: ::1
#
################################################################################
# 3GPP Specification
################################################################################
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48
# (If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash.)
# session:
# - subnet: 10.45.0.0/16
# gateway: 10.45.0.1
# dnn: internet
# - subnet: 2001:db8:cafe::/48
# dnn: internet
# - subnet: 10.46.0.0/16
# gateway: 10.46.0.1
# dnn: ims
# - subnet: 2001:db8:babe::/48
# dnn: ims
#
# o Pool Range
# session:
# - subnet: 10.45.0.0/16
# gateway: 10.45.0.1
# range:
# - 10.45.0.100-10.45.0.200
# - 10.45.1.100-
# - -10.45.0.200
# - subnet: 2001:db8:cafe::/48
# range:
# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0
# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0
#
# o Security Indication(5G Core only)
# security_indication:
# integrity_protection_indication: required|preferred|not-needed
# confidentiality_protection_indication: required|preferred|not-needed
# maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
# maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate

View File

@@ -0,0 +1,32 @@
version: '3'
services:
gnb1:
image: gradiant/ueransim:3.2.7
container_name: gnb1
command:
- gnb
environment:
AMF_HOSTNAME: amf
GNB_HOSTNAME: gnb1
TAC: '1'
MCC: '999'
MNC: '70'
SST: '1'
SD: '0x111111'
ues1:
image: gradiant/ueransim:3.2.7
command: ['ue','-n','3']
cap_add:
- all
privileged: true
environment:
GNB_HOSTNAME: gnb1
APN: internet
MSISDN: '0000000001'
MCC: '999'
MNC: '70'
KEY: '465B5CE8B199B49FAA5F0A2EE238A6BC'
OP_TYPE: OPC
OP: 'E8ED289DEBA952E4283B54E88E6183CA'
SST: '1'
SD: '0x111111'

View File

@@ -0,0 +1,33 @@
version: '3'
services:
gnb2:
image: gradiant/ueransim:3.2.7
container_name: gnb2
command:
- gnb
environment:
AMF_HOSTNAME: amf
GNB_HOSTNAME: gnb2
TAC: '1'
MCC: '999'
MNC: '70'
SST: '2'
SD: '0x222222'
ues2:
image: gradiant/ueransim:3.2.7
command: ['ue','-n','3']
cap_add:
- all
privileged: true
environment:
GNB_HOSTNAME: gnb2
APN: internet
MSISDN: '0000000011'
MCC: '999'
MNC: '70'
KEY: '465B5CE8B199B49FAA5F0A2EE238A6BC'
OP_TYPE: OPC
OP: 'E8ED289DEBA952E4283B54E88E6183CA'
SST: '2'
SD: '0x222222'

View File

@@ -0,0 +1,107 @@
version: '3'
services:
mongo:
image: mongo
environment:
MONGO_INITDB_DATABASE: open5gs
amf:
image: gradiant/open5gs:2.7.5
volumes:
- ./config/amf.yaml:/opt/open5gs/etc/open5gs/amf.yaml
command:
- open5gs-amfd
restart: on-failure
ausf:
image: gradiant/open5gs:2.7.5
command:
- open5gs-ausfd
restart: on-failure
bsf:
image: gradiant/open5gs:2.7.5
command:
- open5gs-bsfd
restart: on-failure
nrf:
image: gradiant/open5gs:2.7.5
command: open5gs-nrfd
restart: on-failure
nssf:
image: gradiant/open5gs:2.7.5
volumes:
- ./config/nssf.yaml:/opt/open5gs/etc/open5gs/nssf.yaml
command: open5gs-nssfd
restart: on-failure
pcf:
image: gradiant/open5gs:2.7.5
command:
- open5gs-pcfd
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
scp:
image: gradiant/open5gs:2.7.5
command: open5gs-scpd
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
smf:
image: gradiant/open5gs:2.7.5
#It is necessary to mount the configuration file if pcfr is not deployed
volumes:
- ./config/smf.yaml:/opt/open5gs/etc/open5gs/smf.yaml
restart: on-failure
command: open5gs-smfd
udm:
image: gradiant/open5gs:2.7.5
restart: on-failure
command:
- open5gs-udmd
udr:
image: gradiant/open5gs:2.7.5
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
command:
- open5gs-udrd
upf:
image: gradiant/open5gs:2.7.5
user: root
command:
- open5gs-upfd
cap_add:
- all
privileged: true
restart: on-failure
# environment:
# ENABLE_NAT: "false"
ports:
- 2152:2152
webui:
image: gradiant/open5gs-webui:2.7.5
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
NODE_ENV: dev
ports:
- 9999:9999
# portainer:
# image: portainer/portainer-ce
# ports:
# - 9000:9000
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock

View File

@@ -0,0 +1,856 @@
#!/bin/bash
version=0.10.3
display_help() {
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
echo "FLAGS: --db_uri=mongodb://localhost"
echo "COMMANDS:" >&2
echo " add {imsi key opc}: adds a user to the database with default values"
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
echo " remove {imsi}: removes a user from the database"
echo " reset: WIPES OUT the database and restores it to an empty default"
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
echo " type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6"
echo " help: displays this message and exits"
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
echo " add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,"
echo " add_ue_with_slice {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd"
echo " update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE"
echo " update_slice {imsi apn sst sd}: adds an slice to an existent UE"
echo " showall: shows the list of subscriber in the db"
echo " showpretty: shows the list of subscriber in the db in a pretty json tree format"
echo " showfiltered: shows {imsi key opc apn ip} information of subscriber"
echo " ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\""
echo " subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)"
}
while test $# -gt 0; do
case "$1" in
--db_uri*)
DB_URI=`echo $1 | sed -e 's/^[^=]*=//g'`
shift
;;
*)
break
;;
esac
done
DB_URI="${DB_URI:-mongodb://localhost/open5gs}"
if [ "$#" -lt 1 ]; then
display_help
exit 1
fi
if [ "$1" = "help" ]; then
display_help
exit 1
fi
if [ "$1" = "add" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "addT1" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
KI=$3
OPC=$4
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}
],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
if [ "$#" -eq 5 ]; then
IMSI=$2
IP=$3
KI=$4
OPC=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"internet\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet1\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
},{
\"name\" : \"internet2\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"ue\":
{
\"ipv4\": \"$IP\"
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}
],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\""
exit 1
fi
if [ "$1" = "remove" ]; then
if [ "$#" -ne 2 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\""
exit 1
fi
IMSI=$2
mongosh --eval "db.subscribers.deleteOne({\"imsi\": \"$IMSI\"});" $DB_URI
exit $?
fi
if [ "$1" = "reset" ]; then
if [ "$#" -ne 1 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\""
exit 1
fi
mongosh --eval "db.subscribers.deleteMany({});" $DB_URI
exit $?
fi
if [ "$1" = "static_ip" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv4\": \"$IP\" }});" $DB_URI
exit $?
fi
if [ "$1" = "static_ip6" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\""
exit 1
fi
IMSI=$2
IP=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.ipv6\": \"$IP\" }});" $DB_URI
exit $?
fi
if [ "$1" = "type" ]; then
if [ "$#" -ne 3 ]; then
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\""
exit 1
fi
IMSI=$2
TYPE=$3
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" $DB_URI
exit $?
fi
if [ "$1" = "add_ue_with_apn" ]; then
if [ "$#" -eq 5 ]; then
IMSI=$2
KI=$3
OPC=$4
APN=$5
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt(1),
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_apn imsi key opc apn\""
exit 1
fi
if [ "$1" = "add_ue_with_slice" ]; then
if [ "$#" -eq 7 ]; then
IMSI=$2
KI=$3
OPC=$4
APN=$5
SST=$6
SD=$7
mongosh --eval "db.subscribers.insertOne(
{
\"_id\": new ObjectId(),
\"schema_version\": NumberInt(1),
\"imsi\": \"$IMSI\",
\"msisdn\": [],
\"imeisv\": [],
\"mme_host\": [],
\"mm_realm\": [],
\"purge_flag\": [],
\"slice\":[
{
\"sst\": NumberInt($SST),
\"sd\": \"$SD\",
\"default_indicator\": true,
\"session\": [
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"qos\" :
{ \"index\": NumberInt(9),
\"arp\":
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\": NumberInt(1),
\"pre_emption_vulnerability\": NumberInt(2)
}
},
\"ambr\":
{
\"downlink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
},
\"uplink\":
{
\"value\": NumberInt(1000000000),
\"unit\": NumberInt(0)
}
},
\"pcc_rule\": [],
\"_id\": new ObjectId(),
}],
\"_id\": new ObjectId(),
}],
\"security\":
{
\"k\" : \"$KI\",
\"op\" : null,
\"opc\" : \"$OPC\",
\"amf\" : \"8000\",
},
\"ambr\" :
{
\"downlink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)},
\"uplink\" : { \"value\": NumberInt(1000000000), \"unit\": NumberInt(0)}
},
\"access_restriction_data\": 32,
\"network_access_mode\": 0,
\"subscriber_status\": 0,
\"operator_determined_barring\": 0,
\"subscribed_rau_tau_timer\": 12,
\"__v\": 0
}
);" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add_ue_with_slice imsi key opc apn sst sd\""
exit 1
fi
if [ "$1" = "update_apn" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
APN=$3
SLICE_NUM=$4
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$push: { \"slice.$SLICE_NUM.session\":
{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_apn imsi apn num_slice\""
exit 1
fi
if [ "$1" = "update_slice" ]; then
if [ "$#" -eq 5 ]; then
IMSI=$2
APN=$3
SST=$4
SD=$5
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$push: { \"slice\":
{
\"sst\" : NumberInt($SST),
\"sd\" : \"$SD\",
\"default_indicator\" : false,
\"_id\" : new ObjectId(),
\"session\" :
[{
\"name\" : \"$APN\",
\"type\" : NumberInt(3),
\"_id\" : new ObjectId(),
\"pcc_rule\" : [],
\"ambr\" :
{
\"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
\"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) },
},
\"qos\" :
{
\"index\" : NumberInt(9),
\"arp\" :
{
\"priority_level\" : NumberInt(8),
\"pre_emption_capability\" : NumberInt(1),
\"pre_emption_vulnerability\" : NumberInt(1),
},
},
}]
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl update_slice imsi apn sst sd\""
exit 1
fi
if [ "$1" = "subscriber_status" ]; then
if [ "$#" -eq 4 ]; then
IMSI=$2
SUB_STATUS=$3
OP_DET_BARRING=$4
mongosh --eval "db.subscribers.updateOne({ \"imsi\": \"$IMSI\"},
{\$set: { \"subscriber_status\": $SUB_STATUS,
\"operator_determined_barring\": $OP_DET_BARRING
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl subscriber_status imsi subscriber_status_val={0,1} operator_determined_barring={0..8}"
exit 1
fi
if [ "$1" = "showall" ]; then
mongosh --eval "db.subscribers.find()" $DB_URI
exit $?
fi
if [ "$1" = "showpretty" ]; then
mongosh --eval "db.subscribers.find().pretty()" $DB_URI
exit $?
fi
if [ "$1" = "showfiltered" ]; then
mongosh --eval "db.subscribers.find({},{'_id':0,'imsi':1,'security.k':1, 'security.opc':1,'slice.session.name':1,'slice.session.ue.ipv4':1})" $DB_URI
exit $?
fi
if [ "$1" = "ambr_speed" ]; then
if [ "$#" -eq 6 ]; then
IMSI=$2
DL_VALUE=$3
DL_UNIT=$4
UL_VALUE=$5
UL_UNIT=$6
mongosh --eval "db.subscribers.updateOne({\"imsi\": \"$IMSI\"},
{\$set: {
\"ambr\" : {
\"downlink\" : {
\"value\" : NumberInt($DL_VALUE),
\"unit\" : NumberInt($DL_UNIT)
},
\"uplink\" :{
\"value\": NumberInt($UL_VALUE),
\"unit\" : NumberInt($UL_UNIT)
}
},
\"slice.0.session.0.ambr\": {
\"downlink\" : {
\"value\" : NumberInt($DL_VALUE),
\"unit\" : NumberInt($DL_UNIT)
},
\"uplink\" :{
\"value\": NumberInt($UL_VALUE),
\"unit\" : NumberInt($UL_UNIT)
}
}
}
});" $DB_URI
exit $?
fi
echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl ambr_speed imsi dl_value dl_unit ul_value ul_unit dl is for download and ul is for upload and the unit values are[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ] \""
exit 1
fi
display_help

View File

@@ -0,0 +1,64 @@
#!/bin/bash
MONGO_CONTAINER=open5gs-and-ueransim-two-slices-mongo-1
: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.10.3)
FLAGS: --db_uri=mongodb://localhost
COMMANDS: >&2
echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)"
echo "FLAGS: --db_uri=mongodb://localhost"
echo "COMMANDS:" >&2
echo " add {imsi key opc}: adds a user to the database with default values"
echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE"
echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns"
echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn"
echo " remove {imsi}: removes a user from the database"
echo " reset: WIPES OUT the database and restores it to an empty default"
echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user"
echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user"
echo " type {imsi type}: changes the PDN-Type of the first PDN: 1 = IPv4, 2 = IPv6, 3 = IPv4v6"
echo " help: displays this message and exits"
echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only"
echo " add_ue_with_apn {imsi key opc apn}: adds a user to the database with a specific apn,"
echo " add_ue_with_slice {imsi key opc apn sst sd}: adds a user to the database with a specific apn, sst and sd"
echo " update_apn {imsi apn slice_num}: adds an APN to the slice number slice_num of an existent UE"
echo " update_slice {imsi apn sst sd}: adds an slice to an existent UE"
echo " showall: shows the list of subscriber in the db"
echo " showpretty: shows the list of subscriber in the db in a pretty json tree format"
echo " showfiltered: shows {imsi key opc apn ip} information of subscriber"
echo " ambr_speed {imsi dl_value dl_unit ul_value ul_unit}: Change AMBR speed from a specific user and the unit values are \"[0=bps 1=Kbps 2=Mbps 3=Gbps 4=Tbps ]\""
echo " subscriber_status {imsi subscriber_status_val={0,1} operator_determined_barring={0..8}}: Change TS 29.272 values for Subscriber-Status (7.3.29) and Operator-Determined-Barring (7.3.30)"
}
'
docker cp open5gs-dbctl $MONGO_CONTAINER:/
docker run -ti --rm \
--net open5gs-and-ueransim-two-slices_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 0x111111"
docker run -ti --rm \
--net open5gs-and-ueransim-two-slices_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000002 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 0x111111"
docker run -ti --rm \
--net open5gs-and-ueransim-two-slices_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000003 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 0x111111"
docker run -ti --rm \
--net open5gs-and-ueransim-two-slices_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000011 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 2 0x222222"
docker run -ti --rm \
--net open5gs-and-ueransim-two-slices_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000012 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 2 0x222222"
docker run -ti --rm \
--net open5gs-and-ueransim-two-slices_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add_ue_with_slice 999700000000013 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 2 0x222222"

View File

@@ -13,7 +13,7 @@ deploy the ngc core (open5gs) with:
docker compose -f ngc.yaml up -d
```
Register subscribers in ngc with `/register_subscriber.sh`.
Register subscribers in ngc with `./register_subscriber.sh`.
# Deploy gnodeb
@@ -58,4 +58,5 @@ Undeploy with:
docker compose -f gnb1.yaml down
docker compose -f gnb2.yaml down
docker compose -f ngc.yaml down -v
```

View File

@@ -0,0 +1,422 @@
logger:
file:
path: /opt/open5gs/var/log/open5gs/smf.log
# level: info # fatal|error|warn|info(default)|debug|trace
global:
# max:
# ue: 1024 # The number of UE can be increased depending on memory size.
# peer: 64
smf:
sbi:
server:
- dev: eth0
port: 7777
client:
# nrf:
# - uri: http://nrf:7777
scp:
- uri: http://scp:7777
pfcp:
server:
- dev: eth0
client:
upf:
- address: upf
gtpc:
server:
- dev: eth0
gtpu:
server:
- dev: eth0
metrics:
server:
- dev: eth0
port: 9090
session:
- subnet: 10.45.0.0/16
gateway: 10.45.0.1
- subnet: 2001:db8:cafe::/48
gateway: 2001:db8:cafe::1
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
# p-cscf:
# - 127.0.0.1
# - ::1
# ctf:
# enabled: auto # auto(default)|yes|no
# freeDiameter: /opt/open5gs/etc/freeDiameter/smf.conf
################################################################################
# SMF Info
################################################################################
# <SMF Selection - 5G Core only>
# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
# 2. NRF responds to AMF with SmfInfo during NF-Discovery.
# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
#
# Note that if there is no SmfInfo, any AMF can select this SMF.
#
# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
#
# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
# info:
# - s_nssai:
# - sst: 1
# sd: 009000
# dnn:
# - internet
# - ims
#
# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 1
#
# o If any of conditions below are met:
# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:99970 TAC:1-9]
# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:99970 TAC:10-20,30-40]
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 1-9
# - s_nssai:
# - sst: 2
# sd: 000080
# dnn:
# - internet
# - ims
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 10-20
# - 30-40
#
# o Complex Example
# info:
# - s_nssai:
# - sst: 1
# dnn:
# - internet
# - sst: 1
# sd: 000080
# dnn:
# - internet
# - ims
# - sst: 1
# sd: 009000
# dnn:
# [internet, ims]
# - sst: 2
# dnn:
# - internet
# - sst: 3
# sd: 123456
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: [1, 2, 3]
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 4
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 5
# - 6
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 100-200
# - 300-400
# - plmn_id:
# mcc: 999
# mnc: 70
# tac:
# - 500-600
# - 700-800
# - 900-1000
# - s_nssai:
# - sst: 4
# dnn:
# - internet
# tai:
# - plmn_id:
# mcc: 999
# mnc: 70
# tac: 99
#
################################################################################
# SBI Server
################################################################################
# o Bind to the address on the eth0 and advertise as open5gs-smf.svc.local
# sbi:
# server:
# - dev:eth0
# advertise: open5gs-smf.svc.local
#
# o Specify a custom port number 7777 while binding to the given address
# sbi:
# server:
# - address: smf.localdomain
# port: 7777
#
# o Bind to 127.0.0.4 and advertise as open5gs-smf.svc.local
# sbi:
# server:
# - address: 127.0.0.4
# port: 7777
# advertise: open5gs-smf.svc.local
#
# o Bind to port 7777 but advertise with a different port number 8888
# sbi:
# server:
# - address: 127.0.0.4
# port: 7777
# advertise: open5gs-smf.svc.local:8888
#
################################################################################
# SBI Client
################################################################################
# o Direct Communication with NRF
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
#
# o Indirect Communication by Delegating to SCP
# sbi:
# client:
# scp:
# - uri: http://127.0.0.200:7777
#
# o Indirect Communication without Delegation
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: no # Directly communicate NRF discovery
# scp:
# next: no # Do not delegate to SCP for next-hop
#
# o Indirect Communication with Delegated Discovery
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# delegated:
# nrf:
# nfm: no # Directly communicate NRF management functions
# disc: yes # Delegate discovery to SCP
# scp:
# next: yes # Delegate to SCP for next-hop communications
#
# o Default delegation: all communications are delegated to the SCP
# sbi:
# client:
# nrf:
# - uri: http://127.0.0.10:7777
# scp:
# - uri: http://127.0.0.200:7777
# # No 'delegated' section; defaults to AUTO delegation
#
################################################################################
# HTTPS scheme with TLS
################################################################################
# o Set as default if not individually set
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Enable SSL key logging for Wireshark
# - This configuration allows capturing SSL/TLS session keys
# for debugging or analysis purposes using Wireshark.
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-server-sslkeylog.log
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_sslkeylogfile: @localstatedir@/log/open5gs/tls/smf-client-sslkeylog.log
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
# o Add client TLS verification
# default:
# tls:
# server:
# scheme: https
# private_key: @sysconfdir@/open5gs/tls/smf.key
# cert: @sysconfdir@/open5gs/tls/smf.crt
# verify_client: true
# verify_client_cacert: @sysconfdir@/open5gs/tls/ca.crt
# client:
# scheme: https
# cacert: @sysconfdir@/open5gs/tls/ca.crt
# client_private_key: @sysconfdir@/open5gs/tls/smf.key
# client_cert: @sysconfdir@/open5gs/tls/smf.crt
# sbi:
# server:
# - address: smf.localdomain
# client:
# nrf:
# - uri: https://nrf.localdomain
#
################################################################################
# PFCP Server
################################################################################
# o Override PFCP address to be advertised to UPF in PFCP association
# pfcp:
# server:
# - dev: eth0
# advertise: open5gs-smf.svc.local
#
################################################################################
# PFCP Client
################################################################################
# o UPF selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# tac: 1
# - address: 127.0.0.12
# tac: [3,5,8]
#
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# dnn: ims
# - address: 127.0.0.12
# dnn: [internet, web]
#
# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit)
# (either single enb_id or multiple enb_ids, HEX representation)
# pfcp:
# client:
# upf:
# - address: 127.0.0.7
# e_cell_id: 463
# - address: 127.0.0.12
# nr_cell_id: [123456789, 9413]
#
################################################################################
# GTP-C Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpc:
# server:
# - address: 127.0.0.4
# - address: fd69:f21d:873c:fa::3
#
################################################################################
# GTP-U Server
################################################################################
# o Listen on IPv4 and IPv6
# gtpu:
# server:
# - address: 127.0.0.4
# - address: ::1
#
################################################################################
# 3GPP Specification
################################################################################
# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48
# (If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash.)
# session:
# - subnet: 10.45.0.0/16
# gateway: 10.45.0.1
# dnn: internet
# - subnet: 2001:db8:cafe::/48
# dnn: internet
# - subnet: 10.46.0.0/16
# gateway: 10.46.0.1
# dnn: ims
# - subnet: 2001:db8:babe::/48
# dnn: ims
#
# o Pool Range
# session:
# - subnet: 10.45.0.0/16
# gateway: 10.45.0.1
# range:
# - 10.45.0.100-10.45.0.200
# - 10.45.1.100-
# - -10.45.0.200
# - subnet: 2001:db8:cafe::/48
# range:
# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0
# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0
#
# o Security Indication(5G Core only)
# security_indication:
# integrity_protection_indication: required|preferred|not-needed
# confidentiality_protection_indication: required|preferred|not-needed
# maximum_integrity_protected_data_rate_uplink: bitrate64kbs|maximum-UE-rate
# maximum_integrity_protected_data_rate_downlink: bitrate64kbs|maximum-UE-rate

View File

@@ -1,7 +1,7 @@
version: '3'
services:
gnb1:
image: openverso/ueransim:3.2.6
image: gradiant/ueransim:3.2.6
container_name: gnb1
command:
- gnb
@@ -14,7 +14,7 @@ services:
SST: '1'
SD: '0xffffff'
ues1:
image: openverso/ueransim:3.2.6
image: gradiant/ueransim:3.2.6
command: ['ue','-n','3']
cap_add:
- all

View File

@@ -1,7 +1,7 @@
version: '3'
services:
gnb2:
image: openverso/ueransim:3.2.6
image: gradiant/ueransim:3.2.6
container_name: gnb2
command:
- gnb
@@ -15,7 +15,7 @@ services:
SD: '0xffffff'
ues2:
image: openverso/ueransim:3.2.6
image: gradiant/ueransim:3.2.6
command: ['ue','-n','3']
cap_add:
- all

View File

@@ -7,36 +7,36 @@ services:
MONGO_INITDB_DATABASE: open5gs
amf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command:
- open5gs-amfd
restart: on-failure
ausf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command:
- open5gs-ausfd
restart: on-failure
bsf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command:
- open5gs-bsfd
restart: on-failure
nrf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command: open5gs-nrfd
restart: on-failure
nssf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command: open5gs-nssfd
restart: on-failure
pcf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command:
- open5gs-pcfd
environment:
@@ -44,25 +44,28 @@ services:
restart: on-failure
scp:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
command: open5gs-scpd
environment:
DB_URI: mongodb://mongo/open5gs
restart: on-failure
smf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
#It is necessary to mount the configuration file if pcfr is not deployed
volumes:
- ./config/smf.yaml:/opt/open5gs/etc/open5gs/smf.yaml
restart: on-failure
command: open5gs-smfd
udm:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
restart: on-failure
command:
- open5gs-udmd
udr:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs
@@ -70,7 +73,8 @@ services:
- open5gs-udrd
upf:
image: openverso/open5gs:2.7.0
image: gradiant/open5gs:2.7.5
user: root
command:
- open5gs-upfd
cap_add:
@@ -83,7 +87,7 @@ services:
- 2152:2152
webui:
image: openverso/open5gs-webui:2.7.0
image: gradiant/open5gs-webui:2.7.5
restart: on-failure
environment:
DB_URI: mongodb://mongo/open5gs

View File

@@ -32,29 +32,29 @@ docker cp open5gs-dbctl $MONGO_CONTAINER:/
docker run -ti --rm \
--net open5gs-and-ueransim_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
docker run -ti --rm \
--net open5gs-and-ueransim_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000002 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000002 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
docker run -ti --rm \
--net open5gs-and-ueransim_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000003 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000003 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
docker run -ti --rm \
--net open5gs-and-ueransim_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000011 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000011 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
docker run -ti --rm \
--net open5gs-and-ueransim_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000012 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000012 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
docker run -ti --rm \
--net open5gs-and-ueransim_default \
-e DB_URI=mongodb://$MONGO_CONTAINER/open5gs \
openverso/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000013 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"
gradiant/open5gs-dbctl:0.10.3 "open5gs-dbctl add 999700000000013 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA"

View File

@@ -1,7 +1,7 @@
version: '3'
services:
epc:
image: openverso/srs-lte:20_10_1
image: gradiant/srs-lte:20_10_1
command:
- epc
#restart: on-failure
@@ -18,7 +18,7 @@ services:
- ./srs-config/:/etc/srslte/
enodeb:
image: openverso/srs-lte:20_10_1
image: gradiant/srs-lte:20_10_1
command:
- enb
privileged: true

View File

@@ -1,7 +1,7 @@
version: '3'
services:
epc:
image: openverso/srs-lte:20_10_1
image: gradiant/srs-lte:20_10_1
command:
- epc
privileged: true
@@ -10,7 +10,7 @@ services:
volumes:
- ./user_db.csv:/etc/srslte/user_db.csv
enodeb:
image: openverso/srs-lte:20_10_1
image: gradiant/srs-lte:20_10_1
command:
- enb
privileged: true
@@ -21,7 +21,7 @@ services:
ENB_HOSTNAME: enodeb
UE_HOSTNAME: ue
ue:
image: openverso/srs-lte:20_10_1
image: gradiant/srs-lte:20_10_1
command:
- ue
privileged: true

View File

@@ -13,7 +13,7 @@ Running uhd_usrp_probe providing uhd-images from host folder:
docker run --rm -ti --privileged \
-v /dev/bus/usb/:/dev/bus/usb/ \
-v /usr/share/uhd/images:/usr/share/uhd/images \
openverso/ettus-uhd:3.15.0 uhd_usrp_probe
gradiant/ettus-uhd:3.15.0 uhd_usrp_probe
```
@@ -23,7 +23,7 @@ Running uhd_find_devices in the uhd-images variant:
docker run --rm -ti --privileged \
-v /dev/bus/usb/:/dev/bus/usb/ \
-v /usr/share/uhd/images:/usr/share/uhd/images \
openverso/ettus-uhd:3.15.0 uhd_find_devices
gradiant/ettus-uhd:3.15.0 uhd_find_devices
```
Running uhd host example benchmark_rate:
@@ -32,6 +32,6 @@ Running uhd host example benchmark_rate:
docker run --rm -ti --privileged \
-v /dev/bus/usb/:/dev/bus/usb/ \
-v /usr/share/uhd/images:/usr/share/uhd/images \
openverso/ettus-uhd:3.15.0 benchmark_rate --rx_rate 10e6 --tx_rate 10e6
gradiant/ettus-uhd:3.15.0 benchmark_rate --rx_rate 10e6 --tx_rate 10e6
```

View File

@@ -65,7 +65,7 @@ ENV ANT_HOME="/usr/local/apache-ant-1.9.14"
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
ENV IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org \
EPC_DOMAIN=openverso \
EPC_DOMAIN=gradiant \
MYSQL_HOSTNAME=mysql \
DNS_HOSTNAME=dns \
FHOSS_HOSTNAME=fhoss

View File

@@ -1,4 +1,4 @@
FROM golang:1.17.8 as builder
FROM golang:1.17.8 AS builder
ARG version=1.0.1
ENV VERSION=$version

View File

@@ -1,4 +1,4 @@
FROM golang:1.14 as builder
FROM golang:1.14 AS builder
ARG version=3.0.6
ENV VERSION=$version

View File

@@ -5,7 +5,7 @@ services:
environment:
MONGO_INITDB_DATABASE: free5gc
webconsole:
image: openverso/free5gc-webconsole:1.0.1
image: gradiant/free5gc-webconsole:1.0.1
restart: on-failure
ports:
- 5000:5000
@@ -16,7 +16,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/nrfcfg.yaml:/etc/free5gc/nrfcfg.yaml
command: ["nrf","-nrfcfg","/etc/free5gc/nrfcfg.yaml"]
@@ -26,7 +26,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
command: ["udr","-udrcfg","/etc/free5gc/udrcfg.yaml"]
restart : on-failure
@@ -35,7 +35,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/amfcfg.yaml:/etc/free5gc/amfcfg.yaml
command: ["amf","-amfcfg","/etc/free5gc/amfcfg.yaml"]
@@ -46,7 +46,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/smfcfg.yaml:/etc/free5gc/smfcfg.yaml
- ./config/uerouting.yaml:/etc/free5gc/uerouting.yaml
@@ -61,7 +61,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/pcfcfg.yaml:/etc/free5gc/pcfcfg.yaml
command: ["pcf","-pcfcfg","/etc/free5gc/pcfcfg.yaml"]
@@ -71,7 +71,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/udmcfg.yaml:/etc/free5gc/udmcfg.yaml
command: ["udm","-udmcfg","/etc/free5gc/udmcfg.yaml"]
@@ -81,7 +81,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/nssfcfg.yaml:/etc/free5gc/nssfcfg.yaml
command: ["nssf","-nssfcfg","/etc/free5gc/nssfcfg.yaml"]
@@ -91,7 +91,7 @@ services:
context: .
args:
version: 3.0.5
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/ausfcfg.yaml:/etc/free5gc/ausfcfg.yaml
command: ["ausf","-ausfcfg","/etc/free5gc/ausfcfg.yaml"]
@@ -103,7 +103,7 @@ services:
version: 3.0.5
cap_add:
- NET_ADMIN
image: openverso/free5gc:3.0.5
image: gradiant/free5gc:3.0.5
volumes:
- ./config/upfcfg.yaml:/etc/free5gc/upfcfg.yaml
command: ["upf","-f","/etc/free5gc/upfcfg.yaml"]

View File

@@ -42,7 +42,7 @@ RUN mkdir -p /usr/local/src/ && cd /usr/local/src/ && \
cd kamailio && git checkout 5.3
ENV IMS_DOMAIN=ims.mnc001.mcc001.3gppnetwork.org \
EPC_DOMAIN=openverso \
EPC_DOMAIN=gradiant \
MYSQL_HOSTNAME=mysql \
PCSCF_HOSTNAME=pcscf \
RTPENGINE_HOSTNAME=rtpengine \

View File

@@ -1,12 +1,14 @@
FROM ubuntu:focal AS build
ARG version=2023.w28
FROM ubuntu:jammy AS build
ARG version
ENV VERSION=$version
ARG BUILD_OPTION
ARG NEEDED_GIT_PROXY
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe
ENV BUILD_UHD_FROM_SOURCE=True
ENV UHD_VERSION=4.4.0.0
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#install developers pkg/repo
@@ -17,11 +19,19 @@ RUN apt-get update && \
build-essential \
psmisc \
git \
gcc-12 \
g++-12 \
xxd \
libpcre2-dev \
python3-dev \
bison \
flex \
m4 \
#unzip is needed for protobuf
unzip \
# python3-pip for conf template generation
python3-pip && \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12 && \
pip3 install --ignore-installed pyyaml
# In some network environments, GIT proxy is required
@@ -42,10 +52,19 @@ RUN /bin/sh oaienv && \
RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai --eNB --gNB --RU --UE --nrUE --ninja --build-lib "telnetsrv enbscope uescope nrscope nrqtscope" -w USRP -t Ethernet --verbose-ci --noavx512 -c --cmake-opt -DCMAKE_C_FLAGS=-Werror --cmake-opt -DCMAKE_CXX_FLAGS=-Werror
./build_oai -c --ninja \
--eNB --gNB --RU --UE --nrUE \
--build-lib "telnetsrv enbscope uescope nrscope" \
-w USRP -t Ethernet \
--build-e2 --cmake-opt -DXAPP_MULTILANGUAGE=OFF \
--noavx512 \
--cmake-opt -DCMAKE_C_FLAGS=-Werror --cmake-opt -DCMAKE_CXX_FLAGS=-Werror $BUILD_OPTION && \
# Mainly to see if the sanitize option was perfectly executed
ldd ran_build/build/nr-softmodem
#start from scratch for target executable
FROM ubuntu:focal as oai
FROM ubuntu:jammy AS oai
ARG BUILD_OPTION
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
@@ -68,31 +87,45 @@ RUN apt-get update && \
iproute2 \
dnsutils \
gdb \
python \
python3 \
python3-six \
python3-requests \
libusb-1.0-0 && \
# Install UHD driver from ettus
add-apt-repository ppa:ettusresearch/uhd --yes && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
libuhd-dev \
libuhd4.4.0 \
uhd-host && \
/bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \
libasan5 \
libubsan1 \
liblapacke; fi' && \
rm -rf /var/lib/apt/lists/*
COPY --from=build \
/oai-ran/cmake_targets/ran_build/build/*softmodem \
/oai-ran/cmake_targets/ran_build/build/oairu \
/oai-ran/cmake_targets/nas_sim_tools/build/conf2uedata \
/oai-ran/cmake_targets/nas_sim_tools/build/nvram \
/oai-ran/cmake_targets/nas_sim_tools/build/usim \
/oai-ran/cmake_targets/ran_build/build/nr-cuup \
/opt/oai/bin/
COPY --from=build /oai-ran/cmake_targets/ /tmp/all_targets/
RUN cd /tmp/all_targets && \
find . -name "oairu" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
find . -name "nr-cuup" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
find . -name "conf2uedata" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
find . -name "nvram" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
find . -name "usim" -type f -exec cp {} /opt/oai/bin/ \; 2>/dev/null || true && \
rm -rf /tmp/all_targets
COPY --from=build /oai-ran/docker/scripts/*.sh /
COPY --from=build /oai-ran/cmake_targets/ran_build/build/*.so /usr/local/lib/
COPY --from=build /usr/local/bin/uhd_find_devices /usr/local/bin
COPY --from=build /usr/local/lib/libuhd.so.4.4.0 /usr/local/lib
COPY --from=build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai/bin
COPY --from=build \
/usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_regex.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/
RUN cd /opt/oai/bin && \
ln -s nr-softmodem nr-softmodem.Rel15 && \
ln -s lte-softmodem lte-softmodem.Rel15 && \
@@ -104,6 +137,7 @@ WORKDIR /opt/oai
#This is a patch to support IP extraction from interface names and host names
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@@ -4,7 +4,7 @@ oai is a docker image to run Open Air Interface as a container.
## Usage
This docker image must be run with a command (docker run -ti openverso/oai CMD)
This docker image must be run with a command (docker run -ti gradiant/oai CMD)
example of commands:
- /opt/oai/bin/lte-softmodem.Rel15 -O /oai.conf
@@ -33,7 +33,7 @@ The entrypoint does also some magic to deal with hostnames, interface names and
For example, if GNB_NG_IF_NAME=eth0, the IP of the eth0 is extracted and assigned to GNB_NG_IP_ADDRESS variable.
- It resolves the IPs of the names *_HOSTNAME environment variables and generates corresponding *_IP_ADDRESS environment variables.
For example, if MME_S1C_HOSTNAME=mme.openverso.org, the entrypoints resolves the IP and assigns it to MME_S1C_IP_ADDRESS variable.
For example, if MME_S1C_HOSTNAME=mme.gradiant.org, the entrypoints resolves the IP and assigns it to MME_S1C_IP_ADDRESS variable.
Set USE_B2XX, USE_X3XX or USE_N3XX to load the USRP binaries.
@@ -45,7 +45,7 @@ docker run --rm -ti --privileged \
-v $PWD/examples/enb.fdd.conf:/opt/oai/etc/enb.fdd.conf \
--env-file $PWD/examples/enb-fdd.env \
--privileged \
openverso/oai:2021.w36 opt/oai/bin/lte-softmodem.Rel15 -O /oai.conf
gradiant/oai:2021.w36 opt/oai/bin/lte-softmodem.Rel15 -O /oai.conf
```
### Example 2: gnodeb standalone
@@ -56,7 +56,7 @@ docker run --rm -ti --privileged \
-v $PWD/examples/gnb.sa.tdd.conf:/opt/oai/etc/gnb.sa.tdd.conf \
--env-file $PWD/examples/gnb-sa.env \
--privileged \
openverso/oai:2021.w36 opt/oai/bin/nr-softmodem.Rel15 -E --sa -O /oai.conf
gradiant/oai:2021.w36 opt/oai/bin/nr-softmodem.Rel15 -E --sa -O /oai.conf
```
@@ -68,5 +68,5 @@ docker run --rm -ti --privileged \
-v $PWD/examples/nr-ue-sim.conf:/opt/oai/etc/nr-ue-sim.conf \
--env-file $PWD/examples/nr_ue.env \
--privileged \
openverso/oai:2021.w36 /opt/oai/bin/nr-uesoftmodem.Rel15 -E --sa -O /oai.conf
gradiant/oai:2021.w36 /opt/oai/bin/nr-uesoftmodem.Rel15 -E --sa -O /oai.conf
```

6
images/oai/entrypoint.sh Executable file → Normal file
View File

@@ -140,11 +140,11 @@ fi
# Load the USRP binaries
if [[ -v USE_B2XX ]]; then
/usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
/opt/oai/bin/uhd_images_downloader.py -t b2xx
elif [[ -v USE_X3XX ]]; then
/usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
/opt/oai/bin/uhd_images_downloader.py -t x3xx
elif [[ -v USE_N3XX ]]; then
/usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
/opt/oai/bin/uhd_images_downloader.py -t n3xx
fi

View File

@@ -1,3 +1,3 @@
IMAGE_TAG=2023.w34
IMAGE_TAG=2025.w38
#comma separated list of platforms. If empty, image will not be multiarch.
PLATFORMS=

View File

@@ -1,16 +1,24 @@
FROM mongo:latest
ARG version
ENV VERSION=$version
ENV VERSION=$version \
USER=open5gs \
GROUP=open5gs
RUN apt-get update && \
apt-get upgrade -y && \
DEBIAN_FRONTEND=noninteractive \
apt-get install -y wget && \
apt-get clean
RUN wget -O /usr/local/bin/open5gs-dbctl https://github.com/open5gs/open5gs/raw/main/misc/db/open5gs-dbctl && \
chmod +x /usr/local/bin/open5gs-dbctl
RUN groupadd -r $GROUP && \
useradd --comment "open5gs" --shell /bin/bash -M -r -g $GROUP $USER
RUN chown -R $GROUP:$USER /usr/local/bin/open5gs-dbctl
USER open5gs
ENTRYPOINT ["bin/bash", "-c"]
CMD ["/usr/local/bin/open5gs-dbctl"]

View File

@@ -1,3 +1,3 @@
IMAGE_TAG=0.10.3
#comma separated list of platforms. If empty, image will not be multiarch.
PLATFORMS=linux/amd64,linux/arm64
PLATFORMS=linux/amd64 #,linux/arm64

View File

@@ -1,4 +1,4 @@
FROM node:20.10.0-bullseye as dev
FROM node:20.10.0-bullseye AS dev
LABEL maintainer="cgiraldo@gradiant.org" \
organization="gradiant.org"
@@ -19,8 +19,7 @@ RUN cd /opt/open5gs-${VERSION}/webui && npm install && npm run build
FROM node:20.10.0-bullseye-slim
ENV VERSION=$version \
USER=open5gs \
ENV USER=open5gs \
GROUP=open5gs \
DB_URI=mongodb://mongo/open5gs
@@ -33,5 +32,7 @@ WORKDIR /opt/open5gs-webui
RUN npm run-script build
ENV NODE_ENV=production
ENV HOSTNAME="0.0.0.0"
RUN chown -R $GROUP:$USER /opt/open5gs-webui/
USER open5gs
ENTRYPOINT ["node", "server/index.js"]

View File

@@ -1,3 +1,3 @@
IMAGE_TAG=2.7.0
IMAGE_TAG=2.7.6
#comma separated list of platforms. If empty, image will not be multiarch.
PLATFORMS=linux/amd64,linux/arm64
PLATFORMS=linux/amd64 #,linux/arm64

View File

@@ -1,7 +1,9 @@
FROM debian:bullseye as builder
FROM debian:bullseye AS builder
ARG version
ARG branch=main
ENV VERSION=$version
ENV BRANCH=$branch
LABEL org.opencontainers.image.authors="Carlos Giraldo <cgiraldo@gradiant.org>" \
org.opencontainers.image.vendor="Gradiant" \
@@ -45,8 +47,8 @@ RUN apt-get update && \
RUN mkdir -p /opt/open5gs && cd /tmp && git clone https://github.com/open5gs/open5gs && \
cd open5gs && \
if [ "$VERSION" = "dev" ]; then \
git checkout main; \
wget https://api.github.com/repos/open5gs/open5gs/git/refs/heads/main -O /open5gs-ver.json; \
git checkout $BRANCH; \
wget https://api.github.com/repos/open5gs/open5gs/git/refs/heads/$BRANCH -O /open5gs-ver.json; \
else \
git checkout v$VERSION; \
wget https://api.github.com/repos/open5gs/open5gs/git/refs/tags/v$VERSION -O /open5gs-ver.json; \
@@ -89,20 +91,21 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
libcurl4 \
libmicrohttpd12 \
libnghttp2-14 \
wondershaper iproute2 iputils-ping procps net-tools iptables iperf3 traceroute tcpdump && \
wondershaper iproute2 iputils-ping procps net-tools iptables iperf iperf3 traceroute tcpdump && \
rm -rf /var/lib/apt/lists/*
ENV APP_ROOT=/opt/open5gs
COPY --from=builder /opt/open5gs ${APP_ROOT}
RUN cd ${APP_ROOT}/lib && ln -s $(uname -m)-linux-gnu/freeDiameter .
ENV PATH=${APP_ROOT}/bin:${PATH} HOME=${APP_ROOT}
WORKDIR ${APP_ROOT}
COPY entrypoint.sh /entrypoint.sh
# TODO: run with non-root user
#RUN groupadd -r open5gs && useradd --no-log-init -r -g open5gs open5gs
#RUN chown -R open5gs:open5gs ${APP_ROOT}
#USER open5gs
#Run with non-root user
RUN groupadd -r open5gs && useradd --no-log-init -r -g open5gs open5gs
RUN chown -R open5gs:open5gs ${APP_ROOT}
USER open5gs
#Default CONF values
ENV DB_URI=mongodb://mongo/open5gs

View File

@@ -0,0 +1,123 @@
FROM debian:unstable AS builder
ARG version
ARG branch=main
ENV VERSION=$version
ENV BRANCH=$branch
LABEL org.opencontainers.image.authors="Carlos Giraldo <cgiraldo@gradiant.org>" \
org.opencontainers.image.vendor="Gradiant" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.version="$version"
RUN apt-get update && \
apt-get upgrade -y && \
DEBIAN_FRONTEND=noninteractive \
apt-get install -y --no-install-recommends \
python3-pip \
python3-setuptools \
python3-wheel \
ninja-build \
build-essential \
flex \
bison \
git \
cmake \
meson \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn-dev \
libmongoc-dev \
libbson-dev \
libyaml-dev \
libmicrohttpd-dev \
libcurl4-gnutls-dev \
libnghttp2-dev \
libtins-dev \
libtalloc-dev \
iproute2 \
ca-certificates \
netbase \
pkg-config \
wget && \
apt-get clean
RUN mkdir -p /opt/open5gs && cd /tmp && git clone https://github.com/open5gs/open5gs && \
cd open5gs && \
if [ "$VERSION" = "dev" ]; then \
git checkout $BRANCH; \
wget https://api.github.com/repos/open5gs/open5gs/git/refs/heads/$BRANCH -O /open5gs-ver.json; \
else \
git checkout v$VERSION; \
wget https://api.github.com/repos/open5gs/open5gs/git/refs/tags/v$VERSION -O /open5gs-ver.json; \
fi && \
meson build --prefix=/opt/open5gs && \
ln -s /opt/open5gs/subprojects/ /opt/open5gs/../subprojects && \
ninja -C build install
RUN apt-get update && apt-get install -y net-tools iputils-ping iproute2 dnsutils gettext-base iptables
## Replace default config values to work in containers (use dev eth0 and reference other containers by name)
COPY configs/open5gs/* /opt/open5gs/etc/open5gs/
COPY configs/freeDiameter/* /opt/open5gs/etc/freeDiameter/
FROM debian:unstable-slim
ARG version
ENV VERSION=$version
LABEL org.opencontainers.image.authors="Carlos Giraldo <cgiraldo@gradiant.org>" \
org.opencontainers.image.vendor="Gradiant" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.version="$version"
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y \
curl \
libtalloc2 \
libgnutls30t64 \
libgcrypt20 \
libssl3t64 \
libbson-1.0-0 \
libtins4.5 \
libcurl4-gnutls-dev \
libyaml-0-2 \
libmongoc-1.0-0 \
libsctp1 \
libidn12 \
libcurl4t64 \
libmicrohttpd12 \
libnghttp2-14 \
wondershaper iproute2 iputils-ping procps net-tools iptables iperf3 traceroute tcpdump && \
rm -rf /var/lib/apt/lists/*
RUN update-alternatives --set iptables /usr/sbin/iptables-legacy
ENV APP_ROOT=/opt/open5gs
COPY --from=builder /opt/open5gs ${APP_ROOT}
RUN cd ${APP_ROOT}/lib && ln -s $(uname -m)-linux-gnu/freeDiameter .
ENV PATH=${APP_ROOT}/bin:${PATH} HOME=${APP_ROOT}
WORKDIR ${APP_ROOT}
COPY entrypoint.sh /entrypoint.sh
# TODO: run with non-root user
#RUN groupadd -r open5gs && useradd --no-log-init -r -g open5gs open5gs
#RUN chown -R open5gs:open5gs ${APP_ROOT}
#USER open5gs
#Default CONF values
ENV DB_URI=mongodb://mongo/open5gs
ENV IPV4_TUN_SUBNET="10.45.0.0/16" \
IPV4_TUN_ADDR="10.45.0.1/16" \
IPV6_TUN_ADDR="cafe::1/64" \
ENABLE_NAT=true
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/bin/bash"]

View File

@@ -1 +1 @@
69AF44D85BF44E431C8B2C50190B2F64CE0E19DA
69AF44D85BF44E431C8B2C50190B2F64CE0E19DE

View File

@@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICaTCCAVECAQAwJDELMAkGA1UEBhMCRVMxFTATBgNVBAMMDGhzcy5ncmFkaWFu
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOjr/91qpUgM9673qd6z
DgY/PdFJqKyYLi2Sgf6qS1909sPIL6rEyNHy2FgvL2nfuPtzGSxu2LKDKQFpDLJy
zN6cDo2muvF45CvzFlW1bjz6i62dEnD1yFAwdv/lRecvEN+516MZ0YRpX3yoDUzy
AQEWEHjbsEb8qnDgy/mZXSqkMi4etSfRKTWf5hXF5utlSo+GhoWebzIk5wBoAQcX
4rcvRJdGoaCW7LBaxLD6MzCUlktsaUkKt/nzRdW6XlP546yNk55wj+WIS/iulQFT
zP0Lsmw3aPAGRQt/6r94HbitW0whZgjAMQjy+eIR3TH7nWzqBjzXYNW0gg781NGK
RD0CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCuBjhD5xAdzNuaUWRig3OryFxM
xogqjibaS5hep4oLvqu85ZU/6zGUVVLB1mm1AlrFNmfiDernBoJ94hK1Gdn8DiXs
onEZp2fSIGP/WMx5C+5G6N/Ii5GUmQtcE63Z16z9e5XoGLGVIjyCFQYzchs5VbjX
7lc4w7r8KPrn7GIKWOCHJMlLI12P+ltZVLy8oZ4eJIifQb4xaXeGOV/tPc3dzuNR
MBFqO0r9hVa8Pypf27zDDE8PuDx7ZBLAVGmg6LYVc0lH/9mf2zIBuMD4QyFeHSI/
101rB2BZQ9GeFRbpgWKmbhh/30FM5XLOEozqyBTv94+fHf/sqQeESYfx9fuo
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALgz1z39kW5WElXKjizj
TC33d3NvCc8tmZMVxrDR8BVc6g457cTnNL5DdkwbuB1Vfw/Hfya19zr3cWVhNARM
F6k+copd28d5qDBZXGAcMJqlw4ZPQASPh8qQzArP2eIpAQ+pazkA9YtzG6v58/YF
+pAabCFjFkYjUVvAOpFx5udIfb9kfw6z9QP2f1ndvJlsiPxmgP+5KKO1mI7SXj4W
h3CpG64DPRVyyePh7NiSwLoyvr0wR3yNeVDn7LpH8yA+IgQpSwTplrLTH6PoWya9
2Tc/tijQ+PAOev338EokuI9PBugfbqZDmVb8c6Blvm+/7O5wraALwzZTw+jiNfsp
X/8CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQBhQ/dLtGjtHrUUiHxKGNm2Nieg
Neur7j17ZcY+uofR6dMws+Cq2SGwrIevQWMT1JNCO7xESIHnCU2vpNDlqUD4ORoa
HLgFuFVSqKW6PiMlyNs50cjYcj/pFSIFSxt6wRNEqWqtiAwNDWOh9RKqCTWW3Cl/
fx6FKYSQdMxqE8AE071Ckl3mh293abatxo2/YarkXpCx59myhvlp4gLIM7IJiE2m
pTuQ6exyyNEoxg0Ul8SIYMJixKi99nL0Nv2KxVGAzk2O9/soM85nOebRfFCvZnY/
ubDchIW0Ac5Iw3I6aHOylf/BgAwcsbeTKao0jmSXpojvilxupK0ukZ7lzFny
-----END CERTIFICATE REQUEST-----

View File

@@ -1,19 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhnWMA0GCSqGSIb3DQEBCwUAMFsx
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhnbMA0GCSqGSIb3DQEBCwUAMFsx
CzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQHDARWaWdv
MREwDwYDVQQKDAhHcmFkaWFudDEVMBMGA1UEAwwMZ3JhZGlhbnQub3JnMB4XDTI0
MDEwOTExMjIzNloXDTM0MDEwNjExMjIzNlowJDELMAkGA1UEBhMCRVMxFTATBgNV
MDExNzE3MjUzOFoXDTM0MDExNDE3MjUzOFowJDELMAkGA1UEBhMCRVMxFTATBgNV
BAMMDGhzcy5ncmFkaWFudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AOjr/91qpUgM9673qd6zDgY/PdFJqKyYLi2Sgf6qS1909sPIL6rEyNHy2FgvL2nf
uPtzGSxu2LKDKQFpDLJyzN6cDo2muvF45CvzFlW1bjz6i62dEnD1yFAwdv/lRecv
EN+516MZ0YRpX3yoDUzyAQEWEHjbsEb8qnDgy/mZXSqkMi4etSfRKTWf5hXF5utl
So+GhoWebzIk5wBoAQcX4rcvRJdGoaCW7LBaxLD6MzCUlktsaUkKt/nzRdW6XlP5
46yNk55wj+WIS/iulQFTzP0Lsmw3aPAGRQt/6r94HbitW0whZgjAMQjy+eIR3TH7
nWzqBjzXYNW0gg781NGKRD0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEApa+i8Kjs
gl01mhbjWmhHWqRJbNUEceD77Hqm1/YlAqSwICVSbbLR3wtYu2F50XsVxvgPl1Ny
IrjTxoa5lFz/S/ayfIAqzdiM4j7VKk4Rls4BpUow6fexSu1d8lKNnLk2ffInEd/6
8tb6zUmLNrCapBlz0vi+4jKSCRbzTuijVK7cO8jbLVdCXRs+oGK4ROer0zSMsv2U
yMeBR4unOwIWBV9Z3Zjh5YNUek32b3HlcE5joLCk9YH1zX4jmv6UrAEXFHULAgig
0lf/yLljavuhTj6zK/Jz2UsjlNG2dr0WdvwHGEVAswguleB/HW6EB+REwwJfup8W
MfZwCaTFyByxNA==
ALgz1z39kW5WElXKjizjTC33d3NvCc8tmZMVxrDR8BVc6g457cTnNL5DdkwbuB1V
fw/Hfya19zr3cWVhNARMF6k+copd28d5qDBZXGAcMJqlw4ZPQASPh8qQzArP2eIp
AQ+pazkA9YtzG6v58/YF+pAabCFjFkYjUVvAOpFx5udIfb9kfw6z9QP2f1ndvJls
iPxmgP+5KKO1mI7SXj4Wh3CpG64DPRVyyePh7NiSwLoyvr0wR3yNeVDn7LpH8yA+
IgQpSwTplrLTH6PoWya92Tc/tijQ+PAOev338EokuI9PBugfbqZDmVb8c6Blvm+/
7O5wraALwzZTw+jiNfspX/8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEASixfiGFp
Eo2RjCrsEdqlnxffGCl9CzBV/1apq492CkwS51z7ZmajLdxInRaiazHokNNeoTZI
/nA2DOu6Jf+YJxbN+f7jzv35WZ84pehQX+D7w0OGb0+sfpVFORG33Ua1fcpO6J+/
zeg51qh9fvczDCozY/8cPPrQBORFWq7dMjX7XaY3a/OlagrZ8yrqlaoSum029lBq
JsmRZi3HDyykVyd/Obs8bFBlBMyjWJGBH0DVzJ1y3SXLaqKoaAz29owEnt/aSH1M
mH5T9/JUv4/ImeKC2tCeCunb+w68m2VbKpcfIUCgcu/AcBvu3cK6Ftssp941vHQK
XpnAf0YWA+O3zw==
-----END CERTIFICATE-----

View File

@@ -224,13 +224,13 @@ TLS_CA = "etc/freeDiameter/cacert.pem";
# 4 - full - display the complete information on a single long line
# 8 - tree - display the complete information in an easier to read format spanning several lines.
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_rfc5777.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_mip6i.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nasreq.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca_3gpp.fdx";
##############################################################

View File

@@ -1,27 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA6Ov/3WqlSAz3rvep3rMOBj890UmorJguLZKB/qpLX3T2w8gv
qsTI0fLYWC8vad+4+3MZLG7YsoMpAWkMsnLM3pwOjaa68XjkK/MWVbVuPPqLrZ0S
cPXIUDB2/+VF5y8Q37nXoxnRhGlffKgNTPIBARYQeNuwRvyqcODL+ZldKqQyLh61
J9EpNZ/mFcXm62VKj4aGhZ5vMiTnAGgBBxfity9El0ahoJbssFrEsPozMJSWS2xp
SQq3+fNF1bpeU/njrI2TnnCP5YhL+K6VAVPM/QuybDdo8AZFC3/qv3gduK1bTCFm
CMAxCPL54hHdMfudbOoGPNdg1bSCDvzU0YpEPQIDAQABAoIBAE7gBEBFqfzRL1rX
0XVxqxEgf12NFQqFajXShCTqJCYKJLo94y5v/xVhqDOMnwC6WxkDbAXo74bb9Znd
qggP6iKENEVxraKx7oqXgfu6Ob96lKxRIXqRMKk/ED0ttdNI0+z/MO+xgYrWaBh9
jCt/VCm7AA79Th9r1oftCAXZEnyqgkeC38Y3WswyFilGzyE8tVLiu/dqaa5FvLPv
H6GZNtFHzjTQtxlt7Sj75e7dxLG/ETeZdXW1gaJ7uAx3Zz1/GzD9WQVbkPqaBT6N
LH9W5trKo+FFXtkNRT+QMPNnG38FcV3ZR594tb2ePLj6rQUWKwBUDrZjojK19TIY
tnFK7aECgYEA+pHQHrhnqy4v83iUEUN9zjgHtecsc+oT0Od8TCRN79qnyXgCo5tm
3VfMDILGxdwvuPdkFGSduwEJpYecbEt88Gw82ja719DT0UCOVFFFPUdk0RwtYUZs
SZzmoJ7WHoHcNPIn6DWWHN4CNBypoo1XNr80nHIuXZFtyA8vWPTy2lUCgYEA7fhG
bdGe+xBd6gQihdIIVNaojQVnXjvbkzBCJQXA9T5XG74AgEAqsHVq9h2SFAS5LO+x
HQ9lBmKX/0iZE0Fu52pAQHw+SJpi1dFBnKDt/s7uZucIGij4saeuZ47xZQiYpWV9
oglgNfwtXOQQIo95FeRckaP3nj/PdDjtBrvH+kkCgYEA3OtuqYdAr+abFHj9Y3M0
GnvAIJtf0BtTuV4/cwqXRKBuSu1qtkEvonvkRiuPgaeu09AbBvfnMZeqn60/NyQf
VgK4bFTRrWhLOTVHyAOXnn2x38SOJjPnCcgydu9ULbWlJ3FRyiRk47LCEpwq3Ezt
1jEi+8SYKJsuRbNNtYrSC7kCgYAnAyTIrCzcC/rZeoQOXDhxcB+BvvkLQdTldGvj
leXkTqwJKET8wYg+FYHLh12DWqLg8wqeMP/m5BL3DvfJaFi+J3URHU04qda6JuwS
uW9K7rG2vPlfEIh014CICa8ZWSdtNg46mj7jmsv1Bo5+m/bF2AI0/iSCFQP1kb+J
8w79wQKBgCnl6qGGGG8e496FTBllDO/j0Sc39TmSmJKw5O8xyzV4qs/byhZw9lgY
eUIc7Cn7yNffBEu6CcblcasuG6oLAgsH0zPKKbxj3Xit1vB3248ZHyyBdJPSZxRO
G058MlBvAfBan5ScZ5osEdSVVg9y88MqpUwsZiOhg6X7xUXrbQqY
MIIEpAIBAAKCAQEAuDPXPf2RblYSVcqOLONMLfd3c28Jzy2ZkxXGsNHwFVzqDjnt
xOc0vkN2TBu4HVV/D8d/JrX3OvdxZWE0BEwXqT5yil3bx3moMFlcYBwwmqXDhk9A
BI+HypDMCs/Z4ikBD6lrOQD1i3Mbq/nz9gX6kBpsIWMWRiNRW8A6kXHm50h9v2R/
DrP1A/Z/Wd28mWyI/GaA/7koo7WYjtJePhaHcKkbrgM9FXLJ4+Hs2JLAujK+vTBH
fI15UOfsukfzID4iBClLBOmWstMfo+hbJr3ZNz+2KND48A56/ffwSiS4j08G6B9u
pkOZVvxzoGW+b7/s7nCtoAvDNlPD6OI1+ylf/wIDAQABAoIBAQCTfJ6o+fCKAcyo
eIiiFFSYsX4pJQ0bn41JobP3PAEZec3GGkfw0pb+iJGdmswuYJheEAQVALm1sw5O
eCfoEO0ZC/E2LLSe4R/zpnk6Uxfvmy4Uyjud6zZ00L8vIQF5/g7ldWduuv/f6giM
CJR3to3K9/0ANpBNFFY+OooqjqKtJ5dQZO3VxT6e/X3TxmxU+6VLbTHD6w7GDraB
Kozk8Bj5jcowbHa/hpZ+dwfnsTKzSlSFkTxqKZSXwtJyb4pz+ct1LoPMYexbJ9Qy
UIKKlnx/oKKjJAf5be93RtQuH+dMqW5bdN6b0BTXWJxMx7A90Kj+dXblRyqLWEG/
zW8KgfaBAoGBAOg4op9/BYtzZV5vTDIpEnjHFxb9dIeWd3XHSdAlwMfTV7YF+rnv
IUIXgesyBT967PV+mB9lEmck9mJVSkaP2pNbdoz+DVXkBciYs0JtJpg2nFp3cCiq
07kWVkH4XLqjr8V4q/+g56tpPIs8G834njGYyvXuDzlZJoYn39UDybvhAoGBAMsQ
da2XVd+duBXL8HzZl904uQy0eEVKGdiWDyfQDHZl6ate4VdUgKre0YeiFB0MRsDE
F/7mUu0Wc4Py12HneIc9HYU8RdAWVNJzyqGm/5Ke+35o/vP5hhQpdkiTi1+E4ATe
NXSeRVGZ95WL1bnWTxlPgf/ioDn1rFVWOvdsPZffAoGAVpFeVlT0zTJ8dILLBdv3
zdxyCBj+CtmVuOtM4fJg9l0b0nhSKmQxosC+pt3jxPFfSnkh3npALQFDdA7VfI59
7fbnr9G5SO6TFV+PW9Dy1UVube8eeZqNCO+BwmACuXTxvoyomcfy9Rxq/ICw4Myw
tE6AQsO3GyrXyKUutOsPliECgYBEKpJWY6cAGgHhz0Q7pQ/Fw3TbPvngyK9EdZtA
0iZc2HlIfeFHX6aRtZrA3TfDSIu3yhwEBW1xCUhd0vdadkmPnIR8ZW9KGzT+MMCk
41qH7bafCMANRoYr3n9GfcEbn49UEwP+0eKTMgxat0ZXzAlhhb8uFvWSf1YKj5fb
1woWIQKBgQDdyQpAXGt7FUVt+WlHgePlXxULlsO9P0nhTiscIcxrR4QXtQuqx9mZ
AQE/GHZAaN+BnXAnEtb7Mmq3WWriVZpOZPqAko9FB+HeQtHdUlwRHmjeT+a22HQ0
gOg09UhWV3VoyQ45G4iiqm9ttdSvYwWx3OQeoD8doxt/K9x9iyd+Ow==
-----END RSA PRIVATE KEY-----

View File

@@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICaTCCAVECAQAwJDELMAkGA1UEBhMCRVMxFTATBgNVBAMMDG1tZS5ncmFkaWFu
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkQyU2Zdf8P5mbn+SjO
PzU9XMImluvTz0rznTQdmj8uafPXqsZ7NoA0wVk0WA8x8Takbk9m1UFlObZtigg8
hoF4sSv1OjEr2impXu0YAqWGSVWWIyzurZ0d2/VZp66cnRsdmWjJNeTpoxMHiRTP
oeJGEjuKI2f72V+WEdCF2uAipLp3R3GtCy9qaxW+/4ejG46JvIlKOwG2X12o5QRg
/f+SQo0LGp+15UTgGsQmUr8HJu0rw+DjaTr/g2L+3sJLztKFka2tosp66dOCKGZU
BSgN4SjuE56AEa3Syi0KA1WDjj3YB9nLej/Cg6GwQ4/sZT5ELnwnTjL1AoOifOmi
GaUCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCYIFJpxsp8EiBZ3F6gjrDuFu9b
CqcgeGCI9AviTDUQaXwjuJDkWyNVBVcPzp0G8orgPI3EN83LLUhKd6WUIk6grmJ6
fMMD4ve5viuoG7ZYjyfA+KjBFHk2j3K7un1BmD31v9IbF+mpsrFfy65MoWdSkxjk
jxOzePx/fO6DXrBMNNzYQ8qnYQUafHHWNG1WsvgOnY0oaSCuCUP3+XXQDveTVX61
mZiY7KQ9W15s3Zctrvo3fMlUUQSacGdqd3GBYf5Ef0zcn6LJaAKIPxJ2hPythfBI
XEgNQ8t0nEBmEl/W8SWfvGY1+ycTIKYkIQcm+VjA3XyzyolHcEjEnDvW6xUu
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKZCmA2FoOvoY1VNHody
abJaBkBQ+fkzexHyxGr2ldGIuXV4aOOfyBFchTzjT5lrpwX6sHNhspidocqDwO48
c0ezec9z5dzcR4lmwIAOG4iGR71CBOz9OYwObc4x4JVVAqRnRSyU8tz8FshndIH/
c8/t11L+TgvrizUn586OYSdZV5ghkn1J+aYFAYuZDO4rVCYLNaY7gZbK6ddkHPXL
syu0AmY0y7wCUF/2G0gIJmGzrQzGCOyaepPx/6rsds8sEsVQxwefBdowj6Iusu6R
oXOHThXwXdmFTJzjdTH/eK6U094f+9CIICbC5oKNWWLQS6M6D1y8WDCczcyleBQ0
4H8CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCFVoaTTZhPKJFeRjwich3oWS9h
hYFWzeAMzbMcE55wU5epVPKNOw4zpfKqeFh3PeeCLGh60GRrRYjDUm5u/8iITPcc
ZhAMWmwNRXnKAMwQ5cOet9EJFf/1zmaFyWZoMbR50oY5BlM7gJsmhkc90Wsazkdz
EEOd9/djoMHxy2gqBfAqnPvV7h5aottjJ6lyBerdCVKcYeiY2iTCyRAfvnn3BSkz
QBzH6m+LOwLtfE/jSdvtXfwAxHp4u5frQtw7BQFVMMSTcMAOozHTIwU3qVgf0ph2
mT+on7eVmR8drzcFxsv9/tiTFe/zdBJxEhmiR4QL06tMDpK8ZijXtDaHKh8x
-----END CERTIFICATE REQUEST-----

View File

@@ -1,19 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhnXMA0GCSqGSIb3DQEBCwUAMFsx
MIIDBjCCAe4CFGmvRNhb9E5DHIssUBkLL2TODhncMA0GCSqGSIb3DQEBCwUAMFsx
CzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQHDARWaWdv
MREwDwYDVQQKDAhHcmFkaWFudDEVMBMGA1UEAwwMZ3JhZGlhbnQub3JnMB4XDTI0
MDEwOTExMjIzNloXDTM0MDEwNjExMjIzNlowJDELMAkGA1UEBhMCRVMxFTATBgNV
MDExNzE3MjUzOFoXDTM0MDExNDE3MjUzOFowJDELMAkGA1UEBhMCRVMxFTATBgNV
BAMMDG1tZS5ncmFkaWFudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ALkQyU2Zdf8P5mbn+SjOPzU9XMImluvTz0rznTQdmj8uafPXqsZ7NoA0wVk0WA8x
8Takbk9m1UFlObZtigg8hoF4sSv1OjEr2impXu0YAqWGSVWWIyzurZ0d2/VZp66c
nRsdmWjJNeTpoxMHiRTPoeJGEjuKI2f72V+WEdCF2uAipLp3R3GtCy9qaxW+/4ej
G46JvIlKOwG2X12o5QRg/f+SQo0LGp+15UTgGsQmUr8HJu0rw+DjaTr/g2L+3sJL
ztKFka2tosp66dOCKGZUBSgN4SjuE56AEa3Syi0KA1WDjj3YB9nLej/Cg6GwQ4/s
ZT5ELnwnTjL1AoOifOmiGaUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEATTQicV7y
ttUVwzc1sglwa6vE5LpaTWF+D5Fq+S4MX6AnCw7Q28pQzrD3sRFl6JeaZXV423Fu
RPUuOVLdPCrrPhhxGfFCvCWtCCZE9OOy55QehfeZ3seum/D3Y1xP7N/8FRXZAiYI
TwSWFMR9wrgwqVZSQ/2omx+qZ+IruFV8/9QyDewA79zafuEheK+tI5fxMYlBc4qo
J11cl8/5iEs2/Vw7idRpwqV+GT6xiX7vSTQJU2TlBUBJWsqvaZLyQfq7b3JhmIHX
6mMkLl/M6aUoIhnfXWXUkFmJtWENDvmrJWXMeukui130R2OFCwI7XZIrUADY0ZnB
imisXVMP4Uj5MA==
AKZCmA2FoOvoY1VNHodyabJaBkBQ+fkzexHyxGr2ldGIuXV4aOOfyBFchTzjT5lr
pwX6sHNhspidocqDwO48c0ezec9z5dzcR4lmwIAOG4iGR71CBOz9OYwObc4x4JVV
AqRnRSyU8tz8FshndIH/c8/t11L+TgvrizUn586OYSdZV5ghkn1J+aYFAYuZDO4r
VCYLNaY7gZbK6ddkHPXLsyu0AmY0y7wCUF/2G0gIJmGzrQzGCOyaepPx/6rsds8s
EsVQxwefBdowj6Iusu6RoXOHThXwXdmFTJzjdTH/eK6U094f+9CIICbC5oKNWWLQ
S6M6D1y8WDCczcyleBQ04H8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAZ56f4xbt
IAELOYqp/vEQ8eqoLh87+z6H8cf7IF9luqHqe+ZlxIJtJkyzRReB5JZlU6BDPXtc
HHQncS8xGIVbX+dtRzbcN32E+hF9OA2fm8H1krt2JKs+ZvQwJ8orJog7KBfL65UT
11QlDCwVlZwp/3LvY1W7JqzJ9TKRQdB6XV3TlOs6PTOcx8dOhU8yjpJYL7czEDjO
EvXP0jd7YfQQOoPC8yy1vG1cn6BfPumQUgaBGvtTDEEDfCDFc/Lb/lbwmRGT41m3
Pc/iobkkA7AFz+ZBEUZriLdRUsaOyaTJIurF8pYWjSKKAIhedEdA6qz46BviHK9f
gXIOOQ5iFu+fKA==
-----END CERTIFICATE-----

View File

@@ -224,13 +224,13 @@ TLS_CA = "etc/freeDiameter/cacert.pem";
# 4 - full - display the complete information on a single long line
# 8 - tree - display the complete information in an easier to read format spanning several lines.
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_rfc5777.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_mip6i.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nasreq.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca_3gpp.fdx";
##############################################################

View File

@@ -1,27 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAuRDJTZl1/w/mZuf5KM4/NT1cwiaW69PPSvOdNB2aPy5p89eq
xns2gDTBWTRYDzHxNqRuT2bVQWU5tm2KCDyGgXixK/U6MSvaKale7RgCpYZJVZYj
LO6tnR3b9VmnrpydGx2ZaMk15OmjEweJFM+h4kYSO4ojZ/vZX5YR0IXa4CKkundH
ca0LL2prFb7/h6Mbjom8iUo7AbZfXajlBGD9/5JCjQsan7XlROAaxCZSvwcm7SvD
4ONpOv+DYv7ewkvO0oWRra2iynrp04IoZlQFKA3hKO4TnoARrdLKLQoDVYOOPdgH
2ct6P8KDobBDj+xlPkQufCdOMvUCg6J86aIZpQIDAQABAoIBABFtBjd7WsQAoEZS
U4DHIuaFd6WEcrOUBzHcjJHqs6p9WVavmRIFahVaYlZe+me74SWvCAAMA8qbmHqY
B+ZMpLGuRqiH98nHgkxn+VtD5oPliCQ59ef2NXzU4fBRV9u2PYjfGaHnSF7crRFO
pVbDUk/3HyJiGIFjEo3QmK7U284869t317D8zdJ1WCaH6vcQVlIS0b6SPEd1CQFn
X/jx/KqZ75HvVYF4ZF2tNCptqUH/YCIO4/ZxnNTccxtEFaerfKae8Xxcywz1cqhV
xNKlLPRpgwaW9Z70Y+A1OKGP8UjplEvjRe9Nc0to3PmBiTPHl6n+56bkMHKjYat8
ha7TMKUCgYEA3rkLaoRgnSJ6NnXLpE38bl+WMvxsiYJUllE1fEiq/j5UzeeBKAI6
Lt9XFQk+Y20w0oGRlE6A8gBcGen3q/MMrSp0/VQtErnG9+kl4D5jqW+iBdj9LwPI
HP26jrK7Wa5PEoXWQkA/PQZqIA4CEMtTSPRTrj1Cu27tU3R0n4PXWdMCgYEA1Ldi
W0D+Up5Vhs99JZYwrdSCdV9mY/nfTD7WqmPECXASWKZp/Im9re5TuLV6jbib9LKp
/ZG9DmDgEEBvflI/kxH9vb0C+PKwZKuTssuNpGBp44WfU3RDGfUe4GMX/h8PGOI2
4RR90b5rqctqDTYmOM5AP58aCFbu56ZB2nAV26cCgYAlPk5BZpd9Tzmeh74g4IWY
s1U7e2hu6iNY64WFHeWyFBw8Pj0jwpOWKPS36M7M84JZgR8l7Ka1UQgVsUEgOMli
35mmjv/mhLhX1l3mDKi/uZIfZjSYOwqohmk+2XZovbQtRcIZXAL3Im52o8EGq+lm
ZqzjkwzoqNj4vp2N2w8UzwKBgQC5sg3PFAHxJgAL2/6oXWDJn4bz6AB+rpfc+85y
mP1+L7QUZ9KGf8hymmfEC8mdBtg+2enETwH4F2IDTf0HDc4qGb6lcOezZEnQ2Gfr
4f8YzIIj+XaJaClb87ysrlU3pu2LD5BRFY5xGAbtB4LhXbAoTwWPhNk5Bosw9tbu
VoL+aQKBgEvgKSpusCmKuH9NrGt85K7ht5+XXchD2UZ9CXIvhg4cYuz5RjCu1Ic9
BMTh83OdPf2CVwaBtwYKwVB99Ov2PHGVSHm+VPXtS0UvUWY7phaVBDDrWmwrvrvv
z/e4bZMJXv8vy6pWK8tJKj/CinPGCpcus3rNAEyoCrrRehc5o55P
MIIEowIBAAKCAQEApkKYDYWg6+hjVU0eh3JpsloGQFD5+TN7EfLEavaV0Yi5dXho
45/IEVyFPONPmWunBfqwc2GymJ2hyoPA7jxzR7N5z3Pl3NxHiWbAgA4biIZHvUIE
7P05jA5tzjHglVUCpGdFLJTy3PwWyGd0gf9zz+3XUv5OC+uLNSfnzo5hJ1lXmCGS
fUn5pgUBi5kM7itUJgs1pjuBlsrp12Qc9cuzK7QCZjTLvAJQX/YbSAgmYbOtDMYI
7Jp6k/H/qux2zywSxVDHB58F2jCPoi6y7pGhc4dOFfBd2YVMnON1Mf94rpTT3h/7
0IggJsLmgo1ZYtBLozoPXLxYMJzNzKV4FDTgfwIDAQABAoIBAFzxBUcp2FeIRV8+
CT72epe1M6FooxTn7niOGbchuYa0w9gjQ59bhuANtH3hJHJDd88j4NffWZNvKy6m
kIedS2RdtE6AH5NjoKnywtHTERk01425Bj/lHvJoboHB6CYSq7Nz93uAmHNoiOPm
0X6KaxdlgeVnPAH13pAMis0xUqZHqFuQ/wuy1Yc0lJvi5N2Fy0ArxSEkr5I5ezIf
FXnaPtaR7sQV8PhECmvo2NfYt+/X4kDAUyPHd9SK0BPPwR20c6hfsFJfh+HnvZfh
9p3zlRBb0muOueXZB4sEp51LotrIwcZVQCS5V7iOcy4UHtuwQC+CJxTH/0MRBNX3
bITNAOECgYEA2uHgPQfxiwgI3aZ7HaSnm0zB7+SsMWGupUyDgE84Ss+UB1NdQUZD
rV69hj8vIHPKCd9IElcTTFulD38PTh7H3nEmmLvCnIAL0Dg7WiWWr+nl0P1TXIR/
OR+EbYQ7ykq/uPxEjR7bDiqU6aOurJ8v1zG/VjoRMLTRVHb5tN3uJZMCgYEAwnRI
P1ENZ2toT36nQEHdjNARwN9Qh/oD8NVEHnmTxCTjmResJ3F9NqP0buev9xVofaKy
9VqBiYjdIZkDKlPymnuNQtNd5CEZUcQfWgP3/NSBIV3PpECgk93iJ/K5T3sIwP/T
uonO3Abs66Y3/6OhJ41/X3MBU2aM5KTv6rRoLOUCgYB8YOhkpfPq9ljbYzQIxzz6
8eYupLn4obJ1egIr0liBom1SsFuIsR3aEcEO3S6xeTqw23GAAn0T4evs313aHYGj
9JZjKibPea+81YdclYmIUxhl5t4M77m/wxokhYTYUhuaSbfGnWcLKMVP8tRagWbV
GQ7KN9r223ksTyNcVNR0AwKBgAtNONm9Ozs0ieZ85PmeGmNRwIZmNEcC5/G6Y3Al
/sman0PJlW7hcLaZRt6fRqHks6MBrscF0JuOwdNvEjkGkgYagjZNFJrqtY8ECBJy
QpqGO08WJbhVLUAK2FccC1ssOnEFLWgdFFHDcUes7HpGJ1qmJa4FgCE5x5yOXYdV
nuxlAoGBAIRZ/Z4y1m9+Tx1YjesJ4b30QVmf2oWD1gaEYCIc06SgThOKCdq8MKHX
07WIWi1Q/O4DUA71tMvYEJ0nx1Rd9IN1mt/qii3DuDmmNOweZ9HfBjg8Yh8L1Gjr
5NKQtJhuA3GoFafh/ioApKZviCxkPAv6GyTMJOlarmbzA+3TW059
-----END RSA PRIVATE KEY-----

View File

@@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICajCCAVICAQAwJTELMAkGA1UEBhMCRVMxFjAUBgNVBAMMDXBjcmYuZ3JhZGlh
bnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwoXb2/NXy1ukG4Fq5
wgiwboH6jdwqhYSDc8TppOMBdgrtAj2OMLdbjDKHQCPEDcy4ewphXtQeyaTNPr/H
EobbAJGHOd/3nex4HBdfrSHOMipB59nVkIVO7c/ZFeM9U4iQmnxCY5+rmOOfMrdr
3FLsVeOFp4/T04llrur5xVMqQZJLqj68dERE8gcH1Rp6fK2MUg2mR9HD9iZE5EcC
GPgxEEB2IgNyZkjREvhNA6yqolhosi9oTpmLEDMxV8yEOy6lX48qKU7hibUInIzr
30oZAE2IZTMlvOb2G0hhEX9SIoBshL3gZUqHMHI23fYipS5jnie9HPqK7aQES544
0PD1AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAjLfsm7w1FjAYIutnf75cjJVj
ZHcdfznJhxfuxGmtbBcOjkPSMuhCdcDTU455BHCr0euQf3fw3i3ktGu9My/X9f60
k0n1QZiSdla2vRlNdi8ZnKpxdT7j67gBVLsNuJ/1FTtoMEsI1Yd8kdOEMqbkCWSV
7wk2KqSZ6M5Z3X4bt/PQfBf042271z4/Zy0v3ec5n2bTdb4TErobnmu+7Oi4x4Yn
mqUgD8WNIMn+fH8tD1BSAbSdgxzpAR8jxNo1L0heItpmNMXVkJve5atUbmQCCaxW
TJ8GBnbkTwNLwfNHolMUIx3vwo3fey0nQiXOHFGcAN+4tXfg2hFkRiNA6pf4tQ==
bnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiYv9uThOeUbwWQlsY
Zq1KXtKKOA5xsN8Mz8ohrXvZGs+Bsdyj82UkkQIreMLa3a/xbujnWWSanYcWKos3
TDLg5U1hOcu6HQ5oBuq0Ref7CfEeLPilRmR7jUwTaaQVFD6V8G71fv3vxiFzQZkm
m8NLBK+Lx++MWZa7MAzODRIQSN4HFQxXDu4CIFIIsHneM0FQuJJU3IJA+DICG67J
ktvTAsuQCKGLSCdhk+3V9qlokB+EjtJnNyPiM1zeXPC1HZHXOhvv0oWxPjmuM6qI
o5Z4l7+TendQGOPWSrXw4xt0cpq5NnJG/QEdkFBnArKpMYWs4yNYifnG+bht48/z
NvXHAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAoKUUBPs29qpw0cK/9ZLZ38gK
RWWclwMVLaODMkdTB3A1cx2YqrXoAbhBm72kCh3AoAgX2MqArLBNS+XeteRNpvH7
UniXoUVLDajQ2F9W+2IAmbSWJkZUGufiqW0htJpZQ0Qt8Znl+Iq6gy/Si3zVYgkb
83OMw+2Ws2IgjKjVkSk2zulEYqIeo8bTyjfGGULSY1beliR0X7Wj1T3qFwGA1Tcn
TbyIr2aiuIKtusks5jM8oASUXpqqqArEIpSV9n8lWUJQSWQKHjAOTyrpaT5kynes
o8yzrHsAoxU8Qaijf/n8lxox2xQ5Xs/XJu5XTzs2YkdNwngW788uhDWWgpjpHQ==
-----END CERTIFICATE REQUEST-----

View File

@@ -1,19 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDBzCCAe8CFGmvRNhb9E5DHIssUBkLL2TODhnYMA0GCSqGSIb3DQEBCwUAMFsx
MIIDBzCCAe8CFGmvRNhb9E5DHIssUBkLL2TODhndMA0GCSqGSIb3DQEBCwUAMFsx
CzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQHDARWaWdv
MREwDwYDVQQKDAhHcmFkaWFudDEVMBMGA1UEAwwMZ3JhZGlhbnQub3JnMB4XDTI0
MDEwOTExMjIzNloXDTM0MDEwNjExMjIzNlowJTELMAkGA1UEBhMCRVMxFjAUBgNV
MDExNzE3MjUzOFoXDTM0MDExNDE3MjUzOFowJTELMAkGA1UEBhMCRVMxFjAUBgNV
BAMMDXBjcmYuZ3JhZGlhbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCwoXb2/NXy1ukG4Fq5wgiwboH6jdwqhYSDc8TppOMBdgrtAj2OMLdbjDKHQCPE
Dcy4ewphXtQeyaTNPr/HEobbAJGHOd/3nex4HBdfrSHOMipB59nVkIVO7c/ZFeM9
U4iQmnxCY5+rmOOfMrdr3FLsVeOFp4/T04llrur5xVMqQZJLqj68dERE8gcH1Rp6
fK2MUg2mR9HD9iZE5EcCGPgxEEB2IgNyZkjREvhNA6yqolhosi9oTpmLEDMxV8yE
Oy6lX48qKU7hibUInIzr30oZAE2IZTMlvOb2G0hhEX9SIoBshL3gZUqHMHI23fYi
pS5jnie9HPqK7aQES5440PD1AgMBAAEwDQYJKoZIhvcNAQELBQADggEBABeovoi8
jTjPcuKcH+MdhtblG4vBBPcLWMFTQufhzSZ+AtT+ESTl0nGiy18eqJpQna3euIDb
KqrzSm/dt5DkmsRAENyRIj7NPYk8VIJ9urjZyAubRXGQk8Btp0tE2BYGoMQR/84O
uiC0AEpQy+B5Wvz6YgM1teLXSgmpTsTRLo+Cwb27vc5lR9LMdVeb99S+0DlGTJt5
FLCwRJUPmyU7LtXLrpsezoZJSl7QWY5qji533+phbx9vVpRfMAztdKTpn12c/HAc
FyuSTCvo473fp+3djJFTVHoPQ+L2jsP3UTb7sgcOl8QoGwUEIAXK0ro1T10MuH61
DyYfB8w58zhR/G8=
AQCiYv9uThOeUbwWQlsYZq1KXtKKOA5xsN8Mz8ohrXvZGs+Bsdyj82UkkQIreMLa
3a/xbujnWWSanYcWKos3TDLg5U1hOcu6HQ5oBuq0Ref7CfEeLPilRmR7jUwTaaQV
FD6V8G71fv3vxiFzQZkmm8NLBK+Lx++MWZa7MAzODRIQSN4HFQxXDu4CIFIIsHne
M0FQuJJU3IJA+DICG67JktvTAsuQCKGLSCdhk+3V9qlokB+EjtJnNyPiM1zeXPC1
HZHXOhvv0oWxPjmuM6qIo5Z4l7+TendQGOPWSrXw4xt0cpq5NnJG/QEdkFBnArKp
MYWs4yNYifnG+bht48/zNvXHAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAHPcaYFV
7Send0u+wAzHavRTsJFkUeeif+jKTVHfTmZiOMcOI34aCy+bZpy4SfU0/OVbmQlH
2T2+3c4F13gRHuYqtcueTgYZgGXWDWZuhHCuMU0td4dOIU31hQjPLb9kr2FYN0Tg
ZXsMx9PBnZzg4PO+8yp5rMFcz8l6hnj7WMuJuAedO7y1FsNqltqoW5B/aa00+SFO
wMDjBFHt1up6m0qnNTl2ONixxQUaHrg7fwiDN/SyGC4IbWwfFAOJLT/KQdCaE1QR
qtSjwJzQrfNNifcXqnPKJpbMxqAPHunGkY3AsWDGUJCNWL7JizmthTioxUsUb5Wt
LlD1DXzUCU3X098=
-----END CERTIFICATE-----

View File

@@ -224,13 +224,13 @@ TLS_CA = "etc/freeDiameter/cacert.pem";
# 4 - full - display the complete information on a single long line
# 8 - tree - display the complete information in an easier to read format spanning several lines.
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx";
LoadExtension = "/opt/open5gs/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dbg_msg_dumps.fdx" : "0x8888";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_rfc5777.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_mip6i.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nasreq.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca.fdx";
LoadExtension = "/opt/open5gs/lib/freeDiameter/dict_dcca_3gpp.fdx";
##############################################################

Some files were not shown because too many files have changed in this diff Show More