From 7c32f1deb72f74656c0b4999b9ed29479a8ad31f Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 20 Apr 2020 16:11:40 +0000 Subject: [PATCH] ttcn3-pgw-test: add Dockerfile, jenkins.sh and configs for open5gs Change-Id: I69e2f5be8204cc4fd0cc0f4eb019ef1104121b60 Tweaked-By: Vadim Yanitskiy Related: SYS#5602 --- ttcn3-pgw-test/Dockerfile | 13 + ttcn3-pgw-test/Makefile | 1 + ttcn3-pgw-test/PGW_Tests.cfg | 23 ++ ttcn3-pgw-test/freeDiameter-smf.conf | 267 +++++++++++++ ttcn3-pgw-test/jenkins.sh | 86 +++++ ttcn3-pgw-test/open5gs-nrf.yaml | 159 ++++++++ ttcn3-pgw-test/open5gs-smf.yaml | 521 ++++++++++++++++++++++++++ ttcn3-pgw-test/open5gs-upf.yaml | 233 ++++++++++++ ttcn3-pgw-test/osmo-uecups-daemon.cfg | 15 + 9 files changed, 1318 insertions(+) create mode 100644 ttcn3-pgw-test/Dockerfile create mode 100644 ttcn3-pgw-test/Makefile create mode 100644 ttcn3-pgw-test/PGW_Tests.cfg create mode 100644 ttcn3-pgw-test/freeDiameter-smf.conf create mode 100755 ttcn3-pgw-test/jenkins.sh create mode 100644 ttcn3-pgw-test/open5gs-nrf.yaml create mode 100644 ttcn3-pgw-test/open5gs-smf.yaml create mode 100644 ttcn3-pgw-test/open5gs-upf.yaml create mode 100644 ttcn3-pgw-test/osmo-uecups-daemon.cfg diff --git a/ttcn3-pgw-test/Dockerfile b/ttcn3-pgw-test/Dockerfile new file mode 100644 index 00000000..23ef3877 --- /dev/null +++ b/ttcn3-pgw-test/Dockerfile @@ -0,0 +1,13 @@ +ARG REGISTRY +ARG USER +FROM $REGISTRY/$USER/debian-bullseye-titan +ARG OSMO_TTCN3_BRANCH="master" + +ADD http://git.osmocom.org/osmo-ttcn3-hacks/patch?h=$OSMO_TTCN3_BRANCH /tmp/commit +RUN ttcn3-docker-prepare "$OSMO_TTCN3_BRANCH" pgw + +VOLUME /data + +COPY PGW_Tests.cfg /data/PGW_Tests.cfg + +CMD ttcn3-docker-run pgw PGW_Tests diff --git a/ttcn3-pgw-test/Makefile b/ttcn3-pgw-test/Makefile new file mode 100644 index 00000000..8d0e10b4 --- /dev/null +++ b/ttcn3-pgw-test/Makefile @@ -0,0 +1 @@ +include ../make/Makefile diff --git a/ttcn3-pgw-test/PGW_Tests.cfg b/ttcn3-pgw-test/PGW_Tests.cfg new file mode 100644 index 00000000..f6651c37 --- /dev/null +++ b/ttcn3-pgw-test/PGW_Tests.cfg @@ -0,0 +1,23 @@ +[ORDERED_INCLUDE] +"/osmo-ttcn3-hacks/Common.cfg" +"/osmo-ttcn3-hacks/pgw/PGW_Tests.default" + +# Local configuration below + +[LOGGING] + +[TESTPORT_PARAMETERS] + +[MODULE_PARAMETERS] +PGW_Tests.mp_pgw_hostname := "172.18.18.4" +PGW_Tests.mp_local_hostname_c := "172.18.18.202" +PGW_Tests.mp_local_hostname_u := "172.18.18.20" +PGW_Tests.mp_run_prog_as_user := "osmocom" +PGW_Tests.mp_ping_hostname := "10.45.0.1" +PGW_Tests.mp_pcrf_local_ip:= "172.18.18.202" +GTPv2_Emulation.mp_uecups_host := "172.18.18.20" + +[MAIN_CONTROLLER] + +[EXECUTE] +PGW_Tests.control diff --git a/ttcn3-pgw-test/freeDiameter-smf.conf b/ttcn3-pgw-test/freeDiameter-smf.conf new file mode 100644 index 00000000..8f67fc91 --- /dev/null +++ b/ttcn3-pgw-test/freeDiameter-smf.conf @@ -0,0 +1,267 @@ +# 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 = "smf.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.18.4"; + + +############################################################## +## 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"; +TLS_Cred = "/etc/freeDiameter/smf.cert.pem", "/etc/freeDiameter/smf.key.pem"; + +# 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 = ""; +TLS_CA = "/etc/freeDiameter/cacert.pem"; + +# 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 = "pcrf.localdomain" { ConnectTo = "172.18.18.202"; No_TLS; TcTimer = 2; }; + + +############################################################## diff --git a/ttcn3-pgw-test/jenkins.sh b/ttcn3-pgw-test/jenkins.sh new file mode 100755 index 00000000..4a41473c --- /dev/null +++ b/ttcn3-pgw-test/jenkins.sh @@ -0,0 +1,86 @@ +#!/bin/sh + +. ../jenkins-common.sh +IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}" +docker_images_require \ + "open5gs-$IMAGE_SUFFIX" \ + "osmo-uecups-master" \ + "ttcn3-pgw-test" + +mkdir $VOL_BASE_DIR/pgw-tester +cp PGW_Tests.cfg $VOL_BASE_DIR/pgw-tester/ + +mkdir $VOL_BASE_DIR/osmo-uecups +cp osmo-uecups-daemon.cfg $VOL_BASE_DIR/osmo-uecups/ + +mkdir $VOL_BASE_DIR/pgw +cp freeDiameter-smf.conf $VOL_BASE_DIR/pgw/ +cp open5gs-{smf,upf,nrf}.yaml $VOL_BASE_DIR/pgw/ + +SUBNET=18 +network_create $SUBNET + +# start container with open5gs-nrfd in background +docker run --rm \ + $(docker_network_params $SUBNET 10) \ + -v $VOL_BASE_DIR/pgw:/data \ + --name ${BUILD_TAG}-nrf -d \ + $DOCKER_ARGS \ + $REPO_USER/open5gs-$IMAGE_SUFFIX \ + open5gs-nrfd -c /data/open5gs-nrf.yaml + +# start container with open5gs-upfd in background +docker run --cap-add=NET_ADMIN \ + --device /dev/net/tun:/dev/net/tun \ + --sysctl net.ipv6.conf.all.disable_ipv6=0 \ + --rm \ + $(docker_network_params $SUBNET 7) \ + -v $VOL_BASE_DIR/pgw:/data \ + --name ${BUILD_TAG}-upf -d \ + $DOCKER_ARGS \ + $REPO_USER/open5gs-$IMAGE_SUFFIX \ + open5gs-upfd -c /data/open5gs-upf.yaml + +# start container with open5gs-smfd in background +docker run --cap-add=NET_ADMIN \ + --device /dev/net/tun:/dev/net/tun \ + --sysctl net.ipv6.conf.all.disable_ipv6=0 \ + --rm \ + $(docker_network_params $SUBNET 4) \ + -v $VOL_BASE_DIR/pgw:/data \ + --name ${BUILD_TAG}-smf -d \ + $DOCKER_ARGS \ + $REPO_USER/open5gs-$IMAGE_SUFFIX \ + open5gs-smfd -c /data/open5gs-smf.yaml + +# start container with osmo-ugcups-daemon in background; SYS_ADMIN required for CLONE_NEWNS +docker run --cap-add=NET_ADMIN --cap-add=SYS_ADMIN \ + --device /dev/net/tun:/dev/net/tun \ + --sysctl net.ipv6.conf.all.disable_ipv6=0 \ + --rm \ + $(docker_network_params $SUBNET 20) \ + -v $VOL_BASE_DIR/osmo-uecups:/data \ + -e "WORKDIR=/data" \ + --name ${BUILD_TAG}-uecups -d \ + $DOCKER_ARGS \ + $REPO_USER/osmo-uecups-master \ + /bin/sh -c "osmo-uecups-daemon >/data/osmo-uecups-daemon.log 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) \ + -e "TTCN3_PCAP_PATH=/data" \ + -v $VOL_BASE_DIR/pgw-tester:/data \ + --name ${BUILD_TAG}-pgw-test \ + $DOCKER_ARGS \ + $REPO_USER/ttcn3-pgw-test + +# stop uecups + PGW after test has completed +docker container stop ${BUILD_TAG}-uecups +docker container stop ${BUILD_TAG}-smf +docker container stop ${BUILD_TAG}-upf +docker container stop ${BUILD_TAG}-nrf + +network_remove +collect_logs diff --git a/ttcn3-pgw-test/open5gs-nrf.yaml b/ttcn3-pgw-test/open5gs-nrf.yaml new file mode 100644 index 00000000..3deec921 --- /dev/null +++ b/ttcn3-pgw-test/open5gs-nrf.yaml @@ -0,0 +1,159 @@ +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,sbi,nrf,event,mem,sock +# +logger: + file: /data/open5gs-nrf.log + +# +# nrf: +# +# +# +# o SBI Server(http://:80) +# sbi: +# +# o SBI Server(http://:7777) +# sbi: +# - addr: +# - 0.0.0.0 +# - ::0 +# port: 7777 +# +# o SBI Server(https://:443) +# sbi: +# tls: +# key: nrf.key +# pem: nrf.pem +# +# o SBI Server(https://127.0.0.10:443, http://[::1]:80) +# sbi: +# - addr: 127.0.0.10 +# 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.10:7777) +# sbi: +# - addr: 127.0.0.10 +# port: 7777 +# +# o SBI Server(http://:80) +# sbi: +# dev: eth0 +# +nrf: + sbi: + addr: + - 172.18.18.10 + port: 7777 + +# +# parameter: +# +# o Number of output streams per SCTP associations. +# sctp_streams: 30 +# +# o Disable use of IPv4 addresses (only IPv6) +# no_ipv4: true +# +# o Disable use of IPv6 addresses (only IPv4) +# no_ipv6: true +# +# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. +# prefer_ipv4: true +# +parameter: + +# +# max: +# +# o Maximum Number of UE per AMF/MME +# ue: 1024 +# o Maximum Number of gNB/eNB per AMF/MME +# gnb: 64 +# +max: + +# +# pool: +# +# o The default memory pool size was set assuming 1024 UEs. +# To connect more UEs, you need to increase the size further. +# +# - Pool-size 128 => 65536 Number +# - Pool-size 256 => 16384 Number +# - Pool-size 512 => 4096 Number +# - Pool-size 1024 => 1024 Number +# - Pool-size 2048 => 512 Number +# - Pool-size 8192 => 128 Number +# - Pool-size 1024*1024 => 8 Number +# +# 128: 65536 +# 256: 16384 +# 512: 4096 +# 1024: 1024 +# 2048: 512 +# 8192: 128 +# big: 8 +# +pool: + +# +# time: +# +# o NF Instance Heartbeat (Default : 10 seconds) +# +# o NF Instance Heartbeat (Disabled) +# nf_instance: +# heartbeat: 0 +# +# o NF Instance Heartbeat (5 seconds) +# nf_instance: +# heartbeat: 5 +# +# 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 +# +# o Message Wait Duration (Default : 10,000 ms = 10 seconds) +# +# o Message Wait Duration (3000 ms) +# message: +# duration: 3000 +time: diff --git a/ttcn3-pgw-test/open5gs-smf.yaml b/ttcn3-pgw-test/open5gs-smf.yaml new file mode 100644 index 00000000..5b8384b4 --- /dev/null +++ b/ttcn3-pgw-test/open5gs-smf.yaml @@ -0,0 +1,521 @@ +# +# 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,pfcp,gtp,smf,event,tlv,mem,sock +# +logger: + file: /data/open5gs-smf.log +# +# smf: +# +# +# +# o SBI Server(http://:80) +# sbi: +# +# o SBI Server(http://:80) +# sbi: +# - addr: +# - 0.0.0.0 +# - ::0 +# port: 7777 +# +# o SBI Server(https://:443) +# sbi: +# - tls: +# key: smf.key +# pem: smf.pem +# +# o SBI Server(https://127.0.0.4:443, http://[::1]:80) +# sbi: +# - addr: 127.0.0.4 +# 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.4:7777) +# sbi: +# - addr: 127.0.0.4 +# port: 7777 +# +# o SBI Server(http://:80) +# sbi: +# - dev: eth0 +# +# o Provide custom SBI address to be advertised to NRF +# sbi: +# - dev: eth0 +# advertise: open5gs-smf.svc.local +# +# sbi: +# - addr: localhost +# advertise: +# - 127.0.0.99 +# - ::1 +# +# +# +# o PFCP Server(127.0.0.4:8805, ::1:8805) +# pfcp: +# - addr: 127.0.0.4 +# - addr: ::1 +# +# o PFCP-U Server(127.0.0.1:2152, [::1]:2152) +# pfcp: +# name: localhost +# +# +# +# o GTP-C Server(127.0.0.4:2123, [fd69:f21d:873c:fa::3]:2123) +# gtpc: +# addr: +# - 127.0.0.4 +# - fd69:f21d:873c:fa::3 +# +# o On SMF, Same configuration +# (127.0.0.4:2123, [fd69:f21d:873c:fa::3]:2123). +# gtpc: +# - addr: 127.0.0.4 +# - addr: fd69:f21d:873c:fa::3 +# +# > +# +# o GTP-U Server(127.0.0.4:2152, [::1]:2152) +# gtpu: +# - addr: 127.0.0.4 +# - addr: ::1 +# +# o GTP-U Server(127.0.0.1:2152, [::1]:2152) +# gtpu: +# name: localhost +# +# +# +# o IPv4 Pool +# subnet: +# addr: 10.45.0.1/16 +# +# o IPv4/IPv6 Pool +# subnet: +# - addr: 10.45.0.1/16 +# - addr: 2001:db8:cafe::1/48 +# +# +# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48 +# ; If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash. +# +# subnet: +# - addr: 10.45.0.1/16 +# dnn: internet +# - addr: 2001:db8:cafe::1/48 +# dnn: internet +# - addr: 10.46.0.1/16 +# dnn: ims +# - addr: 2001:db8:babe::1/48 +# dnn: ims +# +# o Specific DNN/APN with the FALLBACK SUBNET(10.47.0.1/16) +# ; Note that put the FALLBACK SUBNET last to avoid SMF/UPF crash. +# +# subnet: +# - addr: 10.45.0.1/16 +# dnn: internet +# - addr: 10.46.0.1/16 +# dnn: ims +# - addr: 10.50.0.1/16 ## FALLBACK SUBNET +# +# o Pool Range Sample +# subnet: +# - addr: 10.45.0.1/24 +# range: 10.45.0.100-10.45.0.200 +# +# subnet: +# - addr: 10.45.0.1/24 +# range: +# - 10.45.0.5-10.45.0.50 +# - 10.45.0.100- +# +# subnet: +# - addr: 10.45.0.1/24 +# range: +# - -10.45.0.200 +# - 10.45.0.210-10.45.0.220 +# +# subnet: +# - addr: 10.45.0.1/16 +# range: +# - 10.45.0.100-10.45.0.200 +# - 10.45.1.100-10.45.1.200 +# - addr: 2001:db8:cafe::1/48 +# range: +# - 2001:db8:cafe:a0::0-2001:db8:cafe:b0::0 +# - 2001:db8:cafe:c0::0-2001:db8:cafe:d0::0 +# +# +# +# o 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 +# +# +# +# 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 +# +# +# +# o Proxy Call Session Control Function +# +# p-cscf: +# - 127.0.0.1 +# - ::1 +# +# +# 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF +# 2. NRF responds to AMF with SmfInfo during NF-Discovery. +# 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo. +# +# Note that if there is no SmfInfo, any AMF can select this SMF. +# +# o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI +# info: +# - s_nssai: +# - sst: 1 +# dnn: +# - internet +# +# o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims] +# info: +# - s_nssai: +# - sst: 1 +# sd: 009000 +# dnn: +# - internet +# - ims +# +# o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:90170 TAC:1] +# info: +# - s_nssai: +# - sst: 1 +# dnn: +# - internet +# tai: +# - plmn_id: +# mcc: 901 +# mnc: 70 +# tac: 1 +# +# o If any of conditions below are met: +# - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:90170 TAC:1-9] +# - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims] +# - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:90170 TAC:10-20,30-40] +# +# info: +# - s_nssai: +# - sst: 1 +# dnn: +# - internet +# tai: +# - plmn_id: +# mcc: 901 +# mnc: 70 +# range: +# - 1-9 +# - s_nssai: +# - sst: 2 +# sd: 000080 +# dnn: +# - internet +# - ims +# - s_nssai: +# - sst: 4 +# dnn: +# - internet +# tai: +# - plmn_id: +# mcc: 901 +# mnc: 70 +# range: +# - 10-20 +# - 30-40 +# +# o Complex Example +# info: +# - s_nssai: +# - sst: 1 +# dnn: +# - internet +# - sst: 1 +# sd: 000080 +# dnn: +# - internet +# - ims +# - sst: 1 +# sd: 009000 +# dnn: +# [internet, ims] +# - sst: 2 +# dnn: +# - internet +# - sst: 3 +# sd: 123456 +# dnn: +# - internet +# tai: +# - plmn_id: +# mcc: 901 +# mnc: 70 +# tac: [1, 2, 3] +# - plmn_id: +# mcc: 901 +# mnc: 70 +# tac: 4 +# - plmn_id: +# mcc: 901 +# mnc: 70 +# tac: +# - 5 +# - 6 +# - plmn_id: +# mcc: 901 +# mnc: 70 +# range: +# - 100-200 +# - 300-400 +# - plmn_id: +# mcc: 901 +# mnc: 70 +# range: +# - 500-600 +# - 700-800 +# - 900-1000 +# - s_nssai: +# - sst: 4 +# dnn: +# - internet +# tai: +# - plmn_id: +# mcc: 901 +# mnc: 70 +# tac: 99 +# + +smf: + sbi: + - addr: 172.18.18.4 + port: 7777 + pfcp: + - addr: 172.18.18.4 + gtpc: + - addr: 172.18.18.4 + gtpu: + - addr: 172.18.18.4 + subnet: + - 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: /data/freeDiameter-smf.conf + +# +# nrf: +# +# > +# +# o SBI Client(http://127.0.0.1:7777) +# sbi: +# addr: 127.0.0.10 +# port: 7777 +# +# o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) +# sbi: +# - addr: 127.0.0.10 +# tls: +# key: nrf.key +# pem: nrf.pem +# - name: nrf.open5gs.org +# +# o SBI Client(http://[fd69:f21d:873c:fa::1]:80) +# If prefer_ipv4 is true, http://127.0.0.10:80 is selected. +# +# sbi: +# addr: +# - 127.0.0.10 +# - fd69:f21d:873c:fa::1 +# +nrf: + sbi: + - addr: + - 172.18.18.10 + port: 7777 + +# +# upf: +# +# > +# +# o PFCP Client(127.0.0.7:8805) +# +# pfcp: +# addr: 127.0.0.7 +# +# +# +# o Round-Robin +# (note that round robin can be disabled for a particular node +# by setting flag 'rr' to 0) +# +# upf: +# pfcp: +# - addr: 127.0.0.7 +# - addr: 127.0.0.12 +# rr: 0 +# - addr: 127.0.0.19 +# +# o UPF selection by eNodeB TAC +# (either single TAC or multiple TACs, DECIMAL representation) +# +# upf: +# pfcp: +# - addr: 127.0.0.7 +# 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.7 +# dnn: ims +# - addr: 127.0.0.12 +# dnn: [internet, web] +# +# o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit) +# (either single enb_id or multiple enb_ids, HEX representation) +# +# upf: +# pfcp: +# - addr: 127.0.0.7 +# e_cell_id: 463 +# - addr: 127.0.0.12 +# nr_cell_id: [123456789, 9413] +# +upf: + pfcp: + - addr: 172.18.18.7 + +# +# 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 Disable selection of UPF PFCP in Round-Robin manner +# no_pfcp_rr_select: true +# +parameter: + +# +# max: +# +# o Maximum Number of UE per AMF/MME +# ue: 1024 +# o Maximum Number of gNB/eNB per AMF/MME +# gnb: 64 +# +max: + +# +# pool: +# +# o The default memory pool size was set assuming 1024 UEs. +# To connect more UEs, you need to increase the size further. +# +# - Pool-size 128 => 65536 Number +# - Pool-size 256 => 16384 Number +# - Pool-size 512 => 4096 Number +# - Pool-size 1024 => 1024 Number +# - Pool-size 2048 => 512 Number +# - Pool-size 8192 => 128 Number +# - Pool-size 1024*1024 => 8 Number +# +# 128: 65536 +# 256: 16384 +# 512: 4096 +# 1024: 1024 +# 2048: 512 +# 8192: 128 +# big: 8 +# +pool: + +# +# time: +# +# o NF Instance Heartbeat (Default : 0) +# NFs will not send heart-beat timer in NFProfile +# NRF will send heart-beat timer in NFProfile +# +# o NF Instance Heartbeat (20 seconds) +# NFs will send heart-beat timer (20 seconds) in NFProfile +# NRF can change heart-beat timer in NFProfile +# +# nf_instance: +# heartbeat: 20 +# +# o Message Wait Duration (Default : 10,000 ms = 10 seconds) +# +# o Message Wait Duration (3000 ms) +# message: +# duration: 3000 +# +# o Handover Wait Duration (Default : 300 ms) +# Time to wait for SMF to send +# PFCP Session Modification Request(Remove Indirect Tunnel) to the UPF +# after sending Nsmf_PDUSession_UpdateSMContext Response(hoState:COMPLETED) +# +# o Handover Wait Duration (500ms) +# handover: +# duration: 500 +time: diff --git a/ttcn3-pgw-test/open5gs-upf.yaml b/ttcn3-pgw-test/open5gs-upf.yaml new file mode 100644 index 00000000..e051d315 --- /dev/null +++ b/ttcn3-pgw-test/open5gs-upf.yaml @@ -0,0 +1,233 @@ +# +# 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: /data/open5gs-upf.log + +# +# upf: +# +# +# +# o PFCP Server(127.0.0.7:8805, ::1:8805) +# pfcp: +# - addr: 127.0.0.7 +# - addr: ::1 +# +# o PFCP-U Server(127.0.0.1:2152, [::1]:2152) +# pfcp: +# name: localhost +# +# > +# +# o GTP-U Server(127.0.0.7:2152, [::1]:2152) +# gtpu: +# - addr: 127.0.0.7 +# - addr: ::1 +# +# o GTP-U Server(127.0.0.1:2152, [::1]:2152) +# gtpu: +# name: localhost +# +# o User Plane IP Resource information +# gtpu: +# - addr: +# - 127.0.0.7 +# - ::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 +# +# o Provide custom UPF GTP-U address to be advertised inside NGAP messages +# gtpu: +# - addr: 10.4.128.21 +# advertise: 172.24.15.30 +# +# gtpu: +# - addr: 10.4.128.21 +# advertise: +# - 127.0.0.1 +# - ::1 +# +# gtpu: +# - addr: 10.4.128.21 +# advertise: upf1.5gc.mnc001.mcc001.3gppnetwork.org +# +# gtpu: +# - dev: ens3 +# advertise: upf1.5gc.mnc001.mcc001.3gppnetwork.org +# +# +# +# Note that you need to setup your UE network using TUN device. +# (ogstun, ogstun2, ogstunX, ..) +# +# o IPv4 Pool +# $ sudo ip addr add 10.45.0.1/16 dev ogstun +# +# subnet: +# addr: 10.45.0.1/16 +# +# o IPv4/IPv6 Pool +# $ sudo ip addr add 10.45.0.1/16 dev ogstun +# $ sudo ip addr add 2001:db8:cafe::1/48 dev ogstun +# +# subnet: +# - addr: 10.45.0.1/16 +# - addr: 2001:db8:cafe::1/48 +# +# +# o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:db8:babe::1/48 +# All other APNs use 10.45.0.1/16, 2001:db8:cafe::1/48 +# $ sudo ip addr add 10.45.0.1/16 dev ogstun +# $ sudo ip addr add 10.46.0.1/16 dev ogstun +# $ sudo ip addr add 2001:db8:cafe::1/48 dev ogstun +# $ sudo ip addr add 2001:db8:babe::1/48 dev ogstun +# +# ; If the UE has unknown DNN/APN(not internet/ims), SMF/UPF will crash. +# +# subnet: +# - addr: 10.45.0.1/16 +# dnn: internet +# - addr: 2001:db8:cafe::1/48 +# dnn: internet +# - addr: 10.46.0.1/16 +# dnn: ims +# - addr: 2001:db8:babe::1/48 +# dnn: ims +# +# o Specific DNN/APN with the FALLBACK SUBNET(10.47.0.1/16) +# ; Note that put the FALLBACK SUBNET last to avoid SMF/UPF crash. +# +# subnet: +# - addr: 10.45.0.1/16 +# dnn: internet +# - addr: 10.46.0.1/16 +# dnn: ims +# - addr: 10.50.0.1/16 ## FALLBACK SUBNET +# +# o Multiple Devices (default: ogstun) +# $ sudo ip addr add 10.45.0.1/16 dev ogstun +# $ sudo ip addr add 2001:db8:cafe::1/48 dev ogstun2 +# $ sudo ip addr add 10.46.0.1/16 dev ogstun3 +# $ sudo ip addr add 2001:db8:babe::1/48 dev ogstun3 +# +# subnet: +# - addr: 10.45.0.1/16 +# dnn: internet +# - addr: 2001:db8:cafe::1/48 +# dnn: internet +# dev: ogstun2 +# - addr: 10.46.0.1/16 +# dnn: ims +# dev: ogstun3 +# - addr: 2001:db8:babe::1/48 +# dnn: ims +# dev: ogstun3 +# +upf: + pfcp: + - addr: 172.18.18.7 + gtpu: + - addr: 172.18.18.7 + subnet: + - addr: 10.45.0.1/16 + - addr: cafe::1/64 + +# +# smf: +# +# > +# +# o PFCP Client(127.0.0.4:8805) +# +# pfcp: +# addr: 127.0.0.4 +# +smf: + pfcp: + addr: 172.18.18.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 +# +parameter: + +# +# max: +# +# o Maximum Number of UE per AMF/MME +# ue: 1024 +# o Maximum Number of gNB/eNB per AMF/MME +# gnb: 64 +# +max: + +# +# pool: +# +# o The default memory pool size was set assuming 1024 UEs. +# To connect more UEs, you need to increase the size further. +# +# - Pool-size 128 => 65536 Number +# - Pool-size 256 => 16384 Number +# - Pool-size 512 => 4096 Number +# - Pool-size 1024 => 1024 Number +# - Pool-size 2048 => 512 Number +# - Pool-size 8192 => 128 Number +# - Pool-size 1024*1024 => 8 Number +# +# 128: 65536 +# 256: 16384 +# 512: 4096 +# 1024: 1024 +# 2048: 512 +# 8192: 128 +# big: 8 +# +pool: + +# +# time: +# +# o Message Wait Duration (Default : 10,000 ms = 10 seconds) +# +# o Message Wait Duration (3000 ms) +# message: +# duration: 3000 +time: diff --git a/ttcn3-pgw-test/osmo-uecups-daemon.cfg b/ttcn3-pgw-test/osmo-uecups-daemon.cfg new file mode 100644 index 00000000..9f63bb7b --- /dev/null +++ b/ttcn3-pgw-test/osmo-uecups-daemon.cfg @@ -0,0 +1,15 @@ +log stderr + logging filter all 1 + logging print extended-timestamp 1 + logging print file basename last + logging print category-hex 0 + logging print category 1 + logging print level 1 + logging timestamp 1 + logging color 0 +! + logging level set-all info +line vty + bind 0.0.0.0 +uecups + local-ip 0.0.0.0