Initial Open5GS support

Change-Id: Iff8b88dc22d8f156572839abb48b0c1377c55e33
diff --git a/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl
new file mode 100644
index 0000000..0e01337
--- /dev/null
+++ b/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl
@@ -0,0 +1,506 @@
+#
+# 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: ${smf.log_filename}
+#
+# 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.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://<eth0 IP address>:80)
+#    sbi:
+#      dev: eth0
+#
+#  <PFCP Server>
+#
+#  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
+#
+#  <GTP-C Server>
+#
+#  o GTP-C Server(127.0.0.4:2123, [fe80::3%lo]:2123)
+#    gtpc:
+#      addr:
+#        - 127.0.0.4
+#        - fe80::3%lo
+#
+#  o On SMF, Same configuration
+#    (127.0.0.4:2123, [fe80::3%lo]:2123).
+#    gtpc:
+#      - addr: 127.0.0.4
+#      - addr: fe80::3%lo
+#
+#  <GTP-U Server>>
+#
+#  o GTP-U Server(127.0.0.4:2152, [::1]:2152)
+#    gtpu:
+#      - addr: 127.0.0.4
+#      - addr: ::1
+#
+#  o GTP-U Server(127.0.0.1:2152, [::1]:2152)
+#    gtpu:
+#      name: localhost
+#
+#  <Subnet for UE Pool>
+#
+#  o IPv4 Pool
+#    subnet:
+#      addr: 10.45.0.1/16
+#
+#  o IPv4/IPv6 Pool
+#    subnet:
+#      - addr: 10.45.0.1/16
+#      - addr: 2001:230:cafe::1/48
+#
+#
+#  o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:230:babe::1/48
+#
+#    subnet:
+#      - addr: 10.45.0.1/16
+#        dnn: internet
+#      - addr: 2001:230:cafe::1/48
+#        dnn: internet
+#      - addr: 10.46.0.1/16
+#        dnn: ims
+#      - addr: 2001:230:babe::1/48
+#        dnn: ims
+#
+#  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:230:cafe::1/48
+#        range:
+#          - 2001:230:cafe:a0::0-2001:230:cafe:b0::0
+#          - 2001:230:cafe:c0::0-2001:230:cafe:d0::0
+#
+#  <Domain Name Server>
+#
+#  o Primary/Secondary can be configured. Others are ignored.
+#
+#    dns:
+#      - 8.8.8.8
+#      - 8.8.4.4
+#      - 2001:4860:4860::8888
+#      - 2001:4860:4860::8844
+#
+#  <MTU Size>
+#
+#  o Provisioning a limit on the size of the packets sent by the MS
+#    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 Selection - 5G Core only>
+#  1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF
+#  2. NRF responds to AMF with SmfInfo during NF-Discovery.
+#  3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo.
+#
+#  Note that if there is no SmfInfo, any AMF can select this SMF.
+#
+#  o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI
+#    info:
+#      - s_nssai:
+#          - sst: 1
+#            dnn:
+#              - internet
+#
+#  o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims]
+#    info:
+#      - s_nssai:
+#          - sst: 1
+#            sd: 009000
+#            dnn:
+#              - internet
+#              - ims
+#
+#  o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:90170 TAC:1]
+#    info:
+#      - s_nssai:
+#          - sst: 1
+#            dnn:
+#              - internet
+#        tai:
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            tac: 1
+#
+#  o If any of conditions below are met:
+#   - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:90170 TAC:1-9]
+#   - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims]
+#   - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:90170 TAC:10-20,30-40]
+#
+#    info:
+#      - s_nssai:
+#          - sst: 1
+#            dnn:
+#              - internet
+#        tai:
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            range:
+#              - 1-9
+#      - s_nssai:
+#          - sst: 2
+#            sd: 000080
+#            dnn:
+#              - internet
+#              - ims
+#      - s_nssai:
+#          - sst: 4
+#            dnn:
+#              - internet
+#        tai:
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            range:
+#              - 10-20
+#              - 30-40
+#
+#  o Complex Example
+#    info:
+#      - s_nssai:
+#          - sst: 1
+#            dnn:
+#              - internet
+#          - sst: 1
+#            sd: 000080
+#            dnn:
+#              - internet
+#              - ims
+#          - sst: 1
+#            sd: 009000
+#            dnn:
+#              [internet, ims]
+#          - sst: 2
+#            dnn:
+#              - internet
+#          - sst: 3
+#            sd: 123456
+#            dnn:
+#              - internet
+#        tai:
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            tac: [1, 2, 3]
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            tac: 4
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            tac:
+#              - 5
+#              - 6
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            range:
+#              - 100-200
+#              - 300-400
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            range:
+#              - 500-600
+#              - 700-800
+#              - 900-1000
+#      - s_nssai:
+#          - sst: 4
+#            dnn:
+#              - internet
+#        tai:
+#          - plmn_id:
+#              mcc: 901
+#              mnc: 70
+#            tac: 99
+#
+
+smf:
+    sbi:
+      - addr: ${epc.run_addr}
+        port: 7777
+    pfcp:
+      - addr: ${epc.run_addr}
+        port: 8808
+    gtpc:
+      - addr: ${epc.run_addr}
+        port: 2124
+    gtpu:
+      - addr: ${epc.run_addr}
+        port: 2153
+    subnet:
+      - addr: 10.45.0.1/16
+      - addr: 2001:230:cafe::1/48
+    dns:
+      - 8.8.8.8
+      - 8.8.4.4
+      - 2001:4860:4860::8888
+      - 2001:4860:4860::8844
+    mtu: 1400
+    freeDiameter: ${smf.diameter_filename}
+
+#
+# nrf:
+#
+#  <SBI Client>>
+#
+#  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://[fe80::1%lo]:80)
+#    If prefer_ipv4 is true, http://127.0.0.10:80 is selected.
+#
+#    sbi:
+#      addr:
+#        - 127.0.0.10
+#        - fe80::1%lo
+#
+nrf:
+    sbi:
+      - addr:
+          - ${epc.run_addr}
+        port: 7777
+
+#
+# upf:
+#
+#  <PFCP Client>>
+#
+#  o PFCP Client(127.0.0.7:8805)
+#
+#    pfcp:
+#      addr: 127.0.0.7
+#
+#  <UPF Selection>
+#
+#  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: ${epc.run_addr}
+        port: 8807
+
+#
+# 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 UE per AMF/MME
+#    ue: 1024
+# o Maximum Number of gNB/eNB per AMF/MME
+#    gnb: 32
+#
+max:
+
+#
+# pool:
+#
+# o The default memory pool size was set assuming 1024 UEs.
+#   To connect more UEs, you need to increase the size further.
+#
+#   - Pool-size 128         => 65536 Number
+#   - Pool-size 256         => 16384 Number
+#   - Pool-size 512         => 4096 Number
+#   - Pool-size 1024        => 1024 Number
+#   - Pool-size 2048        => 512 Number
+#   - Pool-size 8192        => 128 Number
+#   - Pool-size 1024*1024   => 8 Number
+#
+#    128:  65536
+#    256:  16384
+#    512:  4096
+#    1024: 1024
+#    2048: 512
+#    8192: 128
+#    big:  8
+#
+pool:
+
+#
+# time:
+#
+#  o NF Instance Heartbeat (Default : 0)
+#    NFs will not send heart-beat timer in NFProfile
+#    NRF will send heart-beat timer in NFProfile
+#
+#  o NF Instance Heartbeat (20 seconds)
+#    NFs will send heart-beat timer (20 seconds) in NFProfile
+#    NRF can change heart-beat timer in NFProfile
+#
+#    nf_instance:
+#      heartbeat: 20
+#
+#  o 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: