Compare commits

...

262 Commits

Author SHA1 Message Date
Sukchan Lee
a80f5cb77c Release v1.3.0 2020-07-10 17:49:33 -04:00
Sukchan Lee
dbb7ae2de9 Release v1.3.0 2020-07-10 17:27:45 -04:00
Sukchan Lee
b54ab2923c Update document(v1.3.0) 2020-07-10 16:50:23 -04:00
Sukchan Lee
fdfce08b68 Fix the compile error [#499] 2020-07-10 14:59:29 -04:00
Sukchan Lee
f78ca3c483 remove unnecessary ASN 2020-07-09 18:43:55 -04:00
Harald Welte
f42b45a061 fix compilation warnings/errrors with microhttpd >= v0.97.1 (#498)
Unfortunately upstream microhttpd has changed their callback function
prototypes in an API-incompatible way.  At least if you build with
-Werror, gcc will fail due to non-matching prototypes.

Work around this by using a typedef which uses the proper return type
depending on the microhttpd version used.

Closes: #497

Co-authored-by: Harald Welte <laforge@osmocom.org>
2020-07-09 17:56:48 -04:00
Sukchan Lee
7bb1c7055f Remove ACK in configuration update [#487] 2020-07-09 17:34:41 -04:00
Sukchan Lee
997b716cda Change asn1c from velichkov to mounse07410 [#492] 2020-07-09 16:43:56 -04:00
Sukchan Lee
d711b26dfa Update document [#495] 2020-07-09 14:40:52 -04:00
Sukchan Lee
dd67b1e533 Update Document for srsLTE [#495] 2020-07-09 09:15:44 -04:00
Sukchan Lee
a71d2ee3db refine SGW/UPF selection code 2020-07-09 01:38:09 -04:00
Sukchan Lee
8ddbb03f65 Fix WebUI Install URL in the document [#495] 2020-07-06 12:12:11 -04:00
Sukchan Lee
c7d87c9180 Fix the SMF crash bug [#487] 2020-07-03 23:14:48 -04:00
Sukchan Lee
3b0db8c384 Fix the bug for Release-16 2020-07-03 01:03:13 -04:00
Sukchan Lee
ad12949469 Add ACK in configuration upate command [#487] 2020-07-02 02:16:52 -04:00
Sukchan Lee
7343941a50 fix test code 2020-07-02 01:56:18 -04:00
Sukchan Lee
d9743286c5 Add PDU Session Release [#488] 2020-07-02 01:50:23 -04:00
Sukchan Lee
8afc4b7887 Add missing files 2020-07-01 00:25:04 -04:00
Sukchan Lee
fae342ecce Apply Release-16 in 4G EPC(S1AP,NAS,GTP) 2020-07-01 00:22:55 -04:00
Sukchan Lee
5eabfc8275 Fix to decode configuration update complete [#487] 2020-06-30 08:29:18 -04:00
Sukchan Lee
3c6711c9c8 If HSS/UDR gets MSISDN, AMF/MME -> SMF/SGW [#464] 2020-06-29 22:12:24 -04:00
Sukchan Lee
7e29e7486f Add sanity check for unexpected gNB behavior 2020-06-27 15:21:29 -04:00
Sukchan Lee
2dfeade346 All known memory problem is solved. 2020-06-27 14:28:14 -04:00
Sukchan Lee
70d02a3b8b Hotfix for Service Request in 5GC 2020-06-27 09:23:38 -04:00
Sukchan Lee
ca4ee27e84 more bug is fixed 2020-06-27 00:46:06 -04:00
Sukchan Lee
da364e03b7 Fix the document mistypo [#485] 2020-06-26 08:14:33 -04:00
Sukchan Lee
01b69e046f Bug Fixed for 5GC 2020-06-25 22:44:28 -04:00
Sukchan Lee
85555daa15 change ngKSI management policy (#482) 2020-06-25 01:06:56 -04:00
Sukchan Lee
6e84ac670d Bug fixed for 5G core 2020-06-25 00:37:29 -04:00
Sukchan Lee
d652075ab9 a couple of bug is fixed 2020-06-24 00:33:10 -04:00
Sukchan Lee
a7280c2fcb Add a guide if SMF/PGW cannot find subnet [#480] 2020-06-23 12:50:23 -04:00
Sukchan Lee
300123d990 Bug fixed for 5GC 2020-06-23 00:35:41 -04:00
Sukchan Lee
ee41a751f0 remove unnecessary code [#476] [#477] 2020-06-22 14:17:58 -04:00
Sukchan Lee
8487a2b4b3 Update configuration manual for 5GC 2020-06-22 12:29:41 -04:00
Sukchan Lee
e6ecaaa4fc Merge branch 'master' of https://github.com/open5gs/open5gs 2020-06-21 23:55:08 -04:00
Sukchan Lee
99f7b3ce35 Document update for 5GC 2020-06-21 23:54:53 -04:00
Sukchan Lee
4b906b3010 Fix the version to 1.3.0 2020-06-21 23:14:26 -04:00
Sukchan Lee
b35c2277be simple 5GC registration is done 2020-06-21 23:10:54 -04:00
Kenny Barlee
bcd02b1f33 MME: select SGW by RR,TAC,ENB_ID || SMF: select PFCP associated UPF by RR,TAC,APN,ENB_ID (re-worked) (#470)
* MME: select SGW by RR,TAC,ENB_ID
and enable round robin inside each option

* SMF: select PFCP associated UPF by RR,TAC,APN,ENB_ID
and enable round robin inside each option
2020-06-19 00:36:02 -04:00
Sukchan Lee
c54e85c5c0 Session-AMBR changes required field in WebUI 2020-06-17 21:43:16 -04:00
Sukchan Lee
dbee687a75 Add only one 5GC scenario (call-flow) 2020-06-17 01:22:28 -04:00
Sukchan Lee
20008b6a13 Update document for shared library [#445],[#463] 2020-06-11 10:30:44 -04:00
Sukchan Lee
7f19916f05 remove test random number 2020-06-07 10:56:41 -04:00
Supreeth Herle
a381c89f2e Update of VoLTE tutorial (#459)
1. Dont run the P-CSCF, I-CSCF and S-CSCF as systemctl process
2. Run all the IMS process in foreground for better debugging
3. Run all the IMS process (or atleast P-CSCF) in foreground as ROOT user and NOT SUDO - Handles non-creation of IPSec tunnel issue
2020-06-05 08:54:08 -04:00
Sukchan Lee
e514316493 Remove assert for UEContextReleaseComplete [#445] 2020-06-04 16:16:16 -04:00
Sukchan Lee
41ff775a37 Update AMBR checking [#457]
AMBR uses uplink/downlink in kbps(1000 bits per second).
2020-06-04 15:32:46 -04:00
Supreeth Herle
8702605b5f Add the modified Bearer level QoS if PCRF changes them (#457)
* Add the modified Bearer level QoS if PCRF changes them

* Add the AMBR if PCRF changes them
2020-06-04 15:12:32 -04:00
Sukchan Lee
72370ff0b2 Add AUSF, UDM, and UDR 2020-06-04 14:12:05 -04:00
Supreeth Herle
0c0241d5e5 Undo the fix provided for converting Rx to Gx Flow Description (#452)
The fix introduced in commit 768e4d9eb3 is wrong, which resulting in UE
replying with bad Semantic error for Activate Dedicated EPS Bearer Context Request. Hence, reverting back
to original implementation as its correctly doing the conversion as per 3GPP Spec. ETSI ETSI TS 129 214 V14.3.0
Section 5.3.8.
2020-05-29 10:38:55 -04:00
Nick
1494cd9fec Update View.js (#450)
Switched UL and DL values as they were reversed (DL showing UL & UL showing DL)
2020-05-26 21:02:31 -04:00
Sukchan Lee
9bfb4591ea Add MMEName in S1SetupResponse [#444] 2020-05-25 12:34:05 -04:00
Sukchan Lee
6ef5a746e5 NGSetup is added 2020-05-25 12:15:22 -04:00
Sukchan Lee
c534d47a78 add revision date 2020-05-23 00:16:21 -04:00
Sukchan Lee
68dba64d0d fix link 2020-05-23 00:09:43 -04:00
Sukchan Lee
7ba5e31c80 Update Contributor License 2020-05-23 00:03:15 -04:00
Sukchan Lee
6f6800b52e NGAP is added 2020-05-22 22:24:48 -04:00
Sukchan Lee
3c3aec340e Fix the compile error [#442] 2020-05-21 23:11:27 -04:00
Sukchan Lee
a9eaed18aa NAS-5GS is added 2020-05-21 21:24:21 -04:00
Sukchan Lee
3b19cd85cc Update license terms (#411) 2020-05-19 20:38:19 -04:00
Sukchan Lee
dbf3e17fda port configuration update [#217] 2020-05-19 15:35:41 -04:00
Sukchan Lee
1fd3f48860 Squashed commit of the following:
Fix the wrong format in nf-instance GET method
2020-05-18 23:07:41 -04:00
Sukchan Lee
d0673e3066 Added NRF 2020-05-18 17:00:37 -04:00
Sukchan Lee
46f20cc979 Fix the SMF crash [#437] 2020-05-14 13:38:26 -04:00
Sukchan Lee
4e01d270eb Use ogs_pool_alloc in diameter state #420 2020-04-27 13:08:24 -04:00
miaoski
00ec906b0c IPsec works now. Removed several lines. (#424) 2020-04-27 07:31:47 -04:00
Sukchan Lee
82eebc3b80 Rollback mme_enb_pool instead of ogs_calloc (#423) 2020-04-26 22:18:47 -04:00
Jamo
cde847c53d Fix MME crash on eNB connection when maximum number of eNBs reached (#423)
* Remove mme_enb_t pool and use enb_list instead

* Refactor S1 Setup request handler

* Implement S1 Setup Failure response when maximum number of eNBs reached
2020-04-26 21:07:09 -04:00
Sukchan Lee
e6ee163140 Update document for Release v1.2.4 2020-04-26 18:41:12 -04:00
Sukchan Lee
ae75f43a88 Initial proposal CUPS using PFCP 2020-04-26 15:36:05 -04:00
Sukchan Lee
37a69e6332 Release v1.2.4 2020-04-26 15:22:55 -04:00
Sukchan Lee
4ceae8857d Docker script update for Ubuntu 20.04 2020-04-26 15:04:07 -04:00
Sukchan Lee
f0a405f17c Change MIT License for NAS message (#411) 2020-04-24 08:52:14 -04:00
Nick
7c47a8901a Update 02-building-open5gs-from-sources.md
Few minor corrections;
 * Meson installed via apt
 * Directory corrections in regards to where to go on the system
 * Added copying the binaries to /usr/bin
2020-04-20 12:07:45 +10:00
Sukchan Lee
c6ea286fe2 fix the PGW segfault on DeleteSessionRequest (#417) 2020-04-19 12:27:52 -04:00
Sukchan Lee
b50c77c9f8 Update Document (#415) 2020-04-19 10:15:13 -04:00
Supreeth Herle
7aae20e04a Handle forcing of IPv4 or IPv6 PDN connect using the Web UI (#415) 2020-04-19 00:05:04 -04:00
miaoski
8323114945 Use open5gs/open5gs and add description of setting APN.type to IPv4 (#414)
* Adopt tutorial format to dockerized VoLTE lab

* Fixed several lines according to Supreeth's feedback

* add PCAP analysis to successful calls

* set APN type to IPv4

* remove redundant APN screenshots
2020-04-18 23:52:26 -04:00
Sukchan Lee
c26d525488 delete gtp buffer in gtp_ping 2020-04-18 13:39:25 -04:00
Sukchan Lee
74d631aaaa rollback for checking gx message (#403) 2020-04-18 13:29:42 -04:00
Sukchan Lee
2e784a331d cause_value should be initialed with ACCEPT 2020-04-18 13:21:18 -04:00
Sukchan Lee
5009876c16 P-GW respond to DIAMETER error from PCRF(#403) 2020-04-18 13:07:06 -04:00
Sukchan Lee
63809a3677 Display dockerized-VoLTE on the main (#412, #413) 2020-04-18 09:54:32 -04:00
miaoski
713693ee78 Add PCAP analysis to successful calls (#413)
* Adopt tutorial format to dockerized VoLTE lab

* Fixed several lines according to Supreeth's feedback

* add PCAP analysis to successful calls
2020-04-18 09:13:17 -04:00
miaoski
c00f67caab Adopt tutorial format to dockerized VoLTE lab (#412)
* Adopt tutorial format to dockerized VoLTE lab

* Fixed several lines according to Supreeth's feedback
2020-04-18 08:31:29 -04:00
Sukchan Lee
3feddd5424 Fix P-GW crashed without PCRF (#402) 2020-04-17 21:36:26 -04:00
Sukchan Lee
2b69283a81 Fix the bug when only one DNS is configured (#404) 2020-04-10 22:41:48 -04:00
Sukchan Lee
88981a570d Update Document 2020-04-10 22:12:04 -04:00
Sukchan Lee
23251fa6e3 Update Document 2020-04-10 21:42:43 -04:00
Sukchan Lee
a1569e5d86 Add optional function for TAI or ECGI(#399) 2020-04-09 10:52:21 -04:00
Sukchan Lee
5f7d1c5d90 re-formatting 2020-04-08 19:54:09 -04:00
Sukchan Lee
0789216201 Oops! it's mistake 2020-04-08 19:51:21 -04:00
Sukchan Lee
d84f79f4f2 Change ULI to optional filed in P-GW (#399) 2020-04-08 19:44:47 -04:00
Sukchan Lee
235d61a2ea Fix the crash in SGW selection mode 2020-04-08 19:27:54 -04:00
Supreeth Herle
3bb763292a Minor doc improvement (#401)
- Added more info to disable VoIP calling so that it doesnt intefere with VoLTE call test
- Checkout 5.3 branch of kamailio (better for IPSec requiring phones)
2020-04-08 07:55:49 -04:00
Sukchan Lee
2e7d19a7f1 Document Update for v1.2.3 2020-04-04 18:20:40 -04:00
Sukchan Lee
e13a7a1161 Release v1.2.3 2020-04-04 18:12:18 -04:00
Sukchan Lee
9b9cad288e Hotfix for handling MTU size (#398) 2020-04-04 17:49:58 -04:00
Sukchan Lee
7b5f9520d9 check auth length for sanity 2020-04-02 20:43:22 -04:00
Sukchan Lee
c7856bf3b2 fix mistypo 2020-03-30 16:24:16 -04:00
Harald Welte
27b3bec169 various documentation improvements (#396)
* FAQ: improve Language of the FAQ

* FAQ: elaborate bit more on commercial support; change contact address

* docs: Esnure mongodb is started at system boot

* docs: Language improvements + spelling fixes

* docs: If we use --prefix=`pwd`/install, the configs are not in /etc

* docs: Further clarifications

Co-authored-by: Harald Welte <laforge@osmocom.org>
2020-03-30 16:21:02 -04:00
Sukchan Lee
ef8d7d5d34 Update document for troubleshooting 2020-03-27 11:34:35 -04:00
Sukchan Lee
e7b40a3a09 Release Notes for v1.2.2 2020-03-25 20:45:44 -04:00
Sukchan Lee
cbc557f51a Release v1.2.2 2020-03-25 23:53:55 +00:00
Sukchan Lee
557d9532b0 Add GTPv2 ECHO REQ/RSP Message (#378)
This is only handling ECHO REQ/RSP message.
The related function is not implemented at this point.
2020-03-25 17:43:02 -04:00
Sukchan Lee
9c150253d9 fix the #384 issue bug
If Initial UE Message with Service Request is received and
   There is no Session Context
     (e.g due to UEContextReleaseRequest or InitialContextSetupFailure)
MME will sends Service Reject NAS message.
2020-03-25 14:02:06 -04:00
Sukchan Lee
1225d1f1d5 Fix the missing for debian package (#388) 2020-03-22 20:53:13 +00:00
Sukchan Lee
db13836426 Rename dbconf.sh to open5gs-dbctl (#388) 2020-03-22 16:44:45 -04:00
Spencer Sevilla
3d6a84ca85 Add dbconf to hss Debian package (#388)
* add dbconf.sh to package installation as open5gs_db

* left out an end quote

Co-authored-by: Spencer Sevilla <sevilla@cs.washington.edu>
2020-03-22 16:21:12 -04:00
Sukchan Lee
0521d9fccf Support Debian(Bluster) with MongoDB-ORG(#377) 2020-03-22 13:48:20 -04:00
rafael2k
df60fbd0a5 Make it installable in Debian Buster with MongoDB-ORG packages. (#377)
Co-authored-by: Rafael Diniz <rafael@rhizomatica.org>
2020-03-22 13:46:30 -04:00
EugeneBogush
5eb1c87e43 fix for systemd reload (#393)
* Update open5gs-hssd.service.in

impleneted 'systemd reload ' open5gs-*

* Update open5gs-mmed.service.in

* Update open5gs-pcrfd.service.in

* Update open5gs-pgwd.service.in

* Update open5gs-sgwd.service.in
2020-03-22 05:34:09 +09:00
miaoski
0796ce3d7e fix trivial typos in comments (#387)
Co-authored-by: miaoski <miaoski@gmail.com>
2020-03-15 07:49:46 -04:00
Nick
44455d55b3 Updated readme for PythonAPI to include UpdateSubscriber 2020-03-15 17:28:50 +11:00
Nick
85dbeb05cc Added editing subscribers with PythonAPI Interface
Using the UpdateSubscriber call. Input variables are the IMSI and the subscriber data, which is the same as the outputted data of GetSubscriber.
2020-03-15 17:28:17 +11:00
Sukchan Lee
1e56141d1e Add socknode_add() [#367] 2020-02-28 20:26:32 +09:00
Sukchan Lee
bf751dcee7 Add a space line below mtu config (#376) 2020-02-25 20:44:50 +09:00
Sukchan Lee
8472aa3743 Add MTU as default in configuration (#376) 2020-02-25 20:34:51 +09:00
Supreeth Herle
3f2ad4ca08 Add feature to provide MTU size to be advertised in PCO options (#376)
This feature can be used for provisioning a limit on the size of the packets
sent by the MS to avoid packet fragmentation in the backbone network between
the MS and the GGSN/PGW and/or across the (S)Gi reference point) when some
of the backbone links does not support packets larger then 1500 octets
(ETSI TS 123 060 V15.5.0 Annex C)

Example of pgw.yaml to use this feature:

logger:
    file: @localstatedir@/log/open5gs/pgw.log

parameter:

pgw:
    freeDiameter: @sysconfdir@/freeDiameter/pgw.conf
    gtpc:
      - addr: 127.0.0.3
      - addr: ::1
    gtpu:
      - addr: 127.0.0.3
      - addr: ::1
    ue_pool:
      - addr: 10.45.0.1/16
      - addr: cafe::1/64
    dns:
      - 8.8.8.8
      - 8.8.4.4
      - 2001:4860:4860::8888
      - 2001:4860:4860::8844
    mtu: 1400
2020-02-25 20:13:52 +09:00
Sukchan Lee
6f97e32dca Link Kubernetes Open5GS Deployment (#375) 2020-02-25 19:27:45 +09:00
Harald Welte
f2df9db68c debian/control: Add build dependency to 'git' (#373)
meson seems to need the 'git' program available at build time:
	lib/diameter/common/meson.build:36:0: ERROR: Git program not found.
2020-02-24 00:52:34 +09:00
Sukchan Lee
787d8ebe01 change test code (#369) 2020-02-17 11:13:36 +09:00
Spencer Sevilla
24e9def813 change 45.45.0.1 -> 10.45.0.1 (#369) 2020-02-17 10:41:16 +09:00
Spencer Sevilla
baad38cab3 PGW service must depend on systemd-networkd 2020-02-16 15:21:23 +09:00
Sukchan Lee
c3627e6852 fix indentation (#367) 2020-02-13 10:58:10 +09:00
Supreeth Herle
4f29b912e8 Add feature to provide SGW GTU (S1) address to be advertised inside S1AP messages. (#367)
This feature is useful in scenarios where SGW is run inside in a container or openstack vm i.e. behind 1-to-1 mapping NAT.
In docker/openstack environment, we often have 1-to-1 mapped NAT IP address in order for eNB to reach SGW.
But, this 1-to-1 mapping NAT IP address is not seen on SGW host and hence non UDP socket bindable.
Since SGW can only bind to IP address visible in it's host (usually a private IP beind a NAT),
it advertises the same to UE in S1AP message resulting in eNB not able to reach SGW on Uplink. This commit solves this issue
by providing a means to advertise a different IP address than the one SGW UDP socket is bound to.

Example of sgw.yaml to use this feature:

logger:
    file: /root/open5gs/install/var/log/open5gs/sgw.log
    level: debug

parameter:
    no_ipv6: true

sgw:
    gtpc:
      addr: 127.0.0.2
    gtpu:
      dev: ens3
      advertise_addr:
        - 172.24.15.30
        - fe80::f816:3eff:fe15:fe34
2020-02-13 10:51:06 +09:00
Sukchan Lee
34384de197 Add missing document 2020-02-07 15:56:35 +09:00
Sukchan Lee
44ff12aa03 Update document 2020-02-07 15:51:36 +09:00
Sukchan Lee
c639569c91 Fix the WebUI installation script for Debian 2020-02-07 14:26:29 +09:00
Sukchan Lee
82e27f3ad9 Release v1.2.1 2020-02-05 20:00:18 +09:00
Sukchan Lee
cd6d51ad65 Fix debian package 2020-02-05 15:31:30 +09:00
Sukchan Lee
7df3d0509b Oops! remove the assert (#358) 2020-01-30 19:14:59 +09:00
Sukchan Lee
9a3d5b50fc Fix the PGW crash (#358) 2020-01-30 19:14:07 +09:00
Sukchan Lee
e9a8944189 Fix the bug in 'Delete existing TFT' (#358) 2020-01-30 01:45:54 +09:00
Sukchan Lee
307cf190c4 Use delete bearer request (#358)
If UE sends bearer resource modification request with 'all TFT are deleted',
PGW initiates 'Delete Bearer Request'.
2020-01-30 01:38:26 +09:00
Sukchan Lee
f27699abf5 Mapping VIDEO to QCI_2 in PCRF (#358) 2020-01-29 00:59:50 +09:00
Sukchan Lee
045f013f39 Upgrade test program for VoLTE (#358) 2020-01-28 18:26:51 +09:00
Sukchan Lee
5d99df4036 Support all TFT code (#358) 2020-01-28 18:26:10 +09:00
Sukchan Lee
7c658091c5 Improve GTP-U Performance for many UEs 2020-01-24 19:41:08 +09:00
Sukchan Lee
81856afff9 Fix the bug for PTI mismatch (#355)
If PDN connectivity/disconnect or Bearer Resource Modification,
MME should set UE's PTI.

And other case, PTI should set to be 0(unassigned).
2020-01-22 21:33:25 +09:00
Sukchan Lee
5ff8376a64 add configuration for EPC separated from eNodeB 2020-01-19 23:38:06 +09:00
Sukchan Lee
f49e5e2360 Fix the resolution for Safari(iPhone) 2020-01-19 23:31:40 +09:00
Supreeth Herle
4beba8e104 More VoLTE calling changes (#354)
* Updated the docs for setting up a working VoLTE testbed

* Fixed docs formatting

* More formatting fixes of doc

* Handling NAS Bearer Resource Modification Request to prevent crashing of mme

* Corrected tutorial with right APN settings required in Mongo DB for VoLTE UE

* Added more steps to enable calling using only USIM

* More changes to VoLTE document based on working setup

* Updated guide with link to a safe and better way to force enable VoLTE on phones
2020-01-19 21:31:05 +09:00
Sukchan Lee
047ad240e7 Add the VoLTE pcap to the related document (#351) 2020-01-15 21:30:15 +09:00
Spencer Sevilla
2abdef74cb send PDN error cause if needed (#352)
* initial commit: respond with ESM Cause PDN-Type if we only allow IPv4 or IPv6 (not both)

* works as intended, removing debug statement.

* Fix the indentation and add the reference

Co-authored-by: Sukchan Lee <acetcom@gmail.com>
2020-01-15 21:17:20 +09:00
Sukchan Lee
96af2d0337 Update release notes 2020-01-13 21:41:45 +09:00
Sukchan Lee
8536fe3979 Document update for Release v1.2.0 2020-01-12 23:40:05 +09:00
Sukchan Lee
ce07bc16d4 Update debian package in Release v1.2.0 2020-01-12 23:10:37 +09:00
Sukchan Lee
d39582ff6e Release v1.2.0 2020-01-12 22:44:53 +09:00
Sukchan Lee
e418eda22f change APN setting in VoLTE document. 2020-01-12 16:50:58 +09:00
Sukchan Lee
65b262a7f9 change deafult value in WebUI 2020-01-12 11:53:55 +09:00
Sukchan Lee
c4cc7f60ba Fix the Type Layout in WebUI 2020-01-12 10:56:51 +09:00
Sukchan Lee
6ee8ae0774 Merge branch 'master' of https://github.com/open5gs/open5gs 2020-01-12 10:36:11 +09:00
Sukchan Lee
04233e505b Merge branch 'pdn_type_webui' 2020-01-12 10:36:06 +09:00
Sukchan Lee
0e1fcb43a7 move TYPE location 2020-01-12 10:28:45 +09:00
Spencer Sevilla
1bf78f7655 Adding an option for PDN Type (IPv4, IPv6, IPv4v6) to webui (#346) 2020-01-12 10:27:49 +09:00
Supreeth Herle
75c431855b Handling AAR Request for IMS signalling 2020-01-12 09:41:01 +09:00
Spencer Sevilla
322d4d9157 Adding an option for PDN Type (IPv4, IPv6, IPv4v6) to webui 2020-01-10 16:12:49 -08:00
Sukchan Lee
c403e250fa Rollback /blog -> /open5gs 2020-01-08 15:32:43 +09:00
Sukchan Lee
a4670ca6e1 Try to change URL (/open5gs -> /blog) 2020-01-08 15:11:39 +09:00
Sukchan Lee
f3dd605c67 Not to delete transaction for GTP retry [#342] 2020-01-07 20:01:36 +09:00
Sukchan Lee
3975f6e775 fix the PGW crash for UE initiated detach [#342] 2020-01-06 21:32:01 +09:00
Sukchan Lee
0891ee5b19 For safety, check TEID presence in GTP 2020-01-01 20:17:46 +09:00
Sukchan Lee
d1f3439f93 Document update for openSUSE package install 2020-01-01 16:39:31 +09:00
Sukchan Lee
e35bc4cc0d Fix the bug the GTP xact during Request Duplicated 2020-01-01 13:02:22 +09:00
Sukchan Lee
8cf9da560b TFT mandatory in activate dedicated bearer (#336) 2019-12-29 12:56:25 +09:00
Sukchan Lee
f577f8dc9f Whether to include TFT in Update Bearer Request
(#336)
If Rx media component flow is not changed,
Exclude TFT info in the GTP Update Bearer Request
2019-12-29 12:36:59 +09:00
Sukchan Lee
4fcbb65eca Add missing code line (#336) 2019-12-28 22:25:30 +09:00
Sukchan Lee
d191a5135e Add Bearer Resource Modification feature (#336) 2019-12-28 21:46:30 +09:00
Supreeth Herle
e6432868de Added the final piece required for calling using only USIM (#340)
* Added more steps to enable calling using only USIM
2019-12-28 00:52:32 +09:00
Sukchan Lee
5664b90e38 fix the indentation and assert [#338] 2019-12-27 23:22:16 +09:00
Supreeth Herle
768e4d9eb3 Fixed conversion from Rx 'permit in' flow rule to Gx 'permit out' flow rule 2019-12-27 23:08:00 +09:00
Sukchan Lee
6a470c8881 Update docs for removing flow rule (#335) 2019-12-19 22:30:30 +09:00
Sukchan Lee
8e26a9adf3 fix identation for 80 columns 2019-12-19 22:24:26 +09:00
Supreeth Herle
b8928ee849 Handling NAS Bearer Modification Request and VoLTE tutorial update (#336)
* Updated the docs for setting up a working VoLTE testbed

* Fixed docs formatting

* More formatting fixes of doc

* Handling NAS Bearer Resource Modification Request to prevent crashing of mme

* Corrected tutorial with right APN settings required in Mongo DB for VoLTE UE
2019-12-19 22:14:13 +09:00
Sukchan Lee
3bc9b6e9aa update it 2019-12-18 22:00:41 +09:00
Sukchan Lee
ef6e16acf0 update it 2019-12-18 21:54:06 +09:00
Sukchan Lee
3b6b024866 update docs 2019-12-18 21:48:38 +09:00
Sukchan Lee
428fbffa36 Update VoLTE document (#333) (#334) 2019-12-18 21:25:46 +09:00
Sukchan Lee
0f0d87d742 move VoLTE setup docs fro guide to tutorial 2019-12-17 22:24:25 +09:00
Sukchan Lee
a62e07318e Oops! mistypo (#333) 2019-12-17 22:00:23 +09:00
Sukchan Lee
d7657a8f0b beauty VoLTE Setup Docs (#333) 2019-12-17 21:58:27 +09:00
Sukchan Lee
04f1730982 beautify VoLTE Docs (#333) 2019-12-17 21:25:15 +09:00
Sukchan Lee
83cf871ff7 beautify VoLTE docs (#333) 2019-12-17 21:12:57 +09:00
Supreeth Herle
50f5a527a8 Added Control Rx media type and mapped it to QCI 5 2019-12-17 21:06:44 +09:00
Sukchan Lee
219899b8d0 Add VoLTE Setup Guide [#333] 2019-12-17 21:00:56 +09:00
Supreeth Herle
2ac9d931cf Working VoLTE setup guide (#333)
* Updated the docs for setting up a working VoLTE testbed

* Fixed docs formatting

* More formatting fixes of doc
2019-12-17 20:54:35 +09:00
Nick
10235922f4 Update 04-setting-up-kamailio-IMS.md
Updated docs to show expected output for "java -version"
2019-12-16 13:02:08 +11:00
Sukchan Lee
a86e296afc Use uint32_t type instead of S1AP type (#326) 2019-12-13 13:49:20 +09:00
Spencer Sevilla
66f839592f assign enb_ue_s1ap_id as a part of enb_ue_add function (#326) 2019-12-13 13:46:22 +09:00
Spencer Sevilla
324f3d158f add PCO options as TODOs. Closes #7 (#324) 2019-12-13 13:45:29 +09:00
Sukchan Lee
f06a8b92fe change ogs_expect() to ogs_assert() (#323) 2019-12-13 13:44:22 +09:00
Spencer Sevilla
b86658e173 small stability fixes that were causing crashes in Bokondini (#323) 2019-12-13 13:25:52 +09:00
Sukchan Lee
b7360d37d4 update it 2019-12-08 20:44:56 +09:00
Sukchan Lee
79bada897b Minor bug fixed 2019-12-08 16:31:15 +09:00
Sukchan Lee
f7a4d0ed78 Add more delay in test-program 2019-12-08 04:09:35 +00:00
Sukchan Lee
cef1b46130 Add more delay in test-program 2019-12-08 04:04:20 +00:00
Sukchan Lee
b5307cdb7a Merge branch 'master' of https://github.com/open5gs/open5gs 2019-12-08 03:26:16 +00:00
Sukchan Lee
dfa5c4f0ee Fix the test program 2019-12-08 03:25:37 +00:00
Sukchan Lee
8749c2d666 For usrsctp, MacOSX needs options c_std=c99 2019-12-08 11:46:11 +09:00
Sukchan Lee
896ca50253 PFCP interface added, but not tested. 2019-12-07 13:17:00 +09:00
Sukchan Lee
cd6a295039 Release Notes v1.1.0 2019-12-06 20:55:54 +09:00
Sukchan Lee
e051941a45 Release v1.1.0 2019-12-06 20:14:20 +09:00
Sukchan Lee
79c4afe277 Update WebUI Version 2019-12-06 19:49:09 +09:00
Sukchan Lee
d0822c2e6b Add SGsAP-SERVICE-REQUEST in SMS & UE-active 2019-12-04 15:36:38 +09:00
Sukchan Lee
5e59349d17 Fix the memory leak (#316) 2019-12-04 15:22:25 +09:00
Nick
36dc786e01 Update about.md
Fixed spelling error on "compliant"
2019-12-03 12:24:36 +11:00
Sukchan Lee
4e2d7bf708 Add an initial code for PFCP 2019-12-01 21:40:52 +09:00
Sukchan Lee
ce6d2c5889 Before CUPS, move GTP-TLV to core library
TLV library will be shared in GTP and PFCP
2019-12-01 20:46:53 +09:00
Sukchan Lee
ed701ce90e [#314] further refined 2019-12-01 20:14:47 +09:00
Sukchan Lee
636170e0da Review ogs_expect() (#314) 2019-11-30 16:45:09 +09:00
Sukchan Lee
2cd9f496e2 This bug has already been fixed 2019-11-30 14:32:49 +09:00
Spencer Sevilla
5b59f09d9f ogs_assert to ogs_expects (#314)
* HACK: Don't retransmit InitialContextSetupReq

Related: #256

* HACK: Don't use buggy sa1p_copy()  in eNBConfigTransfer

Related: #257

* mme: don't reject with 'IMSI is unknown in HLR' (permanent reject)

* MME: Implement S6a result -> EMM cause code mapping

Closes: #263

* Spencer: modification to Haralds fix because macros are now renamed

* MME: don't assert on MAC failures of uplink NAS frames

Closes: #267

* MME: Avoid ogs_assert() in many situations

We don't want to crash the entire program just because a message
received from an external entity didn't match some of our expectations.

* compiles fine, checked DIFFs and only difference is the ogs_assert -> ogs_expect
2019-11-29 15:31:22 +09:00
Sukchan Lee
552045aa28 [#312] remove CS service notification in MT-SMS 2019-11-29 11:39:32 +09:00
Sukchan Lee
46e04210da Update docuement 2019-11-27 20:58:47 +09:00
Sukchan Lee
31f1fc030f [#313] remove ./build & ./install
The ./build and ./install directories are what users configure.
2019-11-27 20:48:24 +09:00
Sukchan Lee
b31836d8fc Merge pull request #313 from uw-ictd/mac_setup_easy
Prepares an easy install script for mac builds and initializes gitignore
2019-11-27 20:46:24 +09:00
Nick
7afc017cf9 Rename 05-troubleshooting to 05-troubleshooting.md
Gave .md filename
2019-11-26 12:52:37 +11:00
Nick
eb905e4514 Create 05-troubleshooting
Created basic troubleshooting steps documentation with some examples.
2019-11-26 12:52:10 +11:00
Sudheesh Singanamalla
9341d756cc Prepares an easy install script for mac builds and initializes gitignore
Signed-off-by: Sudheesh Singanamalla <sudheesh@cs.washington.edu>
2019-11-25 11:27:19 -08:00
Sukchan Lee
a808423631 Merge pull request #309 from uw-ictd/additional_troubleshooting
Adds Additional troubleshooting documentation for issues experienced
2019-11-21 17:20:29 +09:00
Sudheesh Singanamalla
fd05d25715 Adds Additional troubleshooting documentation for issues experienced
Signed-off-by: Sudheesh Singanamalla <sudheesh@cs.washington.edu>
2019-11-20 10:52:33 -08:00
Sukchan Lee
ee213e160a Prepare to release v1.1.0 2019-11-18 22:38:42 +09:00
Sukchan Lee
7b7acea59b Add IMEISV(MEI) in Create Session Request 2019-11-18 20:21:20 +09:00
Sukchan Lee
552305afe2 Add IMEISV Request 2019-11-18 19:34:28 +09:00
Sukchan Lee
f3ccd71db0 [#263] map S6a diameter codes to EMM codes 2019-11-18 10:20:48 +09:00
Sukchan Lee
a622feac84 [#256] Remove timer of NAS message related to S1AP 2019-11-18 09:04:10 +09:00
Sukchan Lee
835b3c9851 [#306] Refine static IP addresses 2019-11-17 17:43:36 +09:00
Sukchan Lee
c8bcfffe2e [#258] All GTP message is fixed not to crash 2019-11-15 23:56:55 +09:00
Aleksander Morgado
ad7fc34fa2 Build system updates (#307)
* build: skip default prefix as '/usr'

Distributions that ship this package will always provide the correct
system prefix, sysconfdir, libdir and such.

As a sane default, the package should use the meson default prefix set
to '/usr/local', which is also the standard in many other build
setups (e.g. autotools...).

* build: print actual full paths in meson output

Do not print the option values, print the full built paths.
2019-11-14 23:34:18 +09:00
Spencer Sevilla
b994a8efbf Adding support for static IP assignment in HSS (#306) 2019-11-14 14:30:19 +09:00
Sukchan Lee
cdbbbc500b [#258] Test done for receiving unknown TEID 2019-11-11 23:09:35 +09:00
Sukchan Lee
71f54a4500 [#305] name changes 2019-11-10 16:04:39 +09:00
Spencer Sevilla
8639c0f43c basic cli db tool (#305)
I ensured that this script is cross-compatible with the webui so users added this way can be modified by the web UI and vice-versa. This should speed up development/setup and support users who don't want to run Node or don't have a GUI.
2019-11-10 15:56:04 +09:00
Sukchan Lee
b65d76d0b2 [#258] Support for receiving unknown TEID 2019-11-07 23:07:29 +09:00
Sukchan Lee
439ba9c82c [#203] misc 2019-11-06 10:44:44 +09:00
Sukchan Lee
f2e34dd7ff [#203] Now UE context is always single 2019-11-06 10:43:21 +09:00
Sukchan Lee
3743ef98a2 [#203] Fix the bug for maintaining single mme_ue context 2019-11-06 10:22:34 +09:00
Sukchan Lee
4b8e2a5c97 [#203] MME also maintains one session context like SGW/PGW 2019-11-05 23:15:57 +09:00
Sukchan Lee
6f44ff5f4d [#203] Rollback based on the spec
If the new Create Session Request received by the SGW/PGW collides with
an existing active PDN connection context, the PGW/SGW should delete it.
2019-11-05 22:32:32 +09:00
Sukchan Lee
c131295dfb Fix the errata 2019-11-05 15:40:26 +09:00
Spencer Sevilla
ee80d1f996 Log and print UEs/eNBs/sessions stats (#303) 2019-11-05 15:23:33 +09:00
Sukchan Lee
da242e6734 [#301] Add Bearer Context IE's Cause in Modify-Bearer-Response 2019-11-04 23:41:59 +09:00
Sukchan Lee
4fcde77017 [#301] Oops! Fix the comment 2019-11-04 17:17:05 +09:00
Sukchan Lee
13ee6960aa [#301] Include Bearer Context IE in Modify-Bearer-Request 2019-11-04 17:13:09 +09:00
Sukchan Lee
14427de551 For meson, python3-wheel needs to be installed 2019-11-04 16:55:19 +09:00
Sukchan Lee
aa7d7f3b7d [#300] Insert PGW-C/U F-TEID on S11 Create Session Response 2019-11-02 16:27:57 +09:00
Sukchan Lee
d4f982427c Update Open5GS/OGSLib version to 1.1.0 2019-11-02 15:55:51 +09:00
Sukchan Lee
e55c7f9174 Upgrade freeDiameter version to 1.3.2 2019-11-02 15:52:48 +09:00
Sukchan Lee
f2831ff1fd freediameter name changes 2019-11-01 13:17:49 +09:00
Sukchan Lee
29e8a68dea remove SO_LINGER in usrsctp library 2019-10-31 18:13:49 +09:00
Sukchan Lee
46f9e1369b Merge branch 'master' of https://github.com/open5gs/open5gs 2019-10-31 14:19:21 +09:00
Sukchan Lee
9f1a5d19a4 Build with usrsctp source using MESON Subproject 2019-10-31 14:17:43 +09:00
Sukchan Lee
32c80cb031 [#299] Fix the WebUI installation script 2019-10-31 08:59:51 +09:00
Sukchan Lee
b47e0e510e change SCTP test port 2019-10-30 13:09:22 +09:00
Sukchan Lee
28f6d16ce2 refine usrsctp 2019-10-30 09:48:38 +09:00
Sukchan Lee
06f8e42173 Fix the document errata 2019-10-29 09:22:48 +00:00
Sukchan Lee
1e30669d6c Fix the document errata 2019-10-29 09:20:24 +00:00
Sukchan Lee
04f5c31287 The Child AVPs of Terminal-Information is Optional
(#297)
2019-10-29 15:36:38 +09:00
Sukchan Lee
dcef973a09 fix the meson warning 2019-10-28 08:19:41 +00:00
Sukchan Lee
290cdfac42 Fix the document errata 2019-10-27 19:57:18 +09:00
Sukchan Lee
87b6b66cfd fix the document errata 2019-10-27 19:14:12 +09:00
Sukchan Lee
79759f4599 Oops! mailing list name is not changed 2019-10-27 19:04:47 +09:00
5199 changed files with 617913 additions and 190891 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
# This directory is fetched during first build and is present in this directory
subprojects/freeDiameter
subprojects/usrsctp

View File

@@ -6,21 +6,14 @@ If you don't understand something about Open5GS, the [https://open5gs.org/open5g
Problem with Open5GS can be filed as [issues](https://github.com/open5gs/open5gs/issues) in this repository.
Discussions related to this project are happening on the [open5gs@lists.osmocom.org](mailto:open5gs@lists.osmocom.org) mailing list, please see <https://lists.osmocom.org/mailman/listinfo/open5gs> for subscription options and the list archive.
Discussions related to this project are happening on the [nextepc@lists.osmocom.org](mailto:nextepc@lists.osmocom.org) mailing list, please see <https://lists.osmocom.org/mailman/listinfo/nextepc> for subscription options and the list archive.
Voice and text chat available in Open5GS's [Discord](https://discordapp.com/) workspace. Use [this link](https://discord.gg/GreNkuc) to get started.
## Contributing
Open5GS is a pure/classic FOSS project, open to contributions from anyone.
[Pull requests](https://github.com/open5gs/open5gs/pulls) are always welcome, and I appreciates any help the community can give to help make Open5GS better.
Do you want to be a committer? Please [send me an email](mailto:acetcom@gmail.com). You will be added as a committer to this project. However, if someone consistently causes difficulties with these source repositories due to poor behavior or other serious problems then commit access may be revoked.
If you're contributing through a pull request to Open5GS project on GitHub, please read the [Contributor License Agreement](https://open5gs.org/open5gs/cla/) in advance.
## License
Open5GS source files are made available under the terms of the GNU Affero General Public License (GNU AGPLv3).
When you contribute code for Open5GS, the same license applies.

101
configs/00101.yaml.in Normal file
View File

@@ -0,0 +1,101 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
amf:
sbi:
- addr: 127.0.0.2
port: 7777
ngap:
- addr: 127.0.0.2
guami:
- plmn_id:
mcc: 001
mnc: 01
amf_id:
region: 1
set: 1
pointer: 1
tai:
- plmn_id:
mcc: 001
mnc: 01
tac: 81
plmn:
- plmn_id:
mcc: 001
mnc: 01
s_nssai:
- sst: 1
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
smf:
sbi:
- addr: 127.0.0.3
port: 7777
gtpc:
- addr: 127.0.0.3
- addr: ::1
pfcp:
- addr: 127.0.0.3
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
freeDiameter:
identity: pgw.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.open-ims.test
addr: 127.0.0.5
upf:
pfcp:
- addr: 127.0.0.4
gtpu:
- addr:
- 127.0.0.4
- ::1
pdn:
ausf:
sbi:
- addr: 127.0.0.5
port: 7777
udm:
sbi:
- addr: 127.0.0.6
port: 7777
udr:
sbi:
- addr: 127.0.0.7
port: 7777
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777

126
configs/23504.yaml.in Normal file
View File

@@ -0,0 +1,126 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
no_ipv6: true
mme:
freeDiameter:
identity: mme.localdomain
realm: localdomain
listen_on: 127.0.0.2
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: hss.localdomain
addr: 127.0.0.4
s1ap:
addr: 127.0.0.1
gtpc:
addr: 127.0.0.1
gummei:
plmn_id:
mcc: 235
mnc: 04
mme_gid: 32769
mme_code: 1
tai:
plmn_id:
mcc: 235
mnc: 04
tac: 1
security:
integrity_order : [ EIA2, EIA1, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
hss:
freeDiameter:
identity: hss.localdomain
realm: localdomain
listen_on: 127.0.0.4
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: mme.localdomain
addr: 127.0.0.2
sgw:
gtpc:
addr: 127.0.0.2
gtpu:
addr: 127.0.0.2
pgw:
freeDiameter:
identity: pgw.localdomain
realm: localdomain
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
connect:
- identity: pcrf.localdomain
addr: 127.0.0.5
gtpc:
- addr:
- 127.0.0.3
- ::1
- addr:
- 127.0.0.4
gtpu:
- addr: 127.0.0.3
- addr: ::1
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
pcrf:
freeDiameter:
identity: pcrf.localdomain
realm: localdomain
listen_on: 127.0.0.5
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pgw.localdomain
addr: 127.0.0.3

100
configs/5gc-sample.yaml.in Normal file
View File

@@ -0,0 +1,100 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
amf:
sbi:
- addr: 127.0.0.2
port: 7777
ngap:
- addr: 127.0.0.2
guami:
- plmn_id:
mcc: 901
mnc: 70
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 901
mnc: 70
tac: 1
plmn:
- plmn_id:
mcc: 901
mnc: 70
s_nssai:
- sst: 1
security:
integrity_order : [ NIA1, NIA2, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
smf:
sbi:
- addr: 127.0.0.3
port: 7777
gtpc:
- addr: 127.0.0.3
- addr: ::1
pfcp:
- addr: 127.0.0.3
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
freeDiameter:
identity: pgw.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.open-ims.test
addr: 127.0.0.5
upf:
pfcp:
- addr: 127.0.0.4
gtpu:
- addr:
- 127.0.0.4
- ::1
pdn:
ausf:
sbi:
- addr: 127.0.0.5
port: 7777
udm:
sbi:
- addr: 127.0.0.6
port: 7777
udr:
sbi:
- addr: 127.0.0.7
port: 7777
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777

96
configs/5gc.yaml.in Normal file
View File

@@ -0,0 +1,96 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
amf:
sbi:
- addr: 127.0.0.2
port: 7777
ngap:
guami:
- plmn_id:
mcc: 901
mnc: 70
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 901
mnc: 70
tac: 1
plmn:
- plmn_id:
mcc: 901
mnc: 70
s_nssai:
- sst: 1
security:
integrity_order : [ NIA1, NIA2, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
smf:
sbi:
- addr: 127.0.0.3
port: 7777
gtpc:
- addr: 127.0.0.3
- addr: ::1
pfcp:
- addr: 127.0.0.3
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
freeDiameter:
identity: pgw.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.open-ims.test
addr: 127.0.0.5
upf:
pfcp:
addr: 127.0.0.4
gtpu:
pdn:
ausf:
sbi:
- addr: 127.0.0.5
port: 7777
udm:
sbi:
- addr: 127.0.0.6
port: 7777
udr:
sbi:
- addr: 127.0.0.7
port: 7777
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777

View File

@@ -19,7 +19,6 @@ mme:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: hss.localdomain
addr: 127.0.0.4
@@ -94,7 +93,6 @@ hss:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: mme.localdomain
addr: 127.0.0.2
@@ -130,14 +128,16 @@ pgw:
gtpu:
- addr: 127.0.0.3
- addr: ::1
ue_pool:
- addr: 45.45.0.1/16
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
pcrf:
freeDiameter:
identity: pcrf.localdomain

136
configs/cups.yaml.in Normal file
View File

@@ -0,0 +1,136 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
mme:
freeDiameter:
identity: mme.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.2
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: hss.open-ims.test
addr: 127.0.0.4
s1ap:
addr: 127.0.0.1
gtpc:
addr: 127.0.0.1
gummei:
plmn_id:
mcc: 001
mnc: 01
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 001
mnc: 01
tac: 12345
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
hss:
freeDiameter:
identity: hss.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.4
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: mme.open-ims.test
addr: 127.0.0.2
sgw:
gtpc:
addr: 127.0.0.2
gtpu:
addr: 127.0.0.2
smf:
sbi:
- addr: 127.0.0.3
port: 7777
gtpc:
- addr: 127.0.0.3
- addr: ::1
pfcp:
- addr: 127.0.0.3
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
freeDiameter:
identity: pgw.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.open-ims.test
addr: 127.0.0.5
nrf:
sbi:
addr:
- 127.0.0.1
- ::1
port: 7777
upf:
pfcp:
- addr: 127.0.0.4
gtpu:
- addr:
- 127.0.0.4
- ::1
pdn:
pcrf:
freeDiameter:
identity: pcrf.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.5
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pgw.open-ims.test
addr: 127.0.0.3
- identity: pcscf.open-ims.test
addr: 127.0.0.1

121
configs/epc-custom.yaml.in Normal file
View File

@@ -0,0 +1,121 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
no_ipv6: true
mme:
freeDiameter:
identity: mme.localdomain
realm: localdomain
listen_on: 127.0.0.2
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: hss.localdomain
addr: 127.0.0.4
s1ap:
gtpc:
addr: 127.0.0.1
gummei:
plmn_id:
mcc: 901
mnc: 70
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 901
mnc: 70
tac: 7
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
hss:
freeDiameter:
identity: hss.localdomain
realm: localdomain
listen_on: 127.0.0.4
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: mme.localdomain
addr: 127.0.0.2
sgw:
gtpc:
addr: 127.0.0.2
gtpu:
pgw:
freeDiameter:
identity: pgw.localdomain
realm: localdomain
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.localdomain
addr: 127.0.0.5
gtpc:
addr:
- 127.0.0.3
- ::1
gtpu:
- addr: 127.0.0.3
- addr: ::1
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
pcrf:
freeDiameter:
identity: pcrf.localdomain
realm: localdomain
listen_on: 127.0.0.5
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pgw.localdomain
addr: 127.0.0.3

View File

@@ -0,0 +1,61 @@
db_uri: mongodb://localhost/open5gs
logger:
file: @localstatedir@/log/open5gs/open5gs.log
parameter:
no_ipv6: true
mme:
freeDiameter: @sysconfdir@/freeDiameter/mme.conf
s1ap:
gtpc:
sgsap:
gummei:
plmn_id:
mcc: 001
mnc: 01
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 001
mnc: 01
tac: 12345
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
hss:
freeDiameter: @sysconfdir@/freeDiameter/hss.conf
sgw:
gtpc:
addr: 127.0.0.2
gtpu:
pgw:
freeDiameter: @sysconfdir@/freeDiameter/pgw.conf
gtpc:
addr:
- 127.0.0.3
- ::1
gtpu:
- addr: 127.0.0.3
- addr: ::1
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
pcrf:
freeDiameter: @sysconfdir@/freeDiameter/pcrf.conf

123
configs/epc.yaml.in Normal file
View File

@@ -0,0 +1,123 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
no_ipv6: true
mme:
freeDiameter:
identity: mme.localdomain
realm: localdomain
listen_on: 127.0.0.2
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: hss.localdomain
addr: 127.0.0.4
s1ap:
addr: 127.0.0.1
gtpc:
addr: 127.0.0.1
gummei:
plmn_id:
mcc: 001
mnc: 01
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 001
mnc: 01
tac: 12345
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
hss:
freeDiameter:
identity: hss.localdomain
realm: localdomain
listen_on: 127.0.0.4
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: mme.localdomain
addr: 127.0.0.2
sgw:
gtpc:
addr: 127.0.0.2
gtpu:
addr: 127.0.0.2
pgw:
freeDiameter:
identity: pgw.localdomain
realm: localdomain
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.localdomain
addr: 127.0.0.5
gtpc:
addr:
- 127.0.0.3
- ::1
gtpu:
- addr: 127.0.0.3
- addr: ::1
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
pcrf:
freeDiameter:
identity: pcrf.localdomain
realm: localdomain
listen_on: 127.0.0.5
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pgw.localdomain
addr: 127.0.0.3

View File

@@ -229,7 +229,6 @@ LoadExtension = "@libdir@/freeDiameter/dict_nasreq.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_dcca.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_dcca_3gpp.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_s6a.fdx";
##############################################################

View File

@@ -229,7 +229,6 @@ LoadExtension = "@libdir@/freeDiameter/dict_nasreq.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_nas_mipv6.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_dcca.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_dcca_3gpp.fdx";
LoadExtension = "@libdir@/freeDiameter/dict_s6a.fdx";
##############################################################

View File

@@ -1,537 +0,0 @@
db_uri: mongodb://localhost/open5gs
logger:
file: @localstatedir@/log/open5gs/open5gs.log
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,s1ap,nas,fd,gtp,mme,emm,esm,sgw,pgw,hss,pcrf,event,tlv,mem,sock
#
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
#
parameter:
no_ipv6: true
#
# sctp:
#
# o heartbit_interval : 5000 (5secs)
# o rto_initial : 3000 (3secs)
# o rto_min : 1000 (1sec)
# o rto_max : 5000 (5secs)
# o max_num_of_ostreams : 30
# o max_num_of_istreams : 65535
# o max_attempts : 4
# o max_initial_timeout : 8000(8secs)
# o usrsctp_udp_port : 9899
sctp:
#
# max:
#
# o Maximum Number of SGW per MME
# sgw: 32
# o Maximum Number of PGW per MME
# pgw: 32
# o Maximum Number of VLR per MME
# vlr: 32
# o Maximum Number of eNodeB per MME
# enb: 32
# o Maximum Number of UE per eNodeB
# ue: 128
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in SGW
# - SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
pool:
mme:
freeDiameter: @sysconfdir@/freeDiameter/mme.conf
#
# <S1AP Server>>
#
# o S1AP Server(all address avaiable)
# s1ap:
#
# o S1AP Server(0.0.0.0:36412)
# s1ap:
# addr: 0.0.0.0
#
# o S1AP Server(127.0.0.1:36412, [::1]:36412)
# s1ap:
# - addr: 127.0.0.1
# - addr: ::1
# o S1AP Server(different port)
# s1ap:
# - addr: 127.0.0.1
# port: 36413
#
# o S1AP Server(address avaiable in `eth0` interface)
# s1ap:
# dev: eth0
#
s1ap:
#
# <GTP-C Server>>
#
# o GTP-C Server(all address avaiable)
# gtpc:
#
# o GTP-C Server(127.0.0.1:2123, [::1]:2123)
# gtpc:
# - addr: 127.0.0.1
# - addr: ::1
#
gtpc:
#
# <sgsap>
#
# o Single MSC/VLR(127.0.0.2)
# sgsap:
# addr: 127.0.0.2
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4130
# lai:
# plmn_id:
# mcc: 001
# mnc: 01
# lac: 43690
# map:
# tai:
# plmn_id:
# mcc: 002
# mnc: 02
# tac: 4132
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43692
#
# o Multiple MSC/VLR
# sgsap:
# - addr: 127.0.0.2
# port: 29119
# 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
# - addr
# - 127.0.0.3
# - fe80::2%@loopback_devname@
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4132
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43692
# - name: msc.open5gs.org
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4133
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43693
#
sgsap:
#
# <GUMMEI>
#
# o Multiple 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
#
gummei:
plmn_id:
mcc: 001
mnc: 01
mme_gid: 2
mme_code: 1
#
# <TAI>
#
# o Multiple TAI
# tai:
# - plmn_id:
# mcc: 001
# mnc: 01
# tac: [1, 2, 3]
# tai:
# - plmn_id:
# mcc: 002
# mnc: 02
# tac: 4
# - plmn_id:
# mcc: 003
# mnc: 03
# tac: 5
# tai:
# - plmn_id:
# mcc: 004
# mnc: 04
# tac: [6, 7]
# - plmn_id:
# mcc: 005
# mnc: 05
# tac: 8
# - plmn_id:
# mcc: 006
# mnc: 06
# tac: [9, 10]
#
tai:
plmn_id:
mcc: 001
mnc: 01
tac: 12345
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
#
# <Network Name>
# network_name:
# full: Open5GS
# short: Next
#
network_name:
full: Open5GS
hss:
freeDiameter: @sysconfdir@/freeDiameter/hss.conf
sgw:
#
# ------------------------ MME --------------------------
#
# o Specify SGW addresses the GTP-C must connect to
#
# o One SGW is defined. If prefer_ipv4 is not true, [fe80::2%@loopback_devname@] is selected.
# gtpc:
# addr:
# - 127.0.0.2
# - fe80::2%@loopback_devname@
#
# o Two SGW are defined. MME selects SGW with round-robin manner per UE
# gtpc:
# - addr: 127.0.0.2
# - addr: fe80::2%@loopback_devname@
#
# o Three SGW are defined. MME selects SGW with round-robin manner per UE
# gtpc:
# - addr
# - 127.0.0.2
# - fe80::2%@loopback_devname@
# - addr
# - 127.0.0.12
# - fe80::12%@loopback_devname@
# - name: sgw3.open5gs.org
#
# ------------------------ SGW --------------------------
#
# o GTP-C Server(127.0.0.2:2123, [fe80::2%@loopback_devname@]:2123)
# gtpc:
# addr:
# - 127.0.0.2
# - fe80::2%@loopback_devname@
#
# o On SGW, Same Configuration(127.0.0.2:2123, [fe80::2%@loopback_devname@]:2123) as below.
# gtpc:
# - addr: 127.0.0.2
# - addr: fe80::2%@loopback_devname@
#
gtpc:
addr: 127.0.0.2
#
# <SGW Selection Mode>
#
# o Round-Robin
# (If `selection_mode` is omitted, the default mode is Round-Robin)
#
# selection_mode: rr
# gtpc:
# addr: 127.0.0.2
# addr: 127.0.2.2
# addr: 127.0.4.2
#
# o SGW selection by eNodeB TAC
#
# selection_mode: tac
# gtpc:
# - addr: 127.0.0.2
# tac: 26000
# - addr: 127.0.2.2
# tac: [25000, 27000, 28000]
#
#
# <GTP-U Server>
#
# o GTP-U Server(all address avaiable)
# gtpu:
#
gtpu:
pgw:
freeDiameter: @sysconfdir@/freeDiameter/pgw.conf
#
# ------------------------ MME --------------------------
#
# o By default, the PGW uses the first PGW node.
# - To use a different APN for each PGW, specify gtpc.apn as the APN name.
# - If the HSS uses WebUI to set the PGW IP for eacho UE,
# you can use a specific PGW node for each UE.
#
# o Two PGW are defined. 127.0.0.3:2123 is used.
# [fe80::3%@loopback_devname@]:2123 is ignored.
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%@loopback_devname@
#
# o One PGW is defined. if prefer_ipv4 is not true,
# [fe80::3%@loopback_devname@] is selected.
# gtpc:
# - addr:
# - 127.0.0.3
# - fe80::3%@loopback_devname@
#
# o Two PGW are defined with a different APN.
# - Note that if PGW IP for UE is configured in HSS,
# the following configurion for this UE is ignored.
# gtpc:
# - addr: 127.0.0.3
# apn: internet
# - addr: 127.0.0.5
# apn: volte
#
# o If APN is omitted, the default APN uses the first PGW node.
# gtpc:
# - addr: 127.0.0.3
# - addr: 127.0.0.5
# apn: volte
# ------------------------ PGW --------------------------
#
# o GTP-C Server(127.0.0.3:2123, [fe80::3%@loopback_devname@]:2123)
# gtpc:
# addr:
# - 127.0.0.3
# - fe80::3%@loopback_devname@
#
# o On PGW, Same configuration(127.0.0.3:2123, [fe80::3%@loopback_devname@]:2123).
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%@loopback_devname@
#
gtpc:
addr:
- 127.0.0.3
- ::1
#
# <GTP-U Server>>
#
# o GTP-U Server(127.0.0.3:2152, [::1]:2152)
# gtpu:
# - addr: 127.0.0.3
# - addr: ::1
#
# o Same configuration(127.0.0.3:2152, [::1]:2152) as below.
# gtpu:
# name: localhost
#
gtpu:
- addr: 127.0.0.3
- addr: ::1
#
# <UE Pool>
#
# o IPv4 Pool
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
#
# ue_pool:
# addr: 45.45.0.1/16
#
# o IPv4/IPv6 Pool
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
#
#
# o Specific APN(e.g 'volte') uses 45.46.0.1/16, cafe:2::1/64
# All other APNs use 45.45.0.1/16, cafe:1::1/64
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
# $ sudo ip addr add 45.46.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
# $ sudo ip addr add cafe:2::1/64 dev ogstun
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
# - addr: 45.46.0.1/16
# apn: volte
# - addr: cafe:2::1/64
# apn: volte
#
# o Multiple Devices (default: ogstun)
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun2
# $ sudo ip addr add 45.46.0.1/16 dev ogstun3
# $ sudo ip addr add cafe:2::1/64 dev ogstun3
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
# dev: ogstun2
# - addr: 45.46.0.1/16
# apn: volte
# dev: ogstun3
# - addr: cafe:2::1/64
# apn: volte
# dev: ogstun3
#
ue_pool:
- addr: 45.45.0.1/16
- addr: cafe::1/64
#
# <Domain Name Server>
#
# o Primary/Secondary can be configured. Others are ignored.
#
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
#
# <P-CSCF>
#
# o Proxy Call Session Control Function
#
# p-cscf:
# - 127.0.0.1
# - ::1
#
pcrf:
freeDiameter: @sysconfdir@/freeDiameter/pcrf.conf

View File

@@ -23,7 +23,7 @@ conf_data.set('libdir', libdir)
conf_data.set('localstatedir', localstatedir)
freediameter_extensions_builddir = join_paths(
meson.build_root(), 'subprojects', 'freediameter', 'extensions')
meson.build_root(), 'subprojects', 'freeDiameter', 'extensions')
conf_data.set('freediameter_extensions_builddir',
freediameter_extensions_builddir)
@@ -34,12 +34,19 @@ else
endif
example_conf = '''
simple.yaml
installed.yaml
5gc.yaml
5gc-sample.yaml
00101.yaml
23504.yaml
minimal.yaml
epc.yaml
epc-fdconf.yaml
epc-custom.yaml
mnc3.yaml
csfb.yaml
volte.yaml
srslte.yaml
cups.yaml
'''.split()
foreach file : example_conf

103
configs/minimal.yaml.in Normal file
View File

@@ -0,0 +1,103 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
amf:
sbi:
- addr: 127.0.0.2
port: 7777
ngap:
- addr: 127.0.0.2
guami:
- plmn_id:
mcc: 208
mnc: 93
amf_id:
region: 202
set: 1016
tai:
- plmn_id:
mcc: 208
mnc: 93
tac: 1
plmn:
- plmn_id:
mcc: 208
mnc: 93
s_nssai:
- sst: 1
sd: 010203
- sst: 1
sd: 112233
security:
integrity_order : [ NIA2, NIA1 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
smf:
sbi:
- addr: 127.0.0.3
port: 7777
gtpc:
- addr: 127.0.0.3
- addr: ::1
pfcp:
- addr: 127.0.0.3
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
freeDiameter:
identity: pgw.open-ims.test
realm: open-ims.test
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.open-ims.test
addr: 127.0.0.5
upf:
pfcp:
- addr: 127.0.0.4
gtpu:
- addr:
- 127.0.0.4
- ::1
pdn:
ausf:
sbi:
- addr: 127.0.0.5
port: 7777
udm:
sbi:
- addr: 127.0.0.6
port: 7777
udr:
sbi:
- addr: 127.0.0.7
port: 7777
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777

View File

@@ -19,7 +19,6 @@ mme:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: hss.localdomain
addr: 127.0.0.4
@@ -60,7 +59,6 @@ hss:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: mme.localdomain
addr: 127.0.0.2
@@ -100,14 +98,16 @@ pgw:
gtpu:
- addr: 127.0.0.3
- addr: ::1
ue_pool:
- addr: 45.45.0.1/16
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
pcrf:
freeDiameter:
identity: pcrf.localdomain

View File

@@ -1,8 +1,8 @@
# truncate rails logs every day at midnight, keep 14 previous logs, compress previous logs
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
@localstatedir@/log/open5gs/pcrf.log 644 14 * $D0 GZ @LOCALSTATE_DIR@/run/open5gs-pcrfd/pid`
@localstatedir@/log/open5gs/pgw.log 644 14 * $D0 GZ @LOCALSTATE_DIR@/run/open5gs-pgwd/pid`
@localstatedir@/log/open5gs/sgw.log 644 14 * $D0 GZ @LOCALSTATE_DIR@/run/open5gs-sgwd/pid`
@localstatedir@/log/open5gs/hss.log 644 14 * $D0 GZ @LOCALSTATE_DIR@/run/open5gs-hssd/pid`
@localstatedir@/log/open5gs/mme.log 644 14 * $D0 GZ @LOCALSTATE_DIR@/run/open5gs-mmed/pid`
@localstatedir@/log/open5gs/pcrf.log 644 14 * $D0 GZ @localstatedir@/run/open5gs-pcrfd/pid`
@localstatedir@/log/open5gs/pgw.log 644 14 * $D0 GZ @localstatedir@/run/open5gs-pgwd/pid`
@localstatedir@/log/open5gs/sgw.log 644 14 * $D0 GZ @localstatedir@/run/open5gs-sgwd/pid`
@localstatedir@/log/open5gs/hss.log 644 14 * $D0 GZ @localstatedir@/run/open5gs-hssd/pid`
@localstatedir@/log/open5gs/mme.log 644 14 * $D0 GZ @localstatedir@/run/open5gs-mmed/pid`

303
configs/open5gs/amf.yaml.in Normal file
View File

@@ -0,0 +1,303 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,pfcp,fd,gtp,amf,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/amf.log
#
# amf:
#
# <SBI Server>
#
# o SBI Server(http://<all address available>:80)
# sbi:
#
# o SBI Server(http://<any address>:80)
# sbi:
# - addr:
# - 0.0.0.0
# - ::0
# port: 7777
#
# o SBI Server(https://<all address avaiable>:443)
# sbi:
# tls:
# key: amf.key
# pem: amf.pem
#
# o SBI Server(https://127.0.0.2:443, http://[::1]:80)
# sbi:
# - addr: 127.0.0.2
# tls:
# key: amf.key
# pem: amf.pem
# - addr: ::1
#
# o SBI Server(http://amf.open5gs.org:80)
# sbi:
# name: amf.open5gs.org
#
# o SBI Server(http://127.0.0.2:7777)
# sbi:
# - addr: 127.0.0.2
# port: 7777
#
# o SBI Server(http://<eth0 IP address>:80)
# sbi:
# dev: eth0
#
# <NGAP Server>>
#
# o NGAP Server(all address avaiable)
# ngap:
#
# o NGAP Server(0.0.0.0:38412)
# ngap:
# addr: 0.0.0.0
#
# o NGAP Server(127.0.0.1:38412, [::1]:38412)
# ngap:
# - addr: 127.0.0.1
# - addr: ::1
#
# o NGAP Server(different port)
# ngap:
# - addr: 127.0.0.1
# port: 38413
#
# o NGAP Server(address avaiable in `eth0` interface)
# ngap:
# dev: eth0
#
# <GUAMI>
#
# o Multiple GUAMI
# guami:
# - plmn_id:
# mcc: 901
# mnc: 70
# amf_id:
# region: 2
# set: 1
# pointer: 4
# - plmn_id:
# mcc: 001
# mnc: 01
# amf_id:
# region: 5
# set: 2
#
# <TAI>
#
# o Multiple TAI
# tai:
# - plmn_id:
# mcc: 001
# mnc: 01
# tac: [1, 2, 3]
# tai:
# - plmn_id:
# mcc: 002
# mnc: 02
# tac: 4
# - plmn_id:
# mcc: 003
# mnc: 03
# tac: 5
# tai:
# - plmn_id:
# mcc: 004
# mnc: 04
# tac: [6, 7]
# - plmn_id:
# mcc: 005
# mnc: 05
# tac: 8
# - plmn_id:
# mcc: 006
# mnc: 06
# tac: [9, 10]
#
# <PLMN Support>
#
# o Multiple PLMN Support
# plmn:
# - plmn_id:
# mcc: 901
# mnc: 70
# s_nssai:
# - sst: 1
# - sd: 010000
# - plmn_id:
# mcc: 901
# mnc: 70
# s_nssai:
# - sst: 1
#
# <Network Name>
#
# network_name:
# full: Open5GS
# short: Next
#
# <AMF Name>
#
# amf_name: amf1.open5gs.amf.5gc.mnc70.mcc901.3gppnetwork.org
#
amf:
sbi:
- addr: 127.0.0.2
port: 7777
ngap:
- addr: 127.0.0.2
guami:
- plmn_id:
mcc: 901
mnc: 70
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 901
mnc: 70
tac: 1
plmn:
- plmn_id:
mcc: 901
mnc: 70
s_nssai:
- sst: 1
security:
integrity_order : [ NIA1, NIA2, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
#
# nrf:
#
# <SBI Client>>
#
# o SBI Client(http://127.0.0.1:7777)
# sbi:
# addr: 127.0.0.1
# port: 7777
#
# o SBI Client(https://127.0.0.1:443, http://nrf.open5gs.org:80)
# sbi:
# - addr: 127.0.0.1
# tls:
# key: nrf.key
# pem: nrf.pem
# - name: nrf.open5gs.org
#
# o SBI Client(http://[fe80::1%@loopback_devname@]:80)
# If prefer_ipv4 is true, http://127.0.0.1:80 is selected.
#
# sbi:
# addr:
# - 127.0.0.1
# - fe80::1%@loopback_devname@
#
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of gNB per AMF
# gnb: 32
# o Maximum Number of UE per gNB
# ue: 128
# o Maximum Number of NF Instance
# nf: 512
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:
#
# time:
#
# o NF Instance Heartbeat (Default : 10 seconds)
#
# o NF Instance Heartbeat (Disabled)
# nf_instance:
# heartbeat: 0
#
# o NF Instance Heartbeat (10 seconds)
# nf_instance:
# heartbeat: 10
time:

View File

@@ -0,0 +1,179 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,pfcp,fd,gtp,ausf,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/ausf.log
#
# ausf:
#
# <SBI Server>
#
# o SBI Server(http://<all address available>:80)
# sbi:
#
# o SBI Server(http://<any address>:80)
# sbi:
# - addr:
# - 0.0.0.0
# - ::0
# port: 7777
#
# o SBI Server(https://<all address avaiable>:443)
# sbi:
# tls:
# key: ausf.key
# pem: ausf.pem
#
# o SBI Server(https://127.0.0.5:443, http://[::1]:80)
# sbi:
# - addr: 127.0.0.5
# tls:
# key: ausf.key
# pem: ausf.pem
# - addr: ::1
#
# o SBI Server(http://ausf.open5gs.org:80)
# sbi:
# name: ausf.open5gs.org
#
# o SBI Server(http://127.0.0.5:7777)
# sbi:
# - addr: 127.0.0.5
# port: 7777
#
# o SBI Server(http://<eth0 IP address>:80)
# sbi:
# dev: eth0
#
ausf:
sbi:
- addr: 127.0.0.5
port: 7777
#
# nrf:
#
# <SBI Client>>
#
# o SBI Client(http://127.0.0.1:7777)
# sbi:
# addr: 127.0.0.1
# port: 7777
#
# o SBI Client(https://127.0.0.1:443, http://nrf.open5gs.org:80)
# sbi:
# - addr: 127.0.0.1
# tls:
# key: nrf.key
# pem: nrf.pem
# - name: nrf.open5gs.org
#
# o SBI Client(http://[fe80::1%@loopback_devname@]:80)
# If prefer_ipv4 is true, http://127.0.0.1:80 is selected.
#
# sbi:
# addr:
# - 127.0.0.1
# - fe80::1%@loopback_devname@
#
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of gNB per AMF
# gnb: 32
# o Maximum Number of UE per gNB
# ue: 128
# o Maximum Number of NF Instance
# nf: 512
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:
#
# time:
#
# o NF Instance Heartbeat (Default : 10 seconds)
#
# o NF Instance Heartbeat (Disabled)
# nf_instance:
# heartbeat: 0
#
# o NF Instance Heartbeat (10 seconds)
# nf_instance:
# heartbeat: 10
time:

View File

@@ -1,9 +1,95 @@
db_uri: mongodb://localhost/open5gs
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,fd,hss,event,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/hss.log
parameter:
hss:
freeDiameter: @sysconfdir@/freeDiameter/hss.conf
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of SGW per MME
# sgw: 32
# o Maximum Number of PGW per MME
# pgw: 32
# o Maximum Number of VLR per MME
# vlr: 32
# o Maximum Number of eNodeB per MME
# enb: 32
# o Maximum Number of UE per eNodeB
# ue: 128
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:

View File

@@ -25,6 +25,14 @@ open5gs_conf = '''
sgw.yaml
pgw.yaml
pcrf.yaml
nrf.yaml
udr.yaml
udm.yaml
ausf.yaml
upf.yaml
smf.yaml
amf.yaml
'''.split()
foreach file : open5gs_conf

View File

@@ -1,8 +1,206 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,s1ap,nas,fd,gtp,mme,emm,esm,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/mme.log
parameter:
#
# mme:
#
# <S1AP Server>>
#
# o S1AP Server(all address avaiable)
# s1ap:
#
# o S1AP Server(0.0.0.0:36412)
# s1ap:
# addr: 0.0.0.0
#
# o S1AP Server(127.0.0.1:36412, [::1]:36412)
# s1ap:
# - addr: 127.0.0.1
# - addr: ::1
#
# o S1AP Server(different port)
# s1ap:
# - addr: 127.0.0.1
# port: 36413
#
# o S1AP Server(address avaiable in `eth0` interface)
# s1ap:
# dev: eth0
#
# <GTP-C Server>>
#
# o GTP-C Server(all address avaiable)
# gtpc:
#
# o GTP-C Server(127.0.0.1:2123, [::1]:2123)
# gtpc:
# - addr: 127.0.0.1
# - addr: ::1
#
# <SGsAP>
#
# o Single MSC/VLR(127.0.0.2)
# sgsap:
# addr: 127.0.0.2
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4130
# lai:
# plmn_id:
# mcc: 001
# mnc: 01
# lac: 43690
# map:
# tai:
# plmn_id:
# mcc: 002
# mnc: 02
# tac: 4132
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43692
#
# o Multiple MSC/VLR
# sgsap:
# - addr: 127.0.0.2
# port: 29119
# 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
# - addr
# - 127.0.0.3
# - fe80::2%@loopback_devname@
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4132
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43692
# - name: msc.open5gs.org
# map:
# tai:
# plmn_id:
# mcc: 001
# mnc: 01
# tac: 4133
# lai:
# plmn_id:
# mcc: 002
# mnc: 02
# lac: 43693
#
#
# <GUMMEI>
#
# o Multiple 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
#
#
# <TAI>
#
# o Multiple TAI
# tai:
# - plmn_id:
# mcc: 001
# mnc: 01
# tac: [1, 2, 3]
# tai:
# - plmn_id:
# mcc: 002
# mnc: 02
# tac: 4
# - plmn_id:
# mcc: 003
# mnc: 03
# tac: 5
# tai:
# - plmn_id:
# mcc: 004
# mnc: 04
# tac: [6, 7]
# - plmn_id:
# mcc: 005
# mnc: 05
# tac: 8
# - plmn_id:
# mcc: 006
# mnc: 06
# tac: [9, 10]
#
#
# <Network Name>
#
# network_name:
# full: Open5GS
# short: Next
#
# <MME Name>
#
# mme_name: open5gs-mme0
#
mme:
freeDiameter: @sysconfdir@/freeDiameter/mme.conf
s1ap:
@@ -23,13 +221,190 @@ mme:
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
mme_name: open5gs-mme0
#
# sgw:
#
# <GTP-C Client>
#
# o Specify SGW addresses the GTP-C must connect to
#
# o One SGW is defined.
# If prefer_ipv4 is not true, [fe80::2%@loopback_devname@] is selected.
# gtpc:
# addr:
# - 127.0.0.2
# - fe80::2%@loopback_devname@
#
# o Two SGW are defined. MME selects SGW with round-robin manner per UE
# gtpc:
# - addr: 127.0.0.2
# - addr: fe80::2%@loopback_devname@
#
# o Three SGW are defined. MME selects SGW with round-robin manner per UE
# gtpc:
# - addr
# - 127.0.0.2
# - fe80::2%@loopback_devname@
# - addr
# - 127.0.0.12
# - fe80::12%@loopback_devname@
# - name: sgw3.open5gs.org
#
# <SGW Selection Mode>
#
# o Round-Robin
#
# gtpc:
# addr: 127.0.0.2
# addr: 127.0.2.2
# addr: 127.0.4.2
#
# o SGW selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
#
# gtpc:
# - addr: 127.0.0.2
# tac: 26000
# - addr: 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:
# - addr: 127.0.0.2
# e_cell_id: abcde01
# - addr: 127.0.2.2
# e_cell_id: [12345, a9413, 98765]
#
sgw:
gtpc:
addr: 127.0.0.2
#
# pgw:
#
# <GTP-C Client>
#
# o By default, the PGW uses the first PGW node.
# - To use a different APN for each PGW, specify gtpc.apn as the APN name.
# - If the HSS uses WebUI to set the PGW IP for eacho UE,
# you can use a specific PGW node for each UE.
#
# o Two PGW are defined. 127.0.0.3:2123 is used.
# [fe80::3%@loopback_devname@]:2123 is ignored.
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%@loopback_devname@
#
# o One PGW is defined. if prefer_ipv4 is not true,
# [fe80::3%@loopback_devname@] is selected.
# gtpc:
# - addr:
# - 127.0.0.3
# - fe80::3%@loopback_devname@
#
# o Two PGW are defined with a different APN.
# - Note that if PGW IP for UE is configured in HSS,
# the following configurion for this UE is ignored.
# gtpc:
# - addr: 127.0.0.3
# apn: internet
# - addr: 127.0.0.5
# apn: volte
#
# o If APN is omitted, the default APN uses the first PGW node.
# gtpc:
# - addr: 127.0.0.3
# - addr: 127.0.0.5
# apn: volte
pgw:
gtpc:
addr:
- 127.0.0.3
- ::1
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of SGW per MME
# sgw: 32
# o Maximum Number of PGW per MME
# pgw: 32
# o Maximum Number of VLR per MME
# vlr: 32
# o Maximum Number of eNodeB per MME
# enb: 32
# o Maximum Number of UE per eNodeB
# ue: 128
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:
#
# sctp:
#
# o heartbit_interval : 5000 (5secs)
# o rto_initial : 3000 (3secs)
# o rto_min : 1000 (1sec)
# o rto_max : 5000 (5secs)
# o max_num_of_ostreams : 30
# o max_num_of_istreams : 65535
# o max_attempts : 4
# o max_initial_timeout : 8000(8secs)
# o usrsctp_udp_port : 9899
#
sctp:

158
configs/open5gs/nrf.yaml.in Normal file
View File

@@ -0,0 +1,158 @@
db_uri: mongodb://localhost/open5gs
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,fd,nrf,event,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/nrf.log
#
# nrf:
#
# <SBI Server>
#
# o SBI Server(http://<all address available>:80)
# sbi:
#
# o SBI Server(http://<any address>:7777)
# sbi:
# - addr:
# - 0.0.0.0
# - ::0
# port: 7777
#
# o SBI Server(https://<all address avaiable>:443)
# sbi:
# tls:
# key: nrf.key
# pem: nrf.pem
#
# o SBI Server(https://127.0.0.1:443, http://[::1]:80)
# sbi:
# - addr: 127.0.0.1
# tls:
# key: nrf.key
# pem: nrf.pem
# - addr: ::1
#
# o SBI Server(http://nrf.open5gs.org:80)
# sbi:
# name: nrf.open5gs.org
#
# o SBI Server(http://127.0.0.1:7777)
# sbi:
# - addr: 127.0.0.1
# port: 7777
#
# o SBI Server(http://<eth0 IP address>:80)
# sbi:
# dev: eth0
#
nrf:
sbi:
addr:
- 127.0.0.1
- ::1
port: 7777
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of gNB per MME
# gnb: 32
# o Maximum Number of UE per gNB
# ue: 128
# o Maximum Number of NF Instance
# nf: 512
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:
#
# time:
#
# o NF Instance Validity (Default : 3600 seconds = 1 hour)
#
# o NF Instance Validity (10 seconds)
# nf_instance:
# validity: 10
#
# o Subscription Validity (Default : 86400 seconds = 1 day)
#
# o Subscription Validity (Disabled)
# subscription:
# validity: 0
#
# o Subscription Validity (3600 seconds = 1 hour)
# subscription:
# validity: 3600
#
time:

View File

@@ -1,9 +1,94 @@
db_uri: mongodb://localhost/open5gs
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,fd,pcrf,event,mem,sock
logger:
file: @localstatedir@/log/open5gs/pcrf.log
parameter:
pcrf:
freeDiameter: @sysconfdir@/freeDiameter/pcrf.conf
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of SGW per MME
# sgw: 32
# o Maximum Number of PGW per MME
# pgw: 32
# o Maximum Number of VLR per MME
# vlr: 32
# o Maximum Number of eNodeB per MME
# enb: 32
# o Maximum Number of UE per eNodeB
# ue: 128
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:

View File

@@ -1,8 +1,152 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,fd,gtp,pgw,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/pgw.log
parameter:
#
# pgw:
#
# <GTP-C Server>
#
# o GTP-C Server(127.0.0.3:2123, [fe80::3%@loopback_devname@]:2123)
# gtpc:
# addr:
# - 127.0.0.3
# - fe80::3%@loopback_devname@
#
# o On PGW, Same configuration
# (127.0.0.3:2123, [fe80::3%@loopback_devname@]:2123).
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%@loopback_devname@
#
#
# <GTP-U Server>>
#
# o GTP-U Server(127.0.0.3:2152, [::1]:2152)
# gtpu:
# - addr: 127.0.0.3
# - addr: ::1
#
# o Same configuration(127.0.0.3:2152, [::1]:2152) as below.
# gtpu:
# name: localhost
#
# <PDN Configuration with UE Pool>
#
# o IPv4 Pool
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
#
# pdn:
# addr: 10.45.0.1/16
#
# o IPv4/IPv6 Pool
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
#
# pdn:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
#
#
# o Specific APN(e.g 'volte') uses 10.46.0.1/16, cafe:2::1/64
# All other APNs use 10.45.0.1/16, cafe:1::1/64
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add 10.46.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
# $ sudo ip addr add cafe:2::1/64 dev ogstun
#
# pdn:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
# - addr: 10.46.0.1/16
# apn: volte
# - addr: cafe:2::1/64
# apn: volte
#
# o Multiple Devices (default: ogstun)
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun2
# $ sudo ip addr add 10.46.0.1/16 dev ogstun3
# $ sudo ip addr add cafe:2::1/64 dev ogstun3
#
# pdn:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
# dev: ogstun2
# - addr: 10.46.0.1/16
# apn: volte
# dev: ogstun3
# - addr: cafe:2::1/64
# apn: volte
# dev: ogstun3
#
# o Pool Range Sample
# pdn:
# - addr: 10.45.0.1/24
# range: 10.45.0.100-10.45.0.200
#
# pdn:
# - addr: 10.45.0.1/24
# range:
# - 10.45.0.5-10.45.0.50
# - 10.45.0.100-
#
# pdn:
# - addr: 10.45.0.1/24
# range:
# - -10.45.0.200
# - 10.45.0.210-10.45.0.220
#
# pdn:
# - addr: 10.45.0.1/16
# range:
# - 10.45.0.100-10.45.0.200
# - 10.45.1.100-10.45.1.200
# - addr: cafe::1/64
# range:
# - cafe::a0-cafe:b0
# - cafe::c0-cafe:d0
#
# <Domain Name Server>
#
# o Primary/Secondary can be configured. Others are ignored.
#
# <MTU Size>
#
# o Provisioning a limit on the size of the packets sent by the MS
# to avoid packet fragmentation in the backbone network
# between the MS and the GGSN/PGW and/or across the (S)Gi reference point)
# when some of the backbone links does not support
# packets larger then 1500 octets
#
# <P-CSCF>
#
# o Proxy Call Session Control Function
#
# p-cscf:
# - 127.0.0.1
# - ::1
#
pgw:
freeDiameter: @sysconfdir@/freeDiameter/pgw.conf
gtpc:
@@ -11,11 +155,80 @@ pgw:
gtpu:
- addr: 127.0.0.3
- addr: ::1
ue_pool:
- addr: 45.45.0.1/16
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of SGW per MME
# sgw: 32
# o Maximum Number of PGW per MME
# pgw: 32
# o Maximum Number of VLR per MME
# vlr: 32
# o Maximum Number of eNodeB per MME
# enb: 32
# o Maximum Number of UE per eNodeB
# ue: 128
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:

View File

@@ -1,10 +1,131 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,gtp,sgw,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/sgw.log
parameter:
no_ipv6: true
#
# sgw:
#
# <GTP-C Server>
#
# o GTP-C Server(127.0.0.2:2123, [fe80::2%@loopback_devname@]:2123)
# gtpc:
# addr:
# - 127.0.0.2
# - fe80::2%@loopback_devname@
#
# o On SGW, Same Configuration(127.0.0.2:2123,
# [fe80::2%@loopback_devname@]:2123) as below.
# gtpc:
# - addr: 127.0.0.2
# - addr: fe80::2%@loopback_devname@
#
# <GTP-U Server>
#
# o GTP-U Server(all address avaiable)
# gtpu:
#
# o Provide custom SGW GTP-U address to be advertised inside S1AP messages
# gtpu:
# addr: 10.4.128.21
# advertise_addr: 172.24.15.30
#
# gtpu:
# addr: 10.4.128.21
# advertise_name: sgw1.epc.mnc001.mcc001.3gppnetwork.org
#
# gtpu:
# dev: ens3
# advertise_name: sgw1.epc.mnc001.mcc001.3gppnetwork.org
#
sgw:
gtpc:
addr: 127.0.0.2
gtpu:
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
no_ipv6: true
#
# max:
#
# o Maximum Number of SGW per MME
# sgw: 32
# o Maximum Number of PGW per MME
# pgw: 32
# o Maximum Number of VLR per MME
# vlr: 32
# o Maximum Number of eNodeB per MME
# enb: 32
# o Maximum Number of UE per eNodeB
# ue: 128
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:

363
configs/open5gs/smf.yaml.in Normal file
View File

@@ -0,0 +1,363 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,pfcp,fd,gtp,smf,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/smf.log
#
# smf:
#
# <SBI Server>
#
# o SBI Server(http://<all address available>:80)
# sbi:
#
# o SBI Server(http://<any address>:80)
# sbi:
# - addr:
# - 0.0.0.0
# - ::0
# port: 7777
#
# o SBI Server(https://<all address avaiable>:443)
# sbi:
# tls:
# key: smf.key
# pem: smf.pem
#
# o SBI Server(https://127.0.0.3:443, http://[::1]:80)
# sbi:
# - addr: 127.0.0.3
# tls:
# key: smf.key
# pem: smf.pem
# - addr: ::1
#
# o SBI Server(http://smf.open5gs.org:80)
# sbi:
# name: smf.open5gs.org
#
# o SBI Server(http://127.0.0.3:7777)
# sbi:
# - addr: 127.0.0.3
# port: 7777
#
# o SBI Server(http://<eth0 IP address>:80)
# sbi:
# dev: eth0
#
# <PFCP Server>
#
# o PFCP Server(127.0.0.3:8805, ::1:8805)
# pfcp:
# - addr: 127.0.0.3
# - addr: ::1
#
# <GTP-C Server>
#
# o GTP-C Server(127.0.0.3:2123, [fe80::3%@loopback_devname@]:2123)
# gtpc:
# addr:
# - 127.0.0.3
# - fe80::3%@loopback_devname@
#
# o On SMF, Same configuration
# (127.0.0.3:2123, [fe80::3%@loopback_devname@]:2123).
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%@loopback_devname@
#
# <PDN Configuration with UE Pool>
#
# o IPv4 Pool
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
#
# pdn:
# addr: 10.45.0.1/16
#
# o IPv4/IPv6 Pool
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
#
# pdn:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
#
#
# o Specific APN(e.g 'volte') uses 10.46.0.1/16, cafe:2::1/64
# All other APNs use 10.45.0.1/16, cafe:1::1/64
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add 10.46.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
# $ sudo ip addr add cafe:2::1/64 dev ogstun
#
# pdn:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
# - addr: 10.46.0.1/16
# apn: volte
# - addr: cafe:2::1/64
# apn: volte
#
# o Multiple Devices (default: ogstun)
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun2
# $ sudo ip addr add 10.46.0.1/16 dev ogstun3
# $ sudo ip addr add cafe:2::1/64 dev ogstun3
#
# pdn:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
# dev: ogstun2
# - addr: 10.46.0.1/16
# apn: volte
# dev: ogstun3
# - addr: cafe:2::1/64
# apn: volte
# dev: ogstun3
#
# o Pool Range Sample
# pdn:
# - addr: 10.45.0.1/24
# range: 10.45.0.100-10.45.0.200
#
# pdn:
# - addr: 10.45.0.1/24
# range:
# - 10.45.0.5-10.45.0.50
# - 10.45.0.100-
#
# pdn:
# - addr: 10.45.0.1/24
# range:
# - -10.45.0.200
# - 10.45.0.210-10.45.0.220
#
# pdn:
# - addr: 10.45.0.1/16
# range:
# - 10.45.0.100-10.45.0.200
# - 10.45.1.100-10.45.1.200
# - addr: cafe::1/64
# range:
# - cafe::a0-cafe:b0
# - cafe::c0-cafe:d0
#
# <Domain Name Server>
#
# o Primary/Secondary can be configured. Others are ignored.
#
# <MTU Size>
#
# o Provisioning a limit on the size of the packets sent by the MS
# to avoid packet fragmentation in the backbone network
# between the MS and the GGSN/PGW and/or across the (S)Gi reference point)
# when some of the backbone links does not support
# packets larger then 1500 octets
#
# <P-CSCF>
#
# o Proxy Call Session Control Function
#
# p-cscf:
# - 127.0.0.1
# - ::1
#
smf:
sbi:
- addr: 127.0.0.3
port: 7777
gtpc:
- addr: 127.0.0.3
- addr: ::1
pfcp:
- addr: 127.0.0.3
- addr: ::1
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
freeDiameter: @sysconfdir@/freeDiameter/pgw.conf
#
# nrf:
#
# <SBI Client>>
#
# o SBI Client(http://127.0.0.1:7777)
# sbi:
# addr: 127.0.0.1
# port: 7777
#
# o SBI Client(https://127.0.0.1:443, http://nrf.open5gs.org:80)
# sbi:
# - addr: 127.0.0.1
# tls:
# key: nrf.key
# pem: nrf.pem
# - name: nrf.open5gs.org
#
# o SBI Client(http://[fe80::1%@loopback_devname@]:80)
# If prefer_ipv4 is true, http://127.0.0.1:80 is selected.
#
# sbi:
# addr:
# - 127.0.0.1
# - fe80::1%@loopback_devname@
#
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777
#
# upf:
#
# <PFCP Client>>
#
# o PFCP Client(127.0.0.4:8805)
#
# pfcp:
# addr: 127.0.0.4
#
# <UPF_SELECTION_MODE - EPC only>
#
# o Round-Robin
# upf:
# pfcp:
# - addr: 127.0.0.4
# - addr: 127.0.0.12
#
# o UPF selection by eNodeB TAC
# (either single TAC or multiple TACs, DECIMAL representation)
#
# upf:
# pfcp:
# - addr: 127.0.0.4
# tac: 1
# - addr: 127.0.0.12
# tac: [3,5,8]
#
# o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs)
#
# upf:
# pfcp:
# - addr: 127.0.0.4
# dnn: ims
# - addr: 127.0.0.12
# apn: [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)
#
# upf:
# pfcp:
# - addr: 127.0.0.4
# e_cell_id: 463
# - addr: 127.0.0.12
# nr_cell_id: [123456789, 9413]
#
upf:
pfcp:
- addr: 127.0.0.4
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of gNB per AMF
# gnb: 32
# o Maximum Number of UE per gNB
# ue: 128
# o Maximum Number of NF Instance
# nf: 512
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:
#
# time:
#
# o NF Instance Heartbeat (Default : 10 seconds)
#
# o NF Instance Heartbeat (Disabled)
# nf_instance:
# heartbeat: 0
#
# o NF Instance Heartbeat (10 seconds)
# nf_instance:
# heartbeat: 10
time:

179
configs/open5gs/udm.yaml.in Normal file
View File

@@ -0,0 +1,179 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,pfcp,fd,gtp,udm,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/udm.log
#
# udm:
#
# <SBI Server>
#
# o SBI Server(http://<all address available>:80)
# sbi:
#
# o SBI Server(http://<any address>:80)
# sbi:
# - addr:
# - 0.0.0.0
# - ::0
# port: 7777
#
# o SBI Server(https://<all address avaiable>:443)
# sbi:
# tls:
# key: udm.key
# pem: udm.pem
#
# o SBI Server(https://127.0.0.6:443, http://[::1]:80)
# sbi:
# - addr: 127.0.0.6
# tls:
# key: udm.key
# pem: udm.pem
# - addr: ::1
#
# o SBI Server(http://udm.open5gs.org:80)
# sbi:
# name: udm.open5gs.org
#
# o SBI Server(http://127.0.0.6:7777)
# sbi:
# - addr: 127.0.0.6
# port: 7777
#
# o SBI Server(http://<eth0 IP address>:80)
# sbi:
# dev: eth0
#
udm:
sbi:
- addr: 127.0.0.6
port: 7777
#
# nrf:
#
# <SBI Client>>
#
# o SBI Client(http://127.0.0.1:7777)
# sbi:
# addr: 127.0.0.1
# port: 7777
#
# o SBI Client(https://127.0.0.1:443, http://nrf.open5gs.org:80)
# sbi:
# - addr: 127.0.0.1
# tls:
# key: nrf.key
# pem: nrf.pem
# - name: nrf.open5gs.org
#
# o SBI Client(http://[fe80::1%@loopback_devname@]:80)
# If prefer_ipv4 is true, http://127.0.0.1:80 is selected.
#
# sbi:
# addr:
# - 127.0.0.1
# - fe80::1%@loopback_devname@
#
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of gNB per AMF
# gnb: 32
# o Maximum Number of UE per gNB
# ue: 128
# o Maximum Number of NF Instance
# nf: 512
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:
#
# time:
#
# o NF Instance Heartbeat (Default : 10 seconds)
#
# o NF Instance Heartbeat (Disabled)
# nf_instance:
# heartbeat: 0
#
# o NF Instance Heartbeat (10 seconds)
# nf_instance:
# heartbeat: 10
time:

181
configs/open5gs/udr.yaml.in Normal file
View File

@@ -0,0 +1,181 @@
db_uri: mongodb://localhost/open5gs
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,pfcp,fd,gtp,udr,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/udr.log
#
# udr:
#
# <SBI Server>
#
# o SBI Server(http://<all address available>:80)
# sbi:
#
# o SBI Server(http://<any address>:80)
# sbi:
# - addr:
# - 0.0.0.0
# - ::0
# port: 7777
#
# o SBI Server(https://<all address avaiable>:443)
# sbi:
# tls:
# key: udr.key
# pem: udr.pem
#
# o SBI Server(https://127.0.0.7:443, http://[::1]:80)
# sbi:
# - addr: 127.0.0.7
# tls:
# key: udr.key
# pem: udr.pem
# - addr: ::1
#
# o SBI Server(http://udr.open5gs.org:80)
# sbi:
# name: udr.open5gs.org
#
# o SBI Server(http://127.0.0.7:7777)
# sbi:
# - addr: 127.0.0.7
# port: 7777
#
# o SBI Server(http://<eth0 IP address>:80)
# sbi:
# dev: eth0
#
udr:
sbi:
- addr: 127.0.0.7
port: 7777
#
# nrf:
#
# <SBI Client>>
#
# o SBI Client(http://127.0.0.1:7777)
# sbi:
# addr: 127.0.0.1
# port: 7777
#
# o SBI Client(https://127.0.0.1:443, http://nrf.open5gs.org:80)
# sbi:
# - addr: 127.0.0.1
# tls:
# key: nrf.key
# pem: nrf.pem
# - name: nrf.open5gs.org
#
# o SBI Client(http://[fe80::1%@loopback_devname@]:80)
# If prefer_ipv4 is true, http://127.0.0.1:80 is selected.
#
# sbi:
# addr:
# - 127.0.0.1
# - fe80::1%@loopback_devname@
#
nrf:
sbi:
- addr:
- 127.0.0.1
- ::1
port: 7777
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
parameter:
#
# max:
#
# o Maximum Number of gNB per AMF
# gnb: 32
# o Maximum Number of UE per gNB
# ue: 128
# o Maximum Number of NF Instance
# nf: 512
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
#
pool:
#
# time:
#
# o NF Instance Heartbeat (Default : 10 seconds)
#
# o NF Instance Heartbeat (Disabled)
# nf_instance:
# heartbeat: 0
#
# o NF Instance Heartbeat (10 seconds)
# nf_instance:
# heartbeat: 10
time:

145
configs/open5gs/upf.yaml.in Normal file
View File

@@ -0,0 +1,145 @@
#
# logger:
#
# o Set OGS_LOG_INFO to all domain level
# - If `level` is omitted, the default level is OGS_LOG_INFO)
# - If `domain` is omitted, the all domain level is set from 'level'
# (Nothing is needed)
#
# o Set OGS_LOG_ERROR to all domain level
# - `level` can be set with none, fatal, error, warn, info, debug, trace
# level: error
#
# o Set OGS_LOG_DEBUG to mme/emm domain level
# level: debug
# domain: mme,emm
#
# o Set OGS_LOG_TRACE to all domain level
# level: trace
# domain: core,pfcp,gtp,upf,event,tlv,mem,sock
#
logger:
file: @localstatedir@/log/open5gs/upf.log
#
# upf:
#
# <PFCP Server>
#
# o PFCP Server(127.0.0.4:8805)
# pfcp:
# addr: 127.0.0.4
#
# <GTP-U Server>>
#
# o GTP-U Server(127.0.0.4:2152, [::1]:2152)
# gtpu:
# - addr:
# - 127.0.0.4
# - ::1
#
# o Same configuration(127.0.0.4:2152, [::1]:2152) as below.
# gtpu:
# name: localhost
#
# o User Plane IP Resource information
# gtpu:
# - addr:
# - 127.0.0.4
# - ::1
# teid_range_indication: 4
# teid_range: 10
# network_instance: internet
# source_interface: 0
# - addr: 127.0.10.4
# teid_range_indication: 4
# teid_range: 5
# network_instance: ims
# source_interface: 1
#
upf:
pfcp:
- addr: 127.0.0.4
gtpu:
- addr:
- 127.0.0.4
- ::1
pdn:
#
# smf:
#
# <PFCP Client>>
#
# o PFCP Client(127.0.0.3:8805)
#
# pfcp:
# addr: 127.0.0.3
#
smf:
pfcp:
- addr: 127.0.0.3
#
# parameter:
#
# o Number of output streams per SCTP associations.
# sctp_streams: 30
#
# o Disable use of IPv4 addresses (only IPv6)
# no_ipv4: true
#
# o Disable use of IPv6 addresses (only IPv4)
# no_ipv6: true
#
# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
# prefer_ipv4: true
#
# o Enable Multicast traffic to the UE
# multicast: true
#
# o Disable Stateless Address Autoconfiguration for IPv6
# no_slaac: true
#
#
parameter:
#
# max:
#
# o Maximum Number of gNB per AMF
# gnb: 32
# o Maximum Number of UE per gNB
# ue: 128
# o Maximum Number of NF Instance
# nf: 512
#
max:
#
# pool:
#
# o The Number of Default Memory Pool Size
#
# - Pool-size 128 => 8192 Number
# - Pool-size 256 => 4096 Number
# - Pool-size 512 => 2048 Number
# - Pool-size 1024 => 1024 Number
# - Pool-size 2048 => 512 Number
# - Pool-size 8192 => 128 Number
# - Pool-size 1024*1024 => 8 Number
#
# 128: 8192
# 256: 4096
# 512: 2048
# 1024: 1024
# 2048: 512
# 8192: 128
# big: 8
#
# o Memory of Packet Buffering in UPF/SGW
# - Maximum Number of packet(SDU size = 8Kbytes) pool in UPF/SGW
# - UPF/SGW Memory Usage : 65536 * 8Kbytes = 512Mbytes
#
# packet: 65536
pool:

View File

@@ -1,123 +0,0 @@
db_uri: mongodb://localhost/open5gs
logger:
parameter:
no_ipv6: true
mme:
freeDiameter:
identity: mme.localdomain
realm: localdomain
listen_on: 127.0.0.2
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: hss.localdomain
addr: 127.0.0.4
s1ap:
addr: 127.0.0.1
gtpc:
addr: 127.0.0.1
gummei:
plmn_id:
mcc: 001
mnc: 01
mme_gid: 2
mme_code: 1
tai:
plmn_id:
mcc: 001
mnc: 01
tac: 12345
security:
integrity_order : [ EIA1, EIA2, EIA0 ]
ciphering_order : [ EEA0, EEA1, EEA2 ]
network_name:
full: Open5GS
hss:
freeDiameter:
identity: hss.localdomain
realm: localdomain
listen_on: 127.0.0.4
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: mme.localdomain
addr: 127.0.0.2
sgw:
gtpc:
addr: 127.0.0.2
gtpu:
addr: 127.0.0.2
pgw:
freeDiameter:
identity: pgw.localdomain
realm: localdomain
listen_on: 127.0.0.3
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pcrf.localdomain
addr: 127.0.0.5
gtpc:
addr:
- 127.0.0.3
- ::1
gtpu:
- addr: 127.0.0.3
- addr: ::1
ue_pool:
- addr: 45.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
pcrf:
freeDiameter:
identity: pcrf.localdomain
realm: localdomain
listen_on: 127.0.0.5
load_extension:
- module: @freediameter_extensions_builddir@/dbg_msg_dumps.fdx
conf: 0x8888
- module: @freediameter_extensions_builddir@/dict_rfc5777.fdx
- module: @freediameter_extensions_builddir@/dict_mip6i.fdx
- module: @freediameter_extensions_builddir@/dict_nasreq.fdx
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
connect:
- identity: pgw.localdomain
addr: 127.0.0.3

View File

@@ -19,7 +19,6 @@ mme:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: hss.localdomain
addr: 127.0.0.4
@@ -60,7 +59,6 @@ hss:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: mme.localdomain
addr: 127.0.0.2
@@ -96,14 +94,16 @@ pgw:
gtpu:
- addr: 127.0.0.3
- addr: ::1
ue_pool:
- addr: 45.45.0.1/16
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
pcrf:
freeDiameter:
identity: pcrf.localdomain

View File

@@ -2,5 +2,5 @@
Name=ogstun
[Network]
Address=45.45.0.1/16
Address=10.45.0.1/16
Address=cafe::1/64

View File

@@ -1,7 +1,6 @@
[Unit]
Description=Open5GS HSS Daemon
BindTo=mongodb.service
After=networking.service mongodb.service
Wants=mongodb.service mongod.service
[Service]
Type=simple
@@ -13,6 +12,7 @@ Restart=always
ExecStart=@bindir@/open5gs-hssd -c @sysconfdir@/open5gs/hss.yaml
RestartSec=2
RestartPreventExitStatus=1
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

View File

@@ -12,6 +12,7 @@ Restart=always
ExecStart=@bindir@/open5gs-mmed -c @sysconfdir@/open5gs/mme.yaml
RestartSec=2
RestartPreventExitStatus=1
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

View File

@@ -1,7 +1,6 @@
[Unit]
Description=Open5GS PCRF Daemon
BindTo=mongodb.service
After=networking.service mongodb.service
Wants=mongodb.service mongod.service
[Service]
Type=simple
@@ -13,6 +12,7 @@ Restart=always
ExecStart=@bindir@/open5gs-pcrfd -c @sysconfdir@/open5gs/pcrf.yaml
RestartSec=2
RestartPreventExitStatus=1
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

View File

@@ -1,6 +1,7 @@
[Unit]
Description=Open5GS P-GW Daemon
After=networking.service
Requires=systemd-networkd.service
[Service]
Type=simple
@@ -12,6 +13,7 @@ Restart=always
ExecStart=@bindir@/open5gs-pgwd -c @sysconfdir@/open5gs/pgw.yaml
RestartSec=2
RestartPreventExitStatus=1
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

View File

@@ -12,6 +12,7 @@ Restart=always
ExecStart=@bindir@/open5gs-sgwd -c @sysconfdir@/open5gs/sgw.yaml
RestartSec=2
RestartPreventExitStatus=1
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

View File

@@ -20,7 +20,6 @@ mme:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: hss.open-ims.test
addr: 127.0.0.4
@@ -61,7 +60,6 @@ hss:
- module: @freediameter_extensions_builddir@/dict_nas_mipv6.fdx
- module: @freediameter_extensions_builddir@/dict_dcca.fdx
- module: @freediameter_extensions_builddir@/dict_dcca_3gpp.fdx
- module: @freediameter_extensions_builddir@/dict_s6a.fdx
connect:
- identity: mme.open-ims.test
addr: 127.0.0.2
@@ -101,14 +99,16 @@ pgw:
gtpu:
- addr: 127.0.0.3
- addr: ::1
ue_pool:
- addr: 45.45.0.1/16
pdn:
- addr: 10.45.0.1/16
- addr: cafe::1/64
dns:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
mtu: 1400
#
# <P-CSCF>
#

151
debian/changelog vendored
View File

@@ -1,3 +1,154 @@
open5gs (1.3.0~eoan1) eoan; urgency=medium
* Release-16
-- Sukchan Lee <acetcom@gmail.com> Fri, 10 Jul 2020 17:33:18 -0400
open5gs (1.3.0~focal1) focal; urgency=medium
* Release-16
-- Sukchan Lee <acetcom@gmail.com> Fri, 10 Jul 2020 17:32:17 -0400
open5gs (1.3.0~bionic1) bionic; urgency=medium
* Release-16
-- Sukchan Lee <acetcom@gmail.com> Fri, 10 Jul 2020 17:30:57 -0400
open5gs (1.3.0) unstable; urgency=medium
* Release-16
-- Sukchan Lee <acetcom@gmail.com> Fri, 10 Jul 2020 17:29:33 -0400
open5gs (1.2.4~eoan) eoan; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 26 Apr 2020 15:08:22 -0400
open5gs (1.2.4~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 26 Apr 2020 15:07:40 -0400
open5gs (1.2.4~focal) focal; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 26 Apr 2020 15:04:41 -0400
open5gs (1.2.4) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sun, 26 Apr 2020 13:59:06 -0400
open5gs (1.2.3~eoan) eoan; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 04 Apr 2020 18:11:28 -0400
open5gs (1.2.3~disco) disco; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 04 Apr 2020 18:10:43 -0400
open5gs (1.2.3~bionic1) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 04 Apr 2020 18:08:17 -0400
open5gs (1.2.3) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Sat, 04 Apr 2020 18:03:59 -0400
open5gs (1.2.2~eoan) eoan; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 25 Mar 2020 23:52:52 +0000
open5gs (1.2.2~disco) disco; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 25 Mar 2020 23:51:53 +0000
open5gs (1.2.2~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 25 Mar 2020 23:49:09 +0000
open5gs (1.2.2) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 25 Mar 2020 23:46:47 +0000
open5gs (1.2.1~eoan) eoan; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 05 Feb 2020 19:59:15 +0900
open5gs (1.2.1~disco) disco; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 05 Feb 2020 19:58:05 +0900
open5gs (1.2.1~bionic) bionic; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 05 Feb 2020 19:56:44 +0900
open5gs (1.2.1) unstable; urgency=medium
* Bug Fixed
-- Sukchan Lee <acetcom@gmail.com> Wed, 05 Feb 2020 19:52:54 +0900
open5gs (1.2.0~eoan) eoan; urgency=medium
* VoLTE tested
-- Sukchan Lee <acetcom@gmail.com> Sun, 12 Jan 2020 23:08:38 +0900
open5gs (1.2.0~disco) disco; urgency=medium
* VoLTE tested
-- Sukchan Lee <acetcom@gmail.com> Sun, 12 Jan 2020 23:07:41 +0900
open5gs (1.2.0~bionic2) bionic; urgency=medium
* VoLTE tested
-- Sukchan Lee <acetcom@gmail.com> Sun, 12 Jan 2020 23:05:19 +0900
open5gs (1.2.0) unstable; urgency=medium
* VoLTE tested
-- Sukchan Lee <acetcom@gmail.com> Sun, 12 Jan 2020 22:45:29 +0900
open5gs (1.1.0) unstable; urgency=medium
* Static IP addresses
* Many BUGS Fixed
-- Sukchan Lee <acetcom@gmail.com> Mon, 18 Nov 2019 22:27:05 +0900
open5gs (1.0.0) unstable; urgency=medium
* Change build-tool to MESON

8
debian/control vendored
View File

@@ -4,6 +4,7 @@ Priority: optional
Maintainer: Harald Welte <laforge@gnumonks.org>
Uploaders: Sukchan Lee <acetcom@gmail.com>
Build-Depends: debhelper (>= 11),
git,
pkg-config,
meson (>= 0.43.0),
flex,
@@ -16,6 +17,8 @@ Build-Depends: debhelper (>= 11),
libbson-dev,
libsctp-dev,
libyaml-dev,
libmicrohttpd-dev,
libcurl4-gnutls-dev,
Standards-Version: 4.3.0
Rules-Requires-Root: no
Homepage: https://open5gs.org
@@ -85,7 +88,7 @@ Architecture: any
Multi-Arch: same
Depends: ${shlibs:Depends},
${misc:Depends},
mongodb,
mongodb-org | mongodb,
open5gs-common (= ${binary:Version})
Description: Open Source based 3GPP EPC PCRF (Policy and Charging Rules Function)
Open5GS is a C-language Open Source implementation of the 3GPP Evolved
@@ -101,7 +104,7 @@ Architecture: any
Multi-Arch: same
Depends: ${shlibs:Depends},
${misc:Depends},
mongodb,
mongodb-org | mongodb,
open5gs-common (= ${binary:Version})
Description: Open Source based 3GPP EPC HSS (Home Subscriber Server)
Open5GS is a C-language Open Source implementation of the 3GPP Evolved
@@ -117,7 +120,6 @@ Package: open5gs
Architecture: any
Multi-Arch: same
Depends: ${misc:Depends},
mongodb,
open5gs-common (= ${binary:Version}),
open5gs-mme (= ${binary:Version}),
open5gs-sgw (= ${binary:Version}),

View File

@@ -3,3 +3,4 @@ usr/lib/*/libfd*.so*
usr/lib/*/freeDiameter/*.fdx
configs/freeDiameter/cacert.pem /etc/freeDiameter
configs/logrotate/open5gs /etc/logrotate.d
misc/db/open5gs-dbctl /usr/bin

View File

@@ -66,8 +66,13 @@ export DEBEMAIL='acetcom@gmail.com'
$ gpg --export > public.asc
$ gpg --import public.asc
* Version Change
$ vi meson.build
$ ./misc/git-version-gen . > .tarball-version 2>/dev/null
* Upload OpenBuildService
$ dch -i
$ meson subprojects download freeDiameter
$ debuild -S -uc -us -d
$ osc co home:acetcom:open5gs latest
$ cd home\:acetcom\:open5gs/latest/
@@ -76,9 +81,13 @@ export DEBEMAIL='acetcom@gmail.com'
* Upload LaunchPad
$ dch -i
$ meson subprojects download freeDiameter
$ debuild -S -d
$ dput ppa:open5gs/latest *.source.changes
* Tagging
$ git tag v1.x.x -a
* Build package
$ dpkg-buildpackage -d

View File

@@ -3,8 +3,8 @@
if ! grep "ogstun" /proc/net/dev > /dev/null; then
ip tuntap add name ogstun mode tun
fi
ip addr del 45.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 45.45.0.1/16 dev ogstun
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 10.45.0.1/16 dev ogstun
ip addr del cafe::1/64 dev ogstun 2> /dev/null
ip addr add cafe::1/64 dev ogstun
ip link set ogstun up

View File

@@ -5,7 +5,7 @@ FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN yum -y install epel-release
RUN yum -y install https://centos7.iuscommunity.org/ius-release.rpm
#RUN yum -y install https://centos7.iuscommunity.org/ius-release.rpm
RUN yum -y update
RUN yum -y install \
@@ -15,6 +15,7 @@ RUN yum -y install \
flex \
bison \
git \
meson \
lksctp-tools-devel \
libidn-devel \
gnutls-devel \
@@ -22,7 +23,7 @@ RUN yum -y install \
openssl-devel \
cyrus-sasl-devel \
libyaml-devel \
iproute \
mongo-c-driver-devel
RUN pip3 install --upgrade pip && pip install meson
mongo-c-driver-devel \
libmicrohttpd-devel \
libcurl-devel \
iproute

View File

@@ -1,29 +0,0 @@
ARG dist=centos
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install epel-release && \
dnf -y install 'dnf-command(config-manager)' && \
dnf config-manager --set-enabled PowerTools && \
dnf -y update
RUN dnf -y install \
python3 \
ninja-build \
gcc \
flex \
bison \
git \
lksctp-tools-devel \
libidn-devel \
gnutls-devel \
libgcrypt-devel \
openssl-devel \
cyrus-sasl-devel \
libyaml-devel \
iproute \
mongo-c-driver-devel
RUN pip3 install --upgrade pip && pip install meson

View File

@@ -1,10 +0,0 @@
#!/bin/sh
if ! grep "ogstun" /proc/net/dev > /dev/null; then
ip tuntap add name ogstun mode tun
fi
ip addr del 45.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 45.45.0.1/16 dev ogstun
ip addr del cafe::1/64 dev ogstun 2> /dev/null
ip addr add cafe::1/64 dev ogstun
ip link set ogstun up

View File

@@ -1 +0,0 @@
8

View File

@@ -0,0 +1,36 @@
ARG dist=centos
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install epel-release && \
dnf -y install 'dnf-command(config-manager)' && \
dnf config-manager --set-enabled PowerTools && \
dnf -y update
RUN dnf -y install \
https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm && \
dnf config-manager --set-enabled elrepo-testing && \
dnf -y update
RUN dnf -y install \
python3 \
ninja-build \
gcc \
flex \
bison \
git \
lksctp-tools-devel \
libidn-devel \
gnutls-devel \
libgcrypt-devel \
openssl-devel \
cyrus-sasl-devel \
libyaml-devel \
mongo-c-driver-devel \
libmicrohttpd-devel \
libcurl-devel \
iproute
RUN dnf -y install meson

View File

@@ -0,0 +1,10 @@
#!/bin/sh
if ! grep "ogstun" /proc/net/dev > /dev/null; then
ip tuntap add name ogstun mode tun
fi
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 10.45.0.1/16 dev ogstun
ip addr del cafe::1/64 dev ogstun 2> /dev/null
ip addr add cafe::1/64 dev ogstun
ip link set ogstun up

1
docker/debian/buster Symbolic link
View File

@@ -0,0 +1 @@
../ubuntu/latest

View File

@@ -1,31 +0,0 @@
ARG dist=ubuntu
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
python3-pip \
python3-setuptools \
ninja-build \
build-essential \
flex \
bison \
git \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn11-dev \
libmongoc-dev \
libbson-dev \
libyaml-dev \
iproute2 \
ca-certificates \
netbase \
pkg-config && \
apt-get clean
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install meson

View File

@@ -1 +0,0 @@
../../ubuntu/bionic/dev

View File

@@ -1 +0,0 @@
stable

View File

@@ -1 +1 @@
buster
../ubuntu/latest

View File

@@ -1 +1 @@
buster
../ubuntu/latest

View File

@@ -1 +1 @@
buster
../ubuntu/latest

View File

@@ -1 +1 @@
30
latest

1
docker/fedora/30 Symbolic link
View File

@@ -0,0 +1 @@
latest

View File

@@ -1,24 +0,0 @@
ARG dist=fedora
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install \
python3 \
ninja-build \
gcc \
flex \
bison \
git \
lksctp-tools-devel \
libidn-devel \
gnutls-devel \
libgcrypt-devel \
openssl-devel \
cyrus-sasl-devel \
libyaml-devel \
iproute \
mongo-c-driver-devel
RUN pip3 install --upgrade pip && pip install meson

View File

@@ -1,22 +0,0 @@
ARG dist=fedora
ARG tag=latest
ARG username=acetcom
FROM ${username}/${dist}-${tag}-open5gs-base
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install \
cscope \
vim \
sudo \
iputils \
net-tools
COPY setup.sh /root
ARG username=acetcom
RUN useradd -m --uid=1000 ${username} && \
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
chmod 0440 /etc/sudoers.d/${username}
WORKDIR /home/${username}

View File

@@ -1,10 +0,0 @@
#!/bin/sh
if ! grep "ogstun" /proc/net/dev > /dev/null; then
ip tuntap add name ogstun mode tun
fi
ip addr del 45.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 45.45.0.1/16 dev ogstun
ip addr del cafe::1/64 dev ogstun 2> /dev/null
ip addr add cafe::1/64 dev ogstun
ip link set ogstun up

1
docker/fedora/31 Symbolic link
View File

@@ -0,0 +1 @@
latest

View File

@@ -1 +0,0 @@
30

View File

@@ -0,0 +1,26 @@
ARG dist=fedora
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install \
python3 \
ninja-build \
gcc \
flex \
bison \
git \
lksctp-tools-devel \
libidn-devel \
gnutls-devel \
libgcrypt-devel \
openssl-devel \
cyrus-sasl-devel \
libyaml-devel \
mongo-c-driver-devel \
libmicrohttpd-devel \
libcurl-devel \
iproute
RUN dnf -y install meson

View File

@@ -0,0 +1,23 @@
ARG dist=fedora
ARG tag=latest
ARG username=acetcom
FROM ${username}/${dist}-${tag}-open5gs-base
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN dnf -y install \
findutils \
cscope \
vim \
sudo \
iputils \
net-tools
COPY setup.sh /root
ARG username=acetcom
RUN useradd -m --uid=1000 ${username} && \
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
chmod 0440 /etc/sudoers.d/${username}
WORKDIR /home/${username}

View File

@@ -0,0 +1,10 @@
#!/bin/sh
if ! grep "ogstun" /proc/net/dev > /dev/null; then
ip tuntap add name ogstun mode tun
fi
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 10.45.0.1/16 dev ogstun
ip addr del cafe::1/64 dev ogstun 2> /dev/null
ip addr add cafe::1/64 dev ogstun
ip link set ogstun up

1
docker/ubuntu/bionic Symbolic link
View File

@@ -0,0 +1 @@
latest

View File

@@ -1,30 +0,0 @@
ARG dist=ubuntu
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
python3-pip \
python3-setuptools \
ninja-build \
build-essential \
flex \
bison \
git \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn11-dev \
libmongoc-dev \
libbson-dev \
libyaml-dev \
iproute2 \
ca-certificates \
netbase \
pkg-config && \
apt-get clean
RUN python3 -m pip install meson

View File

@@ -1,10 +0,0 @@
#!/bin/sh
if ! grep "ogstun" /proc/net/dev > /dev/null; then
ip tuntap add name ogstun mode tun
fi
ip addr del 45.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 45.45.0.1/16 dev ogstun
ip addr del cafe::1/64 dev ogstun 2> /dev/null
ip addr add cafe::1/64 dev ogstun
ip link set ogstun up

View File

@@ -1 +1 @@
bionic
latest

1
docker/ubuntu/focal Symbolic link
View File

@@ -0,0 +1 @@
latest

View File

@@ -1 +0,0 @@
bionic

View File

@@ -0,0 +1,34 @@
ARG dist=ubuntu
ARG tag=latest
FROM ${dist}:${tag}
MAINTAINER Sukchan Lee <acetcom@gmail.com>
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 \
meson \
libsctp-dev \
libgnutls28-dev \
libgcrypt-dev \
libssl-dev \
libidn11-dev \
libmongoc-dev \
libbson-dev \
libyaml-dev \
libmicrohttpd-dev \
libcurl4-gnutls-dev \
iproute2 \
ca-certificates \
netbase \
pkg-config && \
apt-get clean

View File

@@ -0,0 +1,10 @@
#!/bin/sh
if ! grep "ogstun" /proc/net/dev > /dev/null; then
ip tuntap add name ogstun mode tun
fi
ip addr del 10.45.0.1/16 dev ogstun 2> /dev/null
ip addr add 10.45.0.1/16 dev ogstun
ip addr del cafe::1/64 dev ogstun 2> /dev/null
ip addr add cafe::1/64 dev ogstun
ip link set ogstun up

View File

@@ -1 +1 @@
bionic
latest

View File

@@ -16,8 +16,8 @@
title: Open5GS
email: acetcom@gmail.com
description: >- # this means to ignore newlines until "baseurl:"
An open source implementation of the Evolved Packet Core of LTE networks
supporting 3GPP Release 14.
Open5GS is a C-language Open Source implementation of 5GC and EPC,
i.e. the core network of NR/LTE network (Release-16)
baseurl: "/open5gs" # the subpath of your site, e.g. /blog
url: "https://open5gs.org" # the base hostname & protocol for your site, e.g. http://example.com
author: "Sukchan Lee"

View File

@@ -8,7 +8,9 @@ title: Quickstart
### Install Open5GS with a Package Manager
---
The Open5GS package is available on the recent versions of *Ubuntu*.
#### Ubuntu
*Ubuntu* makes it easy to install Open5GS as shown below,
```bash
$ sudo apt update
@@ -18,42 +20,57 @@ $ sudo apt update
$ sudo apt install open5gs
```
The Open5GS package is also available on [OBS](https://build.opensuse.org/package/show/home:acetcom:open5gs:snapshot/open5gs). First, install the authentication key as shown below.
#### Debian
The Open5GS packages for Debian are available on [OBS](https://build.opensuse.org/project/show/home:acetcom:open5gs). If you want to use the latest Debian version like *Debian* 10(Buster), you need to install MongoDB first.
```bash
$ sudo apt update
$ sudo apt install wget gnupg
$ wget https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_10.0/Release.key
$ sudo apt-key add Release.key
```
In Debian 10.0(buster), you can install it as follows:
```bash
$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_9.0/ ./' > /etc/apt/sources.list.d/open5gs.list"
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
$ echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org.list
$ wget -qO - https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_10/Release.key | sudo apt-key add -
$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_10/ ./' > /etc/apt/sources.list.d/open5gs.list"
$ sudo apt update
$ sudo apt install mongodb-org
$ sudo apt install open5gs
```
Other Linux distributions can be installed by changing the path.
Other distributions can be installed by changing the path.
```
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_10.0/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_Testing/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_Unstable/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Raspbian_10.0/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_19.04/
http://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_19.10/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_10/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_Testing/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Debian_Unstable/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/Raspbian_10/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_18.04/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_19.04/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_19.10/
https://download.opensuse.org/repositories/home:/acetcom:/open5gs:/latest/xUbuntu_20.04/
```
[Martin Hauke](https://build.opensuse.org/user/show/mnhauke) packaged Open5GS for *openSUSE* on [OBS](https://build.opensuse.org/package/show/home:mnhauke:nextepc/nextepc).
Nightly package build are provided by [Osmocom](https://osmocom.org) on [OBS](https://build.opensuse.org/package/show/network:osmocom:nightly/open5gs).
```
https://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_10/
https://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_Testing/
https://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_Unstable/
https://download.opensuse.org/repositories/network:/osmocom:/nightly/Raspbian_10/
https://download.opensuse.org/repositories/network:/osmocom:/nightly/xUbuntu_18.04/
https://download.opensuse.org/repositories/network:/osmocom:/nightly/xUbuntu_18.10/
https://download.opensuse.org/repositories/network:/osmocom:/nightly/xUbuntu_19.04/
https://download.opensuse.org/repositories/network:/osmocom:/nightly/xUbuntu_19.10/
```
#### openSUSE
[Martin Hauke](https://build.opensuse.org/user/show/mnhauke) packaged Open5GS for *openSUSE* on [OBS](https://build.opensuse.org/package/show/home:mnhauke:open5gs/open5gs).
```bash
$ sudo zypper addrepo -f obs://home:mnhauke:nextepc home:mnhauke:nextepc
$ sudo zypper install nextepc
$ sudo zypper addrepo -f obs://home:mnhauke:open5gs home:mnhauke:open5gs
$ sudo zypper install mongodb-server mongodb-shell
$ sudo zypper install open5gs
```
### Configure Open5GS
@@ -160,7 +177,7 @@ To add subscriber information, you can do WebUI operations in the following orde
{: .notice--info}
### Adding a route for UE to have Internet connectivity
### Adding a route for UE to have Internet connectivity {#UEInternet}
---
If your phone can connect to internet, you must run the following command in Open5GS-PGW installed host.
@@ -195,7 +212,7 @@ target prot opt source destination
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o ogstun -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
```
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
@@ -207,42 +224,12 @@ $ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o ogstun -j MASQUERADE
- You can see actual traffic through wireshark -- [[srsenb.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/srsenb.pcapng).
- You can view the log at `/var/log/open5gs/*.log`.
### Troubleshooting
---
Problem with Open5GS can be filed as [GitHub Issues](https://github.com/open5gs/open5gs/issues). Please include the following to get help:
- Attach `*.pcapng` file created by wireskark.
- Attach configuration files at `/etc/open5gs/*.conf`.
- Attach log files at `/var/log/open5gs/*.log`.
You can modify the configuration file to record more logs.
```diff
diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
--- mme.yaml.old 2018-04-15 18:28:31.000000000 +0900
+++ mme.yaml 2018-04-15 19:53:10.000000000 +0900
@@ -2,6 +2,7 @@
logger:
file: /var/log/open5gs/mme.log
+ level: debug
parameter:
```
After changing conf files, please restart Open5GS daemons.
```bash
$ sudo systemctl restart open5gs-mmed
$ sudo systemctl restart open5gs-sgwd
```
### Uninstall Open5GS and WebUI
How to remove Open5GS package:
1. On *Ubuntu*:
1. On *Ubuntu/Debian*:
```bash
$ sudo apt purge open5gs

View File

@@ -9,22 +9,23 @@ This post explains how to compile and install the source code on **Debian/Ubuntu
### Getting MongoDB
---
Install MongoDB with package manager.
Install MongoDB with package manager. It is used as database for the HSS and PCRF.
```bash
$ sudo apt update
$ sudo apt install mongodb
$ sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
$ sudo systemctl enable mongodb (ensure to automatically start it on system boot)
```
### Setting up TUN device (No persistent after rebooting)
### Setting up TUN device (not persistent after rebooting)
---
Create the TUN device with the interface name `ogstun`.
```bash
$ sudo ip tuntap add name ogstun mode tun
$ sudo ip addr add 45.45.0.1/16 dev ogstun
$ sudo ip addr add 10.45.0.1/16 dev ogstun
$ sudo ip addr add cafe::1/64 dev ogstun
$ sudo ip link set ogstun up
```
@@ -36,16 +37,10 @@ $ sudo ip link set ogstun up
### Building Open5GS
---
Install the depedencies for building the source code.
Install the dependencies for building the source code.
```bash
$ sudo apt install python3-pip python3-setuptools ninja-build build-essential flex bison git libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev
```
Install Meson using Python.
```bash
$ pip3 install --user meson
$ sudo apt install python3-pip python3-setuptools python3-wheel ninja-build build-essential flex bison git libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev libmicrohttpd-dev libcurl4-gnutls-dev meson
```
Git clone.
@@ -67,19 +62,25 @@ Check whether the compilation is correct.
$ ninja -C build test
```
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testsimple.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testsimple.pcapng)
{: .notice--info}
You need to perform the **installation process**.
```bash
$ cd build
$ ninja install
$ cd ../
```
### Configure Open5GS
---
Modify [/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/mme.yaml.in) to set the S1AP/GTP-C IP address, PLMN ID, and TAC
Modify [install/etc/open5gs/mme.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/mme.yaml.in) to set the S1AP/GTP-C IP address, PLMN ID, and TAC.
In the below example we
- use MCC-MNC of 901-70, as this is the home network of the default IMSIs of the sysmoUSIM-SJS1 cards.
- use 192.168.0.100 for the S1AP +GTP-U connection of MME/SGW to the eNB
```diff
diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
@@ -113,7 +114,7 @@ diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
ciphering_order : [ EEA0, EEA1, EEA2 ]
```
Modify [/etc/open5gs/sgw.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/sgw.yaml.in) to set the GTP-U IP address.
Modify [install/etc/open5gs/sgw.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/sgw.yaml.in) to set the GTP-U IP address.
```diff
diff -u /etc/open5gs/sgw.yaml.old /etc/open5gs/sgw.yaml
--- sgw.yaml.old 2018-04-15 18:30:25.000000000 +0900
@@ -125,14 +126,37 @@ diff -u /etc/open5gs/sgw.yaml.old /etc/open5gs/sgw.yaml
+ addr: 192.168.0.100
```
After changing conf files, please restart Open5GS daemons.
If you modify the config files while Open5GS daemons are running, please restart them
### Running Open5GS
---
Specify the absolute path to the sharead library as follows.
```bash
$ cd install
$ echo $(cd $(dirname ./install/lib/x86_64-linux-gnu/) && pwd -P)/$(basename ./install/lib/x86_64-linux-gnu/)
/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
$ export LD_LIBRARY_PATH=/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
$ ldd ./install/bin/open5gs-mmed
...
libogsapp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogsapp.so.1 (0x00007f161ab51000)
libogscore.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogscore.so.1 (0x00007f161a922000)
libogssctp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogssctp.so.1 (0x00007f161a71d000)
libogss1ap.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogss1ap.so.1 (0x00007f161a519000)
...
```
If you want to set the shared library path permanently, you can use ldconfig.
```bash
$ sudo sh -c "echo /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu > /etc/ld.so.conf.d/open5gs.conf"
$ sudo ldconfig
```
Now let's get started.
```bash
$ cd install/bin/
$ ./open5gs-pcrfd
Open5GS daemon v1.0.0
@@ -197,8 +221,12 @@ Options:
-h : show this message and exit
```
You can also copy the binaries to /usr/bin to be able to run them from anywhere on the system.
```bash
$ cp open5gs* /usr/bin/
```
### Building WebUI of Open5GS
### Building the WebUI of Open5GS
---
[Node.js](https://nodejs.org/) is required to build WebUI of Open5GS
@@ -241,16 +269,16 @@ To add subscriber information, you can do WebUI operations in the following orde
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
4. Click `SAVE` Button
**Tip:** This addition immediately affects Open5GS without restaring any daemon.
**Tip:** This addition immediately affects Open5GS without restarting any daemon.
{: .notice--warning}
### Adding a route for UE to have internet connectivity
### IP routing + NAT for UE internet connectivity
---
If your phone can connect to internet, you must run the following command in Open5GS-PGW installed host.
To allow your phones to connect to the internet, you must run the following command on the host running Open5GS-PGW:
```bash
### Check IP Tables
### Check IP Table 'forward'
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
@@ -261,7 +289,7 @@ target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check NAT Tables
### Check IP Table 'nat'
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
@@ -279,10 +307,11 @@ target prot opt source destination
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o ogstun -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
```
**Note:** It is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
**Note:** The above assumes you do not have any existing rules in the filter and nat tables. If a program such as docker has already set up rules, you may need to add the Open5GS related rules differently.
{: .notice--danger}
### Turn on your eNodeB and Phone
---

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,426 @@
---
title: Installing 5G Core from Sources
head_inline: "<style> .blue { color: blue; } </style>"
---
This post explains how to compile and install the source code on **Debian/Ubuntu** based Linux Distribution.
{: .blue}
### Getting MongoDB
---
Install MongoDB with package manager. It is used as database for the UDR.
```bash
$ sudo apt update
$ sudo apt install mongodb
$ sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
$ sudo systemctl enable mongodb (ensure to automatically start it on system boot)
```
### Setting up TUN device (not persistent after rebooting)
---
Create the TUN device with the interface name `ogstun`.
```bash
$ sudo ip tuntap add name ogstun mode tun
$ sudo ip addr add 10.45.0.1/16 dev ogstun
$ sudo ip addr add cafe::1/64 dev ogstun
$ sudo ip link set ogstun up
```
**Tip:** The script provided in [$GIT_REPO/misc/netconf.sh](https://github.com/{{ site.github_username }}/open5gs/blob/master/misc/netconf.sh) makes it easy to configure the TUN device as follows:
`$ sudo ./misc/netconf.sh`
{: .notice--info}
### Building Open5GS
---
Install the dependencies for building the source code.
```bash
$ sudo apt install python3-pip python3-setuptools python3-wheel ninja-build build-essential flex bison git libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev libmicrohttpd-dev libcurl4-gnutls-dev meson
```
Git clone.
```bash
$ git clone https://github.com/{{ site.github_username }}/open5gs
```
To compile with meson:
```bash
$ cd open5gs
$ meson build --prefix=`pwd`/install
$ ninja -C build
```
Check whether the compilation is correct in your environment.
```bash
$ cd build
$ ./tests/registration/registration
```
**Tip:** You can also check the result of `./test/registration/registration` with a tool that captures packets. If you are running `wireshark`, select the `any` interface and set FILTER to `ngap || http || pfcp || gtp`.
{: .notice--info}
You need to perform the **installation process**.
```bash
$ cd build
$ ninja install
$ cd ../
```
### Configure Open5GS
---
Modify [install/etc/open5gs/amf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/amf.yaml.in) to set the NGAP IP address, PLMN ID, TAC and NSSAI.
In the below example we
- use MCC-MNC of 901-70, as this is the home network of the default IMSIs of the sysmoUSIM-SJS1 cards.
- use 192.168.0.100 for the NGAP connection of AMF to the gNB
```diff
diff -u amf.yaml.old amf.yaml
--- amf.yaml.old 2020-06-21 23:34:14.643114779 -0400
+++ amf.yaml 2020-06-21 23:34:28.718482095 -0400
@@ -67,25 +67,25 @@
- addr: 127.0.0.2
port: 7777
ngap:
+ - addr: 192.168.0.100
guami:
- plmn_id:
- mcc: 001
- mnc: 01
+ mcc: 901
+ mnc: 70
amf_id:
region: 2
set: 1
tai:
- plmn_id:
- mcc: 001
- mnc: 01
- tac: 1
+ mcc: 901
+ mnc: 70
+ tac: 7
plmn:
- plmn_id:
- mcc: 001
- mnc: 01
+ mcc: 901
+ mnc: 70
s_nssai:
- sst: 1
- - sd: 2
security:
integrity_order : [ NIA1, NIA2, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
```
Modify [install/etc/open5gs/upf.yaml](https://github.com/{{ site.github_username }}/open5gs/blob/master/configs/open5gs/upf.yaml.in) to set the GTP-U IP address.
```diff
diff -u upf.yaml.old upf.yaml
--- upf.yaml.old 2020-06-21 23:35:54.378631781 -0400
+++ upf.yaml 2020-06-21 23:36:02.978245251 -0400
@@ -61,6 +61,7 @@
pfcp:
- addr: 127.0.0.4
gtpu:
+ - addr: 192.168.0.100
pdn:
```
If you modify the config files while Open5GS daemons are running, please restart them
### Running Open5GS
---
Specify the absolute path to the sharead library as follows.
```bash
$ echo $(cd $(dirname ./install/lib/x86_64-linux-gnu/) && pwd -P)/$(basename ./install/lib/x86_64-linux-gnu/)
/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
$ export LD_LIBRARY_PATH=/home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu
$ ldd ./install/bin/open5gs-amfd
...
libogsapp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogsapp.so.1 (0x00007f161ab51000)
libogscore.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogscore.so.1 (0x00007f161a922000)
libogssctp.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogssctp.so.1 (0x00007f161a71d000)
libogss1ap.so.1 => /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu/libogss1ap.so.1 (0x00007f161a519000)
...
```
If you want to set the shared library path permanently, you can use ldconfig.
```bash
$ sudo sh -c "echo /home/acetcom/Documents/git/open5gs/install/lib/x86_64-linux-gnu > /etc/ld.so.conf.d/open5gs.conf"
$ sudo ldconfig
```
Now let's get started.
```bash
$ cd install/bin/
$ ./install/bin/open5gs-nrfd
Open5GS daemon v1.3.0
06/21 23:37:46.749: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/nrf.yaml' (../src/main.c:54)
06/21 23:37:46.749: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/nrf.log' (../src/main.c:57)
06/21 23:37:46.749: [app] INFO: NRF initialize...done (../src/nrf/app.c:31)
06/21 23:37:46.749: [sbi] INFO: sbi_server() [127.0.0.1]:7777 (../lib/sbi/server.c:291)
06/21 23:37:46.749: [sbi] INFO: sbi_server() [::1]:7777 (../lib/sbi/server.c:291
$ ./install/bin/open5gs-amfd
Open5GS daemon v1.3.0
06/21 23:38:15.834: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/amf.yaml' (../src/main.c:54)
06/21 23:38:15.834: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/amf.log' (../src/main.c:57)
06/21 23:38:15.876: [app] INFO: AMF initialize...done (../src/amf/app.c:33)
06/21 23:38:15.876: [sbi] INFO: sbi_server() [127.0.0.2]:7777 (../lib/sbi/server.c:291)
06/21 23:38:15.877: [amf] INFO: ngap_server() [192.168.0.11]:38412 (../src/amf/ngap-sctp.c:56)
06/21 23:38:15.877: [amf] INFO: ngap_server() [172.19.0.1]:38412 (../src/amf/ngap-sctp.c:56)
06/21 23:38:15.877: [amf] INFO: ngap_server() [172.17.0.1]:38412 (../src/amf/ngap-sctp.c:56)
06/21 23:38:15.877: [amf] INFO: ngap_server() [2601:144:4100:a220:ee:f149:8f28:9572]:38412 (../src/amf/ngap-sctp.c:56)
06/21 23:38:15.877: [amf] INFO: ngap_server() [2601:144:4100:a220:c643:4b3a:b0ee:c446]:38412 (../src/amf/ngap-sctp.c:56)
06/21 23:38:15.877: [amf] INFO: [ce785804-b439-41ea-9c93-399fce5a75a5] NF registered (../src/amf/nf-sm.c:209)
$ ./install/bin/open5gs-smfd
Open5GS daemon v1.3.0
06/21 23:38:35.313: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/smf.yaml' (../src/main.c:54)
06/21 23:38:35.313: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/smf.log' (../src/main.c:57)
06/21 23:38:35.350: [gtp] INFO: gtp_server() [127.0.0.3]:2123 (../lib/gtp/path.c:32)
06/21 23:38:35.350: [gtp] INFO: gtp_server() [::1]:2123 (../lib/gtp/path.c:32)
06/21 23:38:35.350: [app] INFO: SMF initialize...done (../src/smf/app.c:31)
06/21 23:38:35.350: [pfcp] INFO: pfcp_server() [127.0.0.3]:8805 (../lib/pfcp/path.c:32)
06/21 23:38:35.350: [pfcp] INFO: pfcp_server() [::1]:8805 (../lib/pfcp/path.c:32)
06/21 23:38:35.350: [pfcp] INFO: ogs_pfcp_connect() [127.0.0.4]:8805 (../lib/pfcp/path.c:60)
06/21 23:38:35.351: [sbi] INFO: sbi_server() [127.0.0.3]:7777 (../lib/sbi/server.c:291)
06/21 23:38:35.352: [smf] INFO: [da15f3e2-b439-41ea-bd58-c3fe61467c94] NF registered (../src/smf/nf-sm.c:210)
$ ./install/bin/open5gs-upfd
Open5GS daemon v1.3.0
06/21 23:38:52.832: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/upf.yaml' (../src/main.c:54)
06/21 23:38:52.832: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/upf.log' (../src/main.c:57)
06/21 23:38:52.844: [app] INFO: UPF initialize...done (../src/upf/app.c:31)
06/21 23:38:52.844: [pfcp] INFO: pfcp_server() [127.0.0.4]:8805 (../lib/pfcp/path.c:32)
06/21 23:38:52.844: [pfcp] INFO: ogs_pfcp_connect() [127.0.0.3]:8805 (../lib/pfcp/path.c:60)
06/21 23:38:52.846: [gtp] INFO: gtp_server() [192.168.0.11]:2152 (../lib/gtp/path.c:32)
06/21 23:38:52.846: [gtp] INFO: gtp_server() [172.19.0.1]:2152 (../lib/gtp/path.c:32)
06/21 23:38:52.846: [gtp] INFO: gtp_server() [172.17.0.1]:2152 (../lib/gtp/path.c:32)
06/21 23:38:52.846: [gtp] INFO: gtp_server() [2601:144:4100:a220:ee:f149:8f28:9572]:2152 (../lib/gtp/path.c:32)
06/21 23:38:52.846: [gtp] INFO: gtp_server() [2601:144:4100:a220:c643:4b3a:b0ee:c446]:2152 (../lib/gtp/path.c:32)
06/21 23:38:52.848: [upf] INFO: PFCP associated (../src/upf/pfcp-sm.c:171)
06/21 23:38:53.358: [upf] WARNING: PFCP[REQ] has already been associated (../src/upf/pfcp-sm.c:201)
$ ./install/bin/open5gs-ausfd
Open5GS daemon v1.3.0
06/21 23:39:11.641: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/ausf.yaml' (../src/main.c:54)
06/21 23:39:11.641: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/ausf.log' (../src/main.c:57)
06/21 23:39:11.641: [app] INFO: AUSF initialize...done (../src/ausf/app.c:31)
06/21 23:39:11.642: [sbi] INFO: sbi_server() [127.0.0.5]:7777 (../lib/sbi/server.c:291)
06/21 23:39:11.643: [ausf] INFO: [efbbbe5c-b439-41ea-b95c-039d7a609671] NF registered (../src/ausf/nf-sm.c:209)
$ ./install/bin/open5gs-udmd
Open5GS daemon v1.3.0
06/21 23:39:28.792: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/udm.yaml' (../src/main.c:54)
06/21 23:39:28.792: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/udm.log' (../src/main.c:57)
06/21 23:39:28.792: [app] INFO: UDM initialize...done (../src/udm/app.c:31)
06/21 23:39:28.793: [sbi] INFO: sbi_server() [127.0.0.6]:7777 (../lib/sbi/server.c:291)
06/21 23:39:29.390: [udm] INFO: [f9f4ce22-b439-41ea-bf29-c309f36c787f] NF registered (../src/udm/nf-sm.c:209)
$ ./install/bin/open5gs-udrd
Open5GS daemon v1.3.0
06/21 23:39:41.763: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/install/etc/open5gs/udr.yaml' (../src/main.c:54)
06/21 23:39:41.763: [app] INFO: File Logging: '/home/acetcom/Documents/git/open5gs/install/var/log/open5gs/udr.log' (../src/main.c:57)
06/21 23:39:41.765: [dbi] INFO: MongoDB URI: 'mongodb://localhost/open5gs' (../lib/dbi/ogs-mongoc.c:99)
06/21 23:39:41.765: [app] INFO: UDR initialize...done (../src/udr/app.c:31)
06/21 23:39:41.765: [sbi] INFO: sbi_server() [127.0.0.7]:7777 (../lib/sbi/server.c:291)
06/21 23:39:41.767: [udr] INFO: [01b0191e-b43a-41ea-9abb-df3b42196e0a] NF registered (../src/udr/nf-sm.c:209)
```
Several command line options are provided.
```bash
$ ./install/bin/open5gs-amfd -h
Usage: ./install/bin/open5gs-amfd [options]
Options:
-c filename : set configuration file
-l filename : set logging file
-e level : set global log-level (default:info)
-m domain : set log-domain (e.g. mme:sgw:gtp)
-d : print lots of debugging information
-t : print tracing information for developer
-D : start as a daemon
-v : show version number and exit
-h : show this message and exit
```
You can also copy the binaries to /usr/bin to be able to run them from anywhere on the system.
```bash
$ cp open5gs* /usr/bin/
```
For convenience, you can execute all NFs at once by using the following command.
```bash
$ cd build
$ vi configs/5gc.yaml ## check the configuration
$ ./test/app/5gc ## run all NFs
```
### Building the WebUI of Open5GS
---
[Node.js](https://nodejs.org/) is required to build WebUI of Open5GS
```bash
$ sudo apt install curl
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
```
Install the dependencies to run WebUI
```bash
$ cd webui
$ npm install
```
The WebUI runs as an [npm](https://www.npmjs.com/) script.
```bash
$ npm run dev
```
### Register Subscriber Information
---
Connect to `http://localhost:3000` and login with **admin** account.
> Username : admin
> Password : 1423
**Note:**
You can change the password in _Account_ Menu.
{: .notice--info}
To add subscriber information, you can do WebUI operations in the following order:
1. Go to `Subscriber` Menu.
2. Click `+` Button to add a new subscriber.
3. Fill the IMSI, security context(K, OPc, AMF), and APN of the subscriber.
4. Click `SAVE` Button
**Tip:** This addition immediately affects Open5GS without restarting any daemon.
{: .notice--warning}
### IP routing + NAT for UE internet connectivity
---
To allow your phones to connect to the internet, you must run the following command on the host running Open5GS-PGW:
```bash
### Check IP Table 'forward'
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check IP Table 'nat'
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
### Enable IPv4 Forwarding
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
```
**Note:** The above assumes you do not have any existing rules in the filter and nat tables. If a program such as docker has already set up rules, you may need to add the Open5GS related rules differently.
{: .notice--danger}
### Turn on your gNB and Phone
---
- You can view the log at `$INSTALL_PREFIX/var/log/open5gs/*.log`.
### Troubleshooting
---
If you run into any problems, please post the github issue. Providing packets using wireshark can help a lot.
{: .blue}
To fix the problem yourself, debugging tools can help you troubleshoot problems.
- [GDB](https://www.gnu.org/software/gdb/) can be used as below:
```bash
$ gdb ./open5gs-amfd
```
- On *Mac OS X*, you can use the [LLDB](https://lldb.llvm.org/).
```bash
$ lldb ./open5gs-amfd
```
You can use the command line option[`-d`] to record more logs.
```bash
$ ./test/app/5gc -d
Open5GS daemon v1.3.0
06/21 23:44:54.500: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/build/configs/5gc.yaml' (../src/main.c:54)
06/21 23:44:54.500: [thread] DEBUG: [0x7f3342a7d018] worker signal (../lib/core/ogs-thread.c:66)
06/21 23:44:54.500: [thread] DEBUG: [0x7f3342a7d018] thread started (../lib/core/ogs-thread.c:101)
Open5GS daemon v1.3.0
06/21 23:44:54.508: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/build/configs/5gc.yaml' (../src/main.c:54)
06/21 23:44:54.508: [thread] DEBUG: [0x7f31d3620818] worker signal (../lib/core/ogs-thread.c:66)
06/21 23:44:54.508: [nrf] DEBUG: nrf_state_initial(): INIT (../src/nrf/nrf-sm.c:25)
06/21 23:44:54.508: [nrf] DEBUG: nrf_state_operational(): ENTRY (../src/nrf/nrf-sm.c:50)
06/21 23:44:54.508: [thread] DEBUG: [0x7f31d3620818] thread started (../lib/core/ogs-thread.c:101)
06/21 23:44:54.508: [app] INFO: NRF initialize...done (../src/nrf/app.c:31)
06/21 23:44:54.509: [sbi] INFO: sbi_server() [127.0.0.1]:7777 (../lib/sbi/server.c:291)
06/21 23:44:54.509: [sbi] INFO: sbi_server() [::1]:7777 (../lib/sbi/server.c:291)
06/21 23:44:54.551: [thread] DEBUG: [0x7f3342a7d098] worker signal (../lib/core/ogs-thread.c:66)
06/21 23:44:54.551: [thread] DEBUG: [0x7f3342a7d098] thread started (../lib/core/ogs-thread.c:101)
Open5GS daemon v1.3.0
06/21 23:44:54.575: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/build/configs/5gc.yaml' (../src/main.c:54)
06/21 23:44:54.601: [thread] DEBUG: [0x7f3342a7d118] worker signal (../lib/core/ogs-thread.c:66)
06/21 23:44:54.601: [thread] DEBUG: [0x7f3342a7d118] thread started (../lib/core/ogs-thread.c:101)
Open5GS daemon v1.3.0
06/21 23:44:54.607: [app] INFO: Configuration: '/home/acetcom/Documents/git/open5gs/build/configs/5gc.yaml' (../src/main.c:54)
06/21 23:44:54.608: [thread] DEBUG: [0x7f996e1b2918] worker signal (../lib/core/ogs-thread.c:66)
06/21 23:44:54.608: [ausf] DEBUG: ausf_state_initial(): INIT (../src/ausf/ausf-sm.c:25)
```

View File

@@ -66,7 +66,7 @@ $ sudo sh -c "cat << EOF > /etc/systemd/network/99-open5gs.network
[Match]
Name=ogstun
[Network]
Address=45.45.0.1/16
Address=10.45.0.1/16
Address=cafe::1/64
EOF"
```
@@ -83,7 +83,7 @@ Make sure it is set up properly.
```bash
$ ifconfig ogstun
ogstun: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 45.45.0.1 netmask 255.255.0.0 destination 45.45.0.1
inet 10.45.0.1 netmask 255.255.0.0 destination 10.45.0.1
inet6 cafe::1 prefixlen 64 scopeid 0x0<global>
inet6 fe80::e86e:86d8:ea24:f8ee prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)

View File

@@ -23,8 +23,13 @@ EOF'
Install MongoDB with Package Manager.
```bash
sudo yum -y install mongodb-org
sudo systemctl start mongod (if '/usr/bin/mongod' is not running)
sudo dnf -y install mongodb-org
```
Run MongoDB server.
```bash
$ mkdir -p ./data/db
$ mongod --dbpath ./data/db
```
### Setting up TUN device (No persistent after rebooting)
@@ -55,7 +60,7 @@ $ sysctl -n net.ipv6.conf.ogstun.disable_ipv6
You are now ready to set the IP address on TUN device.
```bash
$ sudo ip addr add 45.45.0.1/16 dev ogstun
$ sudo ip addr add 10.45.0.1/16 dev ogstun
$ sudo ip addr add cafe::1/64 dev ogstun
```
@@ -85,15 +90,21 @@ $ sudo dnf config-manager --set-enabled PowerTools
$ sudo update
```
Install the depedencies for building the source code.
Configure ELRepo(with testing) package.
```bash
$ sudo dnf install python3 ninja-build gcc flex bison git lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel libyaml-devel iproute mongo-c-driver-devel
$ sudo dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
$ sudo dnf config-manager --set-enabled elrepo-testing
$ sudo dnf update
```
Install Meson using Python.
Install the depedencies for building the source code.
```bash
$ sudo pip3 install --upgrade pip
$ sudo pip install meson
$ sudo dnf install python3 ninja-build gcc flex bison git lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel libyaml-devel mongo-c-driver-devel libmicrohttpd-devel libcurl-devel iproute
```
Install Meson
```bash
$ sudo dnf install meson
```
Git clone.
@@ -115,7 +126,7 @@ Check whether the compilation is correct.
$ ninja -C build test
```
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testsimple.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testsimple.pcapng)
{: .notice--info}
You need to perform the **installation process**.

View File

@@ -3,7 +3,7 @@ title: Fedora
head_inline: "<style> .blue { color: blue; } </style>"
---
This guide is based on **Fedora 30** Distribution.
This guide is based on **Fedora 31** Distribution.
{: .blue}
### Getting MongoDB
@@ -48,7 +48,7 @@ $ sysctl -n net.ipv6.conf.ogstun.disable_ipv6
You are now ready to set the IP address on TUN device.
```bash
$ sudo ip addr add 45.45.0.1/16 dev ogstun
$ sudo ip addr add 10.45.0.1/16 dev ogstun
$ sudo ip addr add cafe::1/64 dev ogstun
```
@@ -67,13 +67,12 @@ $ ip link show
Install the depedencies for building the source code.
```bash
$ sudo dnf install python3 ninja-build gcc flex bison git lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel libyaml-devel iproute mongo-c-driver-devel
$ sudo dnf install python3 ninja-build gcc flex bison git lksctp-tools-devel libidn-devel gnutls-devel libgcrypt-devel openssl-devel cyrus-sasl-devel libyaml-devel mongo-c-driver-devel libmicrohttpd-devel libcurl-devel iproute
```
Install Meson using Python.
Install Meson
```bash
$ sudo pip3 install --upgrade pip
$ sudo pip install meson
$ sudo dnf install meson
```
Git clone.
@@ -95,7 +94,7 @@ Check whether the compilation is correct.
$ ninja -C build test
```
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testsimple.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testsimple.pcapng)
{: .notice--info}
You need to perform **the installation process**.

View File

@@ -45,7 +45,7 @@ $ sudo sysctl -w net.inet.ip.forwarding=1
Install the depedencies for building the source code.
```bash
$ sudo pkg install py36-pip ninja gcc bison gsed pkgconf git mongo-c-driver gnutls libgcrypt libidn libyaml
$ sudo pkg install py36-pip ninja gcc bison gsed pkgconf git mongo-c-driver gnutls libgcrypt libidn libyaml libmicrohttpd curl
```
Install Meson using Python.
@@ -76,7 +76,7 @@ Check whether the compilation is correct.
$ sudo ninja -C build test
```
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
**Tip:** You can also check the result of `sudo ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testsimple.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testsimple.pcapng)
{: .notice--info}
You need to perform **the installation process**.

View File

@@ -28,6 +28,11 @@ $ mkdir -p ./data/db
$ mongod --dbpath ./data/db
```
**Tip:** MongoDB is persistent after rebooting with the following commands:
`$ brew services start mongodb-community`
{: .notice--info}
### Setting up TUN device (No persistent after rebooting)
---
@@ -45,7 +50,7 @@ $ sudo ifconfig lo0 alias 127.0.0.5 netmask 255.255.255.255
Enable IP forwarding & Masquerading
```bash
$ sudo sysctl -w net.inet.ip.forwarding=1
$ sudo sh -c "echo 'nat on {en0} from 45.45.0.0/16 to any -> {en0}' > /etc/pf.anchors/org.open5gs"
$ sudo sh -c "echo 'nat on {en0} from 10.45.0.0/16 to any -> {en0}' > /etc/pf.anchors/org.open5gs"
$ sudo pfctl -e -f /etc/pf.anchors/org.open5gs
```
@@ -58,7 +63,7 @@ $ sudo pfctl -e -f /etc/pf.anchors/org.open5gs
Install the depedencies for building the source code.
```bash
$ brew install gnu-sed mongo-c-driver libusrsctp gnutls libgcrypt libidn libyaml pkg-config
$ brew install mongo-c-driver gnutls libgcrypt libidn libyaml libmicrohttpd curl pkg-config
```
Install Meson using Homebrew.
@@ -76,7 +81,7 @@ To compile with meson:
```bash
$ cd open5gs
$ meson build --prefix=`pwd`/install
$ meson build --prefix=`pwd`/install -D c_std=c99
$ ninja -C build
```
@@ -88,7 +93,7 @@ Check whether the compilation is correct.
$ sudo ninja -C build test
```
**Tip:** You can also check the result of `ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testcomplex.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testcomplex.pcapng)
**Tip:** You can also check the result of `sudo ninja -C build test` with a tool that captures packets. If you are running `wireshark`, select the `loopback` interface and set FILTER to `s1ap || gtpv2 || diameter || gtp`. You can see the virtually created packets. [[testsimple.pcapng]]({{ site.url }}{{ site.baseurl }}/assets/pcapng/testsimple.pcapng)
{: .notice--info}
You need to perform **the installation process**.

View File

@@ -0,0 +1,173 @@
---
title: Simple Issue
---
**Note:** This guide assumes you've already installed Open5GS and it's running with it's default values. If you're new to Open5GS check out the [Quickstart Guide]({{ site.url }}{{ site.baseurl }}/docs/guide/01-quickstart)
{: .notice--warning}
## Services Running
#### Confirming All Services are Running
Before we get too far in troubleshooting let's first check all our services are running.
```bash
$ ps aux | grep open5gs
open5gs 3434 0.2 2.8 1074020 27972 ? Ssl 02:39 0:00 /usr/bin/open5gs-pgwd -c /etc/open5gs/pgw.yaml
open5gs 3672 0.0 1.0 922972 10408 ? Ssl 02:39 0:00 /usr/bin/open5gs-sgwd -c /etc/open5gs/sgw.yaml
open5gs 3893 0.1 1.3 958412 13260 ? Ssl 02:39 0:00 /usr/bin/open5gs-hssd -c /etc/open5gs/hss.yaml
open5gs 4011 0.1 1.3 956320 13140 ? Ssl 02:39 0:00 /usr/bin/open5gs-pcrfd -c /etc/open5gs/pcrf.yaml
open5gs 4138 0.3 1.2 986524 12608 ? Ssl 02:40 0:00 /usr/bin/open5gs-mmed -c /etc/open5gs/mme.yaml
root 4198 0.0 0.1 13136 1060 pts/0 S+ 02:40 0:00 grep --color=auto open5gs
```
You should see each of the services above, PGW, SGW, HSS, PCRF & MME all running.
If your instance doesn't show this make sure you're started each service:
```bash
$ systemctl start open5gs-*
```
#### Finding out why a Service isn't Starting
If a service isn't running check the log for that service - logs for each service live in */var/log/open5gs/* where each service logs to it's own file - MME logs in mme.log, PGW logs in pgw.log, and so on.
```bash
$ cat /var/log/open5gs/mme.log
Open5GS daemon v1.0.0
[app] INFO: Configuration: '/etc/open5gs/mme.yaml' (../src/main.c:54)
[app] INFO: File Logging: '/var/log/open5gs/mme.log' (../src/main.c:57)
[mme] ERROR: No sgw.gtpc in '/etc/open5gs/mme.yaml' (../src/mme/mme-context.c:192)
[app] ERROR: Failed to intialize MME (../src/mme/app-init.c:30)
[app] FATAL: Open5GS initialization failed. Aborted (../src/main.c:222)
```
Or, you can use `journalctl` like below to view live log.
```bash
$ journalctl -u open5gs-mmed.service --since today -f
```
In the example above we can see the error - no SGW GTPC address is configured in the mme.yaml file, meaning Open5GS MME is failing to start.
The errors you experience may be different, but if a service is failing to start it's most often due to a misconfiguration issue in one or more of the Open5GS *.yaml* configuration files. The log should tell you which section of the yaml file is missing or invalid.
## eNB Connection Issues
---
When a UE connects to Open5GS MME the log shows the presence of a new S1AP connection the log at */var/log/open5gs/mme.log*:
##### No S1AP Connection
If you're not seeing any S1AP connection attempts check the eNB can contact the IP the MME is on (No firewall / ACLs etc blocking) and that SCTP Traffic is able to be carried across your transmission network.
**Note:** 3GPP defines SCTP as the transport protocol for S1-AP/S1-CP traffic (not TCP/UDP). Not all devices / routers support S1AP, particularly over the Internet.
If you're confident the service is running and connectivity is able to be established across your transmission network, you should see the *SCTP INIT* packets in Wireshark. If you're not seeing these packets go back and check your network.
If you are seeing the SCTP INIT messages and seeing an ABORT after each one, that suggests the SCTP connection is trying to be established. Check that the MME service is started and listening on the interface / IP you're sending traffic to.
##### S1AP Connection Rejected
If you're seeing S1AP Connection attempts but seeing them rejected by Open5GS, the S1AP message show in a packet capture will indicate the rejection reason, as well as in the mme log.
```
$ tail -f /var/log/open5gs/mme.log
[mme] INFO: eNB-S1[10.0.1.14] connection refused!!! (mme-sm.c:176)
```
Typically S1AP connections are rejected due to one of these reasons:
* MNC / MCC in eNB does not match *gummei* and *tai* MCC/MNC pair in (mme.yaml*.
* Tracking Area Code does not match configured TACs in *mme.yaml*.
Each of these can be addressed by editing the relevant section in the MME config in */etc/open5gs/mme.yaml*
__Example of sucesful eNB connection to MME:__
```
$ tail -f /var/log/open5gs/mme.log
[mme] INFO: eNB-S1 accepted[10.0.1.14]:3223 in s1_path module (s1ap-lkpath.c:70)
[mme] INFO: eNB-S1 accepted[10.0.1.14] in master_sm module (mme-sm.c:126)
```
## UE Connection Issues
---
If your network is setup there are a variety of reasons your network may not perform correctly / at all when connecting a UE.
#### UE cannot See Network
If while scanning for the networks on your UE / Phone you're not seeing your network, there's a few things to check:
* Check your eNB is connected to the MME
* Check the eNB status
* Check the UE you are scanning with is capable of working on the frequencies / bands and duplex mode (TDD or FDD) used by the UE
* Check UE is within range of eNB
* Check PLMN is not forbidden on USIM (F-PLMN List)
#### UE Fails to Attach to the Network
Assuming while scanning for networks the UE can see the network, but not connect, the most common issues stem from Authentication.
LTE/E-UTRAN employs *Mutual Authentication* of both the network and the subscriber. This means the credentials in the HSS must match the credentials on the USIM and the credentials in the USIM must match those in the HSS. This means unlike GSM, you cannot use just any SIM and disable crypto, you have to know the details on the USIM or be able to program this yourself in order to authenticate.
If the issue is authentication, the mme and hss log will give you an indication as to which side is rejecting the authentication, the UE or the Network (Open5GS);
__IMSI/Subscriber not present in HSS:__
If the USIM's IMSI is not present in the HSS the HSS will reject the Authentication.
```
$ tail -f /var/log/open5gs/hss.log
[hss] WARNING: Cannot find IMSI in DB : 001000000000001 (hss-context.c:309)
```
__IMSI/Subscriber configured in HSS with wrong credentails:__
If the credentials on the HSS do not match what is configured on the USIM, the USIM will reject the connection (MAC Error).
```
$ tail -f /var/log/open5gs/mme.log
[emm] WARNING: Authentication failure(MAC failure) (emm-sm.c:573)
```
__APN Requested by UE not present in HSS:__
Ensure the APNs requested by the UE are present in the HSS.
#### UE shows "4G" or "LTE" Connection but has no IP Connectivity to the outside World
If your device shows as connected (Includes LTE/4G symbol) there are a few simple things to check to diagnose connectivity issues:
* The PGW can contact the outside world (Can resolve DNS, browse, etc)
* Check if the interface connected to the internet is correctly `NAT` with the `ogstun` interface.
- Ensure that the packets in the `INPUT` chain to the `ogstun` interface are accepted
```
$ sudo iptables -I INPUT -i ogstun -j ACCEPT
```
* Check if the UE's IP can be pinged successfully by performing `ping <IP of UE>` -- [e.g. `ping 10.45.0.2`]
* Configure the firewall correctly. Some operating systems (Ubuntu) by default enable firewall rules to block traffic
- Explicitly disable it to see if it resolves the problem of granting data access to the UE by doing
```
$ sudo ufw disable
```
## Further Debugging
---
Problem with Open5GS can be filed as [GitHub Issues](https://github.com/open5gs/open5gs/issues). Please include the following to get help:
- Attach `*.pcapng` file created by wireskark.
- Attach configuration files at `/etc/open5gs/*.yaml`.
- Attach log files at `/var/log/open5gs/*.log`.
You can modify the configuration file to record more logs.
```diff
diff -u /etc/open5gs/mme.yaml.old /etc/open5gs/mme.yaml
--- mme.yaml.old 2018-04-15 18:28:31.000000000 +0900
+++ mme.yaml 2018-04-15 19:53:10.000000000 +0900
@@ -2,6 +2,7 @@
logger:
file: /var/log/open5gs/mme.log
+ level: debug
parameter:
```
After changing conf files, please restart Open5GS daemons.
```bash
$ sudo systemctl restart open5gs-mmed
$ sudo systemctl restart open5gs-sgwd
```

View File

@@ -0,0 +1,647 @@
---
title: Now in the Github Issue
head_inline: "<style> .blue { color: blue; } </style>"
---
#### Test failed (e.g. `meson test`)
Sometimes you may get a message like the one below due to a problem with the freeDiameter library.
```
$ meson test
...
5/8 open5gs:epc / simple OK 7.69 s
--- command ---
08:06:23 /home/parallels/open5gs/build/tests/epc/simple
--- stdout ---
s1setup-test : SUCCESS
attach-test : SUCCESS
volte-test : SUCCESS
handover-test : SUCCESS
crash-test : SUCCESS
All tests passed.
-------
6/8 open5gs:system / mnc3 FAIL 12.80 s (exit status 1)
--- command ---
08:06:31 /home/parallels/open5gs/build/tests/mnc3/mnc3
--- stdout ---
mnc3-test : ERROR: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:112 ROUTING ERROR 'No remaining suitable candidate to route the message to' for: (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 'Credit-Control-Request' (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 Version: 0x01 (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 Length: 20 (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 Flags: 0xC0 (RP--) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 Command Code: 272 (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 ApplicationId: 16777238 (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 Hop-by-Hop Identifier: 0x00000000 (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 End-to-End Identifier: 0x2875502B (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 {internal data}: src:(nil)(0) rwb:(nil) rt:0 cb:0x564527642502,(nil)(0x7f71a86df418) qry:(nil) asso:0 sess:0x7f7158001140 (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Session-Id'(263) l=8 f=-M val="pgw.localdomain;1585209991;1;app_gx" (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Origin-Host'(264) l=8 f=-M val="pgw.localdomain" (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Origin-Realm'(296) l=8 f=-M val="localdomain" (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Destination-Realm'(283) l=8 f=-M val="localdomain" (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Auth-Application-Id'(258) l=12 f=-M val=16777238 (0x1000016) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'CC-Request-Type'(416) l=12 f=-M val='INITIAL_REQUEST' (1 (0x1)) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'CC-Request-Number'(415) l=12 f=-M val=0 (0x0) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Subscription-Id'(443) l=8 f=-M val=(grouped) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Subscription-Id-Type'(450) l=12 f=-M val='END_USER_IMSI' (1 (0x1)) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Subscription-Id-Data'(444) l=8 f=-M val="310014987654004" (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Supported-Features'(628) vend='3GPP'(10415) l=12 f=V- val=(grouped) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Feature-List-ID'(629) vend='3GPP'(10415) l=16 f=V- val=1 (0x1) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Feature-List'(630) vend='3GPP'(10415) l=16 f=V- val=11 (0xb) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Network-Request-Support'(1024) vend='3GPP'(10415) l=16 f=VM val=1 (0x1) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Framed-IP-Address'(8) l=8 f=-M val=<0A 2D 00 02> (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'IP-CAN-Type'(1027) vend='3GPP'(10415) l=16 f=VM val=5 (0x5) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'RAT-Type'(1032) vend='3GPP'(10415) l=16 f=V- val=1004 (0x3ec) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'QoS-Information'(1016) vend='3GPP'(10415) l=12 f=VM val=(grouped) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'APN-Aggregate-Max-Bitrate-UL'(1041) vend='3GPP'(10415) l=16 f=V- val=1024000000 (0x3d090000) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'APN-Aggregate-Max-Bitrate-DL'(1040) vend='3GPP'(10415) l=16 f=V- val=1024000000 (0x3d090000) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Default-EPS-Bearer-QoS'(1049) vend='3GPP'(10415) l=12 f=V- val=(grouped) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'QoS-Class-Identifier'(1028) vend='3GPP'(10415) l=16 f=VM val=9 (0x9) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Allocation-Retention-Priority'(1034) vend='3GPP'(10415) l=12 f=V- val=(grouped) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Priority-Level'(1046) vend='3GPP'(10415) l=16 f=V- val=15 (0xf) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Pre-emption-Capability'(1047) vend='3GPP'(10415) l=16 f=V- val=1 (0x1) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Pre-emption-Vulnerability'(1048) vend='3GPP'(10415) l=16 f=V- val=0 (0x0) (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: '3GPP-User-Location-Info'(22) vend='3GPP'(10415) l=12 f=VM val=<82 13 00 41 00 33 13 00 41 08 D0 1B 78> (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: '3GPP-MS-TimeZone'(23) vend='3GPP'(10415) l=12 f=VM val=<23 00> (../lib/diameter/common/init.c:116)
: ../subprojects/freeDiameter/extensions/dbg_msg_dumps/dbg_msg_dumps.c:113 AVP: 'Called-Station-Id'(30) l=8 f=-M val=<73 74 61 72 65 6E 74 2E 63 6F 6D> (../lib/diameter/common/init.c:116)
: no_CC-Request-Number (../src/pgw/pgw-fd-path.c:505)
/home/parallels/open5gs/build/src/pgw/../../lib/core/libogscore.so.1(ogs_abort+0x2e)[0x7f71abdbdbf8]
/home/parallels/open5gs/build/src/pgw/open5gs-pgwd(+0x1cb8f)[0x564527642b8f]
/home/parallels/open5gs/build/src/pgw/../../subprojects/freeDiameter/libfdcore/libfdcore.so.7(+0x492d7)[0x7f71ab7702d7]
/home/parallels/open5gs/build/src/pgw/../../subprojects/freeDiameter/libfdcore/libfdcore.so.7(+0x4cb63)[0x7f71ab773b63]
/home/parallels/open5gs/build/src/pgw/../../subprojects/freeDiameter/libfdcore/libfdcore.so.7(+0x4ccef)[0x7f71ab773cef]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7f71aae686db]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7f71aab9188f]
03/26 16:06:43.674ERROR: GTP Timeout : IMSI[310014987654004] Message-Type[32] (../src/sgw/sgw-s11-handler.c:39)
FAILED 1 of 1
Failed Tests Total Fail Failed %
===================================================
mnc3-test 1 1 100.00%
--- stderr ---
03/26 16:06:43.681: [ERROR: GTP Timeout : IMSI[310014987654004] Message-Type[32] (../src/mme/mme-gtp-path.c:110)
Line 202: Condition is false, but expected true
-------
7/8 open5gs:system / volte FAIL 10.57 s (killed by signal 6 SIGABRT)
...
```
I cannot solve the problem exactly at this point.
{: .blue}
Remove all subscriber information using MongoDB Client
```
$ mongo
> use open5gs
switched to db open5gs
> db.subscribers.find() ### Check the test subscriber
> db.subscribers.drop() ### Remove all subscriber
> db.subscribers.find() ### Check that all subscribers are empty
```
Kill all processes.
```bash
$ ps -ef | grep open5gs
$ sudo pkill -9 open5gs-hssd
$ sudo pkill -9 open5gs-pcrfd
$ sudo pkill -9 open5gs-pgwd
$ sudo pkill -9 open5gs-sgwd
$ sudo pkill -9 open5gs-mmed
```
Run `meson test` again
```
$ meson test
ninja: Entering directory `/Users/acetcom/Documents/git/open5gs/build'
ninja: no work to do.
1/8 open5gs:unit / core OK 6.93 s
2/8 open5gs:unit / crypt OK 0.08 s
3/8 open5gs:system / sctp OK 1.09 s
4/8 open5gs:unit / unit OK 0.04 s
5/8 open5gs:epc / simple OK 5.07 s
6/8 open5gs:epc / mnc3 OK 1.18 s
7/8 open5gs:epc / volte OK 2.99 s
8/8 open5gs:epc / csfb OK 6.53 s
Ok: 8
Expected Fail: 0
Fail: 0
Unexpected Pass: 0
Skipped: 0
Timeout: 0
Full log written to /Users/acetcom/Documents/git/open5gs/build/meson-logs/testlog.txt
```
**Note:** If your test result more than once is same as above, there should be no problem with code you modified.
{: .notice--danger}
#### Is it possible to setup IP/NAT table along with Docker?
Enable IP Forward.
```
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
```
The following is the default docker IP/NAT table.
```
$ sudo iptables-save
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
*nat
:PREROUTING ACCEPT [74:4820]
:INPUT ACCEPT [4:208]
:OUTPUT ACCEPT [49:3659]
:POSTROUTING ACCEPT [49:3659]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
*filter
:INPUT ACCEPT [651:514108]
:FORWARD DROP [70:4612]
:OUTPUT ACCEPT [590:63846]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
```
Create **newtables** file as below.
```diff
$ diff -u oldtables newtables
--- oldtables 2019-06-01 23:43:50.354974226 +0900
+++ newtables 2019-06-01 23:44:16.110931684 +0900
@@ -8,6 +8,7 @@
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
+-A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
@@ -26,6 +27,10 @@
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
+-A FORWARD -o ogstun -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A FORWARD -o ogstun -j DOCKER
+-A FORWARD -i ogstun ! -o ogstun -j ACCEPT
+-A FORWARD -i ogstun -o ogstun -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
```
And then, apply **newtables** as below.
```
$ sudo iptables-restore < newtables
```
The above operation is the same as described in the following manuals.
```
### Check IP Tables
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check NAT Tables
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
### Enable IPv4 Forwarding
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
```
#### How to use a different APN for each PGW
By default, MME selects the PGW as the first PGW node. To use a different APN for each PGW, specify gtpc.apn as the APN name. If the HSS uses WebUI to set the PGW IP for each UE, you can use a specific PGW node for each UE.
See the following example.
```
### For reference, see `pgw.yaml`
#------------------------ MME --------------------------
#
# o Two PGW are defined. 127.0.0.3:2123 is used.
# [fe80::3%lo]:2123 is ignored.
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%lo
#
# o One PGW is defined. if prefer_ipv4 is not true,
# [fe80::3%lo] is selected.
# gtpc:
# - addr:
# - 127.0.0.3
# - fe80::3%lo
#
# o Two PGW are defined with a different APN.
# - Note that if PGW IP for UE is configured in HSS,
# the following configurion for this UE is ignored.
# gtpc:
# - addr: 127.0.0.3
# apn: internet
# - addr: 127.0.0.5
# apn: volte
#
# o If APN is omitted, the default APN uses the first PGW node.
# gtpc:
# - addr: 127.0.0.3
# - addr: 127.0.0.5
# apn: volte
#
```
The IP address of the UE can also use a different UE pool depending on the APN.
```
### For reference, see `pgw.yaml`
#
# <UE Pool>
#
# o IPv4 Pool
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
#
# ue_pool:
# addr: 10.45.0.1/16
#
# o IPv4/IPv6 Pool
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
#
# ue_pool:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
#
#
# o Specific APN(e.g 'volte') uses 10.46.0.1/16, cafe:2::1/64
# All other APNs use 10.45.0.1/16, cafe:1::1/64
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add 10.46.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
# $ sudo ip addr add cafe:2::1/64 dev ogstun
#
# ue_pool:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
# - addr: 10.46.0.1/16
# apn: volte
# - addr: cafe:2::1/64
# apn: volte
#
# o Multiple Devices (default: ogstun)
# $ sudo ip addr add 10.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun2
# $ sudo ip addr add 10.46.0.1/16 dev ogstun3
# $ sudo ip addr add cafe:2::1/64 dev ogstun3
#
# ue_pool:
# - addr: 10.45.0.1/16
# - addr: cafe:1::1/64
# dev: ogstun2
# - addr: 10.46.0.1/16
# apn: volte
# dev: ogstun3
# - addr: cafe:2::1/64
# apn: volte
# dev: ogstun3
#
```
#### Failing to run `./open5gs-mmed`
You might be getting the following error after running `./open5gs-mmed`.
```bash
$ ./build/src/mme/open5gs-mmed
10/27 16:45:41.912: [app] FATAL: cannot open file `/Users/acetcom/Documents/git/open5gs/install/etc/open5gs/mme.yaml` (../lib/app/ogs-config.c:67)
10/27 16:45:41.912: [app] FATAL: Open5GS initialization failed. Aborted (../src/main.c:211)
```
You should perform **the installation process**.
```bash
$ ninja -C build install
```
#### How to connect MongoDB server
If you do not start MongoDB, you will get the following error:
```bash
$ ./install/bin/open5gs-hssd
Open5GS daemon v1.0.0
10/27 16:45:00.371: [app] INFO: Configuration: '/Users/acetcom/Documents/git/open5gs/install/etc/open5gs/hss.yaml' (../src/main.c:54)
10/27 16:45:00.372: [app] INFO: File Logging: '/Users/acetcom/Documents/git/open5gs/install/var/log/open5gs/hss.log' (../src/main.c:57)
10/27 16:45:00.377: [dbi] ERROR: Failed to connect to server [mongodb://localhost/open5gs] (../lib/dbi/ogs-mongoc.c:91)
10/27 16:45:00.377: [app] ERROR: Failed to intialize HSS (../src/hss/app-init.c:28)
```
You can start MongoDB using systemctl.
```bash
$ sudo systemctl start mongodb
```
#### I have some error when running `./build/test/epc/simple`
Did you see the following error after executing `./build/test/epc/simple`?
```bash
$ ./build/test/epc/simple
s1setup_test : SUCCESS
attach_test : -Line 134: Condition is false, but expected true
\04/09 15:49:09.285: [esm] FATAL: esm_handle_pdn_connectivity_request: Assertion `SECURITY_CONTEXT_IS_VALID(mme_ue)' failed. (esm_handler.c:29)
/home/acetcom/Documents/git/open5gs/open5gs/lib/ogslib/src/core/.libs/libogscore-1.0.so.0(ogs_abort+0x2b)[0x7f608518271b]
/home/acetcom/Documents/git/open5gs/open5gs/test/.libs/simple(+0x92121)[0x55dc9e274121]
/home/acetcom/Documents/git/open5gs/open5gs/test/.libs/simple(+0x4f5b9)[0x55dc9e2315b9]
```
Remove all subscriber information using MongoDB Client
```
$ mongo
> db.subscribers.find() ### Check the test subscriber
> db.subscribers.drop() ### Remove all subscriber
> db.subscribers.find() ### Check that all subscribers are empty
```
Kill all processes.
```bash
$ ps -ef | grep simple
$ ps -ef | grep open5gs
$ sudo pkill -9 simple
$ sudo pkill -9 open5gs-mmed ...
```
Execute `./build/test/epc/simple`
```bash
$ ./build/test/epc/simple
```
#### My eNB does not support IPv6.
Your eNodeB don't have to support IPv6.
If the sgw.gtpu configuration does not have an IPv6 address, the eNodeB can use IPv4 to connect to the MME and SGW. If the sgw.gtpu setting has an IPv6 address, you can disable the IPv6 address as shown below.
```yaml
parameter:
no_ipv6: true
```
**Note:** This parameter `no_ipv6` is only applied to EPC Elements such as MME, SGW, and so on. The parameter `no_ipv6` does not affect to UE. So, IPv6-enabled UE can connect to Open5GS LTE network.
{: .notice--warning}
#### Unable to add new user by WebUI
It might be a CSRF token mismatch error.
Please, delete corresponding cookies, cache, session data etc.
#### Change Domain from localdomain to anything else
You should configure the domain name on your computer. Otherwise, freeDiameter raise an error.
#### How many of UEs can Open5GS support?
See the [lib/core/ogs-3gpp-types.h](https://github.com/{{ site.github_username }}/open5gs/blob/master/lib/core/ogs-3gpp-types.h).
```
#define MAX_NUM_OF_ENB 128
#define MAX_NUM_OF_UE 128
#define MAX_NUM_OF_SESS 4
#define MAX_NUM_OF_BEARER 4
#define MAX_NUM_OF_TUNNEL 3 /* Num of Tunnel per Bearer */
#define MAX_NUM_OF_PF 16 /* Num of Packet Filter per Bearer */
#define MAX_POOL_OF_UE (MAX_NUM_OF_ENB * MAX_NUM_OF_UE)
#define MAX_POOL_OF_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
#define MAX_POOL_OF_BEARER (MAX_POOL_OF_SESS * MAX_NUM_OF_BEARER)
#define MAX_POOL_OF_TUNNEL (MAX_POOL_OF_BEARER * MAX_NUM_OF_TUNNEL)
#define MAX_POOL_OF_PF (MAX_POOL_OF_BEARER * MAX_NUM_OF_PF)
#define MAX_POOL_OF_DIAMETER_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
```
Currently, the number of UE is limited to `128*128`.
#### What is the Default Configuration?
- Network
```
* MME
S1AP: listen on all address avaiable in system
GTP-C: listen on the first IP address in system
DIAMETER: 127.0.0.2 (No TLS)
* SGW
GTP-C: 127.0.0.2
GTP-U: listen on the first IP address in system
* PGW
GTP-C: Both 127.0.0.3 and [::1]
GTP-U: Both 127.0.0.3 and [::1]
DIAMETER: 127.0.0.3 (No TLS)
* HSS
DIAMETER: 127.0.0.4 (No TLS)
* PCRF
DIAMETER: 127.0.0.5 (No TLS)
```
- GUMMEI, PLMN and TAC
```
* GUMMEI
PLMN ID - MNC: 001, MCC: 01
MME Group : 2
MME Code : 1
* TAI
PLMN ID - MNC: 001, MCC: 01
TAC : 12345
```
- Security
```
* Integrity : EIA1 - Snow 3G
* Ciphering : EEA0 - Nothing
```
- UE Network
```
* IPv4 : 10.45.0.1/16
* IPv6 : cafe::1/64
```
- DNS
```
* IPv4
Primary : 8.8.8.8
Secondary : 8.8.4.4
* IPv6
Primary : 2001:4860:4860::8888
Secondary : 2001:4860:4860::8844
```
#### The parsing errors are caused by tab spaces in the configuration files.
YAML forbids tabs. You should use space instead of tab in Open5GS configuration file.
```markdown
YAML FAQ: Why does YAML forbid tabs?
Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt. Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.
```
#### Cross compilation setup
By default, Open5GS is designed to support the Embedding System. To do so, we introduced pool-based memory management. Unfortunately, we have not tested Open5GS in an embedded environment. I tried to compile on the ARM architecture using Docker and run it with QEMU for your reference.
- We'll use Debian Docker Environment.
```bash
$ git clone https://github.com/acetcom/open5gs
$ cd open5gs/docker
$ DIST=debian TAG=stretch docker-compose run dev
```
- In Docker Container
```bash
$ sudo dpkg --add-architecture armel
$ sudo apt update
$ sudo apt install libsctp-dev:armel libyaml-dev:armel libgnutls28-dev:armel libgcrypt-dev:armel libidn11-dev:armel libssl-dev:armel libmongoc-dev:armel libbson-dev:armel
$ sudo apt install crossbuild-essential-armel
$ sudo apt install qemu
$ git clone https://github.com/acetcom/open5gs
$ cd open5gs/
$ cat << EOF > cross_file.txt
[host_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[binaries]
c = '/usr/bin/arm-linux-gnueabi-gcc'
ar = '/usr/bin/arm-linux-gnueabi-ar'
strip = '/usr/bin/arm-linux-gnueabi-strip'
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'
[properties]
needs_exe_wrapper = true
EOF
$ meson build --prefix=`pwd`/install --cross-file cross_file.txt
$ ninja -C build
$ qemu-arm ./install/bin/open5gs-sgwd
Open5GS daemon v1.0.0
10/28 06:47:36.649: [app] INFO: Configuration: '/home/acetcom/git/open5gs/install/etc/open5gs/sgw.yaml' (../src/main.c:54)
10/28 06:47:36.652: [app] INFO: File Logging: '/home/acetcom/git/open5gs/install/var/log/open5gs/sgw.log' (../src/main.c:57)
Unknown host QEMU_IFLA type: 50
Unknown host QEMU_IFLA type: 51
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 47
Unknown host QEMU_IFLA type: 48
Unknown host QEMU_IFLA type: 43
Unknown host QEMU_IFLA type: 50
Unknown host QEMU_IFLA type: 51
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 47
Unknown host QEMU_IFLA type: 48
Unknown host QEMU_IFLA type: 43
Unknown QEMU_IFLA_INFO_KIND tun
Unknown host QEMU_IFLA type: 50
Unknown host QEMU_IFLA type: 51
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 47
Unknown host QEMU_IFLA type: 48
Unknown host QEMU_IFLA type: 43
10/28 06:47:36.683: [app] INFO: SGW initialize...done (../src/sgw/app-init.c:31)
10/28 06:47:36.696: [gtp] INFO: gtp_server() [127.0.0.2]:2123 (../lib/gtp/path.c:32)
10/28 06:47:36.697: [gtp] INFO: gtp_server() [172.18.0.2]:2152 (../lib/gtp/path.c:32)
^C10/28 06:47:37.324: [app] INFO: SIGINT received (../src/main.c:73)
10/28 06:47:37.325: [app] INFO: Open5GS daemon terminating... (../src/main.c:229)
10/28 06:47:37.337: [app] INFO: SGW terminate...done (../src/sgw/app-init.c:39)
$ qemu-arm ./install/bin/open5gs-hssd
Open5GS daemon v1.0.0
10/28 06:47:39.021: [app] INFO: Configuration: '/home/acetcom/git/open5gs/install/etc/open5gs/hss.yaml' (../src/main.c:54)
10/28 06:47:39.024: [app] INFO: File Logging: '/home/acetcom/git/open5gs/install/var/log/open5gs/hss.log' (../src/main.c:57)
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
qemu: Unsupported syscall: 345
10/28 06:47:39.044: [dbi] INFO: MongoDB URI: 'mongodb://mongodb/open5gs' (../lib/dbi/ogs-mongoc.c:99)
getsockopt level=132 optname=0 not yet supported
10/28 06:47:41.917: [diam] ERROR: ../subprojects/freediameter/libfdcore/sctp.c:86 ERROR: in '(getsockopt(sk, IPPROTO_SCTP, 0, &rtoinfo, &sz))' : Operation not supported (../lib/diameter/common/init.c:116)
10/28 06:47:41.919: [diam] ERROR: ../subprojects/freediameter/libfdcore/sctp.c:778 ERROR: in '((fd_setsockopt_prebind(*sock)))' : Operation not supported (../lib/diameter/common/init.c:116)
10/28 06:47:41.919: [diam] ERROR: ../subprojects/freediameter/libfdcore/cnxctx.c:181 ERROR: in '(fd_sctp_create_bind_server( &cnx->cc_socket, cnx->cc_family, ep_list, port ))' : Operation not supported (../lib/diameter/common/init.c:116)
10/28 06:47:41.919: [diam] ERROR: ../subprojects/freediameter/libfdcore/server.c:355 ERROR: in '(s->conn = fd_cnx_serv_sctp(fd_g_config->cnf_port, empty_conf_ep ? ((void *)0) : &fd_g_config->cnf_endpoints))' : Transport endpoint is not connected (../lib/diameter/common/init.c:116)
10/28 06:47:41.919: [diam] ERROR: ../subprojects/freediameter/libfdcore/core.c:300 ERROR: in '((fd_servers_start()))' : Transport endpoint is not connected (../lib/diameter/common/init.c:116)
10/28 06:47:41.920: [diam] ERROR: ../lib/diameter/common/init.c:62 ERROR: in '(fd_core_start())' : Transport endpoint is not connected (../lib/diameter/common/init.c:116)
10/28 06:47:41.920: [diam] INFO: [6]: ../subprojects/freediameter/libfdcore/core.c:329 Initiating freeDiameter shutdown sequence (2) (../lib/diameter/common/init.c:127)
10/28 06:47:42.057: [hss] FATAL: hss_fd_init: Assertion `ret == 0' failed. (../src/hss/hss-fd-path.c:681)
```
The SCTP module is not included in the QEMU kernel. I believe that if the Linux kernel installed on your target platform contains an SCTP module, it will work normally.
{: .notice--warning}

View File

@@ -35,7 +35,7 @@ If you want to use GPS antenna, setup your devices in the following order:
{: .notice--warning}
Then, setup the USRP B200/B210 as below:
1. **4x Small Antennas** should be connected to USRP Rx/Tx ports (RF-A/RF-B)
1. **Small Antennas** should be connected to USRP Rx/Tx ports (RF-A/RF-B)
2. USRP powered via power supply or over **USB 3.0**
3. USRP **USB 3.0** port connected to your PC
@@ -142,13 +142,16 @@ $ sudo apt install cmake libfftw3-dev libmbedtls-dev libboost-program-options-de
Download and build srsLTE:
```bash
➜ git git clone https://github.com/srsLTE/srsLTE.git
➜ git cd srsLTE
➜ srsLTE git:(master) ✗ mkdir build
➜ srsLTE git:(master)cd build
➜ build git:(master) ✗ cmake ../
➜ build git:(master) ✗ make
➜ build git:(master) ✗ make test
$ git clone https://github.com/srsLTE/srsLTE.git
$ cd srsLTE
$ git checkout release_19_12
$ git rev-parse HEAD
d045213fb9cbf98c83c06d7c17197a9dcbfddacf
$ mkdir build
$ cd build
$ cmake ../
$ make
$ make test
```
#### 3. Open5GS
@@ -172,7 +175,7 @@ The following shows how to install the Web UI of Open5GS.
```bash
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
$ curl -sL http://open5gs.org/static/webui/install | sudo -E bash -
$ curl -sL https://open5gs.org/open5gs/assets/webui/install | sudo -E bash -
```
### Configuration & Running
@@ -315,7 +318,7 @@ target prot opt source destination
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o ogstun -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 ! -o ogstun -j MASQUERADE
```
**Note:** For the first time, it is a good condition if you do not have any rules in the IP/NAT tables. If a program such as docker has already set up a rule, you will need to add a rule differently.
@@ -325,10 +328,10 @@ $ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o ogstun -j MASQUERADE
Change back to the srsENB source directory and copy the main config example as well as all additional config files for RR, SIB and DRB.
```bash
➜ srsLTE git:(master) cp srsenb/enb.conf.example srsenb/enb.conf
➜ srsLTE git:(master) cp srsenb/rr.conf.example srsenb/rr.conf
➜ srsLTE git:(master) cp srsenb/sib.conf.example srsenb/sib.conf
➜ srsLTE git:(master) cp srsenb/drb.conf.example srsenb/drb.conf
$ cp srsenb/enb.conf.example srsenb/enb.conf
$ cp srsenb/rr.conf.example srsenb/rr.conf
$ cp srsenb/sib.conf.example srsenb/sib.conf
$ cp srsenb/drb.conf.example srsenb/drb.conf
```
You should check your phone frequency. If your phone does not support Band-3, you should use a different DL EARFCN value.
@@ -383,52 +386,26 @@ If you do not use the GPS-DO, you should use:
Now, run the srsENB as follows:
```bash
➜ srsLTE git:(master) cd srsenb/
➜ srsenb git:(master) sudo ../build/srsenb/src/srsenb ./enb.conf
linux; GNU C++ version 6.2.0 20161027; Boost_106200; UHD_003.009.005-0-unknow
$ cd srsenb/
$ sudo ../build/srsenb/src/srsenb ./enb.conf
Built in Release mode using commit d045213fb on branch HEAD.
--- Software Radio Systems LTE eNodeB ---
Reading configuration file ./enb.conf...
-- Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex...
Opening USRP with args: "",master_clock_rate=30.72e6
-- Detected Device: B200
-- Loading FPGA image: /usr/share/uhd/images/usrp_b200_fpga.bin... done
-- Operating over 'USB 2'.
-- Detecting internal GPSDO.... 'No GPSDO found'
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Asking for clock rate 30.720000 MHz...
-- Actually got clock rate 30.720000 MHz.
-- Performing timer loopback test... pass
Setting frequency: DL=1845.0 Mhz, UL=1750.0 MHz
Setting Sampling frequency 11.52 MHz
==== eNodeB started ===
Type <t> to view trace
```
If you see the `No GPSDO found`, please exit the program with Ctrl-C.
And also, if you see the `USB 2`, it will not be working properly.
The following console output is the correct result of srsENB.
```bash
linux; GNU C++ version 6.2.0 20161027; Boost_106200; UHD_003.009.005-0-unknow
--- Software Radio Systems LTE eNodeB ---
Reading configuration file ./enb.conf...
Opening USRP with args: "",master_clock_rate=30.72e6
-- Detected Device: B200
-- Operating over USB 3.
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Asking for clock rate 30.720000 MHz...
-- Actually got clock rate 30.720000 MHz.
-- Performing timer loopback test... pass
Opening 1 RF devices with 1 RF channels...
[INFO] [UHD] linux; GNU C++ version 7.4.0; Boost_106501; UHD_3.14.1.1-release
[INFO] [LOGGING] Fastpath logging disabled at runtime.
Opening USRP with args: type=b200,master_clock_rate=23.04e6
[INFO] [B200] Detected Device: B200
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
[INFO] [B200] Asking for clock rate 23.040000 MHz...
[INFO] [B200] Actually got clock rate 23.040000 MHz.
Setting frequency: DL=1845.0 Mhz, UL=1750.0 MHz
Setting Sampling frequency 11.52 MHz

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,244 @@
---
title: Dockerized VoLTE Setup
head_inline: "<style> .blue { color: blue; } </style>"
---
Setup description:
- MCC: 001, MNC: 01
- Docker-compose
- srsENB + USRP B210 or a commercial eNB
- Sysmocom USIM - sysmoUSIM-SJS1
- UE: Mi 9 Pro 5G. Other UE are being tested.
{: .blue}
#### 0. Introduction
This tutorial introduces an install-and-run lab for Open5GS + Kamailio IMS
VoLTE study, a follow-up project of [Open5GS Tutorial: VoLTE Setup with Kamailio IMS and Open5GS](https://open5gs.org/open5gs/docs/tutorial/02-VoLTE-setup/).
The tutorial is based on Herle Supreeth's [docker_open5gs](https://github.com/herlesupreeth/docker_open5gs) and his fork of Open5GS and Kamailio.
The main purpose is to save researchers' and students' time to debug for a
minimum-viable environment before actual study can be proceeded.
**Important notice before you start**
1. Herle Supreeth's fork of Kamailio is used to support IPsec.
1. Java 7 is downloaded from an alternative location. You have to agree with
Oracle's term of service and have an Oracle account, to legally use Java SDK
7u80. By using this repo, I assume you have the legal right to use it and
hold no liability.
You have to prepare IMSI, Ki, OP (yes, not **OPc**), SQN of your SIM cards.
Even though Open5GS supports OPc, FHoSS merely takes OP. You may also want to
disable SQN checking in the SIM card (even though we are not sure whether it is
effective.) Check out https://github.com/herlesupreeth/sysmo-usim-tool for a
slightly modified sysmo-usim-tool.
#### 1. Prepare SIM cards for VoLTE
**N.B.**
1. Wrong KIC / KID / KIK bricks your SIM card.
1. Use MCC = 001, MNC = 01 for a testing network, unless you know your MCC/MNC is supported by Android Carrier Privileges.
Refer to: https://osmocom.org/projects/cellular-infrastructure/wiki/VoLTE_IMS_Android_Carrier_Privileges
* gp --key-enc KIC1 --key-mac KID1 --key-dek KIK1 -lvi
* gp --key-enc KIC1 --key-mac KID1 --key-dek KIK1 --unlock
* gp --install applet.cap
* gp -a 00A4040009A00000015141434C0000 -a 80E2900033F031E22FE11E4F06FFFFFFFFFFFFC114E46872F28B350B7E1F140DE535C2A8D5804F0BE3E30DD00101DB080000000000000001
* gp --acr-list
If you use gp.jar from Herle Supreeth's [CoSIM Wiki](https://github.com/herlesupreeth/CoIMS_Wiki), replace `gp --acr-list` with `gp --acr-list-aram`.
#### 2. Build Open5GS, Kamailio with docker-compose
Mandatory requirements:
* [docker-ce](https://docs.docker.com/install/linux/docker-ce/ubuntu)
* [docker-compose](https://docs.docker.com/compose)
Install docker-compose and make sure it works before going forward.
Clone the repository and build base docker images of open5gs and Kamailio:
```
git clone https://github.com/miaoski/docker_open5gs
cd docker_open5gs/base
docker build --no-cache --force-rm -t docker_open5gs .
cd ../kamailio_base
docker build --no-cache --force-rm -t open5gs_kamailio .
cd ..
docker-compose build --no-cache
# Copy DNS setting to containers. Do this whenever you change IP in .env
./copy-env.sh
# Start MySQL and MongoDB first, in order to initialize the databases
docker-compose up mongo mysql dns
# To start Open5GS core network without IMS
docker-compose up hss mme pcrf pgw sgw
# To start IMS
docker-compose up rtpengine fhoss pcscf icscf scscf
# To test whether DNS is properly running
./test-dns.sh
```
You may want to review `.env` for IP allocation.
#### 3. (Optional) Run srsENB in a separate container
I use srsENB and USRP B210 in the lab. Sometimes you may want to restart
srsENB while keeping the core network running. It is thus recommended to run
srsENB separately.
Edit `.env` first to set EARFCN, TX_GAIN, RX_GAIN. Thereafter,
```
docker-compose -f srsenb.yaml build --no-cache
docker-compose -f srsenb.yaml up
```
#### 4. Configuration and register two UE
The configuration files for each of the Core Network component can be found
under their respective folder. Edit the .yaml files of the components and run
`docker-compose build` again.
Open (http://<DOCKER_HOST_IP>:3000) in a web browser, where <DOCKER_HOST_IP> is
the IP of the machine/VM running the open5gs containers. Login with following
credentials
```
Username : admin
Password : 1423
```
Follow the instructions in [VoLTE Setup](https://open5gs.org/open5gs/docs/tutorial/02-VoLTE-setup/):
- Step 18, set IMSI, Ki, OP, SQN and APN of your SIM cards.
**Important!** Set the type of both APN to IPv4. Kamailio does not support VoLTE over
IPv6 at the moment. (See the screenshot below.)
- Step 20, add IMS subscriptions to FHoSS.
![Set both type to IPv4 only](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/subscriber-type-ipv4.png)
For already running systems, copy SQN from Open5GS and type it in FHoSS. You
can type SQN in decimal. FHoSS will automagically convert it to hex.
Pay special attention to copy/paste. You might have leading or trailing spaces
in FHoSS, resulting in failed connections!
#### 5. Debugging with Wireshark
Thanks to Open5GS, the topology is super similar to [SAE on Wikipedia](https://en.wikipedia.org/wiki/System_Architecture_Evolution#/media/File:Evolved_Packet_Core.svg).
![Network topology of Open5GS + IMS](https://raw.githubusercontent.com/miaoski/docker_open5gs/master/network-topology.png)
**APN**
On your cellphone, there should be *internet* and *ims*.
<img src="https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/apn-on-cellphone.jpg" width="320" />
CoIMS should look like the one below. If you don't know what CoIMS is, please
refer to step 23 of VoLTE Setup.
<img src="https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/coims.jpg" width="320" />
**Networking issues**
PCAP files of successful calls can be found on [VoLTE Setup](https://open5gs.org/open5gs/docs/tutorial/02-VoLTE-setup/).
When DNS is not properly set, you may end up with 478 Unresolvable destination (478/SL):
![478 unresolvable destination](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/478-unresolvable-destination.png)
If the port if not open, or DNS is not properly configured, the phone cannot
reach P-CSCF and fails.
![RST at port 5060](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/RST-5060.png)
If there is an NAT between PGW and P-CSCF, IPsec-NAT would not work, and the
PCAP looks like the one below. N.B. that you need to run P-CSCF as root, in
order to add xfrm state and policy.
![401 Unauthorized](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/401-unauthorized.png)
#### 6. Successful calls
Herle Supreeth has shared PCAP files of successful calls, including
- [IPSec UE registration for VoLTE]({{ site.url }}{{ site.baseurl }}/assets/pcapng/ipsec_reg.pcapng)
- [Non-IPSec UE registration for VoLTE]({{ site.url }}{{ site.baseurl }}/assets/pcapng/nonipsec_reg.pcapng)
- [IPSec UE to IPSec UE calling]({{ site.url }}{{ site.baseurl }}/assets/pcapng/ipsec_to_ipsec_call.pcapng)
- [Non-IPSec UE to IPSec UE calling]({{ site.url }}{{ site.baseurl }}/assets/pcapng/nonipsec_to_ipsec_call.pcapng)
- [IPSec UE to Non-IPSec UE calling]({{ site.url }}{{ site.baseurl }}/assets/pcapng/ipsec_to_nonipsec_call.pcapng)
The successful calls were made with a commercial eNB (in his case a Casa
smallcell), while srsENB the ACK takes a very long time to reach the UE,
resulting in disconnected calls.
**UE registration**
![UE registration with IPSec](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/ue-ipsec.png)
From the screenshot, we see a UE that supports IPSec got a response from
S-CSCF, indicating that ipsec-3gpp is supported, protocol is ESP (ethernet
proto 50, IPSec). Client port (port-c) is 5100 and server port (port-s) 6100.
Refer to [IMS/SIP - Basic Procedures](https://www.sharetechnote.com/html/IMS_SIP_Procedure_Reg_Auth_IPSec.html) if you want to know more.
Also, notice that packets after 401 Unauthorized are transmitted over ESP.
If a UE does not support IPSec, you don't see the "security-server", as shown below:
![UE registration without IPSec](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/ue-noipsec.png)
**VoLTE calls**
![ipsec to ipsec call](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/ipsec-to-ipsec%20calls.png)
The Wireshark above shows that after several IPSec (ESP) packets, S-CSCF is
sending a SIP INVITE for UE 03 to UE 04. To be more precise,
```
Request-Line: INVITE sip:0398765432100;phone-context=0498765432100@0498765432100;user=phone SIP/2.0
...
Record-Route URI: sip:mo@10.4.128.21:6101;lr=on;ftag=7b3fae13;rm=8;did=078.654
```
The SIP port of the caller (`contact`) will also be passed to the callee,
```
Contact URI: sip:0498765432100@192.168.101.3:6400;alias=192.168.101.3~6401~1
```
After S-CSCF forwarded the INVITE to P-CSCF, it returns a 100 Trying, and contacts with the callee via IPSec:
![ipsec callee](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/ipsec-to-ipsec%20callee.png)
This can be contrasted when the callee does not support IPSec. After 100
Trying, a UE that does not support IPSec is sent a SIP INVITE in clear text:
![non-ipsec callee](https://raw.githubusercontent.com/miaoski/docker_open5gs/gh-pages/screenshots/ipsec-to-noipsec.png)
#### 7. Known issues
- IPv6 is not supported.
#### 8. References
- [https://github.com/onmyway133/blog/issues/284](https://github.com/onmyway133/blog/issues/284)
- [https://realtimecommunication.wordpress.com/2015/05/26/at-your-service/](https://realtimecommunication.wordpress.com/2015/05/26/at-your-service/)
- [https://www.sharetechnote.com/html/Handbook_LTE_VoLTE.html](https://www.sharetechnote.com/html/Handbook_LTE_VoLTE.html)

View File

@@ -4,17 +4,17 @@ title: About
permalink: /about/
---
Open5GS is a C-language Open Source implementation of the 3GPP Evolved Packet Core, i.e. the core network of an LTE network.
Open5GS is a C-language Open Source implementation of 5GC and EPC, i.e. the core network of NR/LTE network.
#### Supported Features
---
- LTE release 14 complient
- Release-16 compliant
- AES, Snow3G, ZUC algorithms for encryption
- Support of USIM cards using Milenage
- Multiple PDN support
- S1/X2 Handover
- IPv6 support
- Multiple PDU session resource(EPC only)
- S1/X2 Handover(EPC only)
- CSFB(Circuit Switched Fall Back) and SMSoS(SMS Over SGs)
- VoLTE(Voice over LTE)

30
docs/_pages/cla.md Normal file
View File

@@ -0,0 +1,30 @@
---
layout: page
title: Contributor License Agreement
permalink: /cla/
---
### 1. What is a Copyright License Agreement (CLA) and why do I need one?
A Copyright License Agreement is a legal document in which you state you are entitled to contribute the code/documentation/translation to the project youre contributing to and are willing to have it used in distributions and derivative works. This means that should there be any kind of legal issue in the future as to the origins and ownership of any particular piece of code, then that project has the necessary forms on file from the contributor(s) saying they were permitted to make this contribution.
The CLA also ensures that once you have provided a contribution, you cannot try to withdraw permission for its use at a later date. People and companies can therefore use that software, confident that they will not be asked to stop using pieces of the code at a later date.
The agreements used by the Open5GS project are standard documents provided by Project Harmony, a community-centered group focused on contributor agreements for free and open source software (FOSS). For more information, see [www.harmonyagreements.org](http://www.harmonyagreements.org).
### 2. How do I complete and submit the CLA?
The Open5GS CLAs can be found as below.
- [I am an individual]({{ site.url }}{{ site.baseurl }}/assets/cla/Open5GS-Individual.pdf)...(revision 2020-05-23)
- [I am a legal entity (corporation)]({{ site.url }}{{ site.baseurl }}/assets/cla//Open5GS-Entity.pdf)...(revision 2020-05-23)
**(Email)** Download the appropriate CLA, then print, sign and scan the document before sending by email to [acetcom@gmail.com](mailto:acetcom@gmail.com).
**(Electronic submission)** If you're contributing through a pull request to Open5GS project on Github, please read its acceptance by going back to GitHub and accepting electronically.
### 3. How will my contributions to Open5GS be used?
Through the license agreements, we ask you to grant us permission to use your contributions within Open5GS and to continue to provide Open5GS under open-source and another licenses and within proprietary products. As we do not ask for copyright assignment, you retain complete ownership of your contributions and have the same rights to use or license those contributions which you would have had without entering into a license agreement.
If you have any questions about Open5GS licensing and contributions, please contact us at [acetcom@gmail.com](mailto:acetcom@gmail.com)

View File

@@ -5,14 +5,23 @@ permalink: /docs/
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
- What's New?
- [Installing 5G Core](new/02-installing-5g-core)
- User's Guide
- [Quickstart](guide/01-quickstart)
- [Building Open5GS from Sources](guide/02-building-open5gs-from-sources)
- [Splitting Network Elements](guide/03-splitting-network-elements)
- [Setting up Kamailio IMS](guide/04-setting-up-kamailio-IMS)
- Tutorials
- [Your First LTE](tutorial/01-your-first-lte)
- [VoLTE Setup with Kamailio IMS and Open5GS](tutorial/02-VoLTE-setup)
- [Dockerized VoLTE Setup](tutorial/03-VoLTE-dockerized)
- [Kubernetes Open5GS Deployment](https://dev.to/infinitydon/virtual-4g-simulation-using-kubernetes-and-gns3-3b7k?fbclid=IwAR1p99h13a-mCfejanbBQe0H0-jp5grXkn5mWf1WrTHf47UtegB2-UHGGZQ)
- Troubleshooting
- [Simple Issues](troubleshoot/01-simple-issues)
- [Now in Github Issues](troubleshoot/02-now-in-github-issues)
- Platform Specific Notes
- [Debian/Ubuntu](platform/01-debian-ubuntu)

View File

@@ -4,468 +4,17 @@ title: FAQ
permalink: /faq/
---
#### Is it possible to setup IP/NAT table along with Docker?
#### What are the Open5GS license terms?
Enable IP Forward.
```
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
```
Open5GS is licensed under the GNU Affero General Public License (AGPL), Version 3.0.
The following is the default docker IP/NAT table.
#### Are there any companies providing commercial support for Open5GS?
```
$ sudo iptables-save
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
*nat
:PREROUTING ACCEPT [74:4820]
:INPUT ACCEPT [4:208]
:OUTPUT ACCEPT [49:3659]
:POSTROUTING ACCEPT [49:3659]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
# Generated by iptables-save v1.6.1 on Sat Jun 1 23:43:50 2019
*filter
:INPUT ACCEPT [651:514108]
:FORWARD DROP [70:4612]
:OUTPUT ACCEPT [590:63846]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
```
[sysmocom](https://sysmocom.de/) is providing commercial services around Open5GS,
including support, development, consulting, training and system integration.
Create **newtables** file as below.
Please contact [Harald Welte \<sales@sysmocom.de\>](mailto:sales@sysmocom.de) for any related inquiries.
```diff
$ diff -u oldtables newtables
--- oldtables 2019-06-01 23:43:50.354974226 +0900
+++ newtables 2019-06-01 23:44:16.110931684 +0900
@@ -8,6 +8,7 @@
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
+-A POSTROUTING -s 45.45.0.0/16 ! -o ogstun -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat Jun 1 23:43:50 2019
@@ -26,6 +27,10 @@
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
+-A FORWARD -o ogstun -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A FORWARD -o ogstun -j DOCKER
+-A FORWARD -i ogstun ! -o ogstun -j ACCEPT
+-A FORWARD -i ogstun -o ogstun -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
```
#### Are there any success stories about Open5GS deployments?
And then, apply **newtables** as below.
```
$ sudo iptables-restore < newtables
```
The above operation is the same as described in the following manuals.
```
### Check IP Tables
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
### Check NAT Tables
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
### Enable IPv4 Forwarding
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
### Add NAT Rule
$ sudo iptables -t nat -A POSTROUTING -s 45.45.0.0/16 ! -o ogstun -j MASQUERADE
```
#### How to use a different APN for each PGW
By default, MME selects the PGW as the first PGW node. To use a different APN for each PGW, specify gtpc.apn as the APN name. If the HSS uses WebUI to set the PGW IP for each UE, you can use a specific PGW node for each UE.
See the following example.
```
### For reference, see `pgw.yaml`
#------------------------ MME --------------------------
#
# o Two PGW are defined. 127.0.0.3:2123 is used.
# [fe80::3%lo]:2123 is ignored.
# gtpc:
# - addr: 127.0.0.3
# - addr: fe80::3%lo
#
# o One PGW is defined. if prefer_ipv4 is not true,
# [fe80::3%lo] is selected.
# gtpc:
# - addr:
# - 127.0.0.3
# - fe80::3%lo
#
# o Two PGW are defined with a different APN.
# - Note that if PGW IP for UE is configured in HSS,
# the following configurion for this UE is ignored.
# gtpc:
# - addr: 127.0.0.3
# apn: internet
# - addr: 127.0.0.5
# apn: volte
#
# o If APN is omitted, the default APN uses the first PGW node.
# gtpc:
# - addr: 127.0.0.3
# - addr: 127.0.0.5
# apn: volte
#
```
The IP address of the UE can also use a different UE pool depending on the APN.
```
### For reference, see `pgw.yaml`
#
# <UE Pool>
#
# o IPv4 Pool
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
#
# ue_pool:
# addr: 45.45.0.1/16
#
# o IPv4/IPv6 Pool
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
#
#
# o Specific APN(e.g 'volte') uses 45.46.0.1/16, cafe:2::1/64
# All other APNs use 45.45.0.1/16, cafe:1::1/64
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
# $ sudo ip addr add 45.46.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun
# $ sudo ip addr add cafe:2::1/64 dev ogstun
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
# - addr: 45.46.0.1/16
# apn: volte
# - addr: cafe:2::1/64
# apn: volte
#
# o Multiple Devices (default: ogstun)
# $ sudo ip addr add 45.45.0.1/16 dev ogstun
# $ sudo ip addr add cafe:1::1/64 dev ogstun2
# $ sudo ip addr add 45.46.0.1/16 dev ogstun3
# $ sudo ip addr add cafe:2::1/64 dev ogstun3
#
# ue_pool:
# - addr: 45.45.0.1/16
# - addr: cafe:1::1/64
# dev: ogstun2
# - addr: 45.46.0.1/16
# apn: volte
# dev: ogstun3
# - addr: cafe:2::1/64
# apn: volte
# dev: ogstun3
#
```
#### How to connect MongoDB server
If you do not start MongoDB, you will get the following error:
```bash
$ ./install/bin/open5gs-hssd
Open5GS daemon v1.0.0
10/27 16:45:00.371: [app] INFO: Configuration: '/Users/acetcom/Documents/git/open5gs/install/etc/open5gs/hss.yaml' (../src/main.c:54)
10/27 16:45:00.372: [app] INFO: File Logging: '/Users/acetcom/Documents/git/open5gs/install/var/log/open5gs/hss.log' (../src/main.c:57)
10/27 16:45:00.377: [dbi] ERROR: Failed to connect to server [mongodb://localhost/open5gs] (../lib/dbi/ogs-mongoc.c:91)
10/27 16:45:00.377: [app] ERROR: Failed to intialize HSS (../src/hss/app-init.c:28)
```
You can start MongoDB using systemctl.
```bash
$ sudo systemctl start mongodb
```
#### Failing to run `./open5gs-mmed`
You might be getting the following error after running `./open5gs-mmed`.
```bash
$ ./build/src/mme/open5gs-mmed
10/27 16:45:41.912: [app] FATAL: cannot open file `/Users/acetcom/Documents/git/open5gs/install/etc/open5gs/mme.yaml` (../lib/app/ogs-config.c:67)
10/27 16:45:41.912: [app] FATAL: Open5GS initialization failed. Aborted (../src/main.c:211)
```
You should perform **the installation process**.
```bash
$ make install
```
#### I have some error when running `./build/test/simple/simple`
Did you see the following error after executing `./build/test/simple/simple`?
```bash
$ ./build/test/simple/simple
s1setup_test : SUCCESS
attach_test : -Line 134: Condition is false, but expected true
\04/09 15:49:09.285: [esm] FATAL: esm_handle_pdn_connectivity_request: Assertion `SECURITY_CONTEXT_IS_VALID(mme_ue)' failed. (esm_handler.c:29)
/home/acetcom/Documents/git/open5gs/open5gs/lib/ogslib/src/core/.libs/libogscore-1.0.so.0(ogs_abort+0x2b)[0x7f608518271b]
/home/acetcom/Documents/git/open5gs/open5gs/test/.libs/testcomplex(+0x92121)[0x55dc9e274121]
/home/acetcom/Documents/git/open5gs/open5gs/test/.libs/testcomplex(+0x4f5b9)[0x55dc9e2315b9]
```
Remove all subscriber information using MongoDB Client
```
$ mongo
> db.subscribers.find() ### Check the test subscriber
> db.subscribers.drop() ### Remove all subscriber
> db.subscribers.find() ### Check that all subscribers are empty
```
Kill all processes.
```bash
$ ps -ef | grep simple
$ ps -ef | grep open5gs
$ sudo pkill -9 simple
$ sudo pkill -9 open5gs-mmed ...
```
Execute `./build/test/simple/simple`
```bash
$ ./build/test/simple/simple
```
#### My eNB does not support IPv6.
Your eNodeB don't have to support IPv6.
If the sgw.gtpu configuration does not have an IPv6 address, the eNodeB can use IPv4 to connect to the MME and SGW. If the sgw.gtpu setting has an IPv6 address, you can disable the IPv6 address as shown below.
```yaml
parameter:
no_ipv6: true
```
**Note:** This parameter `no_ipv6` is only applied to EPC Elements such as MME, SGW, and so on. The parameter `no_ipv6` does not affect to UE. So, IPv6-enabled UE can connect to Open5GS LTE network.
{: .notice--warning}
#### Unable to add new user by WebUI
It might be a CSRF token mismatch error.
Please, delete corresponding cookies, cache, session data etc.
#### Change Domain from localdomain to anything else
You should configure the domain name on your computer. Otherwise, freeDiameter raise an error.
#### How many of UEs can Open5GS support?
See the [lib/core/ogs-3gpp-types.h](https://github.com/{{ site.github_username }}/open5gs/blob/master/lib/core/ogs-3gpp-types.h).
```
#define MAX_NUM_OF_ENB 128
#define MAX_NUM_OF_UE 128
#define MAX_NUM_OF_SESS 4
#define MAX_NUM_OF_BEARER 4
#define MAX_NUM_OF_TUNNEL 3 /* Num of Tunnel per Bearer */
#define MAX_NUM_OF_PF 16 /* Num of Packet Filter per Bearer */
#define MAX_POOL_OF_UE (MAX_NUM_OF_ENB * MAX_NUM_OF_UE)
#define MAX_POOL_OF_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
#define MAX_POOL_OF_BEARER (MAX_POOL_OF_SESS * MAX_NUM_OF_BEARER)
#define MAX_POOL_OF_TUNNEL (MAX_POOL_OF_BEARER * MAX_NUM_OF_TUNNEL)
#define MAX_POOL_OF_PF (MAX_POOL_OF_BEARER * MAX_NUM_OF_PF)
#define MAX_POOL_OF_DIAMETER_SESS (MAX_POOL_OF_UE * MAX_NUM_OF_SESS)
```
Currently, the number of UE is limited to `128*128`.
#### What is the Default Configuration?
- Network
```
* MME
S1AP: listen on all address avaiable in system
GTP-C: listen on the first IP address in system
DIAMETER: 127.0.0.2 (No TLS)
* SGW
GTP-C: 127.0.0.2
GTP-U: listen on the first IP address in system
* PGW
GTP-C: Both 127.0.0.3 and [::1]
GTP-U: Both 127.0.0.3 and [::1]
DIAMETER: 127.0.0.3 (No TLS)
* HSS
DIAMETER: 127.0.0.4 (No TLS)
* PCRF
DIAMETER: 127.0.0.5 (No TLS)
```
- GUMMEI, PLMN and TAC
```
* GUMMEI
PLMN ID - MNC: 001, MCC: 01
MME Group : 2
MME Code : 1
* TAI
PLMN ID - MNC: 001, MCC: 01
TAC : 12345
```
- Security
```
* Integrity : EIA1 - Snow 3G
* Ciphering : EEA0 - Nothing
```
- UE Network
```
* IPv4 : 45.45.0.1/16
* IPv6 : cafe::1/64
```
- DNS
```
* IPv4
Primary : 8.8.8.8
Secondary : 8.8.4.4
* IPv6
Primary : 2001:4860:4860::8888
Secondary : 2001:4860:4860::8844
```
#### The parsing errors are caused by tab spaces in the configuration files.
YAML forbids tabs. You should use space instead of tab in Open5GS configuration file.
```markdown
YAML FAQ: Why does YAML forbid tabs?
Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt. Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.
```
#### Cross compilation setup
By default, Open5GS is designed to support the Embedding System. To do so, we introduced pool-based memory management. Unfortunately, we have not tested Open5GS in an embedded environment. I tried to compile on the ARM architecture using Docker and run it with QEMU for your reference.
- We'll use Debian Docker Environment.
```bash
$ git clone https://github.com/acetcom/open5gs
$ cd open5gs/docker
$ DIST=debian docker-compose run dev
```
- In Docker Container
```bash
$ sudo dpkg --add-architecture armel
$ sudo apt update
$ sudo apt install libsctp-dev:armel libyaml-dev:armel libgnutls28-dev:armel libgcrypt-dev:armel libidn11-dev:armel libssl-dev:armel libmongoc-dev:armel libbson-dev:armel
$ sudo apt install crossbuild-essential-armel
$ sudo apt install qemu
$ git clone https://github.com/acetcom/open5gs
$ cd open5gs/
$ cat << EOF > cross_file.txt
[host_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[binaries]
c = '/usr/bin/arm-linux-gnueabi-gcc'
ar = '/usr/bin/arm-linux-gnueabi-ar'
strip = '/usr/bin/arm-linux-gnueabi-strip'
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'
exe_wrapper = 'qemu'
[properties]
needs_exe_wrapper = true
EOF
$ meson build --prefix=`pwd`/install --cross-file cross_file.txt
$ ninja -C build
$ ./install/bin/open5gs-sgwd
./install/bin/open5gs-sgwd
Open5GS daemon v1.0.0
10/27 08:37:33.158: [app] INFO: Configuration: '/home/acetcom/git/open5gs/install/etc/open5gs/sgw.yaml' (../src/main.c:54)
10/27 08:37:33.166: [app] INFO: File Logging: '/home/acetcom/git/open5gs/install/var/log/open5gs/sgw.log' (../src/main.c:57)
Unknown QEMU_IFLA_INFO_KIND ipip
Unknown QEMU_IFLA_INFO_KIND ip6tnl
10/27 08:37:33.225: [app] INFO: SGW initialize...done (../src/sgw/app-init.c:31)
10/27 08:37:33.263: [gtp] INFO: gtp_server() [127.0.0.2]:2123 (../lib/gtp/path.c:32)
10/27 08:37:33.265: [gtp] INFO: gtp_server() [172.20.0.4]:2152 (../lib/gtp/path.c:32)
./install/bin/open5gs-hssd
Open5GS daemon v1.0.0
10/27 08:37:45.754: [app] INFO: Configuration: '/home/acetcom/git/open5gs/install/etc/open5gs/hss.yaml' (../src/main.c:54)
10/27 08:37:45.762: [app] INFO: File Logging: '/home/acetcom/git/open5gs/install/var/log/open5gs/hss.log' (../src/main.c:57)
10/27 08:37:45.868: [dbi] INFO: MongoDB URI: 'mongodb://mongodb/open5gs' (../lib/dbi/ogs-mongoc.c:99)
^Cgetsockopt level=132 optname=0 not yet supported
```
The SCTP module is not included in the QEMU kernel. I believe that if the Linux kernel installed on your target platform contains an SCTP module, it will work normally.
{: .notice--warning}
See [https://github.com/open5gs/open5gs/issues/360](https://github.com/open5gs/open5gs/issues/360)

View File

@@ -0,0 +1,46 @@
---
title: "v1.1.0 - Stabilize Open5GS Packages"
date: 2019-12-06 20:16:00 +0900
categories:
- Release
tags:
- News
- Release
head_inline: "<style> ul { padding-bottom: 1em; } </style>"
---
#### New Feature
- Support for Static IP address ([#306](https://github.com/open5gs/open5gs/pull/306)) -- [spencersevilla](https://github.com/spencersevilla)
#### Enhancement
- Upgrade `freeDiameter` to version 1.3.2
- Build with `usrsctp` using MESON subproject
- Changes default prefix ([#307](https://github.com/open5gs/open5gs/pull/307)) -- [aleksander0m](https://github.com/aleksander0m)
- ogs_assert() to ogs_expect() ([#314](https://github.com/open5gs/open5gs/pull/314)) -- [laf0rge](https://github.com/laf0rge), [spencersevilla](https://github.com/spencersevilla)
#### Specification Issues
- Include PGW-C/U F-TEID on SGW S11 Create Session Response ([#300](https://github.com/open5gs/open5gs/issues/300)) -- [gusbourg](https://github.com/gusbourg)
- Include Bearer Context IE(with Cause) on SGW S11 Modify Bearer Response ([#301](https://github.com/open5gs/open5gs/issues/301)) -- [gusbourg](https://github.com/gusbourg)
- Include IMEISV Request on Security-mode command
#### Bug fixes
- Remove NAS timer related S1AP message ([#256](https://github.com/open5gs/open5gs/issues/256)) -- [laf0rge](https://github.com/laf0rge)
- Fix the MME crashes on receiving unknown TEID ([#258](https://github.com/open5gs/open5gs/issues/258)) -- [laf0rge](https://github.com/laf0rge)
- Map S6A diameter codes to EMM codes ([#263](https://github.com/open5gs/open5gs/issues/263)) -- [laf0rge](https://github.com/laf0rge)
- Fix the WebUI installation script ([#299](https://github.com/open5gs/open5gs/issues/299))
- Add SGsAP-SERVICE-REQUEST in MT-SMS-ACTIVE ([#312](https://github.com/open5gs/open5gs/issues/312)) -- [EugeneBogush](https://github.com/EugeneBogush)
#### Rollback
- MME uses single UE context to handle two attach procedure for the same UE([#203](https://github.com/open5gs/open5gs/issues/203)) -- [lezixiao](https://github.com/lezixiao)
#### Document
- Add Additional troubleshooting document ([#309](https://github.com/open5gs/open5gs/pull/309)) -- [sudheesh001](https://github.com/sudheesh001), [nickvsnetworking](https://github.com/nickvsnetworking)
#### Miscellaneous
- Add statistics for UE/eNB/Sessions ([#303](https://github.com/open5gs/open5gs/pull/303)) -- [spencersevilla](https://github.com/spencersevilla)
- MongoDB CLI tool ([#305](https://github.com/open5gs/open5gs/pull/305)) -- [spencersevilla](https://github.com/spencersevilla)
- An easy install script for MacOSX build [sudheesh001](https://github.com/sudheesh001)
Download -- [v1.1.0.tar.gz](https://github.com/open5gs/open5gs/archive/v1.1.0.tar.gz)
{: .notice--info}

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