From e6876898a24c931e7d7c86b09e7e7ea8f45978ba Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Tue, 4 Jul 2023 09:49:37 +0200 Subject: [PATCH] MME_Tests: add docker tests for MME an MME testsuite exists in osmo-ttcn3-hacks but it is not executed in docker yet. Related: OS#5760 Change-Id: Ic1ce1dace47353b0dcf321c923a78567e3ddefb9 --- ttcn3-mme-test-ogs/Dockerfile | 21 + ttcn3-mme-test-ogs/Makefile | 1 + ttcn3-mme-test-ogs/jenkins.sh | 45 ++ ttcn3-mme-test-ogs/ogs/MME_Tests.cfg | 33 ++ ttcn3-mme-test-ogs/ogs/freediameter.conf | 265 +++++++++++ ttcn3-mme-test-ogs/ogs/mme.sh | 6 + ttcn3-mme-test-ogs/ogs/open5gs-mme.yaml | 536 +++++++++++++++++++++++ 7 files changed, 907 insertions(+) create mode 100644 ttcn3-mme-test-ogs/Dockerfile create mode 100644 ttcn3-mme-test-ogs/Makefile create mode 100755 ttcn3-mme-test-ogs/jenkins.sh create mode 100644 ttcn3-mme-test-ogs/ogs/MME_Tests.cfg create mode 100644 ttcn3-mme-test-ogs/ogs/freediameter.conf create mode 100755 ttcn3-mme-test-ogs/ogs/mme.sh create mode 100644 ttcn3-mme-test-ogs/ogs/open5gs-mme.yaml diff --git a/ttcn3-mme-test-ogs/Dockerfile b/ttcn3-mme-test-ogs/Dockerfile new file mode 100644 index 00000000..048a8e8c --- /dev/null +++ b/ttcn3-mme-test-ogs/Dockerfile @@ -0,0 +1,21 @@ +ARG REGISTRY +ARG USER +FROM $REGISTRY/$USER/debian-bullseye-titan + +RUN apt-get update && \ + apt-get upgrade -y && \ + DEBIAN_FRONTEND='noninteractive' apt-get install -y --no-install-recommends --no-install-suggests \ + libgnutls28-dev \ + && \ + apt-get clean + +ARG OSMO_TTCN3_BRANCH="master" + +ADD https://gerrit.osmocom.org/plugins/gitiles/osmo-ttcn3-hacks/+/$OSMO_TTCN3_BRANCH?format=TEXT /tmp/commit +RUN ttcn3-docker-prepare "$OSMO_TTCN3_BRANCH" mme + +VOLUME /data + +COPY ogs/MME_Tests.cfg /data/MME_Tests.cfg + +CMD ttcn3-docker-run mme MME_Tests diff --git a/ttcn3-mme-test-ogs/Makefile b/ttcn3-mme-test-ogs/Makefile new file mode 100644 index 00000000..8d0e10b4 --- /dev/null +++ b/ttcn3-mme-test-ogs/Makefile @@ -0,0 +1 @@ +include ../make/Makefile diff --git a/ttcn3-mme-test-ogs/jenkins.sh b/ttcn3-mme-test-ogs/jenkins.sh new file mode 100755 index 00000000..164123ad --- /dev/null +++ b/ttcn3-mme-test-ogs/jenkins.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +. ../jenkins-common.sh + +IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}" +docker_images_require \ + "open5gs-$IMAGE_SUFFIX" \ + "ttcn3-mme-test-ogs" + +set_clean_up_trap +set -e + +mkdir $VOL_BASE_DIR/mme-tester +cp ogs/MME_Tests.cfg $VOL_BASE_DIR/mme-tester/ +write_mp_osmo_repo "$VOL_BASE_DIR/mme-tester/MME_Tests.cfg" + +mkdir $VOL_BASE_DIR/mme +cp ogs/open5gs-*.yaml $VOL_BASE_DIR/mme/ +cp ogs/freediameter.conf $VOL_BASE_DIR/mme/ +cp ogs/mme.sh $VOL_BASE_DIR/mme/ + +network_create +network_replace_subnet_in_configs + +# start container with mme in background +docker run --sysctl net.ipv6.conf.all.disable_ipv6=0 \ + --rm \ + --ulimit core=-1 \ + -v $VOL_BASE_DIR/mme:/data \ + --name ${BUILD_TAG}-ogs-mme -d \ + $DOCKER_ARGS \ + $(docker_network_params $SUBNET 201) \ + $REPO_USER/open5gs-$IMAGE_SUFFIX \ + /bin/sh -c "open5gs-mmed -c /data/open5gs-mme.yaml >/data/open5gs-mmed.out 2>&1" + +# start docker container with testsuite in foreground +docker run --rm \ + --sysctl net.ipv6.conf.all.disable_ipv6=0 \ + $(docker_network_params $SUBNET 202) \ + --ulimit core=-1 \ + -v $VOL_BASE_DIR/mme-tester:/data \ + -e "TTCN3_PCAP_PATH=/data" \ + --name ${BUILD_TAG}-mme-test \ + $DOCKER_ARGS \ + $REPO_USER/ttcn3-mme-test-ogs diff --git a/ttcn3-mme-test-ogs/ogs/MME_Tests.cfg b/ttcn3-mme-test-ogs/ogs/MME_Tests.cfg new file mode 100644 index 00000000..59cf8658 --- /dev/null +++ b/ttcn3-mme-test-ogs/ogs/MME_Tests.cfg @@ -0,0 +1,33 @@ +[ORDERED_INCLUDE] +# Common configuration, shared between test suites +"/osmo-ttcn3-hacks/Common.cfg" +# testsuite specific configuration, not expected to change +"/osmo-ttcn3-hacks/mme/MME_Tests.default" + +# Local configuration below + +[LOGGING] + +[TESTPORT_PARAMETERS] + +[MODULE_PARAMETERS] +# S1 interface +mp_mme_ip := "172.18.3.201"; +mp_mme_s1ap_port := 36412; +mp_s1_local_ip := "172.18.3.202"; +mp_s1_local_port := 50000; + +# S6 interface +mp_s6_local_ip := "172.18.3.202"; +mp_s6_local_port := 3868; + +# SGs interface +mp_sgs_local_ip := "172.18.3.202"; +mp_sgs_local_port := 29118; +mp_vlr_name := "vlr.example.net"; +mp_mme_name := "mmec01.mmegi0001.mme.epc.mnc070.mcc901.3gppnetwork.org"; + +[MAIN_CONTROLLER] + +[EXECUTE] +MME_Tests.control diff --git a/ttcn3-mme-test-ogs/ogs/freediameter.conf b/ttcn3-mme-test-ogs/ogs/freediameter.conf new file mode 100644 index 00000000..d149aa3b --- /dev/null +++ b/ttcn3-mme-test-ogs/ogs/freediameter.conf @@ -0,0 +1,265 @@ +# This is a sample configuration file for freeDiameter daemon. + +# Most of the options can be omitted, as they default to reasonable values. +# Only TLS-related options must be configured properly in usual setups. + +# It is possible to use "include" keyword to import additional files +# e.g.: include "/etc/freeDiameter.d/*.conf" +# This is exactly equivalent as copy & paste the content of the included file(s) +# where the "include" keyword is found. + + +############################################################## +## Peer identity and realm + +# The Diameter Identity of this daemon. +# This must be a valid FQDN that resolves to the local host. +# Default: hostname's FQDN +#Identity = "aaa.koganei.freediameter.net"; +Identity = "mme.localdomain"; + +# The Diameter Realm of this daemon. +# Default: the domain part of Identity (after the first dot). +#Realm = "koganei.freediameter.net"; +Realm = "localdomain"; + +############################################################## +## Transport protocol configuration + +# The port this peer is listening on for incoming connections (TCP and SCTP). +# Default: 3868. Use 0 to disable. +Port = 3868; + +# The port this peer is listening on for incoming TLS-protected connections (TCP and SCTP). +# See TLS_old_method for more information about TLS flavours. +# Note: we use TLS/SCTP instead of DTLS/SCTP at the moment. This will change in future version of freeDiameter. +# Default: 5868. Use 0 to disable. +SecPort = 0; + +# Use RFC3588 method for TLS protection, where TLS is negociated after CER/CEA exchange is completed +# on the unsecure connection. The alternative is RFC6733 mechanism, where TLS protects also the +# CER/CEA exchange on a dedicated secure port. +# This parameter only affects outgoing connections. +# The setting can be also defined per-peer (see Peers configuration section). +# Default: use RFC6733 method with separate port for TLS. +#TLS_old_method; + +# Disable use of TCP protocol (only listen and connect over SCTP) +# Default : TCP enabled +#No_TCP; + +# Disable use of SCTP protocol (only listen and connect over TCP) +# Default : SCTP enabled +#No_SCTP; +# This option is ignored if freeDiameter is compiled with DISABLE_SCTP option. + +# Prefer TCP instead of SCTP for establishing new connections. +# This setting may be overwritten per peer in peer configuration blocs. +# Default : SCTP is attempted first. +#Prefer_TCP; + +# Default number of streams per SCTP associations. +# This setting may be overwritten per peer basis. +# Default : 30 streams +#SCTP_streams = 30; + +############################################################## +## Endpoint configuration + +# Disable use of IP addresses (only IPv6) +# Default : IP enabled +#No_IP; + +# Disable use of IPv6 addresses (only IP) +# Default : IPv6 enabled +#No_IPv6; + +# Specify local addresses the server must bind to +# Default : listen on all addresses available. +#ListenOn = "202.249.37.5"; +#ListenOn = "2001:200:903:2::202:1"; +#ListenOn = "fe80::21c:5ff:fe98:7d62%eth0"; +ListenOn = "172.18.3.201"; + + +############################################################## +## Server configuration + +# How many Diameter peers are allowed to be connecting at the same time ? +# This parameter limits the number of incoming connections from the time +# the connection is accepted until the first CER is received. +# Default: 5 unidentified clients in paralel. +#ThreadsPerServer = 5; + +############################################################## +## TLS Configuration + +# TLS is managed by the GNUTLS library in the freeDiameter daemon. +# You may find more information about parameters and special behaviors +# in the relevant documentation. +# http://www.gnu.org/software/gnutls/manual/ + +# Credentials of the local peer +# The X509 certificate and private key file to use for the local peer. +# The files must contain PKCS-1 encoded RSA key, in PEM format. +# (These parameters are passed to gnutls_certificate_set_x509_key_file function) +# Default : NO DEFAULT +#TLS_Cred = "" , ""; +#TLS_Cred = "/etc/ssl/certs/freeDiameter.pem", "/etc/ssl/private/freeDiameter.key"; + +# Certificate authority / trust anchors +# The file containing the list of trusted Certificate Authorities (PEM list) +# (This parameter is passed to gnutls_certificate_set_x509_trust_file function) +# The directive can appear several times to specify several files. +# Default : GNUTLS default behavior +#TLS_CA = ""; + +# Certificate Revocation List file +# The information about revoked certificates. +# The file contains a list of trusted CRLs in PEM format. They should have been verified before. +# (This parameter is passed to gnutls_certificate_set_x509_crl_file function) +# Note: openssl CRL format might have interoperability issue with GNUTLS format. +# Default : GNUTLS default behavior +#TLS_CRL = ""; + +# GNU TLS Priority string +# This string allows to configure the behavior of GNUTLS key exchanges +# algorithms. See gnutls_priority_init function documentation for information. +# You should also refer to the Diameter required TLS support here: +# http://tools.ietf.org/html/rfc6733#section-13.1 +# Default : "NORMAL" +# Example: TLS_Prio = "NONE:+VERS-TLS1.1:+AES-128-CBC:+RSA:+SHA1:+COMP-NULL"; +#TLS_Prio = "NORMAL"; + +# Diffie-Hellman parameters size +# Set the number of bits for generated DH parameters +# Valid value should be 768, 1024, 2048, 3072 or 4096. +# (This parameter is passed to gnutls_dh_params_generate2 function, +# it usually should match RSA key size) +# Default : 1024 +#TLS_DH_Bits = 1024; + +# Alternatively, you can specify a file to load the PKCS#3 encoded +# DH parameters directly from. This accelerates the daemon start +# but is slightly less secure. If this file is provided, the +# TLS_DH_Bits parameters has no effect. +# Default : no default. +#TLS_DH_File = ""; + + +############################################################## +## Timers configuration + +# The Tc timer of this peer. +# It is the delay before a new attempt is made to reconnect a disconnected peer. +# The value is expressed in seconds. The recommended value is 30 seconds. +# Default: 30 +#TcTimer = 30; + +# The Tw timer of this peer. +# It is the delay before a watchdog message is sent, as described in RFC 3539. +# The value is expressed in seconds. The default value is 30 seconds. Value must +# be greater or equal to 6 seconds. See details in the RFC. +# Default: 30 +#TwTimer = 30; + +############################################################## +## Applications configuration + +# Disable the relaying of Diameter messages? +# For messages not handled locally, the default behavior is to forward the +# message to another peer if any is available, according to the routing +# algorithms. In addition the "0xffffff" application is advertised in CER/CEA +# exchanges. +# Default: Relaying is enabled. +#NoRelay; +NoRelay; + +# Number of server threads that can handle incoming messages at the same time. +# Default: 4 +#AppServThreads = 4; + +# Other applications are configured by loaded extensions. + +############################################################## +## Extensions configuration + +# The freeDiameter framework merely provides support for +# Diameter Base Protocol. The specific application behaviors, +# as well as advanced functions, are provided +# by loadable extensions (plug-ins). +# These extensions may in addition receive the name of a +# configuration file, the format of which is extension-specific. +# +# Format: +#LoadExtension = "/path/to/extension" [ : "/optional/configuration/file" ] ; +# +# Examples: +#LoadExtension = "extensions/sample.fdx"; +#LoadExtension = "extensions/sample.fdx":"conf/sample.conf"; + +# Extensions are named as follow: +# dict_* for extensions that add content to the dictionary definitions. +# dbg_* for extensions useful only to retrieve more information on the framework execution. +# acl_* : Access control list, to control which peers are allowed to connect. +# rt_* : routing extensions that impact how messages are forwarded to other peers. +# app_* : applications, these extensions usually register callbacks to handle specific messages. +# test_* : dummy extensions that are useful only in testing environments. + + +# The dbg_msg_dump.fdx extension allows you to tweak the way freeDiameter displays some +# information about some events. This extension does not actually use a configuration file +# but receives directly a parameter in the string passed to the extension. Here are some examples: +## LoadExtension = "dbg_msg_dumps.fdx" : "0x1111"; # Removes all default hooks, very quiet even in case of errors. +## LoadExtension = "dbg_msg_dumps.fdx" : "0x2222"; # Display all events with few details. +## LoadExtension = "dbg_msg_dumps.fdx" : "0x0080"; # Dump complete information about sent and received messages. +# The four digits respectively control: connections, routing decisions, sent/received messages, errors. +# The values for each digit are: +# 0 - default - keep the default behavior +# 1 - quiet - remove any specific log +# 2 - compact - display only a summary of the information +# 4 - full - display the complete information on a single long line +# 8 - tree - display the complete information in an easier to read format spanning several lines. + +LoadExtension = "/usr/lib/x86_64-linux-gnu/freeDiameter/dbg_msg_dumps.fdx" : "0x8888"; +LoadExtension = "/usr/lib/x86_64-linux-gnu/freeDiameter/dict_rfc5777.fdx"; +LoadExtension = "/usr/lib/x86_64-linux-gnu/freeDiameter/dict_mip6i.fdx"; +LoadExtension = "/usr/lib/x86_64-linux-gnu/freeDiameter/dict_nasreq.fdx"; +LoadExtension = "/usr/lib/x86_64-linux-gnu/freeDiameter/dict_nas_mipv6.fdx"; +LoadExtension = "/usr/lib/x86_64-linux-gnu/freeDiameter/dict_dcca.fdx"; +LoadExtension = "/usr/lib/x86_64-linux-gnu/freeDiameter/dict_dcca_3gpp.fdx"; + + +############################################################## +## Peers configuration + +# The local server listens for incoming connections. By default, +# all unknown connecting peers are rejected. Extensions can override this behavior (e.g., acl_wl). +# +# In addition to incoming connections, the local peer can +# be configured to establish and maintain connections to some +# Diameter nodes and allow connections from these nodes. +# This is achieved with the ConnectPeer directive described below. +# +# Note that the configured Diameter Identity MUST match +# the information received inside CEA, or the connection will be aborted. +# +# Format: +#ConnectPeer = "diameterid" [ { parameter1; parameter2; ...} ] ; +# Parameters that can be specified in the peer's parameter list: +# No_TCP; No_SCTP; No_IP; No_IPv6; Prefer_TCP; TLS_old_method; +# No_TLS; # assume transparent security instead of TLS. DTLS is not supported yet (will change in future versions). +# Port = 5868; # The port to connect to +# TcTimer = 30; +# TwTimer = 30; +# ConnectTo = "202.249.37.5"; +# ConnectTo = "2001:200:903:2::202:1"; +# TLS_Prio = "NORMAL"; +# Realm = "realm.net"; # Reject the peer if it does not advertise this realm. +# Examples: +#ConnectPeer = "aaa.wide.ad.jp"; +#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ; +ConnectPeer = "hss.localdomain" { ConnectTo = "172.18.3.202"; Port = 3868; No_TLS; TcTimer = 2; }; + + +############################################################## diff --git a/ttcn3-mme-test-ogs/ogs/mme.sh b/ttcn3-mme-test-ogs/ogs/mme.sh new file mode 100755 index 00000000..ae417fd5 --- /dev/null +++ b/ttcn3-mme-test-ogs/ogs/mme.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e +set -x +/data/mmed-setup.sh +mmed_bin="$(command -v open5gs-mmed)" +su - osmocom -c "$mmed_bin $*" diff --git a/ttcn3-mme-test-ogs/ogs/open5gs-mme.yaml b/ttcn3-mme-test-ogs/ogs/open5gs-mme.yaml new file mode 100644 index 00000000..22797f2a --- /dev/null +++ b/ttcn3-mme-test-ogs/ogs/open5gs-mme.yaml @@ -0,0 +1,536 @@ +# +# 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' +# (Default values are used, so no configuration is required) +# +# o Set OGS_LOG_ERROR to all domain level +# - `level` can be set with none, fatal, error, warn, info, debug, trace +# logger: +# level: error +# +# o Set OGS_LOG_DEBUG to mme/emm domain level +# logger: +# level: debug +# domain: mme,emm +# +# o Set OGS_LOG_TRACE to all domain level +# logger: +# level: trace +# domain: core,sbi,ausf,event,tlv,mem,sock +# +logger: + level: info + +# +# > +# +# o S1AP Server(all address available) +# mme: +# s1ap: +# +# o S1AP Server(0.0.0.0:36412) +# mme: +# s1ap: +# addr: 0.0.0.0 +# +# o S1AP Server(127.0.0.2:36412, [::1]:36412) +# mme: +# s1ap: +# - addr: 127.0.0.2 +# - addr: ::1 +# +# o S1AP Server(different port) +# mme: +# s1ap: +# - addr: 127.0.0.2 +# port: 36413 +# +# o S1AP Server(address available in `eth0` interface) +# mme: +# s1ap: +# dev: eth0 +# +# o S1AP Option (Default) +# - sctp_nodelay : true +# - so_linger.l_onoff : false +# +# mme: +# s1ap: +# addr: 127.0.0.2 +# option: +# stcp_nodelay: false +# so_linger: +# l_onoff: true +# l_linger: 10 +# +# o S1AP SCTP Option (Default) +# - spp_hbinterval : 5000 (5secs) +# - spp_sackdelay : 200 (200ms) +# - srto_initial : 3000 (3secs) +# - srto_min : 1000 (1sec) +# - srto_max : 5000 (5secs) +# - sinit_num_ostreams : 30 +# - sinit_max_instreams : 65535 +# - sinit_max_attempts : 4 +# - sinit_max_init_timeo : 8000(8secs) +# +# mme: +# s1ap: +# addr: 127.0.0.2 +# option: +# sctp: +# spp_hbinterval : 5000 +# spp_sackdelay : 200 +# srto_initial : 3000 +# srto_min : 1000 +# srto_max : 5000 +# sinit_num_ostreams : 30 +# sinit_max_instreams : 65535 +# sinit_max_attempts : 4 +# sinit_max_init_timeo : 8000 +# +# > +# +# o GTP-C Server(all address available) +# mme: +# gtpc: +# +# o GTP-C Server(127.0.0.2:2123, [::1]:2123) +# mme: +# gtpc: +# - addr: 127.0.0.2 +# - addr: ::1 +# +# +# +# o Single MSC/VLR(127.0.0.2) +# mme: +# 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 +# mme: +# 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.4 +# - fd69:f21d:873c:fa::2 +# 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 +# +# +# +# o Metrics Server(http://:9090) +# mme: +# metrics: +# - addr: 0.0.0.0 +# port: 9090 +# +# +# +# o Multiple GUMMEI +# mme: +# gummei: +# - plmn_id: +# mcc: 001 +# mnc: 01 +# mme_gid: 2 +# mme_code: 1 +# - plmn_id: +# - mcc: 002 +# mnc: 02 +# - mcc: 003 +# mnc: 03 +# mme_gid: [3, 4] +# mme_code: +# - 2 +# - 3 +# +# +# +# +# o Multiple TAI +# +# When multiple TAIs are configured as shown below, +# the Served TAI is determined by comparing UserLocationInformation +# of UplinkNASTransport sent from eNB. +# +# For example, if the eNB sends TAC with 30 to the MME, +# the fourth TAI (TAC: 20, 28, 29-32, 36-38, 40-42, 50, 60, 70, 70) +# is determined as the Served TAI. The result is transmitted to the eNB +# as a Tracking Area identity List in Registration Accept. +# +# mme: +# tai: +# - plmn_id: +# mcc: 001 +# mnc: 01 +# tac: [1, 3, 5] +# tai: +# - plmn_id: +# mcc: 002 +# mnc: 02 +# tac: [6-10, 15-18] +# tai: +# - plmn_id: +# mcc: 003 +# mnc: 03 +# tac: 20 +# - plmn_id: +# mcc: 004 +# mnc: 04 +# tac: 21 +# tai: +# - plmn_id: +# mcc: 005 +# mnc: 05 +# tac: [22, 28] +# - plmn_id: +# mcc: 006 +# mnc: 06 +# tac: [30-32, 34, 36-38, 40-42, 44, 46, 48] +# - plmn_id: +# mcc: 007 +# mnc: 07 +# tac: 50 +# - plmn_id: +# mcc: 008 +# mnc: 08 +# tac: 60 +# - plmn_id: +# mcc: 009 +# mnc: 09 +# tac: [70, 80] +# +# +# +# +# If access_control is not specified, then all networks are allowed +# If access_control is defined, +# no other networks are allowed other than matching plmn_id. +# +# default_reject_cause may be used to overwrite the default error cause #11 +# for non matching plmn_id +# +# for matching plmn_id with reject_cause defined, +# the MME rejects access with the reject_cause error cause +# +# for matching plmn_id without reject_cause defined, +# the MME accepts the PLMN traffic +# +# o The example below only accepts 002/02 and 999/70 PLMNs. +# 001/01 is rejected with cause 15, +# and the rest of the PLMNs are rejected with default cause 13. +# +# mme: +# access_control: +# - default_reject_cause: 13 +# - plmn_id: +# reject_cause: 15 +# mcc: 001 +# mnc: 01 +# - plmn_id: +# mcc: 002 +# mnc: 02 +# - plmn_id: +# mcc: 999 +# mnc: 70 +# +# +# +# mme: +# network_name: +# full: Open5GS +# short: Next +# +# +# mme: +# mme_name: open5gs-mme0 +# +# - Default(255) +# mme: +# relative_capacity: 100 +# +mme: + freeDiameter: /data/freediameter.conf + s1ap: + - addr: 172.18.3.201 + gtpc: + - addr: 172.18.3.201 + metrics: + - addr: 172.18.3.201 + port: 9090 + 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 : [ EIA2, EIA1, EIA0 ] + ciphering_order : [ EEA0, EEA1, EEA2 ] + network_name: + full: Open5GS + mme_name: open5gs-mme0 + +# +# +# +# o Specify SGW addresses the GTP-C must connect to +# +# o One SGW is defined. +# If prefer_ipv4 is not true, [fd69:f21d:873c:fa::2] is selected. +# sgwc: +# gtpc: +# addr: +# - 127.0.0.3 +# - fd69:f21d:873c:fa::2 +# +# o Two SGW are defined. MME selects SGW with round-robin manner per UE +# sgwc: +# gtpc: +# - addr: 127.0.0.3 +# - addr: fd69:f21d:873c:fa::2 +# +# o Three SGW are defined. MME selects SGW with round-robin manner per UE +# sgwc: +# gtpc: +# - addr +# - 127.0.0.3 +# - fd69:f21d:873c:fa::2 +# - addr +# - 127.0.0.22 +# - fd69:f21d:873c:fa::12 +# - name: sgw3.open5gs.org +# +# +# +# o Round-Robin +# sgwc: +# gtpc: +# addr: 127.0.0.3 +# addr: 127.0.2.2 +# addr: 127.0.4.2 +# +# o SGW selection by eNodeB TAC +# (either single TAC or multiple TACs, DECIMAL representation) +# +# sgwc: +# gtpc: +# - addr: 127.0.0.3 +# 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) +# +# sgwc: +# gtpc: +# - addr: 127.0.0.3 +# e_cell_id: abcde01 +# - addr: 127.0.2.2 +# e_cell_id: [12345, a9413, 98765] +# +sgwc: + gtpc: + - addr: 172.18.3.202 + +# +# smf: +# +# +# +# o By default, the SMF uses the first SMF node. +# - To use a different APN for each SMF, specify gtpc.apn as the APN name. +# - If the HSS uses WebUI to set the SMF IP for each UE, +# you can use a specific SMF node for each UE. +# (Default values are used, so no configuration is required) +# +# o Two SMF are defined. 127.0.0.4:2123 is used. +# [fd69:f21d:873c:fa::3]:2123 is ignored. +# smf: +# gtpc: +# - addr: 127.0.0.4 +# - addr: fd69:f21d:873c:fa::3 +# +# o One SMF is defined. if prefer_ipv4 is not true, +# [fd69:f21d:873c:fa::3] is selected. +# smf: +# gtpc: +# - addr: +# - 127.0.0.4 +# - fd69:f21d:873c:fa::3 +# +# o Two SMF are defined with a different APN. +# - Note that if SMF IP for UE is configured in HSS, +# the following configurion for this UE is ignored. +# smf: +# gtpc: +# - addr: 127.0.0.4 +# apn: internet +# - addr: 127.0.0.5 +# apn: volte +# +# o If APN is omitted, the default APN uses the first SMF node. +# smf: +# gtpc: +# - addr: 127.0.0.4 +# - addr: 127.0.0.5 +# apn: volte +# +# o SMF selection by eNodeB TAC +# (either single TAC or multiple TACs, DECIMAL representation) +# +# gtpc: +# - addr: 127.0.0.4 +# tac: 26000 +# - addr: 127.0.2.4 +# tac: [25000, 27000, 28000] +# +# o SMF selection by e_cell_id(28bit) +# (either single or multiple e_cell_id, HEX representation) +# +# gtpc: +# - addr: 127.0.0.4 +# e_cell_id: abcde01 +# - addr: 127.0.2.4 +# e_cell_id: [12345, a9413, 98765] +smf: + gtpc: + - addr: + - 172.18.3.201 + - ::1 + +# +# o Disable use of IPv4 addresses (only IPv6) +# parameter: +# no_ipv4: true +# +# o Disable use of IPv6 addresses (only IPv4) +# parameter: +# no_ipv6: true +# +# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. +# parameter: +# prefer_ipv4: true +# +parameter: + +# +# o Maximum Number of UE +# max: +# ue: 1024 +# +# o Maximum Number of Peer(S1AP/NGAP, DIAMETER, GTP, PFCP or SBI) +# max: +# peer: 64 +# +max: + +# +# usrsctp: +# udp_port : 9899 +# +usrsctp: + +# +# o Message Wait Duration (Default : 10,000 ms = 10 seconds) +# (Default values are used, so no configuration is required) +# +# o Message Wait Duration (3000 ms) +# time: +# message: +# duration: 3000 +# +# o Handover Wait Duration (Default : 300 ms) +# Time to wait for MME to send UEContextReleaseCommand +# to the source eNB after receiving HandoverNotify +# (Default values are used, so no configuration is required) +# +# o Handover Wait Duration (500ms) +# time: +# handover: +# duration: 500 +# +# o Timers of EPS mobility/session management +# time: +# t3402: +# value: 720 # 12 minutes * 60 = 720 seconds +# t3412: +# value: 3240 # 54 minutes * 60 = 3240 seconds +# t3423: +# value: 720 # 12 minutes * 60 = 720 seconds +time: