├── enter_container.sh ├── images ├── topology.jpg └── WebUI_config.JPG ├── start_tcpdump.sh ├── ueransim └── config │ ├── open5gs_gnb_init.sh │ ├── open5gs_ue_init.sh │ ├── open5gs_ue_init_single_pdu.sh │ ├── open5gs-gnb.yaml │ └── open5gs-ue.yaml ├── open5gs ├── __pycache__ │ └── Open5GS.cpython-38.pyc └── config │ ├── 5gc_cp_init.sh │ ├── 5gc_up_init.sh │ ├── upf_mec.yaml │ ├── upf_cld.yaml │ ├── default_yaml │ ├── hss.yaml │ ├── pcrf.yaml │ ├── sgwu.yaml │ ├── nrf.yaml │ ├── sgwc.yaml │ ├── udm.yaml │ ├── ausf.yaml │ ├── bsf.yaml │ ├── pcf.yaml │ ├── udr.yaml │ ├── upf.yaml │ ├── nssf.yaml │ ├── amf.yaml │ ├── mme.yaml │ └── smf.yaml │ ├── ausf.yaml │ ├── udm.yaml │ ├── bsf.yaml │ ├── pcf.yaml │ ├── udr.yaml │ ├── nrf.yaml │ ├── nssf.yaml │ ├── smf.yaml │ └── amf.yaml ├── python_modules ├── __pycache__ │ └── Open5GS.cpython-38.pyc ├── subscriber_profile.json ├── subscriber_profile_1.json └── Open5GS.py ├── clean.sh ├── update_subcribers.py ├── README.md ├── example1.py └── example2.py /enter_container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker exec -it $(docker ps -aq -f "name=^$1$") /bin/bash 4 | 5 | -------------------------------------------------------------------------------- /images/topology.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RiccardoFedrizzi/comnetsemu_5Gnet/HEAD/images/topology.jpg -------------------------------------------------------------------------------- /images/WebUI_config.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RiccardoFedrizzi/comnetsemu_5Gnet/HEAD/images/WebUI_config.JPG -------------------------------------------------------------------------------- /start_tcpdump.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker exec -it $(docker ps -aq -f "name=^$1$") /bin/bash -c "tcpdump -i ogstun -n" 4 | 5 | -------------------------------------------------------------------------------- /ueransim/config/open5gs_gnb_init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | sleep 20 5 | ./nr-gnb -c /mnt/ueransim/open5gs-gnb.yaml > /mnt/log/gnb.log 2>&1 6 | -------------------------------------------------------------------------------- /open5gs/__pycache__/Open5GS.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RiccardoFedrizzi/comnetsemu_5Gnet/HEAD/open5gs/__pycache__/Open5GS.cpython-38.pyc -------------------------------------------------------------------------------- /python_modules/__pycache__/Open5GS.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RiccardoFedrizzi/comnetsemu_5Gnet/HEAD/python_modules/__pycache__/Open5GS.cpython-38.pyc -------------------------------------------------------------------------------- /ueransim/config/open5gs_ue_init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # export IP_ADDR=$(awk 'END{print $1}' /etc/hosts) 4 | 5 | sleep 25 6 | ./nr-ue -c /mnt/ueransim/open5gs-ue.yaml > /mnt/log/ue.log 2>&1 7 | -------------------------------------------------------------------------------- /ueransim/config/open5gs_ue_init_single_pdu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # export IP_ADDR=$(awk 'END{print $1}' /etc/hosts) 4 | 5 | sleep 25 6 | ./nr-ue -c /mnt/ueransim/open5gs-ue_single_pdu.yaml > /mnt/log/ue.log 2>&1 7 | -------------------------------------------------------------------------------- /open5gs/config/5gc_cp_init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export DB_URI="mongodb://localhost/open5gs" 4 | 5 | mongod --smallfiles --dbpath /var/lib/mongodb --logpath /open5gs/install/var/log/open5gs/mongodb.log --logRotate reopen --logappend --bind_ip_all & 6 | 7 | 8 | sleep 10 && cd webui && npm run dev & 9 | 10 | ./install/bin/open5gs-nrfd & 11 | sleep 5 12 | ./install/bin/open5gs-smfd & 13 | ./install/bin/open5gs-amfd & 14 | ./install/bin/open5gs-ausfd & 15 | ./install/bin/open5gs-udmd & 16 | ./install/bin/open5gs-udrd & 17 | ./install/bin/open5gs-pcfd & 18 | ./install/bin/open5gs-bsfd & 19 | ./install/bin/open5gs-nssfd 20 | 21 | 22 | -------------------------------------------------------------------------------- /clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo mn -c 4 | 5 | docker stop $(docker ps -aq) 6 | 7 | docker container prune -f 8 | 9 | if [ "$1" == "log" ]; then 10 | cd log && sudo rm *.log 11 | fi 12 | 13 | sudo ip link delete s1-ue 14 | sudo ip link delete s2-s3 15 | sudo ip link delete s2-s1 16 | sudo ip link delete gnb-s1 17 | sudo ip link delete s1-gnb 18 | sudo ip link delete s1-cp 19 | sudo ip link delete gnb-s2 20 | sudo ip link delete s2-gnb 21 | sudo ip link delete s3-cp 22 | sudo ip link delete s1-ue1 23 | sudo ip link delete s1-ue2 24 | sudo ip link delete s1-ue3 25 | sudo ip link delete s2-upf_mec 26 | sudo ip link delete s3-upf 27 | sudo ip link delete s1-uegnb 28 | -------------------------------------------------------------------------------- /update_subcribers.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | 6 | from comnetsemu.cli import CLI, spawnXtermDocker 7 | from comnetsemu.net import Containernet, VNFManager 8 | from mininet.link import TCLink 9 | from mininet.log import info, setLogLevel 10 | from mininet.node import Controller 11 | 12 | from python_modules.Open5GS import Open5GS 13 | 14 | import json, time 15 | 16 | if __name__ == "__main__": 17 | 18 | prj_folder="/home/vagrant/comnetsemu/app/comnetsemu_5Gnet" 19 | 20 | print(f"*** Open5GS: Init subscriber for UE 0") 21 | o5gs = Open5GS( "172.17.0.2" ,"27017") 22 | o5gs.removeAllSubscribers() 23 | with open( prj_folder + "/python_modules/subscriber_profile_1.json" , 'r') as f: 24 | profile = json.load( f ) 25 | o5gs.addSubscriber(profile) 26 | 27 | -------------------------------------------------------------------------------- /ueransim/config/open5gs-gnb.yaml: -------------------------------------------------------------------------------- 1 | mcc: '001' # Mobile Country Code value 2 | mnc: '01' # Mobile Network Code value (2 or 3 digits) 3 | 4 | nci: '0x000000010' # NR Cell Identity (36-bit) 5 | idLength: 32 # NR gNB ID length in bits [22...32] 6 | tac: 1 # Tracking Area Code 7 | 8 | linkIp: 192.168.0.131 # gNB's local IP address for Radio Link Simulation (Usually same with local IP) 9 | ngapIp: 192.168.0.131 # gNB's local IP address for N2 Interface (Usually same with local IP) 10 | gtpIp: 192.168.0.131 # gNB's local IP address for N3 Interface (Usually same with local IP) 11 | 12 | # List of AMF address information 13 | amfConfigs: 14 | - address: 192.168.0.111 15 | port: 38412 16 | 17 | # List of supported S-NSSAIs by this gNB 18 | slices: 19 | - sst: 1 20 | sd: 1 21 | - sst: 2 22 | sd: 1 23 | 24 | # Indicates whether or not SCTP stream number errors should be ignored. 25 | ignoreStreamIds: true 26 | -------------------------------------------------------------------------------- /open5gs/config/5gc_up_init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [[ -z "$COMPONENT_NAME" ]]; then 4 | echo "Error: COMPONENT_NAME environment variable not set"; exit 1; 5 | 6 | elif [[ "$COMPONENT_NAME" =~ ^upf_cld$ ]]; then 7 | ip tuntap add name ogstun mode tun 8 | ip addr add 10.45.0.1/16 dev ogstun 9 | ip link set ogstun up 10 | iptables -t nat -A POSTROUTING -s 10.45.0.1/16 ! -o ogstun -j MASQUERADE 11 | 12 | iperf3 -B 10.45.0.1 -s -fm & 13 | 14 | cp /open5gs/install/etc/open5gs/temp/upf_cld.yaml /open5gs/install/etc/open5gs/upf.yaml 15 | 16 | elif [[ "$COMPONENT_NAME" =~ ^upf_mec$ ]]; then 17 | ip tuntap add name ogstun mode tun 18 | ip addr add 10.46.0.1/16 dev ogstun 19 | ip link set ogstun up 20 | iptables -t nat -A POSTROUTING -s 10.46.0.1/16 ! -o ogstun -j MASQUERADE 21 | 22 | iperf3 -B 10.46.0.1 -s -fm & 23 | 24 | cp /open5gs/install/etc/open5gs/temp/upf_mec.yaml /open5gs/install/etc/open5gs/upf.yaml 25 | 26 | else 27 | echo "Error: Invalid component name: '$COMPONENT_NAME'" 28 | fi 29 | 30 | sleep 15 31 | ./install/bin/open5gs-upfd 32 | -------------------------------------------------------------------------------- /open5gs/config/upf_mec.yaml: -------------------------------------------------------------------------------- 1 | logger: 2 | file: /open5gs/install/var/log/open5gs/upf_mec.log 3 | 4 | upf: 5 | pfcp: 6 | - addr: 192.168.0.113 7 | gtpu: 8 | - addr: 192.168.0.113 9 | subnet: 10 | - addr: 10.46.0.1/16 11 | dnn: mec 12 | dev: ogstun 13 | 14 | # 15 | # smf: 16 | # 17 | # > 18 | # 19 | # o PFCP Client(127.0.0.4:8805) 20 | # 21 | # pfcp: 22 | # addr: 127.0.0.4 23 | # 24 | smf: 25 | 26 | # 27 | # parameter: 28 | # 29 | # o Number of output streams per SCTP associations. 30 | # sctp_streams: 30 31 | # 32 | # o Disable use of IPv4 addresses (only IPv6) 33 | # no_ipv4: true 34 | # 35 | # o Disable use of IPv6 addresses (only IPv4) 36 | # no_ipv6: true 37 | # 38 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 39 | # prefer_ipv4: true 40 | # 41 | parameter: 42 | 43 | # 44 | # max: 45 | # 46 | # o Maximum Number of UE per AMF/MME 47 | # ue: 1024 48 | # o Maximum Number of gNB/eNB per AMF/MME 49 | # gnb: 32 50 | # 51 | max: 52 | 53 | # 54 | # pool: 55 | # 56 | # o The default memory pool size was set assuming 1024 UEs. 57 | # To connect more UEs, you need to increase the size further. 58 | # 59 | # - Pool-size 128 => 65536 Number 60 | # - Pool-size 256 => 16384 Number 61 | # - Pool-size 512 => 4096 Number 62 | # - Pool-size 1024 => 1024 Number 63 | # - Pool-size 2048 => 512 Number 64 | # - Pool-size 8192 => 128 Number 65 | # - Pool-size 1024*1024 => 8 Number 66 | # 67 | # 128: 65536 68 | # 256: 16384 69 | # 512: 4096 70 | # 1024: 1024 71 | # 2048: 512 72 | # 8192: 128 73 | # big: 8 74 | # 75 | pool: 76 | 77 | # 78 | # time: 79 | # 80 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 81 | # 82 | # o Message Wait Duration (3000 ms) 83 | # message: 84 | # duration: 3000 85 | time: 86 | -------------------------------------------------------------------------------- /open5gs/config/upf_cld.yaml: -------------------------------------------------------------------------------- 1 | logger: 2 | file: /open5gs/install/var/log/open5gs/upf_cld.log 3 | 4 | upf: 5 | pfcp: 6 | - addr: 192.168.0.112 7 | gtpu: 8 | - addr: 192.168.0.112 9 | subnet: 10 | - addr: 10.45.0.1/16 11 | dnn: internet 12 | dev: ogstun 13 | 14 | # 15 | # smf: 16 | # 17 | # > 18 | # 19 | # o PFCP Client(127.0.0.4:8805) 20 | # 21 | # pfcp: 22 | # addr: 127.0.0.4 23 | # 24 | smf: 25 | 26 | # 27 | # parameter: 28 | # 29 | # o Number of output streams per SCTP associations. 30 | # sctp_streams: 30 31 | # 32 | # o Disable use of IPv4 addresses (only IPv6) 33 | # no_ipv4: true 34 | # 35 | # o Disable use of IPv6 addresses (only IPv4) 36 | # no_ipv6: true 37 | # 38 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 39 | # prefer_ipv4: true 40 | # 41 | parameter: 42 | 43 | # 44 | # max: 45 | # 46 | # o Maximum Number of UE per AMF/MME 47 | # ue: 1024 48 | # o Maximum Number of gNB/eNB per AMF/MME 49 | # gnb: 32 50 | # 51 | max: 52 | 53 | # 54 | # pool: 55 | # 56 | # o The default memory pool size was set assuming 1024 UEs. 57 | # To connect more UEs, you need to increase the size further. 58 | # 59 | # - Pool-size 128 => 65536 Number 60 | # - Pool-size 256 => 16384 Number 61 | # - Pool-size 512 => 4096 Number 62 | # - Pool-size 1024 => 1024 Number 63 | # - Pool-size 2048 => 512 Number 64 | # - Pool-size 8192 => 128 Number 65 | # - Pool-size 1024*1024 => 8 Number 66 | # 67 | # 128: 65536 68 | # 256: 16384 69 | # 512: 4096 70 | # 1024: 1024 71 | # 2048: 512 72 | # 8192: 128 73 | # big: 8 74 | # 75 | pool: 76 | 77 | # 78 | # time: 79 | # 80 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 81 | # 82 | # o Message Wait Duration (3000 ms) 83 | # message: 84 | # duration: 3000 85 | time: 86 | -------------------------------------------------------------------------------- /ueransim/config/open5gs-ue.yaml: -------------------------------------------------------------------------------- 1 | # IMSI number of the UE. IMSI = [MCC|MNC|MSISDN] (In total 15 or 16 digits) 2 | supi: 'imsi-001011234567895' 3 | # Mobile Country Code value of HPLMN 4 | mcc: '001' 5 | # Mobile Network Code value of HPLMN (2 or 3 digits) 6 | mnc: '01' 7 | 8 | # Permanent subscription key 9 | key: '8baf473f2f8fd09487cccbd7097c6862' 10 | # Operator code (OP or OPC) of the UE 11 | op: '11111111111111111111111111111111' 12 | # This value specifies the OP type and it can be either 'OP' or 'OPC' 13 | opType: 'OP' 14 | # Authentication Management Field (AMF) value 15 | amf: '8000' 16 | # IMEI number of the device. It is used if no SUPI is provided 17 | imei: '356938035643803' 18 | # IMEISV number of the device. It is used if no SUPI and IMEI is provided 19 | imeiSv: '4370816125816151' 20 | 21 | # List of gNB IP addresses for Radio Link Simulation 22 | gnbSearchList: 23 | - 192.168.0.131 24 | 25 | # UAC Access Identities Configuration 26 | uacAic: 27 | mps: false 28 | mcs: false 29 | 30 | # UAC Access Control Class 31 | uacAcc: 32 | normalClass: 0 33 | class11: false 34 | class12: false 35 | class13: false 36 | class14: false 37 | class15: false 38 | 39 | # Initial PDU sessions to be established 40 | sessions: 41 | - type: 'IPv4' 42 | # apn: 'internet' 43 | slice: 44 | sst: 1 45 | sd: 1 46 | emergency: false 47 | - type: 'IPv4' 48 | # apn: 'mec' 49 | slice: 50 | sst: 2 51 | sd: 1 52 | emergency: false 53 | 54 | # Configured NSSAI for this UE by HPLMN 55 | configured-nssai: 56 | - sst: 1 57 | sd: 1 58 | - sst: 2 59 | sd: 1 60 | 61 | # Default Configured NSSAI for this UE 62 | default-nssai: 63 | - sst: 1 64 | sd: 1 65 | 66 | # Supported encryption algorithms by this UE 67 | integrity: 68 | IA1: true 69 | IA2: true 70 | IA3: true 71 | 72 | # Supported integrity algorithms by this UE 73 | ciphering: 74 | EA1: true 75 | EA2: true 76 | EA3: true 77 | 78 | # Integrity protection maximum data rate for user plane 79 | integrityMaxRate: 80 | uplink: 'full' 81 | downlink: 'full' 82 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/hss.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | # 4 | # logger: 5 | # 6 | # o Set OGS_LOG_INFO to all domain level 7 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 8 | # - If `domain` is omitted, the all domain level is set from 'level' 9 | # (Nothing is needed) 10 | # 11 | # o Set OGS_LOG_ERROR to all domain level 12 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 13 | # level: error 14 | # 15 | # o Set OGS_LOG_DEBUG to mme/emm domain level 16 | # level: debug 17 | # domain: mme,emm 18 | # 19 | # o Set OGS_LOG_TRACE to all domain level 20 | # level: trace 21 | # domain: core,fd,hss,event,mem,sock 22 | # 23 | logger: 24 | file: /open5gs/install/var/log/open5gs/hss.log 25 | 26 | hss: 27 | freeDiameter: /open5gs/install/etc/freeDiameter/hss.conf 28 | 29 | # 30 | # parameter: 31 | # 32 | # o Number of output streams per SCTP associations. 33 | # sctp_streams: 30 34 | # 35 | # o Disable use of IPv4 addresses (only IPv6) 36 | # no_ipv4: true 37 | # 38 | # o Disable use of IPv6 addresses (only IPv4) 39 | # no_ipv6: true 40 | # 41 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 42 | # prefer_ipv4: true 43 | # 44 | parameter: 45 | 46 | # 47 | # max: 48 | # 49 | # o Maximum Number of UE per AMF/MME 50 | # ue: 1024 51 | # o Maximum Number of gNB/eNB per AMF/MME 52 | # gnb: 32 53 | # 54 | max: 55 | 56 | # 57 | # pool: 58 | # 59 | # o The default memory pool size was set assuming 1024 UEs. 60 | # To connect more UEs, you need to increase the size further. 61 | # 62 | # - Pool-size 128 => 65536 Number 63 | # - Pool-size 256 => 16384 Number 64 | # - Pool-size 512 => 4096 Number 65 | # - Pool-size 1024 => 1024 Number 66 | # - Pool-size 2048 => 512 Number 67 | # - Pool-size 8192 => 128 Number 68 | # - Pool-size 1024*1024 => 8 Number 69 | # 70 | # 128: 65536 71 | # 256: 16384 72 | # 512: 4096 73 | # 1024: 1024 74 | # 2048: 512 75 | # 8192: 128 76 | # big: 8 77 | # 78 | pool: 79 | -------------------------------------------------------------------------------- /open5gs/config/ausf.yaml: -------------------------------------------------------------------------------- 1 | logger: 2 | file: /open5gs/install/var/log/open5gs/ausf.log 3 | 4 | 5 | ausf: 6 | sbi: 7 | - addr: 127.0.0.11 8 | port: 7777 9 | 10 | 11 | nrf: 12 | sbi: 13 | - addr: 14 | - 127.0.0.10 15 | port: 7777 16 | 17 | # 18 | # parameter: 19 | # 20 | # o Number of output streams per SCTP associations. 21 | # sctp_streams: 30 22 | # 23 | # o Disable use of IPv4 addresses (only IPv6) 24 | # no_ipv4: true 25 | # 26 | # o Disable use of IPv6 addresses (only IPv4) 27 | # no_ipv6: true 28 | # 29 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 30 | # prefer_ipv4: true 31 | # 32 | parameter: 33 | 34 | # 35 | # max: 36 | # 37 | # o Maximum Number of UE per AMF/MME 38 | # ue: 1024 39 | # o Maximum Number of gNB/eNB per AMF/MME 40 | # gnb: 32 41 | # 42 | max: 43 | 44 | # 45 | # pool: 46 | # 47 | # o The default memory pool size was set assuming 1024 UEs. 48 | # To connect more UEs, you need to increase the size further. 49 | # 50 | # - Pool-size 128 => 65536 Number 51 | # - Pool-size 256 => 16384 Number 52 | # - Pool-size 512 => 4096 Number 53 | # - Pool-size 1024 => 1024 Number 54 | # - Pool-size 2048 => 512 Number 55 | # - Pool-size 8192 => 128 Number 56 | # - Pool-size 1024*1024 => 8 Number 57 | # 58 | # 128: 65536 59 | # 256: 16384 60 | # 512: 4096 61 | # 1024: 1024 62 | # 2048: 512 63 | # 8192: 128 64 | # big: 8 65 | # 66 | pool: 67 | 68 | # 69 | # time: 70 | # 71 | # o NF Instance Heartbeat (Default : 0) 72 | # NFs will not send heart-beat timer in NFProfile 73 | # NRF will send heart-beat timer in NFProfile 74 | # 75 | # o NF Instance Heartbeat (20 seconds) 76 | # NFs will send heart-beat timer (20 seconds) in NFProfile 77 | # NRF can change heart-beat timer in NFProfile 78 | # 79 | # nf_instance: 80 | # heartbeat: 20 81 | # 82 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 83 | # 84 | # o Message Wait Duration (3000 ms) 85 | # message: 86 | # duration: 3000 87 | time: 88 | -------------------------------------------------------------------------------- /open5gs/config/udm.yaml: -------------------------------------------------------------------------------- 1 | logger: 2 | file: /open5gs/install/var/log/open5gs/udm.log 3 | 4 | 5 | udm: 6 | sbi: 7 | - addr: 127.0.0.12 8 | port: 7777 9 | 10 | 11 | nrf: 12 | sbi: 13 | - addr: 14 | - 127.0.0.10 15 | port: 7777 16 | 17 | # 18 | # parameter: 19 | # 20 | # o Number of output streams per SCTP associations. 21 | # sctp_streams: 30 22 | # 23 | # o Disable use of IPv4 addresses (only IPv6) 24 | # no_ipv4: true 25 | # 26 | # o Disable use of IPv6 addresses (only IPv4) 27 | # no_ipv6: true 28 | # 29 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 30 | # prefer_ipv4: true 31 | # 32 | parameter: 33 | 34 | # 35 | # max: 36 | # 37 | # o Maximum Number of UE per AMF/MME 38 | # ue: 1024 39 | # o Maximum Number of gNB/eNB per AMF/MME 40 | # gnb: 32 41 | # 42 | max: 43 | 44 | # 45 | # pool: 46 | # 47 | # o The default memory pool size was set assuming 1024 UEs. 48 | # To connect more UEs, you need to increase the size further. 49 | # 50 | # - Pool-size 128 => 65536 Number 51 | # - Pool-size 256 => 16384 Number 52 | # - Pool-size 512 => 4096 Number 53 | # - Pool-size 1024 => 1024 Number 54 | # - Pool-size 2048 => 512 Number 55 | # - Pool-size 8192 => 128 Number 56 | # - Pool-size 1024*1024 => 8 Number 57 | # 58 | # 128: 65536 59 | # 256: 16384 60 | # 512: 4096 61 | # 1024: 1024 62 | # 2048: 512 63 | # 8192: 128 64 | # big: 8 65 | # 66 | pool: 67 | 68 | # 69 | # time: 70 | # 71 | # o NF Instance Heartbeat (Default : 0) 72 | # NFs will not send heart-beat timer in NFProfile 73 | # NRF will send heart-beat timer in NFProfile 74 | # 75 | # o NF Instance Heartbeat (20 seconds) 76 | # NFs will send heart-beat timer (20 seconds) in NFProfile 77 | # NRF can change heart-beat timer in NFProfile 78 | # 79 | # nf_instance: 80 | # heartbeat: 20 81 | # 82 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 83 | # 84 | # o Message Wait Duration (3000 ms) 85 | # message: 86 | # duration: 3000 87 | time: 88 | -------------------------------------------------------------------------------- /open5gs/config/bsf.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | logger: 4 | file: /open5gs/install/var/log/open5gs/bsf.log 5 | 6 | 7 | bsf: 8 | sbi: 9 | - addr: 127.0.0.15 10 | port: 7777 11 | 12 | 13 | nrf: 14 | sbi: 15 | - addr: 16 | - 127.0.0.10 17 | port: 7777 18 | 19 | # 20 | # parameter: 21 | # 22 | # o Number of output streams per SCTP associations. 23 | # sctp_streams: 30 24 | # 25 | # o Disable use of IPv4 addresses (only IPv6) 26 | # no_ipv4: true 27 | # 28 | # o Disable use of IPv6 addresses (only IPv4) 29 | # no_ipv6: true 30 | # 31 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 32 | # prefer_ipv4: true 33 | # 34 | parameter: 35 | 36 | # 37 | # max: 38 | # 39 | # o Maximum Number of UE per AMF/MME 40 | # ue: 1024 41 | # o Maximum Number of gNB/eNB per AMF/MME 42 | # gnb: 32 43 | # 44 | max: 45 | 46 | # 47 | # pool: 48 | # 49 | # o The default memory pool size was set assuming 1024 UEs. 50 | # To connect more UEs, you need to increase the size further. 51 | # 52 | # - Pool-size 128 => 65536 Number 53 | # - Pool-size 256 => 16384 Number 54 | # - Pool-size 512 => 4096 Number 55 | # - Pool-size 1024 => 1024 Number 56 | # - Pool-size 2048 => 512 Number 57 | # - Pool-size 8192 => 128 Number 58 | # - Pool-size 1024*1024 => 8 Number 59 | # 60 | # 128: 65536 61 | # 256: 16384 62 | # 512: 4096 63 | # 1024: 1024 64 | # 2048: 512 65 | # 8192: 128 66 | # big: 8 67 | # 68 | pool: 69 | 70 | # 71 | # time: 72 | # 73 | # o NF Instance Heartbeat (Default : 0) 74 | # NFs will not send heart-beat timer in NFProfile 75 | # NRF will send heart-beat timer in NFProfile 76 | # 77 | # o NF Instance Heartbeat (20 seconds) 78 | # NFs will send heart-beat timer (20 seconds) in NFProfile 79 | # NRF can change heart-beat timer in NFProfile 80 | # 81 | # nf_instance: 82 | # heartbeat: 20 83 | # 84 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 85 | # 86 | # o Message Wait Duration (3000 ms) 87 | # message: 88 | # duration: 3000 89 | time: 90 | -------------------------------------------------------------------------------- /open5gs/config/pcf.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | 4 | logger: 5 | file: /open5gs/install/var/log/open5gs/pcf.log 6 | 7 | 8 | pcf: 9 | sbi: 10 | - addr: 127.0.0.13 11 | port: 7777 12 | 13 | 14 | nrf: 15 | sbi: 16 | - addr: 17 | - 127.0.0.10 18 | port: 7777 19 | 20 | # 21 | # parameter: 22 | # 23 | # o Number of output streams per SCTP associations. 24 | # sctp_streams: 30 25 | # 26 | # o Disable use of IPv4 addresses (only IPv6) 27 | # no_ipv4: true 28 | # 29 | # o Disable use of IPv6 addresses (only IPv4) 30 | # no_ipv6: true 31 | # 32 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 33 | # prefer_ipv4: true 34 | # 35 | parameter: 36 | 37 | # 38 | # max: 39 | # 40 | # o Maximum Number of UE per AMF/MME 41 | # ue: 1024 42 | # o Maximum Number of gNB/eNB per AMF/MME 43 | # gnb: 32 44 | # 45 | max: 46 | 47 | # 48 | # pool: 49 | # 50 | # o The default memory pool size was set assuming 1024 UEs. 51 | # To connect more UEs, you need to increase the size further. 52 | # 53 | # - Pool-size 128 => 65536 Number 54 | # - Pool-size 256 => 16384 Number 55 | # - Pool-size 512 => 4096 Number 56 | # - Pool-size 1024 => 1024 Number 57 | # - Pool-size 2048 => 512 Number 58 | # - Pool-size 8192 => 128 Number 59 | # - Pool-size 1024*1024 => 8 Number 60 | # 61 | # 128: 65536 62 | # 256: 16384 63 | # 512: 4096 64 | # 1024: 1024 65 | # 2048: 512 66 | # 8192: 128 67 | # big: 8 68 | # 69 | pool: 70 | 71 | # 72 | # time: 73 | # 74 | # o NF Instance Heartbeat (Default : 0) 75 | # NFs will not send heart-beat timer in NFProfile 76 | # NRF will send heart-beat timer in NFProfile 77 | # 78 | # o NF Instance Heartbeat (20 seconds) 79 | # NFs will send heart-beat timer (20 seconds) in NFProfile 80 | # NRF can change heart-beat timer in NFProfile 81 | # 82 | # nf_instance: 83 | # heartbeat: 20 84 | # 85 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 86 | # 87 | # o Message Wait Duration (3000 ms) 88 | # message: 89 | # duration: 3000 90 | time: 91 | -------------------------------------------------------------------------------- /python_modules/subscriber_profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "imsi": "001011234567895", 3 | "subscribed_rau_tau_timer": 12, 4 | "network_access_mode": 0, 5 | "subscriber_status": 0, 6 | "access_restriction_data": 32, 7 | "slice": [ 8 | { 9 | "sst": 1, 10 | "default_indicator": true, 11 | "sd": "000001", 12 | "session": [ 13 | { 14 | "name": "internet", 15 | "type": 3, 16 | "pcc_rule": [], 17 | "ambr": { 18 | "Comment": "unit=2 ==> Mbps", 19 | "uplink": {"value": 2, "unit": 2}, 20 | "downlink": {"value": 2, "unit": 2} 21 | }, 22 | "qos": { 23 | "index": 8, 24 | "arp": {"priority_level": 15, "pre_emption_capability": 1, "pre_emption_vulnerability": 1} 25 | } 26 | } 27 | ] 28 | }, 29 | { 30 | "sst": 2, 31 | "default_indicator": null, 32 | "sd": "000001", 33 | "session": [ 34 | { 35 | "name": "mec", 36 | "type": 3, 37 | "pcc_rule": [], 38 | "ambr": { 39 | "Comment": "unit=2 ==> Mbps", 40 | "uplink": {"value": 10, "unit": 2}, 41 | "downlink": {"value": 10, "unit": 2} 42 | }, 43 | "qos": { 44 | "index": 8, 45 | "arp": {"priority_level": 15, "pre_emption_capability": 1, "pre_emption_vulnerability": 1} 46 | } 47 | } 48 | ] 49 | } 50 | ], 51 | "ambr": { 52 | "Comment": "unit=2 ==> Mbps", 53 | "uplink": {"value": 1, "unit": 2}, 54 | "downlink": {"value": 1, "unit": 2} 55 | }, 56 | "security": { 57 | "k": "8baf473f2f8fd09487cccbd7097c6862", 58 | "amf": "8000", 59 | "op": "11111111111111111111111111111111", 60 | "opc": null 61 | }, 62 | "msisdn": [], 63 | "schema_version": 1, 64 | "__v": 0 65 | } 66 | -------------------------------------------------------------------------------- /python_modules/subscriber_profile_1.json: -------------------------------------------------------------------------------- 1 | { 2 | "imsi": "001011234567895", 3 | "subscribed_rau_tau_timer": 12, 4 | "network_access_mode": 0, 5 | "subscriber_status": 0, 6 | "access_restriction_data": 32, 7 | "slice": [ 8 | { 9 | "sst": 1, 10 | "default_indicator": true, 11 | "sd": "000001", 12 | "session": [ 13 | { 14 | "name": "internet", 15 | "type": 3, 16 | "pcc_rule": [], 17 | "ambr": { 18 | "Comment": "unit=2 ==> Mbps", 19 | "uplink": {"value": 10, "unit": 2}, 20 | "downlink": {"value": 10, "unit": 2} 21 | }, 22 | "qos": { 23 | "index": 8, 24 | "arp": {"priority_level": 15, "pre_emption_capability": 1, "pre_emption_vulnerability": 1} 25 | } 26 | } 27 | ] 28 | }, 29 | { 30 | "sst": 2, 31 | "default_indicator": null, 32 | "sd": "000001", 33 | "session": [ 34 | { 35 | "name": "mec", 36 | "type": 3, 37 | "pcc_rule": [], 38 | "ambr": { 39 | "Comment": "unit=2 ==> Mbps", 40 | "uplink": {"value": 20, "unit": 2}, 41 | "downlink": {"value": 20, "unit": 2} 42 | }, 43 | "qos": { 44 | "index": 8, 45 | "arp": {"priority_level": 15, "pre_emption_capability": 1, "pre_emption_vulnerability": 1} 46 | } 47 | } 48 | ] 49 | } 50 | ], 51 | "ambr": { 52 | "Comment": "unit=2 ==> Mbps", 53 | "uplink": {"value": 1, "unit": 2}, 54 | "downlink": {"value": 1, "unit": 2} 55 | }, 56 | "security": { 57 | "k": "8baf473f2f8fd09487cccbd7097c6862", 58 | "amf": "8000", 59 | "op": "11111111111111111111111111111111", 60 | "opc": null 61 | }, 62 | "msisdn": [], 63 | "schema_version": 1, 64 | "__v": 0 65 | } 66 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/pcrf.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | # 4 | # logger: 5 | # 6 | # o Set OGS_LOG_INFO to all domain level 7 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 8 | # - If `domain` is omitted, the all domain level is set from 'level' 9 | # (Nothing is needed) 10 | # 11 | # o Set OGS_LOG_ERROR to all domain level 12 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 13 | # level: error 14 | # 15 | # o Set OGS_LOG_DEBUG to mme/emm domain level 16 | # level: debug 17 | # domain: mme,emm 18 | # 19 | # o Set OGS_LOG_TRACE to all domain level 20 | # level: trace 21 | # domain: core,fd,pcrf,event,mem,sock 22 | logger: 23 | file: /open5gs/install/var/log/open5gs/pcrf.log 24 | 25 | pcrf: 26 | freeDiameter: /open5gs/install/etc/freeDiameter/pcrf.conf 27 | 28 | # 29 | # parameter: 30 | # 31 | # o Number of output streams per SCTP associations. 32 | # sctp_streams: 30 33 | # 34 | # o Disable use of IPv4 addresses (only IPv6) 35 | # no_ipv4: true 36 | # 37 | # o Disable use of IPv6 addresses (only IPv4) 38 | # no_ipv6: true 39 | # 40 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 41 | # prefer_ipv4: true 42 | # 43 | # o Legacy support for pre-release LTE 11 devices to do calling 44 | # - Replace IPv4/v6 local addr field in AAR Media-Subcomponent AVP 45 | # by 'any local port' 46 | # no_ipv4v6_local_addr_in_packet_filter: true 47 | # 48 | parameter: 49 | 50 | # 51 | # max: 52 | # 53 | # o Maximum Number of UE per AMF/MME 54 | # ue: 1024 55 | # o Maximum Number of gNB/eNB per AMF/MME 56 | # gnb: 32 57 | # 58 | max: 59 | 60 | # 61 | # pool: 62 | # 63 | # o The default memory pool size was set assuming 1024 UEs. 64 | # To connect more UEs, you need to increase the size further. 65 | # 66 | # - Pool-size 128 => 65536 Number 67 | # - Pool-size 256 => 16384 Number 68 | # - Pool-size 512 => 4096 Number 69 | # - Pool-size 1024 => 1024 Number 70 | # - Pool-size 2048 => 512 Number 71 | # - Pool-size 8192 => 128 Number 72 | # - Pool-size 1024*1024 => 8 Number 73 | # 74 | # 128: 65536 75 | # 256: 16384 76 | # 512: 4096 77 | # 1024: 1024 78 | # 2048: 512 79 | # 8192: 128 80 | # big: 8 81 | # 82 | pool: 83 | -------------------------------------------------------------------------------- /open5gs/config/udr.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | 4 | logger: 5 | file: /open5gs/install/var/log/open5gs/udr.log 6 | 7 | 8 | udr: 9 | sbi: 10 | - addr: 127.0.0.20 11 | port: 7777 12 | 13 | 14 | nrf: 15 | sbi: 16 | - addr: 17 | - 127.0.0.10 18 | port: 7777 19 | 20 | # 21 | # parameter: 22 | # 23 | # o Number of output streams per SCTP associations. 24 | # sctp_streams: 30 25 | # 26 | # o Disable use of IPv4 addresses (only IPv6) 27 | # no_ipv4: true 28 | # 29 | # o Disable use of IPv6 addresses (only IPv4) 30 | # no_ipv6: true 31 | # 32 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 33 | # prefer_ipv4: true 34 | # 35 | parameter: 36 | 37 | # 38 | # max: 39 | # 40 | # o Maximum Number of UE per AMF/MME 41 | # ue: 1024 42 | # o Maximum Number of gNB/eNB per AMF/MME 43 | # gnb: 32 44 | # 45 | max: 46 | 47 | # 48 | # pool: 49 | # 50 | # o The default memory pool size was set assuming 1024 UEs. 51 | # To connect more UEs, you need to increase the size further. 52 | # 53 | # - Pool-size 128 => 65536 Number 54 | # - Pool-size 256 => 16384 Number 55 | # - Pool-size 512 => 4096 Number 56 | # - Pool-size 1024 => 1024 Number 57 | # - Pool-size 2048 => 512 Number 58 | # - Pool-size 8192 => 128 Number 59 | # - Pool-size 1024*1024 => 8 Number 60 | # 61 | # 128: 65536 62 | # 256: 16384 63 | # 512: 4096 64 | # 1024: 1024 65 | # 2048: 512 66 | # 8192: 128 67 | # big: 8 68 | # 69 | pool: 70 | 71 | # 72 | # time: 73 | # 74 | # o NF Instance Heartbeat (Default : 0) 75 | # NFs will not send heart-beat timer in NFProfile 76 | # NRF will send heart-beat timer in NFProfile 77 | # 78 | # o NF Instance Heartbeat (20 seconds) 79 | # NFs will send heart-beat timer (20 seconds) in NFProfile 80 | # NRF can change heart-beat timer in NFProfile 81 | # 82 | # nf_instance: 83 | # heartbeat: 20 84 | # 85 | # o NF Instance Heartbeat (Disabled) 86 | # nf_instance: 87 | # heartbeat: 0 88 | # 89 | # o NF Instance Heartbeat (10 seconds) 90 | # nf_instance: 91 | # heartbeat: 10 92 | # 93 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 94 | # 95 | # o Message Wait Duration (3000 ms) 96 | # message: 97 | # duration: 3000 98 | time: 99 | -------------------------------------------------------------------------------- /open5gs/config/nrf.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | 4 | logger: 5 | file: /open5gs/install/var/log/open5gs/nrf.log 6 | 7 | 8 | nrf: 9 | sbi: 10 | addr: 11 | - 127.0.0.10 12 | port: 7777 13 | 14 | # 15 | # parameter: 16 | # 17 | # o Number of output streams per SCTP associations. 18 | # sctp_streams: 30 19 | # 20 | # o Disable use of IPv4 addresses (only IPv6) 21 | # no_ipv4: true 22 | # 23 | # o Disable use of IPv6 addresses (only IPv4) 24 | # no_ipv6: true 25 | # 26 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 27 | # prefer_ipv4: true 28 | # 29 | parameter: 30 | 31 | # 32 | # max: 33 | # 34 | # o Maximum Number of UE per AMF/MME 35 | # ue: 1024 36 | # o Maximum Number of gNB/eNB per AMF/MME 37 | # gnb: 32 38 | # 39 | max: 40 | 41 | # 42 | # pool: 43 | # 44 | # o The default memory pool size was set assuming 1024 UEs. 45 | # To connect more UEs, you need to increase the size further. 46 | # 47 | # - Pool-size 128 => 65536 Number 48 | # - Pool-size 256 => 16384 Number 49 | # - Pool-size 512 => 4096 Number 50 | # - Pool-size 1024 => 1024 Number 51 | # - Pool-size 2048 => 512 Number 52 | # - Pool-size 8192 => 128 Number 53 | # - Pool-size 1024*1024 => 8 Number 54 | # 55 | # 128: 65536 56 | # 256: 16384 57 | # 512: 4096 58 | # 1024: 1024 59 | # 2048: 512 60 | # 8192: 128 61 | # big: 8 62 | # 63 | pool: 64 | 65 | # 66 | # time: 67 | # 68 | # o NF Instance Heartbeat (Default : 10 seconds) 69 | # 70 | # o NF Instance Heartbeat (Disabled) 71 | # nf_instance: 72 | # heartbeat: 0 73 | # 74 | # o NF Instance Heartbeat (5 seconds) 75 | # nf_instance: 76 | # heartbeat: 5 77 | # 78 | # o NF Instance Validity (Default : 3600 seconds = 1 hour) 79 | # 80 | # o NF Instance Validity (10 seconds) 81 | # nf_instance: 82 | # validity: 10 83 | # 84 | # o Subscription Validity (Default : 86400 seconds = 1 day) 85 | # 86 | # o Subscription Validity (Disabled) 87 | # subscription: 88 | # validity: 0 89 | # 90 | # o Subscription Validity (3600 seconds = 1 hour) 91 | # subscription: 92 | # validity: 3600 93 | # 94 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 95 | # 96 | # o Message Wait Duration (3000 ms) 97 | # message: 98 | # duration: 3000 99 | time: 100 | -------------------------------------------------------------------------------- /open5gs/config/nssf.yaml: -------------------------------------------------------------------------------- 1 | logger: 2 | file: /open5gs/install/var/log/open5gs/nssf.log 3 | 4 | 5 | nssf: 6 | sbi: 7 | - addr: 127.0.0.14 8 | port: 7777 9 | nsi: 10 | - addr: 127.0.0.10 11 | port: 7777 12 | s_nssai: 13 | sst: 1 14 | sd: 000001 15 | - addr: 127.0.0.10 16 | port: 7777 17 | s_nssai: 18 | sst: 2 19 | sd: 000001 20 | nrf: 21 | sbi: 22 | - addr: 23 | - 127.0.0.10 24 | port: 7777 25 | 26 | # 27 | # parameter: 28 | # 29 | # o Number of output streams per SCTP associations. 30 | # sctp_streams: 30 31 | # 32 | # o Disable use of IPv4 addresses (only IPv6) 33 | # no_ipv4: true 34 | # 35 | # o Disable use of IPv6 addresses (only IPv4) 36 | # no_ipv6: true 37 | # 38 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 39 | # prefer_ipv4: true 40 | # 41 | parameter: 42 | 43 | # 44 | # max: 45 | # 46 | # o Maximum Number of UE per AMF/MME 47 | # ue: 1024 48 | # o Maximum Number of gNB/eNB per AMF/MME 49 | # gnb: 32 50 | # 51 | max: 52 | 53 | # 54 | # pool: 55 | # 56 | # o The default memory pool size was set assuming 1024 UEs. 57 | # To connect more UEs, you need to increase the size further. 58 | # 59 | # - Pool-size 128 => 65536 Number 60 | # - Pool-size 256 => 16384 Number 61 | # - Pool-size 512 => 4096 Number 62 | # - Pool-size 1024 => 1024 Number 63 | # - Pool-size 2048 => 512 Number 64 | # - Pool-size 8192 => 128 Number 65 | # - Pool-size 1024*1024 => 8 Number 66 | # 67 | # 128: 65536 68 | # 256: 16384 69 | # 512: 4096 70 | # 1024: 1024 71 | # 2048: 512 72 | # 8192: 128 73 | # big: 8 74 | # 75 | pool: 76 | 77 | # 78 | # time: 79 | # 80 | # o NF Instance Heartbeat (Default : 0) 81 | # NFs will not send heart-beat timer in NFProfile 82 | # NRF will send heart-beat timer in NFProfile 83 | # 84 | # o NF Instance Heartbeat (20 seconds) 85 | # NFs will send heart-beat timer (20 seconds) in NFProfile 86 | # NRF can change heart-beat timer in NFProfile 87 | # 88 | # nf_instance: 89 | # heartbeat: 20 90 | # 91 | # o NF Instance Heartbeat (Disabled) 92 | # nf_instance: 93 | # heartbeat: 0 94 | # 95 | # o NF Instance Heartbeat (10 seconds) 96 | # nf_instance: 97 | # heartbeat: 10 98 | # 99 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 100 | # 101 | # o Message Wait Duration (3000 ms) 102 | # message: 103 | # duration: 3000 104 | time: 105 | -------------------------------------------------------------------------------- /python_modules/Open5GS.py: -------------------------------------------------------------------------------- 1 | import pymongo 2 | 3 | class Open5GS: 4 | def __init__(self, server, port): 5 | self.server = server 6 | self.port = port 7 | self.myclient = pymongo.MongoClient("mongodb://" + str(self.server) + ":" + str(self.port) + "/") 8 | 9 | def _GetSubscribers(self): 10 | mydb = self.myclient["open5gs"] 11 | mycol = mydb["subscribers"] 12 | subs_list = [] 13 | for x in mycol.find(): 14 | subs_list.append(x) 15 | pass 16 | 17 | return subs_list 18 | 19 | def _GetSubscriber(self, imsi): 20 | mydb = self.myclient["open5gs"] 21 | mycol = mydb["subscribers"] 22 | myquery = { "imsi": str(imsi)} 23 | mydoc = mycol.find(myquery) 24 | for x in mydoc: 25 | return x 26 | 27 | def _AddSubscriber(self, sub_data): 28 | mydb = self.myclient["open5gs"] 29 | mycol = mydb["subscribers"] 30 | 31 | x = mycol.insert_one(sub_data) 32 | return x.inserted_id 33 | 34 | def _UpdateSubscriber(self, imsi, sub_data): 35 | mydb = self.myclient["open5gs"] 36 | mycol = mydb["subscribers"] 37 | print("Attempting to update IMSI " + str(imsi)) 38 | newvalues = { "$set": sub_data } 39 | myquery = { "imsi": str(imsi)} 40 | x = mycol.update_one(myquery, newvalues) 41 | print(x) 42 | return True 43 | 44 | def _DeleteSubscriber(self, imsi): 45 | mydb = self.myclient["open5gs"] 46 | mycol = mydb["subscribers"] 47 | myquery = { "imsi": str(imsi)} 48 | x = mycol.delete_many(myquery) 49 | # print(x.deleted_count, " subscribers deleted.") 50 | return x.deleted_count 51 | 52 | 53 | 54 | ##################################################### 55 | def getSubscribersImsiList(self): 56 | subs = self._GetSubscribers() 57 | s_list=[] 58 | for s in subs: 59 | s_list.append(s["imsi"]) 60 | return s_list 61 | 62 | 63 | def addSubscriber( self , profile:dict ): 64 | if "imsi" in profile.keys(): 65 | imsi_list = self.getSubscribersImsiList() 66 | if profile["imsi"] in imsi_list: 67 | print( "A subscriber with this IMSI is already there." ) 68 | else: 69 | x = self._AddSubscriber(profile.copy()) 70 | else: 71 | print( "IMSI is required." ) 72 | 73 | 74 | def removeAllSubscribers(self): 75 | subs = self._GetSubscribers() 76 | for s in subs: 77 | self._DeleteSubscriber(s["imsi"]) 78 | 79 | 80 | def removeAllSubscribers_ByObjID(self): 81 | mydb = self.myclient["open5gs"] 82 | mycol = mydb["subscribers"] 83 | for c in mycol.find(): 84 | aa = c["_id"] 85 | myquery = { "_id": aa } 86 | mycol.delete_many(myquery) 87 | 88 | -------------------------------------------------------------------------------- /open5gs/config/smf.yaml: -------------------------------------------------------------------------------- 1 | logger: 2 | file: /open5gs/install/var/log/open5gs/smf.log 3 | 4 | 5 | smf: 6 | sbi: 7 | - addr: 127.0.0.4 8 | port: 7777 9 | pfcp: 10 | - addr: 192.168.0.111 11 | gtpc: 12 | - addr: 127.0.0.4 13 | gtpu: 14 | - addr: 127.0.0.4 15 | subnet: 16 | - addr: 10.45.0.1/16 17 | dnn: internet 18 | - addr: 10.46.0.1/16 19 | dnn: mec 20 | dns: 21 | - 8.8.8.8 22 | - 8.8.4.4 23 | - 2001:4860:4860::8888 24 | - 2001:4860:4860::8844 25 | mtu: 1400 26 | freeDiameter: /open5gs/install/etc/freeDiameter/smf.conf 27 | 28 | 29 | nrf: 30 | sbi: 31 | - addr: 32 | - 127.0.0.10 33 | port: 7777 34 | 35 | 36 | upf: 37 | pfcp: 38 | - addr: 192.168.0.112 39 | dnn: internet 40 | - addr: 192.168.0.113 41 | dnn: mec 42 | 43 | # 44 | # parameter: 45 | # 46 | # o Number of output streams per SCTP associations. 47 | # sctp_streams: 30 48 | # 49 | # o Disable use of IPv4 addresses (only IPv6) 50 | # no_ipv4: true 51 | # 52 | # o Disable use of IPv6 addresses (only IPv4) 53 | # no_ipv6: true 54 | # 55 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 56 | # prefer_ipv4: true 57 | # 58 | # o Disable selection of UPF PFCP in Round-Robin manner 59 | # no_pfcp_rr_select: true 60 | # 61 | parameter: 62 | 63 | # 64 | # max: 65 | # 66 | # o Maximum Number of UE per AMF/MME 67 | # ue: 1024 68 | # o Maximum Number of gNB/eNB per AMF/MME 69 | # gnb: 32 70 | # 71 | max: 72 | 73 | # 74 | # pool: 75 | # 76 | # o The default memory pool size was set assuming 1024 UEs. 77 | # To connect more UEs, you need to increase the size further. 78 | # 79 | # - Pool-size 128 => 65536 Number 80 | # - Pool-size 256 => 16384 Number 81 | # - Pool-size 512 => 4096 Number 82 | # - Pool-size 1024 => 1024 Number 83 | # - Pool-size 2048 => 512 Number 84 | # - Pool-size 8192 => 128 Number 85 | # - Pool-size 1024*1024 => 8 Number 86 | # 87 | # 128: 65536 88 | # 256: 16384 89 | # 512: 4096 90 | # 1024: 1024 91 | # 2048: 512 92 | # 8192: 128 93 | # big: 8 94 | # 95 | pool: 96 | 97 | # 98 | # time: 99 | # 100 | # o NF Instance Heartbeat (Default : 0) 101 | # NFs will not send heart-beat timer in NFProfile 102 | # NRF will send heart-beat timer in NFProfile 103 | # 104 | # o NF Instance Heartbeat (20 seconds) 105 | # NFs will send heart-beat timer (20 seconds) in NFProfile 106 | # NRF can change heart-beat timer in NFProfile 107 | # 108 | # nf_instance: 109 | # heartbeat: 20 110 | # 111 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 112 | # 113 | # o Message Wait Duration (3000 ms) 114 | # message: 115 | # duration: 3000 116 | # 117 | # o Handover Wait Duration (Default : 300 ms) 118 | # Time to wait for SMF to send 119 | # PFCP Session Modification Request(Remove Indirect Tunnel) to the UPF 120 | # after sending Nsmf_PDUSession_UpdateSMContext Response(hoState:COMPLETED) 121 | # 122 | # o Handover Wait Duration (500ms) 123 | # handover: 124 | # duration: 500 125 | time: 126 | -------------------------------------------------------------------------------- /open5gs/config/amf.yaml: -------------------------------------------------------------------------------- 1 | logger: 2 | file: /open5gs/install/var/log/open5gs/amf.log 3 | 4 | 5 | amf: 6 | sbi: 7 | - addr: 127.0.0.5 8 | port: 7777 9 | ngap: 10 | - addr: 192.168.0.111 11 | guami: 12 | - plmn_id: 13 | mcc: 001 14 | mnc: 01 15 | amf_id: 16 | region: 2 17 | set: 1 18 | tai: 19 | - plmn_id: 20 | mcc: 001 21 | mnc: 01 22 | tac: 1 23 | plmn_support: 24 | - plmn_id: 25 | mcc: 001 26 | mnc: 01 27 | s_nssai: 28 | - sst: 1 29 | sd: 1 30 | s_nssai: 31 | - sst: 2 32 | sd: 1 33 | security: 34 | integrity_order : [ NIA2, NIA1, NIA0 ] 35 | ciphering_order : [ NEA0, NEA1, NEA2 ] 36 | network_name: 37 | full: Open5GS 38 | amf_name: open5gs-amf0 39 | 40 | 41 | nrf: 42 | sbi: 43 | - addr: 44 | - 127.0.0.10 45 | port: 7777 46 | 47 | # 48 | # parameter: 49 | # 50 | # o Disable use of IPv4 addresses (only IPv6) 51 | # no_ipv4: true 52 | # 53 | # o Disable use of IPv6 addresses (only IPv4) 54 | # no_ipv6: true 55 | # 56 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 57 | # prefer_ipv4: true 58 | # 59 | parameter: 60 | 61 | # 62 | # max: 63 | # 64 | # o Maximum Number of UE per AMF/MME 65 | # ue: 1024 66 | # o Maximum Number of gNB/eNB per AMF/MME 67 | # gnb: 32 68 | # 69 | max: 70 | 71 | # 72 | # pool: 73 | # 74 | # o The default memory pool size was set assuming 1024 UEs. 75 | # To connect more UEs, you need to increase the size further. 76 | # 77 | # - Pool-size 128 => 65536 Number 78 | # - Pool-size 256 => 16384 Number 79 | # - Pool-size 512 => 4096 Number 80 | # - Pool-size 1024 => 1024 Number 81 | # - Pool-size 2048 => 512 Number 82 | # - Pool-size 8192 => 128 Number 83 | # - Pool-size 1024*1024 => 8 Number 84 | # 85 | # 128: 65536 86 | # 256: 16384 87 | # 512: 4096 88 | # 1024: 1024 89 | # 2048: 512 90 | # 8192: 128 91 | # big: 8 92 | # 93 | pool: 94 | 95 | # 96 | # sockopt: 97 | # no_delay : true 98 | # 99 | sockopt: 100 | 101 | # 102 | # sctp: 103 | # heartbit_interval : 5000 (5secs) 104 | # sack_delay : 200 (200ms) 105 | # rto_initial : 3000 (3secs) 106 | # rto_min : 1000 (1sec) 107 | # rto_max : 5000 (5secs) 108 | # max_num_of_ostreams : 30 109 | # max_num_of_istreams : 65535 110 | # max_attempts : 4 111 | # max_initial_timeout : 8000(8secs) 112 | # usrsctp_udp_port : 9899 113 | # 114 | sctp: 115 | 116 | # 117 | # time: 118 | # 119 | # o NF Instance Heartbeat (Default : 0) 120 | # NFs will not send heart-beat timer in NFProfile 121 | # NRF will send heart-beat timer in NFProfile 122 | # 123 | # o NF Instance Heartbeat (20 seconds) 124 | # NFs will send heart-beat timer (20 seconds) in NFProfile 125 | # NRF can change heart-beat timer in NFProfile 126 | # 127 | # nf_instance: 128 | # heartbeat: 20 129 | # 130 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 131 | # 132 | # o Message Wait Duration (3000 ms) 133 | # message: 134 | # duration: 3000 135 | # 136 | # o Handover Wait Duration (Default : 300 ms) 137 | # Time to wait for AMF to send UEContextReleaseCommand 138 | # to the source gNB after receiving HandoverNotify 139 | # 140 | # o Handover Wait Duration (500ms) 141 | # handover: 142 | # duration: 500 143 | time: 144 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/sgwu.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,pfcp,gtp,sgwu,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/sgwu.log 23 | 24 | # 25 | # sgwu: 26 | # 27 | # 28 | # 29 | # o PFCP Server(127.0.0.6:8805, ::1:8805) 30 | # pfcp: 31 | # - addr: 127.0.0.6 32 | # - addr: ::1 33 | # 34 | # o PFCP-U Server(127.0.0.1:2152, [::1]:2152) 35 | # pfcp: 36 | # - name: localhost 37 | # 38 | # 39 | # 40 | # o GTP-U Server(127.0.0.6:2152, [::1]:2152) 41 | # gtpu: 42 | # - addr: 127.0.0.6 43 | # - addr: ::1 44 | # 45 | # o GTP-U Server(127.0.0.1:2152, [::1]:2152) 46 | # gtpu: 47 | # - name: localhost 48 | # 49 | # o User Plane IP Resource information 50 | # gtpu: 51 | # - addr: 52 | # - 127.0.0.6 53 | # - ::1 54 | # teid_range_indication: 4 55 | # teid_range: 10 56 | # network_instance: internet 57 | # source_interface: 0 58 | # - addr: 127.0.10.4 59 | # teid_range_indication: 4 60 | # teid_range: 5 61 | # network_instance: ims 62 | # source_interface: 1 63 | # 64 | # o Provide custom SGW-U GTP-U address to be advertised inside S1AP messages 65 | # gtpu: 66 | # - addr: 10.4.128.21 67 | # advertise: 172.24.15.30 68 | # 69 | # gtpu: 70 | # - addr: 10.4.128.21 71 | # advertise: 72 | # - 127.0.0.1 73 | # - ::1 74 | # 75 | # gtpu: 76 | # - addr: 10.4.128.21 77 | # advertise: sgw1.epc.mnc001.mcc001.3gppnetwork.org 78 | # 79 | # gtpu: 80 | # - dev: ens3 81 | # advertise: sgw1.epc.mnc001.mcc001.3gppnetwork.org 82 | # 83 | sgwu: 84 | pfcp: 85 | - addr: 127.0.0.6 86 | gtpu: 87 | - addr: 127.0.0.6 88 | 89 | # 90 | # sgwc: 91 | # 92 | # > 93 | # 94 | # o PFCP Client(127.0.0.3:8805) 95 | # 96 | # pfcp: 97 | # addr: 127.0.0.3 98 | # 99 | sgwc: 100 | 101 | # 102 | # parameter: 103 | # 104 | # o Number of output streams per SCTP associations. 105 | # sctp_streams: 30 106 | # 107 | # o Disable use of IPv4 addresses (only IPv6) 108 | # no_ipv4: true 109 | # 110 | # o Disable use of IPv6 addresses (only IPv4) 111 | # no_ipv6: true 112 | # 113 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 114 | # prefer_ipv4: true 115 | # 116 | parameter: 117 | 118 | # 119 | # max: 120 | # 121 | # o Maximum Number of UE per AMF/MME 122 | # ue: 1024 123 | # o Maximum Number of gNB/eNB per AMF/MME 124 | # gnb: 32 125 | # 126 | max: 127 | 128 | # 129 | # pool: 130 | # 131 | # o The default memory pool size was set assuming 1024 UEs. 132 | # To connect more UEs, you need to increase the size further. 133 | # 134 | # - Pool-size 128 => 65536 Number 135 | # - Pool-size 256 => 16384 Number 136 | # - Pool-size 512 => 4096 Number 137 | # - Pool-size 1024 => 1024 Number 138 | # - Pool-size 2048 => 512 Number 139 | # - Pool-size 8192 => 128 Number 140 | # - Pool-size 1024*1024 => 8 Number 141 | # 142 | # 128: 65536 143 | # 256: 16384 144 | # 512: 4096 145 | # 1024: 1024 146 | # 2048: 512 147 | # 8192: 128 148 | # big: 8 149 | # 150 | pool: 151 | 152 | # 153 | # time: 154 | # 155 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 156 | # 157 | # o Message Wait Duration (3000 ms) 158 | # message: 159 | # duration: 3000 160 | time: 161 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/nrf.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | # 4 | # logger: 5 | # 6 | # o Set OGS_LOG_INFO to all domain level 7 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 8 | # - If `domain` is omitted, the all domain level is set from 'level' 9 | # (Nothing is needed) 10 | # 11 | # o Set OGS_LOG_ERROR to all domain level 12 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 13 | # level: error 14 | # 15 | # o Set OGS_LOG_DEBUG to mme/emm domain level 16 | # level: debug 17 | # domain: mme,emm 18 | # 19 | # o Set OGS_LOG_TRACE to all domain level 20 | # level: trace 21 | # domain: core,sbi,nrf,event,mem,sock 22 | # 23 | logger: 24 | file: /open5gs/install/var/log/open5gs/nrf.log 25 | 26 | # 27 | # nrf: 28 | # 29 | # 30 | # 31 | # o SBI Server(http://:80) 32 | # sbi: 33 | # 34 | # o SBI Server(http://:7777) 35 | # sbi: 36 | # - addr: 37 | # - 0.0.0.0 38 | # - ::0 39 | # port: 7777 40 | # 41 | # o SBI Server(https://:443) 42 | # sbi: 43 | # tls: 44 | # key: nrf.key 45 | # pem: nrf.pem 46 | # 47 | # o SBI Server(https://127.0.0.10:443, http://[::1]:80) 48 | # sbi: 49 | # - addr: 127.0.0.10 50 | # tls: 51 | # key: nrf.key 52 | # pem: nrf.pem 53 | # - addr: ::1 54 | # 55 | # o SBI Server(http://nrf.open5gs.org:80) 56 | # sbi: 57 | # name: nrf.open5gs.org 58 | # 59 | # o SBI Server(http://127.0.0.10:7777) 60 | # sbi: 61 | # - addr: 127.0.0.10 62 | # port: 7777 63 | # 64 | # o SBI Server(http://:80) 65 | # sbi: 66 | # dev: eth0 67 | # 68 | nrf: 69 | sbi: 70 | addr: 71 | - 127.0.0.10 72 | - ::1 73 | port: 7777 74 | 75 | # 76 | # parameter: 77 | # 78 | # o Number of output streams per SCTP associations. 79 | # sctp_streams: 30 80 | # 81 | # o Disable use of IPv4 addresses (only IPv6) 82 | # no_ipv4: true 83 | # 84 | # o Disable use of IPv6 addresses (only IPv4) 85 | # no_ipv6: true 86 | # 87 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 88 | # prefer_ipv4: true 89 | # 90 | parameter: 91 | 92 | # 93 | # max: 94 | # 95 | # o Maximum Number of UE per AMF/MME 96 | # ue: 1024 97 | # o Maximum Number of gNB/eNB per AMF/MME 98 | # gnb: 32 99 | # 100 | max: 101 | 102 | # 103 | # pool: 104 | # 105 | # o The default memory pool size was set assuming 1024 UEs. 106 | # To connect more UEs, you need to increase the size further. 107 | # 108 | # - Pool-size 128 => 65536 Number 109 | # - Pool-size 256 => 16384 Number 110 | # - Pool-size 512 => 4096 Number 111 | # - Pool-size 1024 => 1024 Number 112 | # - Pool-size 2048 => 512 Number 113 | # - Pool-size 8192 => 128 Number 114 | # - Pool-size 1024*1024 => 8 Number 115 | # 116 | # 128: 65536 117 | # 256: 16384 118 | # 512: 4096 119 | # 1024: 1024 120 | # 2048: 512 121 | # 8192: 128 122 | # big: 8 123 | # 124 | pool: 125 | 126 | # 127 | # time: 128 | # 129 | # o NF Instance Heartbeat (Default : 10 seconds) 130 | # 131 | # o NF Instance Heartbeat (Disabled) 132 | # nf_instance: 133 | # heartbeat: 0 134 | # 135 | # o NF Instance Heartbeat (5 seconds) 136 | # nf_instance: 137 | # heartbeat: 5 138 | # 139 | # o NF Instance Validity (Default : 3600 seconds = 1 hour) 140 | # 141 | # o NF Instance Validity (10 seconds) 142 | # nf_instance: 143 | # validity: 10 144 | # 145 | # o Subscription Validity (Default : 86400 seconds = 1 day) 146 | # 147 | # o Subscription Validity (Disabled) 148 | # subscription: 149 | # validity: 0 150 | # 151 | # o Subscription Validity (3600 seconds = 1 hour) 152 | # subscription: 153 | # validity: 3600 154 | # 155 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 156 | # 157 | # o Message Wait Duration (3000 ms) 158 | # message: 159 | # duration: 3000 160 | time: 161 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/sgwc.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,pfcp,gtp,sgwc,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/sgwc.log 23 | 24 | # 25 | # sgwc: 26 | # 27 | # 28 | # 29 | # o GTP-C Server(127.0.0.3:2123, [fe80::2%lo]:2123) 30 | # gtpc: 31 | # addr: 32 | # - 127.0.0.3 33 | # - fe80::2%lo 34 | # 35 | # o On SGW, Same Configuration(127.0.0.3:2123, 36 | # [fe80::2%lo]:2123) as below. 37 | # gtpc: 38 | # - addr: 127.0.0.3 39 | # - addr: fe80::2%lo 40 | # 41 | # 42 | # 43 | # o PFCP Server(127.0.0.3:8805, ::1:8805) 44 | # pfcp: 45 | # - addr: 127.0.0.3 46 | # - addr: ::1 47 | # 48 | # o PFCP-U Server(127.0.0.1:2152, [::1]:2152) 49 | # pfcp: 50 | # name: localhost 51 | # 52 | sgwc: 53 | gtpc: 54 | - addr: 127.0.0.3 55 | pfcp: 56 | - addr: 127.0.0.3 57 | 58 | # 59 | # sgwu: 60 | # 61 | # > 62 | # 63 | # o PFCP Client(127.0.0.6:8805) 64 | # 65 | # pfcp: 66 | # addr: 127.0.0.6 67 | # 68 | # 69 | # 70 | # sgwu: 71 | # pfcp: 72 | # - addr: 127.0.0.6 73 | # - addr: 127.0.0.12 74 | # - addr: 127.0.0.18 75 | # 76 | # o SGWU selection by eNodeB TAC 77 | # (either single TAC or multiple TACs, DECIMAL representation) 78 | # 79 | # sgwu: 80 | # pfcp: 81 | # - addr: 127.0.0.6 82 | # tac: 1 83 | # - addr: 127.0.0.12 84 | # tac: [3,5,8] 85 | # 86 | # o SGWU selection by UE's APN (either single APN or multiple APNs) 87 | # 88 | # sgwu: 89 | # pfcp: 90 | # - addr: 127.0.0.6 91 | # apn: ims 92 | # - addr: 127.0.0.12 93 | # apn: [internet, web] 94 | # 95 | # o SGWU selection by CellID(e_cell_id: 28bit) 96 | # (either single e_cell_id or multiple e_cell_id, HEX representation) 97 | # 98 | # sgwu: 99 | # pfcp: 100 | # - addr: 127.0.0.6 101 | # e_cell_id: 463 102 | # - addr: 127.0.0.12 103 | # e_cell_id: [123456789, 9413] 104 | # 105 | sgwu: 106 | pfcp: 107 | - addr: 127.0.0.6 108 | 109 | # 110 | # parameter: 111 | # 112 | # o Number of output streams per SCTP associations. 113 | # sctp_streams: 30 114 | # 115 | # o Disable use of IPv4 addresses (only IPv6) 116 | # no_ipv4: true 117 | # 118 | # o Disable use of IPv6 addresses (only IPv4) 119 | # no_ipv6: true 120 | # 121 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 122 | # prefer_ipv4: true 123 | # 124 | # o Disable selection of SGW-U PFCP in Round-Robin manner 125 | # no_pfcp_rr_select: true 126 | # 127 | parameter: 128 | 129 | # 130 | # max: 131 | # 132 | # o Maximum Number of UE per AMF/MME 133 | # ue: 1024 134 | # o Maximum Number of gNB/eNB per AMF/MME 135 | # gnb: 32 136 | # 137 | max: 138 | 139 | # 140 | # pool: 141 | # 142 | # o The default memory pool size was set assuming 1024 UEs. 143 | # To connect more UEs, you need to increase the size further. 144 | # 145 | # - Pool-size 128 => 65536 Number 146 | # - Pool-size 256 => 16384 Number 147 | # - Pool-size 512 => 4096 Number 148 | # - Pool-size 1024 => 1024 Number 149 | # - Pool-size 2048 => 512 Number 150 | # - Pool-size 8192 => 128 Number 151 | # - Pool-size 1024*1024 => 8 Number 152 | # 153 | # 128: 65536 154 | # 256: 16384 155 | # 512: 4096 156 | # 1024: 1024 157 | # 2048: 512 158 | # 8192: 128 159 | # big: 8 160 | # 161 | pool: 162 | 163 | # 164 | # time: 165 | # 166 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 167 | # 168 | # o Message Wait Duration (3000 ms) 169 | # message: 170 | # duration: 3000 171 | time: 172 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/udm.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,sbi,udm,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/udm.log 23 | # 24 | # udm: 25 | # 26 | # 27 | # 28 | # o SBI Server(http://:80) 29 | # sbi: 30 | # 31 | # o SBI Server(http://:80) 32 | # sbi: 33 | # - addr: 34 | # - 0.0.0.0 35 | # - ::0 36 | # port: 7777 37 | # 38 | # o SBI Server(https://:443) 39 | # sbi: 40 | # - tls: 41 | # key: udm.key 42 | # pem: udm.pem 43 | # 44 | # o SBI Server(https://127.0.0.12:443, http://[::1]:80) 45 | # sbi: 46 | # - addr: 127.0.0.12 47 | # tls: 48 | # key: udm.key 49 | # pem: udm.pem 50 | # - addr: ::1 51 | # 52 | # o SBI Server(http://udm.open5gs.org:80) 53 | # sbi: 54 | # - name: udm.open5gs.org 55 | # 56 | # o SBI Server(http://127.0.0.12:7777) 57 | # sbi: 58 | # - addr: 127.0.0.12 59 | # port: 7777 60 | # 61 | # o SBI Server(http://:80) 62 | # sbi: 63 | # - dev: eth0 64 | # 65 | # o Provide custom SBI address to be advertised to NRF 66 | # sbi: 67 | # - dev: eth0 68 | # advertise: open5gs-udm.svc.local 69 | # 70 | # sbi: 71 | # - addr: localhost 72 | # advertise: 73 | # - 127.0.0.99 74 | # - ::1 75 | # 76 | udm: 77 | sbi: 78 | - addr: 127.0.0.12 79 | port: 7777 80 | 81 | # 82 | # nrf: 83 | # 84 | # > 85 | # 86 | # o SBI Client(http://127.0.0.10:7777) 87 | # sbi: 88 | # addr: 127.0.0.10 89 | # port: 7777 90 | # 91 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 92 | # sbi: 93 | # - addr: 127.0.0.10 94 | # tls: 95 | # key: nrf.key 96 | # pem: nrf.pem 97 | # - name: nrf.open5gs.org 98 | # 99 | # o SBI Client(http://[fe80::1%lo]:80) 100 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 101 | # 102 | # sbi: 103 | # addr: 104 | # - 127.0.0.10 105 | # - fe80::1%lo 106 | # 107 | nrf: 108 | sbi: 109 | - addr: 110 | - 127.0.0.10 111 | - ::1 112 | port: 7777 113 | 114 | # 115 | # parameter: 116 | # 117 | # o Number of output streams per SCTP associations. 118 | # sctp_streams: 30 119 | # 120 | # o Disable use of IPv4 addresses (only IPv6) 121 | # no_ipv4: true 122 | # 123 | # o Disable use of IPv6 addresses (only IPv4) 124 | # no_ipv6: true 125 | # 126 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 127 | # prefer_ipv4: true 128 | # 129 | parameter: 130 | 131 | # 132 | # max: 133 | # 134 | # o Maximum Number of UE per AMF/MME 135 | # ue: 1024 136 | # o Maximum Number of gNB/eNB per AMF/MME 137 | # gnb: 32 138 | # 139 | max: 140 | 141 | # 142 | # pool: 143 | # 144 | # o The default memory pool size was set assuming 1024 UEs. 145 | # To connect more UEs, you need to increase the size further. 146 | # 147 | # - Pool-size 128 => 65536 Number 148 | # - Pool-size 256 => 16384 Number 149 | # - Pool-size 512 => 4096 Number 150 | # - Pool-size 1024 => 1024 Number 151 | # - Pool-size 2048 => 512 Number 152 | # - Pool-size 8192 => 128 Number 153 | # - Pool-size 1024*1024 => 8 Number 154 | # 155 | # 128: 65536 156 | # 256: 16384 157 | # 512: 4096 158 | # 1024: 1024 159 | # 2048: 512 160 | # 8192: 128 161 | # big: 8 162 | # 163 | pool: 164 | 165 | # 166 | # time: 167 | # 168 | # o NF Instance Heartbeat (Default : 0) 169 | # NFs will not send heart-beat timer in NFProfile 170 | # NRF will send heart-beat timer in NFProfile 171 | # 172 | # o NF Instance Heartbeat (20 seconds) 173 | # NFs will send heart-beat timer (20 seconds) in NFProfile 174 | # NRF can change heart-beat timer in NFProfile 175 | # 176 | # nf_instance: 177 | # heartbeat: 20 178 | # 179 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 180 | # 181 | # o Message Wait Duration (3000 ms) 182 | # message: 183 | # duration: 3000 184 | time: 185 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/ausf.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,sbi,ausf,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/ausf.log 23 | # 24 | # ausf: 25 | # 26 | # 27 | # 28 | # o SBI Server(http://:80) 29 | # sbi: 30 | # 31 | # o SBI Server(http://:80) 32 | # sbi: 33 | # - addr: 34 | # - 0.0.0.0 35 | # - ::0 36 | # port: 7777 37 | # 38 | # o SBI Server(https://:443) 39 | # sbi: 40 | # - tls: 41 | # key: ausf.key 42 | # pem: ausf.pem 43 | # 44 | # o SBI Server(https://127.0.0.11:443, http://[::1]:80) 45 | # sbi: 46 | # - addr: 127.0.0.11 47 | # tls: 48 | # key: ausf.key 49 | # pem: ausf.pem 50 | # - addr: ::1 51 | # 52 | # o SBI Server(http://ausf.open5gs.org:80) 53 | # sbi: 54 | # - name: ausf.open5gs.org 55 | # 56 | # o SBI Server(http://127.0.0.11:7777) 57 | # sbi: 58 | # - addr: 127.0.0.11 59 | # port: 7777 60 | # 61 | # o SBI Server(http://:80) 62 | # sbi: 63 | # - dev: eth0 64 | # 65 | # o Provide custom SBI address to be advertised to NRF 66 | # sbi: 67 | # - dev: eth0 68 | # advertise: open5gs-ausf.svc.local 69 | # 70 | # sbi: 71 | # - addr: localhost 72 | # advertise: 73 | # - 127.0.0.99 74 | # - ::1 75 | # 76 | ausf: 77 | sbi: 78 | - addr: 127.0.0.11 79 | port: 7777 80 | 81 | # 82 | # nrf: 83 | # 84 | # > 85 | # 86 | # o SBI Client(http://127.0.0.10:7777) 87 | # sbi: 88 | # addr: 127.0.0.10 89 | # port: 7777 90 | # 91 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 92 | # sbi: 93 | # - addr: 127.0.0.10 94 | # tls: 95 | # key: nrf.key 96 | # pem: nrf.pem 97 | # - name: nrf.open5gs.org 98 | # 99 | # o SBI Client(http://[fe80::1%lo]:80) 100 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 101 | # 102 | # sbi: 103 | # addr: 104 | # - 127.0.0.10 105 | # - fe80::1%lo 106 | # 107 | nrf: 108 | sbi: 109 | - addr: 110 | - 127.0.0.10 111 | - ::1 112 | port: 7777 113 | 114 | # 115 | # parameter: 116 | # 117 | # o Number of output streams per SCTP associations. 118 | # sctp_streams: 30 119 | # 120 | # o Disable use of IPv4 addresses (only IPv6) 121 | # no_ipv4: true 122 | # 123 | # o Disable use of IPv6 addresses (only IPv4) 124 | # no_ipv6: true 125 | # 126 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 127 | # prefer_ipv4: true 128 | # 129 | parameter: 130 | 131 | # 132 | # max: 133 | # 134 | # o Maximum Number of UE per AMF/MME 135 | # ue: 1024 136 | # o Maximum Number of gNB/eNB per AMF/MME 137 | # gnb: 32 138 | # 139 | max: 140 | 141 | # 142 | # pool: 143 | # 144 | # o The default memory pool size was set assuming 1024 UEs. 145 | # To connect more UEs, you need to increase the size further. 146 | # 147 | # - Pool-size 128 => 65536 Number 148 | # - Pool-size 256 => 16384 Number 149 | # - Pool-size 512 => 4096 Number 150 | # - Pool-size 1024 => 1024 Number 151 | # - Pool-size 2048 => 512 Number 152 | # - Pool-size 8192 => 128 Number 153 | # - Pool-size 1024*1024 => 8 Number 154 | # 155 | # 128: 65536 156 | # 256: 16384 157 | # 512: 4096 158 | # 1024: 1024 159 | # 2048: 512 160 | # 8192: 128 161 | # big: 8 162 | # 163 | pool: 164 | 165 | # 166 | # time: 167 | # 168 | # o NF Instance Heartbeat (Default : 0) 169 | # NFs will not send heart-beat timer in NFProfile 170 | # NRF will send heart-beat timer in NFProfile 171 | # 172 | # o NF Instance Heartbeat (20 seconds) 173 | # NFs will send heart-beat timer (20 seconds) in NFProfile 174 | # NRF can change heart-beat timer in NFProfile 175 | # 176 | # nf_instance: 177 | # heartbeat: 20 178 | # 179 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 180 | # 181 | # o Message Wait Duration (3000 ms) 182 | # message: 183 | # duration: 3000 184 | time: 185 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/bsf.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | # 4 | # logger: 5 | # 6 | # o Set OGS_LOG_INFO to all domain level 7 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 8 | # - If `domain` is omitted, the all domain level is set from 'level' 9 | # (Nothing is needed) 10 | # 11 | # o Set OGS_LOG_ERROR to all domain level 12 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 13 | # level: error 14 | # 15 | # o Set OGS_LOG_DEBUG to mme/emm domain level 16 | # level: debug 17 | # domain: mme,emm 18 | # 19 | # o Set OGS_LOG_TRACE to all domain level 20 | # level: trace 21 | # domain: core,sbi,bsf,event,tlv,mem,sock 22 | # 23 | logger: 24 | file: /open5gs/install/var/log/open5gs/bsf.log 25 | # 26 | # bsf: 27 | # 28 | # 29 | # 30 | # o SBI Server(http://:80) 31 | # sbi: 32 | # 33 | # o SBI Server(http://:80) 34 | # sbi: 35 | # - addr: 36 | # - 0.0.0.0 37 | # - ::0 38 | # port: 7777 39 | # 40 | # o SBI Server(https://:443) 41 | # sbi: 42 | # - tls: 43 | # key: bsf.key 44 | # pem: bsf.pem 45 | # 46 | # o SBI Server(https://127.0.0.15:443, http://[::1]:80) 47 | # sbi: 48 | # - addr: 127.0.0.15 49 | # tls: 50 | # key: bsf.key 51 | # pem: bsf.pem 52 | # - addr: ::1 53 | # 54 | # o SBI Server(http://bsf.open5gs.org:80) 55 | # sbi: 56 | # - name: bsf.open5gs.org 57 | # 58 | # o SBI Server(http://127.0.0.15:7777) 59 | # sbi: 60 | # - addr: 127.0.0.15 61 | # port: 7777 62 | # 63 | # o SBI Server(http://:80) 64 | # sbi: 65 | # - dev: eth0 66 | # 67 | # o Provide custom SBI address to be advertised to NRF 68 | # sbi: 69 | # - dev: eth0 70 | # advertise: open5gs-bsf.svc.local 71 | # 72 | # sbi: 73 | # - addr: localhost 74 | # advertise: 75 | # - 127.0.0.99 76 | # - ::1 77 | # 78 | bsf: 79 | sbi: 80 | - addr: 127.0.0.15 81 | port: 7777 82 | 83 | # 84 | # nrf: 85 | # 86 | # > 87 | # 88 | # o SBI Client(http://127.0.0.10:7777) 89 | # sbi: 90 | # addr: 127.0.0.10 91 | # port: 7777 92 | # 93 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 94 | # sbi: 95 | # - addr: 127.0.0.10 96 | # tls: 97 | # key: nrf.key 98 | # pem: nrf.pem 99 | # - name: nrf.open5gs.org 100 | # 101 | # o SBI Client(http://[fe80::1%lo]:80) 102 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 103 | # 104 | # sbi: 105 | # addr: 106 | # - 127.0.0.10 107 | # - fe80::1%lo 108 | # 109 | nrf: 110 | sbi: 111 | - addr: 112 | - 127.0.0.10 113 | - ::1 114 | port: 7777 115 | 116 | # 117 | # parameter: 118 | # 119 | # o Number of output streams per SCTP associations. 120 | # sctp_streams: 30 121 | # 122 | # o Disable use of IPv4 addresses (only IPv6) 123 | # no_ipv4: true 124 | # 125 | # o Disable use of IPv6 addresses (only IPv4) 126 | # no_ipv6: true 127 | # 128 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 129 | # prefer_ipv4: true 130 | # 131 | parameter: 132 | 133 | # 134 | # max: 135 | # 136 | # o Maximum Number of UE per AMF/MME 137 | # ue: 1024 138 | # o Maximum Number of gNB/eNB per AMF/MME 139 | # gnb: 32 140 | # 141 | max: 142 | 143 | # 144 | # pool: 145 | # 146 | # o The default memory pool size was set assuming 1024 UEs. 147 | # To connect more UEs, you need to increase the size further. 148 | # 149 | # - Pool-size 128 => 65536 Number 150 | # - Pool-size 256 => 16384 Number 151 | # - Pool-size 512 => 4096 Number 152 | # - Pool-size 1024 => 1024 Number 153 | # - Pool-size 2048 => 512 Number 154 | # - Pool-size 8192 => 128 Number 155 | # - Pool-size 1024*1024 => 8 Number 156 | # 157 | # 128: 65536 158 | # 256: 16384 159 | # 512: 4096 160 | # 1024: 1024 161 | # 2048: 512 162 | # 8192: 128 163 | # big: 8 164 | # 165 | pool: 166 | 167 | # 168 | # time: 169 | # 170 | # o NF Instance Heartbeat (Default : 0) 171 | # NFs will not send heart-beat timer in NFProfile 172 | # NRF will send heart-beat timer in NFProfile 173 | # 174 | # o NF Instance Heartbeat (20 seconds) 175 | # NFs will send heart-beat timer (20 seconds) in NFProfile 176 | # NRF can change heart-beat timer in NFProfile 177 | # 178 | # nf_instance: 179 | # heartbeat: 20 180 | # 181 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 182 | # 183 | # o Message Wait Duration (3000 ms) 184 | # message: 185 | # duration: 3000 186 | time: 187 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/pcf.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | # 4 | # logger: 5 | # 6 | # o Set OGS_LOG_INFO to all domain level 7 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 8 | # - If `domain` is omitted, the all domain level is set from 'level' 9 | # (Nothing is needed) 10 | # 11 | # o Set OGS_LOG_ERROR to all domain level 12 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 13 | # level: error 14 | # 15 | # o Set OGS_LOG_DEBUG to mme/emm domain level 16 | # level: debug 17 | # domain: mme,emm 18 | # 19 | # o Set OGS_LOG_TRACE to all domain level 20 | # level: trace 21 | # domain: core,sbi,pcf,event,tlv,mem,sock 22 | # 23 | logger: 24 | file: /open5gs/install/var/log/open5gs/pcf.log 25 | # 26 | # pcf: 27 | # 28 | # 29 | # 30 | # o SBI Server(http://:80) 31 | # sbi: 32 | # 33 | # o SBI Server(http://:80) 34 | # sbi: 35 | # - addr: 36 | # - 0.0.0.0 37 | # - ::0 38 | # port: 7777 39 | # 40 | # o SBI Server(https://:443) 41 | # sbi: 42 | # - tls: 43 | # key: pcf.key 44 | # pem: pcf.pem 45 | # 46 | # o SBI Server(https://127.0.0.13:443, http://[::1]:80) 47 | # sbi: 48 | # - addr: 127.0.0.13 49 | # tls: 50 | # key: pcf.key 51 | # pem: pcf.pem 52 | # - addr: ::1 53 | # 54 | # o SBI Server(http://pcf.open5gs.org:80) 55 | # sbi: 56 | # - name: pcf.open5gs.org 57 | # 58 | # o SBI Server(http://127.0.0.13:7777) 59 | # sbi: 60 | # - addr: 127.0.0.13 61 | # port: 7777 62 | # 63 | # o SBI Server(http://:80) 64 | # sbi: 65 | # - dev: eth0 66 | # 67 | # o Provide custom SBI address to be advertised to NRF 68 | # sbi: 69 | # - dev: eth0 70 | # advertise: open5gs-pcf.svc.local 71 | # 72 | # sbi: 73 | # - addr: localhost 74 | # advertise: 75 | # - 127.0.0.99 76 | # - ::1 77 | # 78 | pcf: 79 | sbi: 80 | - addr: 127.0.0.13 81 | port: 7777 82 | 83 | # 84 | # nrf: 85 | # 86 | # > 87 | # 88 | # o SBI Client(http://127.0.0.10:7777) 89 | # sbi: 90 | # addr: 127.0.0.10 91 | # port: 7777 92 | # 93 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 94 | # sbi: 95 | # - addr: 127.0.0.10 96 | # tls: 97 | # key: nrf.key 98 | # pem: nrf.pem 99 | # - name: nrf.open5gs.org 100 | # 101 | # o SBI Client(http://[fe80::1%lo]:80) 102 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 103 | # 104 | # sbi: 105 | # addr: 106 | # - 127.0.0.10 107 | # - fe80::1%lo 108 | # 109 | nrf: 110 | sbi: 111 | - addr: 112 | - 127.0.0.10 113 | - ::1 114 | port: 7777 115 | 116 | # 117 | # parameter: 118 | # 119 | # o Number of output streams per SCTP associations. 120 | # sctp_streams: 30 121 | # 122 | # o Disable use of IPv4 addresses (only IPv6) 123 | # no_ipv4: true 124 | # 125 | # o Disable use of IPv6 addresses (only IPv4) 126 | # no_ipv6: true 127 | # 128 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 129 | # prefer_ipv4: true 130 | # 131 | parameter: 132 | 133 | # 134 | # max: 135 | # 136 | # o Maximum Number of UE per AMF/MME 137 | # ue: 1024 138 | # o Maximum Number of gNB/eNB per AMF/MME 139 | # gnb: 32 140 | # 141 | max: 142 | 143 | # 144 | # pool: 145 | # 146 | # o The default memory pool size was set assuming 1024 UEs. 147 | # To connect more UEs, you need to increase the size further. 148 | # 149 | # - Pool-size 128 => 65536 Number 150 | # - Pool-size 256 => 16384 Number 151 | # - Pool-size 512 => 4096 Number 152 | # - Pool-size 1024 => 1024 Number 153 | # - Pool-size 2048 => 512 Number 154 | # - Pool-size 8192 => 128 Number 155 | # - Pool-size 1024*1024 => 8 Number 156 | # 157 | # 128: 65536 158 | # 256: 16384 159 | # 512: 4096 160 | # 1024: 1024 161 | # 2048: 512 162 | # 8192: 128 163 | # big: 8 164 | # 165 | pool: 166 | 167 | # 168 | # time: 169 | # 170 | # o NF Instance Heartbeat (Default : 0) 171 | # NFs will not send heart-beat timer in NFProfile 172 | # NRF will send heart-beat timer in NFProfile 173 | # 174 | # o NF Instance Heartbeat (20 seconds) 175 | # NFs will send heart-beat timer (20 seconds) in NFProfile 176 | # NRF can change heart-beat timer in NFProfile 177 | # 178 | # nf_instance: 179 | # heartbeat: 20 180 | # 181 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 182 | # 183 | # o Message Wait Duration (3000 ms) 184 | # message: 185 | # duration: 3000 186 | time: 187 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/udr.yaml: -------------------------------------------------------------------------------- 1 | db_uri: mongodb://localhost/open5gs 2 | 3 | # 4 | # logger: 5 | # 6 | # o Set OGS_LOG_INFO to all domain level 7 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 8 | # - If `domain` is omitted, the all domain level is set from 'level' 9 | # (Nothing is needed) 10 | # 11 | # o Set OGS_LOG_ERROR to all domain level 12 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 13 | # level: error 14 | # 15 | # o Set OGS_LOG_DEBUG to mme/emm domain level 16 | # level: debug 17 | # domain: mme,emm 18 | # 19 | # o Set OGS_LOG_TRACE to all domain level 20 | # level: trace 21 | # domain: core,sbi,udr,event,tlv,mem,sock 22 | # 23 | logger: 24 | file: /open5gs/install/var/log/open5gs/udr.log 25 | # 26 | # udr: 27 | # 28 | # 29 | # 30 | # o SBI Server(http://:80) 31 | # sbi: 32 | # 33 | # o SBI Server(http://:80) 34 | # sbi: 35 | # - addr: 36 | # - 0.0.0.0 37 | # - ::0 38 | # port: 7777 39 | # 40 | # o SBI Server(https://:443) 41 | # sbi: 42 | # - tls: 43 | # key: udr.key 44 | # pem: udr.pem 45 | # 46 | # o SBI Server(https://127.0.0.20:443, http://[::1]:80) 47 | # sbi: 48 | # - addr: 127.0.0.20 49 | # tls: 50 | # key: udr.key 51 | # pem: udr.pem 52 | # - addr: ::1 53 | # 54 | # o SBI Server(http://udr.open5gs.org:80) 55 | # sbi: 56 | # - name: udr.open5gs.org 57 | # 58 | # o SBI Server(http://127.0.0.20:7777) 59 | # sbi: 60 | # - addr: 127.0.0.20 61 | # port: 7777 62 | # 63 | # o SBI Server(http://:80) 64 | # sbi: 65 | # - dev: eth0 66 | # 67 | # o Provide custom SBI address to be advertised to NRF 68 | # sbi: 69 | # - dev: eth0 70 | # advertise: open5gs-udr.svc.local 71 | # 72 | # sbi: 73 | # - addr: localhost 74 | # advertise: 75 | # - 127.0.0.99 76 | # - ::1 77 | # 78 | udr: 79 | sbi: 80 | - addr: 127.0.0.20 81 | port: 7777 82 | 83 | # 84 | # nrf: 85 | # 86 | # > 87 | # 88 | # o SBI Client(http://127.0.0.10:7777) 89 | # sbi: 90 | # addr: 127.0.0.10 91 | # port: 7777 92 | # 93 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 94 | # sbi: 95 | # - addr: 127.0.0.10 96 | # tls: 97 | # key: nrf.key 98 | # pem: nrf.pem 99 | # - name: nrf.open5gs.org 100 | # 101 | # o SBI Client(http://[fe80::1%lo]:80) 102 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 103 | # 104 | # sbi: 105 | # addr: 106 | # - 127.0.0.10 107 | # - fe80::1%lo 108 | # 109 | nrf: 110 | sbi: 111 | - addr: 112 | - 127.0.0.10 113 | - ::1 114 | port: 7777 115 | 116 | # 117 | # parameter: 118 | # 119 | # o Number of output streams per SCTP associations. 120 | # sctp_streams: 30 121 | # 122 | # o Disable use of IPv4 addresses (only IPv6) 123 | # no_ipv4: true 124 | # 125 | # o Disable use of IPv6 addresses (only IPv4) 126 | # no_ipv6: true 127 | # 128 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 129 | # prefer_ipv4: true 130 | # 131 | parameter: 132 | 133 | # 134 | # max: 135 | # 136 | # o Maximum Number of UE per AMF/MME 137 | # ue: 1024 138 | # o Maximum Number of gNB/eNB per AMF/MME 139 | # gnb: 32 140 | # 141 | max: 142 | 143 | # 144 | # pool: 145 | # 146 | # o The default memory pool size was set assuming 1024 UEs. 147 | # To connect more UEs, you need to increase the size further. 148 | # 149 | # - Pool-size 128 => 65536 Number 150 | # - Pool-size 256 => 16384 Number 151 | # - Pool-size 512 => 4096 Number 152 | # - Pool-size 1024 => 1024 Number 153 | # - Pool-size 2048 => 512 Number 154 | # - Pool-size 8192 => 128 Number 155 | # - Pool-size 1024*1024 => 8 Number 156 | # 157 | # 128: 65536 158 | # 256: 16384 159 | # 512: 4096 160 | # 1024: 1024 161 | # 2048: 512 162 | # 8192: 128 163 | # big: 8 164 | # 165 | pool: 166 | 167 | # 168 | # time: 169 | # 170 | # o NF Instance Heartbeat (Default : 0) 171 | # NFs will not send heart-beat timer in NFProfile 172 | # NRF will send heart-beat timer in NFProfile 173 | # 174 | # o NF Instance Heartbeat (20 seconds) 175 | # NFs will send heart-beat timer (20 seconds) in NFProfile 176 | # NRF can change heart-beat timer in NFProfile 177 | # 178 | # nf_instance: 179 | # heartbeat: 20 180 | # 181 | # o NF Instance Heartbeat (Disabled) 182 | # nf_instance: 183 | # heartbeat: 0 184 | # 185 | # o NF Instance Heartbeat (10 seconds) 186 | # nf_instance: 187 | # heartbeat: 10 188 | # 189 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 190 | # 191 | # o Message Wait Duration (3000 ms) 192 | # message: 193 | # duration: 3000 194 | time: 195 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/upf.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,pfcp,gtp,upf,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/upf.log 23 | 24 | # 25 | # upf: 26 | # 27 | # 28 | # 29 | # o PFCP Server(127.0.0.7:8805, ::1:8805) 30 | # pfcp: 31 | # - addr: 127.0.0.7 32 | # - addr: ::1 33 | # 34 | # o PFCP-U Server(127.0.0.1:2152, [::1]:2152) 35 | # pfcp: 36 | # name: localhost 37 | # 38 | # > 39 | # 40 | # o GTP-U Server(127.0.0.7:2152, [::1]:2152) 41 | # gtpu: 42 | # - addr: 127.0.0.7 43 | # - addr: ::1 44 | # 45 | # o GTP-U Server(127.0.0.1:2152, [::1]:2152) 46 | # gtpu: 47 | # name: localhost 48 | # 49 | # o User Plane IP Resource information 50 | # gtpu: 51 | # - addr: 52 | # - 127.0.0.7 53 | # - ::1 54 | # teid_range_indication: 4 55 | # teid_range: 10 56 | # network_instance: internet 57 | # source_interface: 0 58 | # - addr: 127.0.10.4 59 | # teid_range_indication: 4 60 | # teid_range: 5 61 | # network_instance: ims 62 | # source_interface: 1 63 | # 64 | # o Provide custom UPF GTP-U address to be advertised inside NGAP messages 65 | # gtpu: 66 | # - addr: 10.4.128.21 67 | # advertise: 172.24.15.30 68 | # 69 | # gtpu: 70 | # - addr: 10.4.128.21 71 | # advertise: 72 | # - 127.0.0.1 73 | # - ::1 74 | # 75 | # gtpu: 76 | # - addr: 10.4.128.21 77 | # advertise: upf1.5gc.mnc001.mcc001.3gppnetwork.org 78 | # 79 | # gtpu: 80 | # - dev: ens3 81 | # advertise: upf1.5gc.mnc001.mcc001.3gppnetwork.org 82 | # 83 | # 84 | # 85 | # Note that you need to setup your UE network using TUN device. 86 | # (ogstun, ogstun2, ogstunX, ..) 87 | # 88 | # o IPv4 Pool 89 | # $ sudo ip addr add 10.45.0.1/16 dev ogstun 90 | # 91 | # subnet: 92 | # addr: 10.45.0.1/16 93 | # 94 | # o IPv4/IPv6 Pool 95 | # $ sudo ip addr add 10.45.0.1/16 dev ogstun 96 | # $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun 97 | # 98 | # subnet: 99 | # - addr: 10.45.0.1/16 100 | # - addr: 2001:230:cafe::1/48 101 | # 102 | # 103 | # o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:230:babe::1/48 104 | # All other APNs use 10.45.0.1/16, 2001:230:cafe::1/48 105 | # $ sudo ip addr add 10.45.0.1/16 dev ogstun 106 | # $ sudo ip addr add 10.46.0.1/16 dev ogstun 107 | # $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun 108 | # $ sudo ip addr add 2001:230:babe::1/48 dev ogstun 109 | # 110 | # subnet: 111 | # - addr: 10.45.0.1/16 112 | # dnn: internet 113 | # - addr: 2001:230:cafe::1/48 114 | # dnn: internet 115 | # - addr: 10.46.0.1/16 116 | # dnn: ims 117 | # - addr: 2001:230:babe::1/48 118 | # dnn: ims 119 | # 120 | # o Multiple Devices (default: ogstun) 121 | # $ sudo ip addr add 10.45.0.1/16 dev ogstun 122 | # $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun2 123 | # $ sudo ip addr add 10.46.0.1/16 dev ogstun3 124 | # $ sudo ip addr add 2001:230:babe::1/48 dev ogstun3 125 | # 126 | # subnet: 127 | # - addr: 10.45.0.1/16 128 | # dnn: internet 129 | # - addr: 2001:230:cafe::1/48 130 | # dnn: internet 131 | # dev: ogstun2 132 | # - addr: 10.46.0.1/16 133 | # dnn: ims 134 | # dev: ogstun3 135 | # - addr: 2001:230:babe::1/48 136 | # dnn: ims 137 | # dev: ogstun3 138 | # 139 | upf: 140 | pfcp: 141 | - addr: 127.0.0.7 142 | gtpu: 143 | - addr: 127.0.0.7 144 | subnet: 145 | - addr: 10.45.0.1/16 146 | - addr: 2001:230:cafe::1/48 147 | 148 | # 149 | # smf: 150 | # 151 | # > 152 | # 153 | # o PFCP Client(127.0.0.4:8805) 154 | # 155 | # pfcp: 156 | # addr: 127.0.0.4 157 | # 158 | smf: 159 | 160 | # 161 | # parameter: 162 | # 163 | # o Number of output streams per SCTP associations. 164 | # sctp_streams: 30 165 | # 166 | # o Disable use of IPv4 addresses (only IPv6) 167 | # no_ipv4: true 168 | # 169 | # o Disable use of IPv6 addresses (only IPv4) 170 | # no_ipv6: true 171 | # 172 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 173 | # prefer_ipv4: true 174 | # 175 | parameter: 176 | 177 | # 178 | # max: 179 | # 180 | # o Maximum Number of UE per AMF/MME 181 | # ue: 1024 182 | # o Maximum Number of gNB/eNB per AMF/MME 183 | # gnb: 32 184 | # 185 | max: 186 | 187 | # 188 | # pool: 189 | # 190 | # o The default memory pool size was set assuming 1024 UEs. 191 | # To connect more UEs, you need to increase the size further. 192 | # 193 | # - Pool-size 128 => 65536 Number 194 | # - Pool-size 256 => 16384 Number 195 | # - Pool-size 512 => 4096 Number 196 | # - Pool-size 1024 => 1024 Number 197 | # - Pool-size 2048 => 512 Number 198 | # - Pool-size 8192 => 128 Number 199 | # - Pool-size 1024*1024 => 8 Number 200 | # 201 | # 128: 65536 202 | # 256: 16384 203 | # 512: 4096 204 | # 1024: 1024 205 | # 2048: 512 206 | # 8192: 128 207 | # big: 8 208 | # 209 | pool: 210 | 211 | # 212 | # time: 213 | # 214 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 215 | # 216 | # o Message Wait Duration (3000 ms) 217 | # message: 218 | # duration: 3000 219 | time: 220 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/nssf.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,sbi,nssf,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/nssf.log 23 | # 24 | # nssf: 25 | # 26 | # 27 | # 28 | # o SBI Server(http://:80) 29 | # sbi: 30 | # 31 | # o SBI Server(http://:80) 32 | # sbi: 33 | # - addr: 34 | # - 0.0.0.0 35 | # - ::0 36 | # port: 7777 37 | # 38 | # o SBI Server(https://:443) 39 | # sbi: 40 | # - tls: 41 | # key: nssf.key 42 | # pem: nssf.pem 43 | # 44 | # o SBI Server(https://127.0.0.14:443, http://[::1]:80) 45 | # sbi: 46 | # - addr: 127.0.0.14 47 | # tls: 48 | # key: nssf.key 49 | # pem: nssf.pem 50 | # - addr: ::1 51 | # 52 | # o SBI Server(http://nssf.open5gs.org:80) 53 | # sbi: 54 | # - name: nssf.open5gs.org 55 | # 56 | # o SBI Server(http://127.0.0.14:7777) 57 | # sbi: 58 | # - addr: 127.0.0.14 59 | # port: 7777 60 | # 61 | # o SBI Server(http://:80) 62 | # sbi: 63 | # - dev: eth0 64 | # 65 | # o Provide custom SBI address to be advertised to NRF 66 | # sbi: 67 | # - dev: eth0 68 | # advertise: open5gs-nssf.svc.local 69 | # 70 | # sbi: 71 | # - addr: localhost 72 | # advertise: 73 | # - 127.0.0.99 74 | # - ::1 75 | # 76 | # 77 | # 78 | # o One NSI 79 | # - NRF[http://::1:7777/nnrf-nfm/v1/nf-instances] 80 | # NSSAI[SST:1] 81 | # 82 | # nsi: 83 | # - addr: ::1 84 | # port: 7777 85 | # s_nssai: 86 | # sst: 1 87 | # 88 | # o Three NSI 89 | # 1. NRF[http://::1:7777/nnrf-nfm/v1/nf-instances] 90 | # S-NSSAI[SST:1] 91 | # 92 | # 2. NRF[http://127.0.0.19:7777/nnrf-nfm/v1/nf-instances] 93 | # NSSAI[SST:1, SD:000080] 94 | # 95 | # 2. NRF[http://127.0.0.10:7777/nnrf-nfm/v1/nf-instances] 96 | # NSSAI[SST:1, SD:009000] 97 | # 98 | # nsi: 99 | # - addr: ::1 100 | # port: 7777 101 | # s_nssai: 102 | # sst: 1 103 | # - addr: 127.0.0.19 104 | # port: 7777 105 | # s_nssai: 106 | # sst: 1 107 | # sd: 000080 108 | # - addr: 127.0.0.10 109 | # port: 7777 110 | # s_nssai: 111 | # sst: 1 112 | # sd: 009000 113 | nssf: 114 | sbi: 115 | - addr: 127.0.0.14 116 | port: 7777 117 | nsi: 118 | - addr: ::1 119 | port: 7777 120 | s_nssai: 121 | sst: 1 122 | 123 | # 124 | # nrf: 125 | # 126 | # > 127 | # 128 | # o SBI Client(http://127.0.0.10:7777) 129 | # sbi: 130 | # addr: 127.0.0.10 131 | # port: 7777 132 | # 133 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 134 | # sbi: 135 | # - addr: 127.0.0.10 136 | # tls: 137 | # key: nrf.key 138 | # pem: nrf.pem 139 | # - name: nrf.open5gs.org 140 | # 141 | # o SBI Client(http://[fe80::1%lo]:80) 142 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 143 | # 144 | # sbi: 145 | # addr: 146 | # - 127.0.0.10 147 | # - fe80::1%lo 148 | # 149 | nrf: 150 | sbi: 151 | - addr: 152 | - 127.0.0.10 153 | - ::1 154 | port: 7777 155 | 156 | # 157 | # parameter: 158 | # 159 | # o Number of output streams per SCTP associations. 160 | # sctp_streams: 30 161 | # 162 | # o Disable use of IPv4 addresses (only IPv6) 163 | # no_ipv4: true 164 | # 165 | # o Disable use of IPv6 addresses (only IPv4) 166 | # no_ipv6: true 167 | # 168 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 169 | # prefer_ipv4: true 170 | # 171 | parameter: 172 | 173 | # 174 | # max: 175 | # 176 | # o Maximum Number of UE per AMF/MME 177 | # ue: 1024 178 | # o Maximum Number of gNB/eNB per AMF/MME 179 | # gnb: 32 180 | # 181 | max: 182 | 183 | # 184 | # pool: 185 | # 186 | # o The default memory pool size was set assuming 1024 UEs. 187 | # To connect more UEs, you need to increase the size further. 188 | # 189 | # - Pool-size 128 => 65536 Number 190 | # - Pool-size 256 => 16384 Number 191 | # - Pool-size 512 => 4096 Number 192 | # - Pool-size 1024 => 1024 Number 193 | # - Pool-size 2048 => 512 Number 194 | # - Pool-size 8192 => 128 Number 195 | # - Pool-size 1024*1024 => 8 Number 196 | # 197 | # 128: 65536 198 | # 256: 16384 199 | # 512: 4096 200 | # 1024: 1024 201 | # 2048: 512 202 | # 8192: 128 203 | # big: 8 204 | # 205 | pool: 206 | 207 | # 208 | # time: 209 | # 210 | # o NF Instance Heartbeat (Default : 0) 211 | # NFs will not send heart-beat timer in NFProfile 212 | # NRF will send heart-beat timer in NFProfile 213 | # 214 | # o NF Instance Heartbeat (20 seconds) 215 | # NFs will send heart-beat timer (20 seconds) in NFProfile 216 | # NRF can change heart-beat timer in NFProfile 217 | # 218 | # nf_instance: 219 | # heartbeat: 20 220 | # 221 | # o NF Instance Heartbeat (Disabled) 222 | # nf_instance: 223 | # heartbeat: 0 224 | # 225 | # o NF Instance Heartbeat (10 seconds) 226 | # nf_instance: 227 | # heartbeat: 10 228 | # 229 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 230 | # 231 | # o Message Wait Duration (3000 ms) 232 | # message: 233 | # duration: 3000 234 | time: 235 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Emulate a 5G network deployment in comnetsemu. 2 | Demonstrate distributed UPF deployment and slice-base UPF selection. 3 | 4 | Tested Versions: 5 | - Comnetsemu: v0.3.0 (Installed following either "Option 1" or "Option 3" from [here](https://git.comnets.net/public-repo/comnetsemu) ) 6 | - UERANSIM: v3.2.6 7 | - Open5gs: v2.4.2 8 | 9 | Python packages: 10 | - pymongo 11 | - json 12 | 13 | ## Build Instructions 14 | 15 | Clone repository in the comnetsemu VM. 16 | 17 | Build the necessary docker images: 18 | 19 | ``` 20 | cd build 21 | ./build.sh 22 | ``` 23 | 24 | Or alternatively download them from DockerHub 25 | 26 | ``` 27 | cd ../open5gs 28 | ./dockerhub_pull.sh 29 | ``` 30 | 31 | 32 | ## Run experiments 33 | 34 | ### Start the network topology: 35 | 36 | #### Running example1.py 37 | ``` 38 | $ sudo python3 example1.py 39 | ``` 40 | 41 | The scenario includes 5 DockerHosts as shown in the figure below. 42 | The UE starts two PDU session one for each slice defined in the core network. 43 | 44 | 45 | 46 | Notice that at the first run the set-up should not work due to missing information in the 5GC. 47 | To configure it we should leverage the WebUI by opening the following page in a browser on the host OS. 48 | ``` 49 | http://:3000/ 50 | ``` 51 | 52 | The configuration is as follows: 53 | 54 | UE information: 55 | - IMSI = 001011234567895 56 | - USIM Type = OP 57 | - Operator Key (OPc/OP) = 11111111111111111111111111111111 58 | - key: '8baf473f2f8fd09487cccbd7097c6862' 59 | 60 | Slice 1 configuration 61 | - SST: 1 62 | - SD: 000001 63 | - DNN: internet 64 | - Session-AMBR Downlink: 2 Mbps 65 | - Session-AMBR Uplink: 2 Mbps 66 | 67 | Slice 2 configuration 68 | - SST: 2 69 | - SD: 000001 70 | - DNN: mec 71 | - Session-AMBR Downlink: 10 Mbps 72 | - Session-AMBR Uplink: 10 Mbps 73 | 74 | The configuration should look like this: 75 | 76 | 77 | 78 | You can now proceed testing the environment as below 79 | 80 | 81 | #### Running example2.py 82 | This example creates the same environment of example1.py but the open5GS control plane configuration is done programmatically without using the webUI. (Note: adapted the python class in the open5gs repo [here](https://github.com/open5gs/open5gs/blob/main/misc/db/python/Open5GS.py) ) 83 | 84 | Disclaimer: all the previous subcribers registered with the webUI will be lost and a new one will be created. 85 | 86 | ``` 87 | $ sudo python3 example2.py 88 | ``` 89 | 90 | 91 | 92 | ### Check UE connections 93 | 94 | Notice how the UE DockerHost has been initiated running `open5gs_ue_init.sh` which, based on the configuration provided in `open5gs-ue.yaml`, creates two default UE connections. 95 | The sessions are started specifying the slice, not the APN. The APN, and thus the associated UPF, is selected by the 5GC since, in `subscriber_profile.json`, a slice is associated to a session with specific DNN. 96 | 97 | Enter the container and verify UE connections: 98 | 99 | ``` 100 | $ ./enter_container.sh ue 101 | 102 | # ifconfig 103 | ``` 104 | 105 | You should see interfaces uesimtun0 (for the upf_cld) and uesimtun1 (for the upf_mec) active. 106 | 107 | ``` 108 | uesimtun0: flags=369 mtu 1400 109 | inet 10.45.0.2 netmask 255.255.255.255 destination 10.45.0.2 110 | unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC) 111 | RX packets 0 bytes 0 (0.0 B) 112 | RX errors 0 dropped 0 overruns 0 frame 0 113 | TX packets 0 bytes 0 (0.0 B) 114 | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 115 | 116 | uesimtun1: flags=369 mtu 1400 117 | inet 10.46.0.2 netmask 255.255.255.255 destination 10.46.0.2 118 | unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC) 119 | RX packets 0 bytes 0 (0.0 B) 120 | RX errors 0 dropped 0 overruns 0 frame 0 121 | TX packets 0 bytes 0 (0.0 B) 122 | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 123 | ``` 124 | 125 | 126 | Start a ping test to check connectivity: 127 | ``` 128 | # ping -c 3 -n -I uesimtun0 www.google.com 129 | # ping -c 3 -n -I uesimtun1 www.google.com 130 | ``` 131 | 132 | ### Test the environment 133 | 134 | In two terminals start two tcpdump for both upf_cld and upf_mec 135 | 136 | ``` 137 | $ ./start_tcpdump.sh upf_cld 138 | $ ./start_tcpdump.sh upf_mec 139 | ``` 140 | 141 | #### Latency test 142 | Enter in the UE container: 143 | ``` 144 | $ ./enter_container.sh ue 145 | ``` 146 | 147 | Start ping test on the interfaces related to the two slices: 148 | ``` 149 | # ping -c 3 -n -I uesimtun0 10.45.0.1 150 | # ping -c 3 -n -I uesimtun1 10.46.0.1 151 | ``` 152 | 153 | Observe the Round Trip Time using uesimtun0 (slice 1 - reaching the UPF in the "cloud DC" with DNN="internet" ) and ueransim1 (slice 2 - reaching the UPF in the 'mec DC' with DNN="mec") 154 | 155 | 156 | #### Bandwidth test 157 | 158 | Enter in the UE container: 159 | ``` 160 | $ ./enter_container.sh ue 161 | ``` 162 | 163 | Start bandwidth test leveraging the two slices: 164 | ``` 165 | # iperf3 -c 10.45.0.1 -B 10.45.0.2 -t 5 166 | # iperf3 -c 10.46.0.1 -B 10.46.0.2 -t 5 167 | ``` 168 | 169 | Observe how the data-rate in the two cases follows the maximum data-rate specified for the two slices (2 Mbps for sst 1 and 10Mbps for sst 2). 170 | 171 | 172 | #### Change the maximum bit-rate available for one slice: 173 | 174 | Here we change the slice profiles updating the maximum bit-rate and observe the results on the iperf test. 175 | 176 | ##### Alternative 1 177 | Open the open5gs WebUI and change the DL/UL bandwidth as follows: 178 | - for sst 1: MBR DL/UL = 10 Mbps 179 | - for sst 2: MBR DL/UL = 20 Mbps 180 | 181 | ##### Alternative 2 182 | Run the script `update_subscribers.py`. 183 | 184 | ##### Test new connections 185 | 186 | Enter in the UE container: 187 | ``` 188 | $ ./enter_container.sh ue 189 | ``` 190 | 191 | Start new PDU sessions in the UE: 192 | 193 | ``` 194 | # ./nr-cli imsi-001011234567895 195 | $ ps-establish IPv4 --sst 1 --sd 1 196 | $ ps-establish IPv4 --sst 2 --sd 1 197 | $ status 198 | ``` 199 | 200 | Now you should see 4 interfaces `uesimtun1-4` created. This is because the old UE connections are kept with the previous settings as long as we do not remove them. 201 | 202 | Start again a bandwidth test in the UE leveraging the new PDU session. NB: use the IPs of the inferfaces for the new sessions (`uesimtun3` and `uesimtun4`): 203 | 204 | ``` 205 | iperf3 -c 10.45.0.1 -B 10.45.0.3 -t 5 206 | iperf3 -c 10.46.0.1 -B 10.46.0.3 -t 5 207 | ``` 208 | 209 | From the results you should observe that the achieved bit-rate have changed accordingly to the new setting. 210 | 211 | 212 | ### Contact 213 | 214 | Main maintainer: 215 | - Riccardo Fedrizzi - rfedrizzi@fbk.eu 216 | 217 | 218 | 219 | 220 | -------------------------------------------------------------------------------- /example1.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | 6 | from comnetsemu.cli import CLI, spawnXtermDocker 7 | from comnetsemu.net import Containernet, VNFManager 8 | from mininet.link import TCLink 9 | from mininet.log import info, setLogLevel 10 | from mininet.node import Controller 11 | 12 | if __name__ == "__main__": 13 | 14 | AUTOTEST_MODE = os.environ.get("COMNETSEMU_AUTOTEST_MODE", 0) 15 | 16 | setLogLevel("info") 17 | 18 | prj_folder="/home/vagrant/comnetsemu/app/comnetsemu_5Gnet" 19 | mongodb_folder="/home/vagrant/mongodbdata" 20 | 21 | env = dict() 22 | 23 | net = Containernet(controller=Controller, link=TCLink) 24 | 25 | info("*** Adding Host for open5gs CP\n") 26 | cp = net.addDockerHost( 27 | "cp", 28 | dimage="my5gc_v2-4-4", 29 | ip="192.168.0.111/24", 30 | # dcmd="", 31 | dcmd="bash /open5gs/install/etc/open5gs/5gc_cp_init.sh", 32 | docker_args={ 33 | "ports" : { "3000/tcp": 3000 }, 34 | "volumes": { 35 | prj_folder + "/log": { 36 | "bind": "/open5gs/install/var/log/open5gs", 37 | "mode": "rw", 38 | }, 39 | mongodb_folder: { 40 | "bind": "/var/lib/mongodb", 41 | "mode": "rw", 42 | }, 43 | prj_folder + "/open5gs/config": { 44 | "bind": "/open5gs/install/etc/open5gs", 45 | "mode": "rw", 46 | }, 47 | "/etc/timezone": { 48 | "bind": "/etc/timezone", 49 | "mode": "ro", 50 | }, 51 | "/etc/localtime": { 52 | "bind": "/etc/localtime", 53 | "mode": "ro", 54 | }, 55 | }, 56 | }, 57 | ) 58 | 59 | info("*** Adding Host for open5gs UPF\n") 60 | env["COMPONENT_NAME"]="upf_cld" 61 | upf_cld = net.addDockerHost( 62 | "upf_cld", 63 | dimage="my5gc_v2-4-4", 64 | ip="192.168.0.112/24", 65 | # dcmd="", 66 | dcmd="bash /open5gs/install/etc/open5gs/temp/5gc_up_init.sh", 67 | docker_args={ 68 | "environment": env, 69 | "volumes": { 70 | prj_folder + "/log": { 71 | "bind": "/open5gs/install/var/log/open5gs", 72 | "mode": "rw", 73 | }, 74 | prj_folder + "/open5gs/config": { 75 | "bind": "/open5gs/install/etc/open5gs/temp", 76 | "mode": "rw", 77 | }, 78 | "/etc/timezone": { 79 | "bind": "/etc/timezone", 80 | "mode": "ro", 81 | }, 82 | "/etc/localtime": { 83 | "bind": "/etc/localtime", 84 | "mode": "ro", 85 | }, 86 | }, 87 | "cap_add": ["NET_ADMIN"], 88 | "sysctls": {"net.ipv4.ip_forward": 1}, 89 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 90 | }, 91 | ) 92 | 93 | info("*** Adding Host for open5gs UPF MEC\n") 94 | env["COMPONENT_NAME"]="upf_mec" 95 | upf_mec = net.addDockerHost( 96 | "upf_mec", 97 | dimage="my5gc_v2-4-4", 98 | ip="192.168.0.113/24", 99 | # dcmd="", 100 | dcmd="bash /open5gs/install/etc/open5gs/temp/5gc_up_init.sh", 101 | docker_args={ 102 | "environment": env, 103 | "volumes": { 104 | prj_folder + "/log": { 105 | "bind": "/open5gs/install/var/log/open5gs", 106 | "mode": "rw", 107 | }, 108 | prj_folder + "/open5gs/config": { 109 | "bind": "/open5gs/install/etc/open5gs/temp", 110 | "mode": "rw", 111 | }, 112 | "/etc/timezone": { 113 | "bind": "/etc/timezone", 114 | "mode": "ro", 115 | }, 116 | "/etc/localtime": { 117 | "bind": "/etc/localtime", 118 | "mode": "ro", 119 | }, 120 | }, 121 | "cap_add": ["NET_ADMIN"], 122 | "sysctls": {"net.ipv4.ip_forward": 1}, 123 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 124 | }, 125 | ) 126 | 127 | info("*** Adding gNB\n") 128 | env["COMPONENT_NAME"]="gnb" 129 | gnb = net.addDockerHost( 130 | "gnb", 131 | dimage="myueransim_v3-2-6", 132 | ip="192.168.0.131/24", 133 | # dcmd="", 134 | dcmd="bash /mnt/ueransim/open5gs_gnb_init.sh", 135 | docker_args={ 136 | "environment": env, 137 | "volumes": { 138 | prj_folder + "/ueransim/config": { 139 | "bind": "/mnt/ueransim", 140 | "mode": "rw", 141 | }, 142 | prj_folder + "/log": { 143 | "bind": "/mnt/log", 144 | "mode": "rw", 145 | }, 146 | "/etc/timezone": { 147 | "bind": "/etc/timezone", 148 | "mode": "ro", 149 | }, 150 | "/etc/localtime": { 151 | "bind": "/etc/localtime", 152 | "mode": "ro", 153 | }, 154 | "/dev": {"bind": "/dev", "mode": "rw"}, 155 | }, 156 | "cap_add": ["NET_ADMIN"], 157 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 158 | }, 159 | ) 160 | 161 | info("*** Adding UE\n") 162 | env["COMPONENT_NAME"]="ue" 163 | ue = net.addDockerHost( 164 | "ue", 165 | dimage="myueransim_v3-2-6", 166 | ip="192.168.0.132/24", 167 | # dcmd="", 168 | dcmd="bash /mnt/ueransim/open5gs_ue_init.sh", 169 | docker_args={ 170 | "environment": env, 171 | "volumes": { 172 | prj_folder + "/ueransim/config": { 173 | "bind": "/mnt/ueransim", 174 | "mode": "rw", 175 | }, 176 | prj_folder + "/log": { 177 | "bind": "/mnt/log", 178 | "mode": "rw", 179 | }, 180 | "/etc/timezone": { 181 | "bind": "/etc/timezone", 182 | "mode": "ro", 183 | }, 184 | "/etc/localtime": { 185 | "bind": "/etc/localtime", 186 | "mode": "ro", 187 | }, 188 | "/dev": {"bind": "/dev", "mode": "rw"}, 189 | }, 190 | "cap_add": ["NET_ADMIN"], 191 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 192 | }, 193 | ) 194 | 195 | info("*** Add controller\n") 196 | net.addController("c0") 197 | 198 | info("*** Adding switch\n") 199 | s1 = net.addSwitch("s1") 200 | s2 = net.addSwitch("s2") 201 | s3 = net.addSwitch("s3") 202 | 203 | info("*** Adding links\n") 204 | net.addLink(s1, s2, bw=1000, delay="10ms", intfName1="s1-s2", intfName2="s2-s1") 205 | net.addLink(s2, s3, bw=1000, delay="50ms", intfName1="s2-s3", intfName2="s3-s2") 206 | 207 | net.addLink(ue, s1, bw=1000, delay="1ms", intfName1="ue-s1", intfName2="s1-ue") 208 | net.addLink(gnb, s1, bw=1000, delay="1ms", intfName1="gnb-s1", intfName2="s1-gnb") 209 | 210 | net.addLink(cp, s3, bw=1000, delay="1ms", intfName1="cp-s1", intfName2="s1-cp") 211 | net.addLink(upf_cld, s3, bw=1000, delay="1ms", intfName1="upf-s3", intfName2="s3-upf_cld") 212 | net.addLink(upf_mec, s2, bw=1000, delay="1ms", intfName1="upf_mec-s2", intfName2="s2-upf_mec") 213 | 214 | info("\n*** Starting network\n") 215 | net.start() 216 | 217 | if not AUTOTEST_MODE: 218 | # spawnXtermDocker("open5gs") 219 | # spawnXtermDocker("gnb") 220 | CLI(net) 221 | 222 | net.stop() 223 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/amf.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,ngap,nas,gmm,sbi,amf,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/amf.log 23 | # 24 | # amf: 25 | # 26 | # 27 | # 28 | # o SBI Server(http://:80) 29 | # sbi: 30 | # 31 | # o SBI Server(http://:80) 32 | # sbi: 33 | # - addr: 34 | # - 0.0.0.0 35 | # - ::0 36 | # port: 7777 37 | # 38 | # o SBI Server(https://:443) 39 | # sbi: 40 | # - tls: 41 | # key: amf.key 42 | # pem: amf.pem 43 | # 44 | # o SBI Server(https://127.0.0.5:443, http://[::1]:80) 45 | # sbi: 46 | # - addr: 127.0.0.5 47 | # tls: 48 | # key: amf.key 49 | # pem: amf.pem 50 | # - addr: ::1 51 | # 52 | # o SBI Server(http://amf.open5gs.org:80) 53 | # sbi: 54 | # - name: amf.open5gs.org 55 | # 56 | # o SBI Server(http://127.0.0.5:7777) 57 | # sbi: 58 | # - addr: 127.0.0.5 59 | # port: 7777 60 | # 61 | # o SBI Server(http://:80) 62 | # sbi: 63 | # - dev: eth0 64 | # 65 | # o Provide custom SBI address to be advertised to NRF 66 | # sbi: 67 | # - dev: eth0 68 | # advertise: open5gs-amf.svc.local 69 | # 70 | # sbi: 71 | # - addr: localhost 72 | # advertise: 73 | # - 127.0.0.99 74 | # - ::1 75 | # 76 | # > 77 | # 78 | # o NGAP Server(all address avaiable) 79 | # ngap: 80 | # 81 | # o NGAP Server(0.0.0.0:38412) 82 | # ngap: 83 | # addr: 0.0.0.0 84 | # 85 | # o NGAP Server(127.0.0.5:38412, [::1]:38412) 86 | # ngap: 87 | # - addr: 127.0.0.5 88 | # - addr: ::1 89 | # 90 | # o NGAP Server(different port) 91 | # ngap: 92 | # - addr: 127.0.0.5 93 | # port: 38413 94 | # 95 | # o NGAP Server(address avaiable in `eth0` interface) 96 | # ngap: 97 | # dev: eth0 98 | # 99 | # 100 | # 101 | # o Multiple GUAMI 102 | # guami: 103 | # - plmn_id: 104 | # mcc: 901 105 | # mnc: 70 106 | # amf_id: 107 | # region: 2 108 | # set: 1 109 | # pointer: 4 110 | # - plmn_id: 111 | # mcc: 001 112 | # mnc: 01 113 | # amf_id: 114 | # region: 5 115 | # set: 2 116 | # 117 | # 118 | # 119 | # o Multiple TAI 120 | # tai: 121 | # - plmn_id: 122 | # mcc: 001 123 | # mnc: 01 124 | # tac: [1, 2, 3] 125 | # tai: 126 | # - plmn_id: 127 | # mcc: 002 128 | # mnc: 02 129 | # tac: 4 130 | # - plmn_id: 131 | # mcc: 003 132 | # mnc: 03 133 | # tac: 5 134 | # tai: 135 | # - plmn_id: 136 | # mcc: 004 137 | # mnc: 04 138 | # tac: [6, 7] 139 | # - plmn_id: 140 | # mcc: 005 141 | # mnc: 05 142 | # tac: 8 143 | # - plmn_id: 144 | # mcc: 006 145 | # mnc: 06 146 | # tac: [9, 10] 147 | # 148 | # 149 | # 150 | # o Multiple PLMN Support 151 | # plmn_support: 152 | # - plmn_id: 153 | # mcc: 901 154 | # mnc: 70 155 | # s_nssai: 156 | # - sst: 1 157 | # sd: 010000 158 | # - plmn_id: 159 | # mcc: 901 160 | # mnc: 70 161 | # s_nssai: 162 | # - sst: 1 163 | # 164 | # 165 | # 166 | # network_name: 167 | # full: Open5GS 168 | # short: Next 169 | # 170 | # 171 | # 172 | # amf_name: amf1.open5gs.amf.5gc.mnc70.mcc901.3gppnetwork.org 173 | # 174 | # - Default(255) 175 | # 176 | # relative_capacity: 100 177 | # 178 | amf: 179 | sbi: 180 | - addr: 127.0.0.5 181 | port: 7777 182 | ngap: 183 | - addr: 127.0.0.5 184 | guami: 185 | - plmn_id: 186 | mcc: 901 187 | mnc: 70 188 | amf_id: 189 | region: 2 190 | set: 1 191 | tai: 192 | - plmn_id: 193 | mcc: 901 194 | mnc: 70 195 | tac: 1 196 | plmn_support: 197 | - plmn_id: 198 | mcc: 901 199 | mnc: 70 200 | s_nssai: 201 | - sst: 1 202 | security: 203 | integrity_order : [ NIA2, NIA1, NIA0 ] 204 | ciphering_order : [ NEA0, NEA1, NEA2 ] 205 | network_name: 206 | full: Open5GS 207 | amf_name: open5gs-amf0 208 | 209 | # 210 | # nrf: 211 | # 212 | # > 213 | # 214 | # o SBI Client(http://127.0.0.10:7777) 215 | # sbi: 216 | # addr: 127.0.0.10 217 | # port: 7777 218 | # 219 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 220 | # sbi: 221 | # - addr: 127.0.0.10 222 | # tls: 223 | # key: nrf.key 224 | # pem: nrf.pem 225 | # - name: nrf.open5gs.org 226 | # 227 | # o SBI Client(http://[fe80::1%lo]:80) 228 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 229 | # 230 | # sbi: 231 | # addr: 232 | # - 127.0.0.10 233 | # - fe80::1%lo 234 | # 235 | nrf: 236 | sbi: 237 | - addr: 238 | - 127.0.0.10 239 | - ::1 240 | port: 7777 241 | 242 | # 243 | # parameter: 244 | # 245 | # o Disable use of IPv4 addresses (only IPv6) 246 | # no_ipv4: true 247 | # 248 | # o Disable use of IPv6 addresses (only IPv4) 249 | # no_ipv6: true 250 | # 251 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 252 | # prefer_ipv4: true 253 | # 254 | parameter: 255 | 256 | # 257 | # max: 258 | # 259 | # o Maximum Number of UE per AMF/MME 260 | # ue: 1024 261 | # o Maximum Number of gNB/eNB per AMF/MME 262 | # gnb: 32 263 | # 264 | max: 265 | 266 | # 267 | # pool: 268 | # 269 | # o The default memory pool size was set assuming 1024 UEs. 270 | # To connect more UEs, you need to increase the size further. 271 | # 272 | # - Pool-size 128 => 65536 Number 273 | # - Pool-size 256 => 16384 Number 274 | # - Pool-size 512 => 4096 Number 275 | # - Pool-size 1024 => 1024 Number 276 | # - Pool-size 2048 => 512 Number 277 | # - Pool-size 8192 => 128 Number 278 | # - Pool-size 1024*1024 => 8 Number 279 | # 280 | # 128: 65536 281 | # 256: 16384 282 | # 512: 4096 283 | # 1024: 1024 284 | # 2048: 512 285 | # 8192: 128 286 | # big: 8 287 | # 288 | pool: 289 | 290 | # 291 | # sockopt: 292 | # no_delay : true 293 | # 294 | sockopt: 295 | 296 | # 297 | # sctp: 298 | # heartbit_interval : 5000 (5secs) 299 | # sack_delay : 200 (200ms) 300 | # rto_initial : 3000 (3secs) 301 | # rto_min : 1000 (1sec) 302 | # rto_max : 5000 (5secs) 303 | # max_num_of_ostreams : 30 304 | # max_num_of_istreams : 65535 305 | # max_attempts : 4 306 | # max_initial_timeout : 8000(8secs) 307 | # usrsctp_udp_port : 9899 308 | # 309 | sctp: 310 | 311 | # 312 | # time: 313 | # 314 | # o NF Instance Heartbeat (Default : 0) 315 | # NFs will not send heart-beat timer in NFProfile 316 | # NRF will send heart-beat timer in NFProfile 317 | # 318 | # o NF Instance Heartbeat (20 seconds) 319 | # NFs will send heart-beat timer (20 seconds) in NFProfile 320 | # NRF can change heart-beat timer in NFProfile 321 | # 322 | # nf_instance: 323 | # heartbeat: 20 324 | # 325 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 326 | # 327 | # o Message Wait Duration (3000 ms) 328 | # message: 329 | # duration: 3000 330 | # 331 | # o Handover Wait Duration (Default : 300 ms) 332 | # Time to wait for AMF to send UEContextReleaseCommand 333 | # to the source gNB after receiving HandoverNotify 334 | # 335 | # o Handover Wait Duration (500ms) 336 | # handover: 337 | # duration: 500 338 | time: 339 | -------------------------------------------------------------------------------- /example2.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | 6 | from comnetsemu.cli import CLI, spawnXtermDocker 7 | from comnetsemu.net import Containernet, VNFManager 8 | from mininet.link import TCLink 9 | from mininet.log import info, setLogLevel 10 | from mininet.node import Controller 11 | 12 | from python_modules.Open5GS import Open5GS 13 | 14 | import json, time 15 | 16 | if __name__ == "__main__": 17 | 18 | AUTOTEST_MODE = os.environ.get("COMNETSEMU_AUTOTEST_MODE", 0) 19 | 20 | setLogLevel("info") 21 | 22 | prj_folder="/home/vagrant/comnetsemu/app/comnetsemu_5Gnet" 23 | mongodb_folder="/home/vagrant/mongodbdata" 24 | 25 | env = dict() 26 | 27 | net = Containernet(controller=Controller, link=TCLink) 28 | 29 | info("*** Adding Host for open5gs CP\n") 30 | cp = net.addDockerHost( 31 | "cp", 32 | dimage="my5gc_v2-4-4", 33 | ip="192.168.0.111/24", 34 | # dcmd="", 35 | dcmd="bash /open5gs/install/etc/open5gs/5gc_cp_init.sh", 36 | docker_args={ 37 | "ports" : { "3000/tcp": 3000 }, 38 | "volumes": { 39 | prj_folder + "/log": { 40 | "bind": "/open5gs/install/var/log/open5gs", 41 | "mode": "rw", 42 | }, 43 | mongodb_folder: { 44 | "bind": "/var/lib/mongodb", 45 | "mode": "rw", 46 | }, 47 | prj_folder + "/open5gs/config": { 48 | "bind": "/open5gs/install/etc/open5gs", 49 | "mode": "rw", 50 | }, 51 | "/etc/timezone": { 52 | "bind": "/etc/timezone", 53 | "mode": "ro", 54 | }, 55 | "/etc/localtime": { 56 | "bind": "/etc/localtime", 57 | "mode": "ro", 58 | }, 59 | }, 60 | }, 61 | ) 62 | 63 | 64 | info("*** Adding Host for open5gs UPF\n") 65 | env["COMPONENT_NAME"]="upf_cld" 66 | upf_cld = net.addDockerHost( 67 | "upf_cld", 68 | dimage="my5gc_v2-4-4", 69 | ip="192.168.0.112/24", 70 | # dcmd="", 71 | dcmd="bash /open5gs/install/etc/open5gs/temp/5gc_up_init.sh", 72 | docker_args={ 73 | "environment": env, 74 | "volumes": { 75 | prj_folder + "/log": { 76 | "bind": "/open5gs/install/var/log/open5gs", 77 | "mode": "rw", 78 | }, 79 | prj_folder + "/open5gs/config": { 80 | "bind": "/open5gs/install/etc/open5gs/temp", 81 | "mode": "rw", 82 | }, 83 | "/etc/timezone": { 84 | "bind": "/etc/timezone", 85 | "mode": "ro", 86 | }, 87 | "/etc/localtime": { 88 | "bind": "/etc/localtime", 89 | "mode": "ro", 90 | }, 91 | }, 92 | "cap_add": ["NET_ADMIN"], 93 | "sysctls": {"net.ipv4.ip_forward": 1}, 94 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 95 | }, 96 | ) 97 | 98 | info("*** Adding Host for open5gs UPF MEC\n") 99 | env["COMPONENT_NAME"]="upf_mec" 100 | upf_mec = net.addDockerHost( 101 | "upf_mec", 102 | dimage="my5gc_v2-4-4", 103 | ip="192.168.0.113/24", 104 | # dcmd="", 105 | dcmd="bash /open5gs/install/etc/open5gs/temp/5gc_up_init.sh", 106 | docker_args={ 107 | "environment": env, 108 | "volumes": { 109 | prj_folder + "/log": { 110 | "bind": "/open5gs/install/var/log/open5gs", 111 | "mode": "rw", 112 | }, 113 | prj_folder + "/open5gs/config": { 114 | "bind": "/open5gs/install/etc/open5gs/temp", 115 | "mode": "rw", 116 | }, 117 | "/etc/timezone": { 118 | "bind": "/etc/timezone", 119 | "mode": "ro", 120 | }, 121 | "/etc/localtime": { 122 | "bind": "/etc/localtime", 123 | "mode": "ro", 124 | }, 125 | }, 126 | "cap_add": ["NET_ADMIN"], 127 | "sysctls": {"net.ipv4.ip_forward": 1}, 128 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 129 | }, 130 | ) 131 | 132 | info("*** Adding gNB\n") 133 | env["COMPONENT_NAME"]="gnb" 134 | gnb = net.addDockerHost( 135 | "gnb", 136 | dimage="myueransim_v3-2-6", 137 | ip="192.168.0.131/24", 138 | # dcmd="", 139 | dcmd="bash /mnt/ueransim/open5gs_gnb_init.sh", 140 | docker_args={ 141 | "environment": env, 142 | "volumes": { 143 | prj_folder + "/ueransim/config": { 144 | "bind": "/mnt/ueransim", 145 | "mode": "rw", 146 | }, 147 | prj_folder + "/log": { 148 | "bind": "/mnt/log", 149 | "mode": "rw", 150 | }, 151 | "/etc/timezone": { 152 | "bind": "/etc/timezone", 153 | "mode": "ro", 154 | }, 155 | "/etc/localtime": { 156 | "bind": "/etc/localtime", 157 | "mode": "ro", 158 | }, 159 | "/dev": {"bind": "/dev", "mode": "rw"}, 160 | }, 161 | "cap_add": ["NET_ADMIN"], 162 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 163 | }, 164 | ) 165 | 166 | info("*** Adding UE\n") 167 | env["COMPONENT_NAME"]="ue" 168 | ue = net.addDockerHost( 169 | "ue", 170 | dimage="myueransim_v3-2-6", 171 | ip="192.168.0.132/24", 172 | # dcmd="", 173 | dcmd="bash /mnt/ueransim/open5gs_ue_init.sh", 174 | docker_args={ 175 | "environment": env, 176 | "volumes": { 177 | prj_folder + "/ueransim/config": { 178 | "bind": "/mnt/ueransim", 179 | "mode": "rw", 180 | }, 181 | prj_folder + "/log": { 182 | "bind": "/mnt/log", 183 | "mode": "rw", 184 | }, 185 | "/etc/timezone": { 186 | "bind": "/etc/timezone", 187 | "mode": "ro", 188 | }, 189 | "/etc/localtime": { 190 | "bind": "/etc/localtime", 191 | "mode": "ro", 192 | }, 193 | "/dev": {"bind": "/dev", "mode": "rw"}, 194 | }, 195 | "cap_add": ["NET_ADMIN"], 196 | "devices": "/dev/net/tun:/dev/net/tun:rwm" 197 | }, 198 | ) 199 | 200 | info("*** Add controller\n") 201 | net.addController("c0") 202 | 203 | info("*** Adding switch\n") 204 | s1 = net.addSwitch("s1") 205 | s2 = net.addSwitch("s2") 206 | s3 = net.addSwitch("s3") 207 | 208 | info("*** Adding links\n") 209 | net.addLink(s1, s2, bw=1000, delay="10ms", intfName1="s1-s2", intfName2="s2-s1") 210 | net.addLink(s2, s3, bw=1000, delay="50ms", intfName1="s2-s3", intfName2="s3-s2") 211 | 212 | net.addLink(cp, s3, bw=1000, delay="1ms", intfName1="cp-s1", intfName2="s1-cp") 213 | net.addLink(upf_cld, s3, bw=1000, delay="1ms", intfName1="upf-s3", intfName2="s3-upf_cld") 214 | net.addLink(upf_mec, s2, bw=1000, delay="1ms", intfName1="upf_mec-s2", intfName2="s2-upf_mec") 215 | 216 | net.addLink(ue, s1, bw=1000, delay="1ms", intfName1="ue-s1", intfName2="s1-ue") 217 | net.addLink(gnb, s1, bw=1000, delay="1ms", intfName1="gnb-s1", intfName2="s1-gnb") 218 | 219 | print(f"*** Open5GS: Init subscriber for UE 0") 220 | o5gs = Open5GS( "172.17.0.2" ,"27017") 221 | o5gs.removeAllSubscribers() 222 | with open( prj_folder + "/python_modules/subscriber_profile.json" , 'r') as f: 223 | profile = json.load( f ) 224 | o5gs.addSubscriber(profile) 225 | 226 | 227 | info("\n*** Starting network\n") 228 | net.start() 229 | 230 | if not AUTOTEST_MODE: 231 | # spawnXtermDocker("open5gs") 232 | # spawnXtermDocker("gnb") 233 | CLI(net) 234 | 235 | net.stop() 236 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/mme.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,s1ap,nas,fd,gtp,mme,emm,esm,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/mme.log 23 | 24 | # 25 | # mme: 26 | # 27 | # > 28 | # 29 | # o S1AP Server(all address avaiable) 30 | # s1ap: 31 | # 32 | # o S1AP Server(0.0.0.0:36412) 33 | # s1ap: 34 | # addr: 0.0.0.0 35 | # 36 | # o S1AP Server(127.0.0.2:36412, [::1]:36412) 37 | # s1ap: 38 | # - addr: 127.0.0.2 39 | # - addr: ::1 40 | # 41 | # o S1AP Server(different port) 42 | # s1ap: 43 | # - addr: 127.0.0.2 44 | # port: 36413 45 | # 46 | # o S1AP Server(address avaiable in `eth0` interface) 47 | # s1ap: 48 | # dev: eth0 49 | # 50 | # > 51 | # 52 | # o GTP-C Server(all address avaiable) 53 | # gtpc: 54 | # 55 | # o GTP-C Server(127.0.0.2:2123, [::1]:2123) 56 | # gtpc: 57 | # - addr: 127.0.0.2 58 | # - addr: ::1 59 | # 60 | # 61 | # 62 | # o Single MSC/VLR(127.0.0.2) 63 | # sgsap: 64 | # addr: 127.0.0.2 65 | # map: 66 | # tai: 67 | # plmn_id: 68 | # mcc: 001 69 | # mnc: 01 70 | # tac: 4130 71 | # lai: 72 | # plmn_id: 73 | # mcc: 001 74 | # mnc: 01 75 | # lac: 43690 76 | # map: 77 | # tai: 78 | # plmn_id: 79 | # mcc: 002 80 | # mnc: 02 81 | # tac: 4132 82 | # lai: 83 | # plmn_id: 84 | # mcc: 002 85 | # mnc: 02 86 | # lac: 43692 87 | # 88 | # o Multiple MSC/VLR 89 | # sgsap: 90 | # - addr: 127.0.0.2 91 | # port: 29119 92 | # map: 93 | # tai: 94 | # plmn_id: 95 | # mcc: 001 96 | # mnc: 01 97 | # tac: 4131 98 | # lai: 99 | # plmn_id: 100 | # mcc: 001 101 | # mnc: 01 102 | # lac: 43691 103 | # map: 104 | # tai: 105 | # plmn_id: 106 | # mcc: 002 107 | # mnc: 02 108 | # tac: 4132 109 | # lai: 110 | # plmn_id: 111 | # mcc: 002 112 | # mnc: 02 113 | # lac: 43692 114 | # - addr 115 | # - 127.0.0.4 116 | # - fe80::2%lo 117 | # map: 118 | # tai: 119 | # plmn_id: 120 | # mcc: 001 121 | # mnc: 01 122 | # tac: 4132 123 | # lai: 124 | # plmn_id: 125 | # mcc: 002 126 | # mnc: 02 127 | # lac: 43692 128 | # - name: msc.open5gs.org 129 | # map: 130 | # tai: 131 | # plmn_id: 132 | # mcc: 001 133 | # mnc: 01 134 | # tac: 4133 135 | # lai: 136 | # plmn_id: 137 | # mcc: 002 138 | # mnc: 02 139 | # lac: 43693 140 | # 141 | # 142 | # 143 | # 144 | # o Multiple GUMMEI 145 | # gummei: 146 | # - plmn_id: 147 | # mcc: 001 148 | # mnc: 01 149 | # mme_gid: 2 150 | # mme_code: 1 151 | # - plmn_id: 152 | # - mcc: 002 153 | # mnc: 02 154 | # - mcc: 003 155 | # mnc: 03 156 | # mme_gid: [3, 4] 157 | # mme_code: 158 | # - 2 159 | # - 3 160 | # 161 | # 162 | # 163 | # 164 | # o Multiple TAI 165 | # tai: 166 | # - plmn_id: 167 | # mcc: 001 168 | # mnc: 01 169 | # tac: [1, 2, 3] 170 | # tai: 171 | # - plmn_id: 172 | # mcc: 002 173 | # mnc: 02 174 | # tac: 4 175 | # - plmn_id: 176 | # mcc: 003 177 | # mnc: 03 178 | # tac: 5 179 | # tai: 180 | # - plmn_id: 181 | # mcc: 004 182 | # mnc: 04 183 | # tac: [6, 7] 184 | # - plmn_id: 185 | # mcc: 005 186 | # mnc: 05 187 | # tac: 8 188 | # - plmn_id: 189 | # mcc: 006 190 | # mnc: 06 191 | # tac: [9, 10] 192 | # 193 | # 194 | # 195 | # 196 | # network_name: 197 | # full: Open5GS 198 | # short: Next 199 | # 200 | # 201 | # 202 | # mme_name: open5gs-mme0 203 | # 204 | # - Default(255) 205 | # 206 | # relative_capacity: 100 207 | # 208 | mme: 209 | freeDiameter: /open5gs/install/etc/freeDiameter/mme.conf 210 | s1ap: 211 | - addr: 127.0.0.2 212 | gtpc: 213 | - addr: 127.0.0.2 214 | gummei: 215 | plmn_id: 216 | mcc: 901 217 | mnc: 70 218 | mme_gid: 2 219 | mme_code: 1 220 | tai: 221 | plmn_id: 222 | mcc: 901 223 | mnc: 70 224 | tac: 1 225 | security: 226 | integrity_order : [ EIA2, EIA1, EIA0 ] 227 | ciphering_order : [ EEA0, EEA1, EEA2 ] 228 | network_name: 229 | full: Open5GS 230 | mme_name: open5gs-mme0 231 | 232 | # 233 | # sgwc: 234 | # 235 | # 236 | # 237 | # o Specify SGW addresses the GTP-C must connect to 238 | # 239 | # o One SGW is defined. 240 | # If prefer_ipv4 is not true, [fe80::2%lo] is selected. 241 | # gtpc: 242 | # addr: 243 | # - 127.0.0.3 244 | # - fe80::2%lo 245 | # 246 | # o Two SGW are defined. MME selects SGW with round-robin manner per UE 247 | # gtpc: 248 | # - addr: 127.0.0.3 249 | # - addr: fe80::2%lo 250 | # 251 | # o Three SGW are defined. MME selects SGW with round-robin manner per UE 252 | # gtpc: 253 | # - addr 254 | # - 127.0.0.3 255 | # - fe80::2%lo 256 | # - addr 257 | # - 127.0.0.22 258 | # - fe80::12%lo 259 | # - name: sgw3.open5gs.org 260 | # 261 | # 262 | # 263 | # o Round-Robin 264 | # 265 | # gtpc: 266 | # addr: 127.0.0.3 267 | # addr: 127.0.2.2 268 | # addr: 127.0.4.2 269 | # 270 | # o SGW selection by eNodeB TAC 271 | # (either single TAC or multiple TACs, DECIMAL representation) 272 | # 273 | # gtpc: 274 | # - addr: 127.0.0.3 275 | # tac: 26000 276 | # - addr: 127.0.2.2 277 | # tac: [25000, 27000, 28000] 278 | # 279 | # o SGW selection by e_cell_id(28bit) 280 | # (either single or multiple e_cell_id, HEX representation) 281 | # 282 | # gtpc: 283 | # - addr: 127.0.0.3 284 | # e_cell_id: abcde01 285 | # - addr: 127.0.2.2 286 | # e_cell_id: [12345, a9413, 98765] 287 | # 288 | sgwc: 289 | gtpc: 290 | - addr: 127.0.0.3 291 | 292 | # 293 | # smf: 294 | # 295 | # 296 | # 297 | # o By default, the SMF uses the first SMF node. 298 | # - To use a different APN for each SMF, specify gtpc.apn as the APN name. 299 | # - If the HSS uses WebUI to set the SMF IP for each UE, 300 | # you can use a specific SMF node for each UE. 301 | # 302 | # o Two SMF are defined. 127.0.0.4:2123 is used. 303 | # [fe80::3%lo]:2123 is ignored. 304 | # gtpc: 305 | # - addr: 127.0.0.4 306 | # - addr: fe80::3%lo 307 | # 308 | # o One SMF is defined. if prefer_ipv4 is not true, 309 | # [fe80::3%lo] is selected. 310 | # gtpc: 311 | # - addr: 312 | # - 127.0.0.4 313 | # - fe80::3%lo 314 | # 315 | # o Two SMF are defined with a different APN. 316 | # - Note that if SMF IP for UE is configured in HSS, 317 | # the following configurion for this UE is ignored. 318 | # gtpc: 319 | # - addr: 127.0.0.4 320 | # apn: internet 321 | # - addr: 127.0.0.5 322 | # apn: volte 323 | # 324 | # o If APN is omitted, the default APN uses the first SMF node. 325 | # gtpc: 326 | # - addr: 127.0.0.4 327 | # - addr: 127.0.0.5 328 | # apn: volte 329 | smf: 330 | gtpc: 331 | - addr: 332 | - 127.0.0.4 333 | - ::1 334 | 335 | # 336 | # parameter: 337 | # 338 | # o Disable use of IPv4 addresses (only IPv6) 339 | # no_ipv4: true 340 | # 341 | # o Disable use of IPv6 addresses (only IPv4) 342 | # no_ipv6: true 343 | # 344 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 345 | # prefer_ipv4: true 346 | # 347 | # o Use OAI UE 348 | # - Remove HashMME in Security-mode command message 349 | # - Use the length 1 of EPS network feature support in Attach accept message 350 | # use_openair: true 351 | # 352 | parameter: 353 | 354 | # 355 | # max: 356 | # 357 | # o Maximum Number of UE per AMF/MME 358 | # ue: 1024 359 | # o Maximum Number of gNB/eNB per AMF/MME 360 | # gnb: 32 361 | # 362 | max: 363 | 364 | # 365 | # pool: 366 | # 367 | # o The default memory pool size was set assuming 1024 UEs. 368 | # To connect more UEs, you need to increase the size further. 369 | # 370 | # - Pool-size 128 => 65536 Number 371 | # - Pool-size 256 => 16384 Number 372 | # - Pool-size 512 => 4096 Number 373 | # - Pool-size 1024 => 1024 Number 374 | # - Pool-size 2048 => 512 Number 375 | # - Pool-size 8192 => 128 Number 376 | # - Pool-size 1024*1024 => 8 Number 377 | # 378 | # 128: 65536 379 | # 256: 16384 380 | # 512: 4096 381 | # 1024: 1024 382 | # 2048: 512 383 | # 8192: 128 384 | # big: 8 385 | # 386 | pool: 387 | 388 | # 389 | # sockopt: 390 | # no_delay : true 391 | # 392 | sockopt: 393 | 394 | # 395 | # sctp: 396 | # heartbit_interval : 5000 (5secs) 397 | # sack_delay : 200 (200ms) 398 | # rto_initial : 3000 (3secs) 399 | # rto_min : 1000 (1sec) 400 | # rto_max : 5000 (5secs) 401 | # max_num_of_ostreams : 30 402 | # max_num_of_istreams : 65535 403 | # max_attempts : 4 404 | # max_initial_timeout : 8000(8secs) 405 | # usrsctp_udp_port : 9899 406 | # 407 | sctp: 408 | 409 | # 410 | # time: 411 | # 412 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 413 | # 414 | # o Message Wait Duration (3000 ms) 415 | # message: 416 | # duration: 3000 417 | # 418 | # o Handover Wait Duration (Default : 300 ms) 419 | # Time to wait for MME to send UEContextReleaseCommand 420 | # to the source eNB after receiving HandoverNotify 421 | # 422 | # o Handover Wait Duration (500ms) 423 | # handover: 424 | # duration: 500 425 | time: 426 | -------------------------------------------------------------------------------- /open5gs/config/default_yaml/smf.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # logger: 3 | # 4 | # o Set OGS_LOG_INFO to all domain level 5 | # - If `level` is omitted, the default level is OGS_LOG_INFO) 6 | # - If `domain` is omitted, the all domain level is set from 'level' 7 | # (Nothing is needed) 8 | # 9 | # o Set OGS_LOG_ERROR to all domain level 10 | # - `level` can be set with none, fatal, error, warn, info, debug, trace 11 | # level: error 12 | # 13 | # o Set OGS_LOG_DEBUG to mme/emm domain level 14 | # level: debug 15 | # domain: mme,emm 16 | # 17 | # o Set OGS_LOG_TRACE to all domain level 18 | # level: trace 19 | # domain: core,pfcp,fd,pfcp,gtp,smf,event,tlv,mem,sock 20 | # 21 | logger: 22 | file: /open5gs/install/var/log/open5gs/smf.log 23 | # 24 | # smf: 25 | # 26 | # 27 | # 28 | # o SBI Server(http://:80) 29 | # sbi: 30 | # 31 | # o SBI Server(http://:80) 32 | # sbi: 33 | # - addr: 34 | # - 0.0.0.0 35 | # - ::0 36 | # port: 7777 37 | # 38 | # o SBI Server(https://:443) 39 | # sbi: 40 | # - tls: 41 | # key: smf.key 42 | # pem: smf.pem 43 | # 44 | # o SBI Server(https://127.0.0.4:443, http://[::1]:80) 45 | # sbi: 46 | # - addr: 127.0.0.4 47 | # tls: 48 | # key: smf.key 49 | # pem: smf.pem 50 | # - addr: ::1 51 | # 52 | # o SBI Server(http://smf.open5gs.org:80) 53 | # sbi: 54 | # - name: smf.open5gs.org 55 | # 56 | # o SBI Server(http://127.0.0.4:7777) 57 | # sbi: 58 | # - addr: 127.0.0.4 59 | # port: 7777 60 | # 61 | # o SBI Server(http://:80) 62 | # sbi: 63 | # - dev: eth0 64 | # 65 | # o Provide custom SBI address to be advertised to NRF 66 | # sbi: 67 | # - dev: eth0 68 | # advertise: open5gs-smf.svc.local 69 | # 70 | # sbi: 71 | # - addr: localhost 72 | # advertise: 73 | # - 127.0.0.99 74 | # - ::1 75 | # 76 | # 77 | # 78 | # o PFCP Server(127.0.0.4:8805, ::1:8805) 79 | # pfcp: 80 | # - addr: 127.0.0.4 81 | # - addr: ::1 82 | # 83 | # o PFCP-U Server(127.0.0.1:2152, [::1]:2152) 84 | # pfcp: 85 | # name: localhost 86 | # 87 | # 88 | # 89 | # o GTP-C Server(127.0.0.4:2123, [fe80::3%lo]:2123) 90 | # gtpc: 91 | # addr: 92 | # - 127.0.0.4 93 | # - fe80::3%lo 94 | # 95 | # o On SMF, Same configuration 96 | # (127.0.0.4:2123, [fe80::3%lo]:2123). 97 | # gtpc: 98 | # - addr: 127.0.0.4 99 | # - addr: fe80::3%lo 100 | # 101 | # > 102 | # 103 | # o GTP-U Server(127.0.0.4:2152, [::1]:2152) 104 | # gtpu: 105 | # - addr: 127.0.0.4 106 | # - addr: ::1 107 | # 108 | # o GTP-U Server(127.0.0.1:2152, [::1]:2152) 109 | # gtpu: 110 | # name: localhost 111 | # 112 | # 113 | # 114 | # o IPv4 Pool 115 | # subnet: 116 | # addr: 10.45.0.1/16 117 | # 118 | # o IPv4/IPv6 Pool 119 | # subnet: 120 | # - addr: 10.45.0.1/16 121 | # - addr: 2001:230:cafe::1/48 122 | # 123 | # 124 | # o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:230:babe::1/48 125 | # 126 | # subnet: 127 | # - addr: 10.45.0.1/16 128 | # dnn: internet 129 | # - addr: 2001:230:cafe::1/48 130 | # dnn: internet 131 | # - addr: 10.46.0.1/16 132 | # dnn: ims 133 | # - addr: 2001:230:babe::1/48 134 | # dnn: ims 135 | # 136 | # o Pool Range Sample 137 | # subnet: 138 | # - addr: 10.45.0.1/24 139 | # range: 10.45.0.100-10.45.0.200 140 | # 141 | # subnet: 142 | # - addr: 10.45.0.1/24 143 | # range: 144 | # - 10.45.0.5-10.45.0.50 145 | # - 10.45.0.100- 146 | # 147 | # subnet: 148 | # - addr: 10.45.0.1/24 149 | # range: 150 | # - -10.45.0.200 151 | # - 10.45.0.210-10.45.0.220 152 | # 153 | # subnet: 154 | # - addr: 10.45.0.1/16 155 | # range: 156 | # - 10.45.0.100-10.45.0.200 157 | # - 10.45.1.100-10.45.1.200 158 | # - addr: 2001:230:cafe::1/48 159 | # range: 160 | # - 2001:230:cafe:a0::0-2001:230:cafe:b0::0 161 | # - 2001:230:cafe:c0::0-2001:230:cafe:d0::0 162 | # 163 | # 164 | # 165 | # o Primary/Secondary can be configured. Others are ignored. 166 | # 167 | # dns: 168 | # - 8.8.8.8 169 | # - 8.8.4.4 170 | # - 2001:4860:4860::8888 171 | # - 2001:4860:4860::8844 172 | # 173 | # 174 | # 175 | # o Provisioning a limit on the size of the packets sent by the MS 176 | # to avoid packet fragmentation in the backbone network 177 | # between the MS and the GGSN/PGW and/or across the (S)Gi reference point) 178 | # when some of the backbone links does not support 179 | # packets larger then 1500 octets 180 | # 181 | # 182 | # 183 | # o Proxy Call Session Control Function 184 | # 185 | # p-cscf: 186 | # - 127.0.0.1 187 | # - ::1 188 | # 189 | # 190 | # 1. SMF sends SmfInfo(S-NSSAI, DNN, TAI) to the NRF 191 | # 2. NRF responds to AMF with SmfInfo during NF-Discovery. 192 | # 3. AMF selects SMF based on S-NSSAI, DNN and TAI in SmfInfo. 193 | # 194 | # Note that if there is no SmfInfo, any AMF can select this SMF. 195 | # 196 | # o S-NSSAI[SST:1] and DNN[internet] - At least 1 DNN is required in S-NSSAI 197 | # info: 198 | # - s_nssai: 199 | # - sst: 1 200 | # dnn: 201 | # - internet 202 | # 203 | # o S-NSSAI[SST:1 SD:009000] and DNN[internet or ims] 204 | # info: 205 | # - s_nssai: 206 | # - sst: 1 207 | # sd: 009000 208 | # dnn: 209 | # - internet 210 | # - ims 211 | # 212 | # o S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:90170 TAC:1] 213 | # info: 214 | # - s_nssai: 215 | # - sst: 1 216 | # dnn: 217 | # - internet 218 | # tai: 219 | # - plmn_id: 220 | # mcc: 901 221 | # mnc: 70 222 | # tac: 1 223 | # 224 | # o If any of conditions below are met: 225 | # - S-NSSAI[SST:1] and DNN[internet] and TAI[PLMN-ID:90170 TAC:1-9] 226 | # - S-NSSAI[SST:2 SD:000080] and DNN[internet or ims] 227 | # - S-NSSAI[SST:4] and DNN[internet] and TAI[PLMN-ID:90170 TAC:10-20,30-40] 228 | # 229 | # info: 230 | # - s_nssai: 231 | # - sst: 1 232 | # dnn: 233 | # - internet 234 | # tai: 235 | # - plmn_id: 236 | # mcc: 901 237 | # mnc: 70 238 | # range: 239 | # - 1-9 240 | # - s_nssai: 241 | # - sst: 2 242 | # sd: 000080 243 | # dnn: 244 | # - internet 245 | # - ims 246 | # - s_nssai: 247 | # - sst: 4 248 | # dnn: 249 | # - internet 250 | # tai: 251 | # - plmn_id: 252 | # mcc: 901 253 | # mnc: 70 254 | # range: 255 | # - 10-20 256 | # - 30-40 257 | # 258 | # o Complex Example 259 | # info: 260 | # - s_nssai: 261 | # - sst: 1 262 | # dnn: 263 | # - internet 264 | # - sst: 1 265 | # sd: 000080 266 | # dnn: 267 | # - internet 268 | # - ims 269 | # - sst: 1 270 | # sd: 009000 271 | # dnn: 272 | # [internet, ims] 273 | # - sst: 2 274 | # dnn: 275 | # - internet 276 | # - sst: 3 277 | # sd: 123456 278 | # dnn: 279 | # - internet 280 | # tai: 281 | # - plmn_id: 282 | # mcc: 901 283 | # mnc: 70 284 | # tac: [1, 2, 3] 285 | # - plmn_id: 286 | # mcc: 901 287 | # mnc: 70 288 | # tac: 4 289 | # - plmn_id: 290 | # mcc: 901 291 | # mnc: 70 292 | # tac: 293 | # - 5 294 | # - 6 295 | # - plmn_id: 296 | # mcc: 901 297 | # mnc: 70 298 | # range: 299 | # - 100-200 300 | # - 300-400 301 | # - plmn_id: 302 | # mcc: 901 303 | # mnc: 70 304 | # range: 305 | # - 500-600 306 | # - 700-800 307 | # - 900-1000 308 | # - s_nssai: 309 | # - sst: 4 310 | # dnn: 311 | # - internet 312 | # tai: 313 | # - plmn_id: 314 | # mcc: 901 315 | # mnc: 70 316 | # tac: 99 317 | # 318 | 319 | smf: 320 | sbi: 321 | - addr: 127.0.0.4 322 | port: 7777 323 | pfcp: 324 | - addr: 127.0.0.4 325 | - addr: ::1 326 | gtpc: 327 | - addr: 127.0.0.4 328 | - addr: ::1 329 | gtpu: 330 | - addr: 127.0.0.4 331 | - addr: ::1 332 | subnet: 333 | - addr: 10.45.0.1/16 334 | - addr: 2001:230:cafe::1/48 335 | dns: 336 | - 8.8.8.8 337 | - 8.8.4.4 338 | - 2001:4860:4860::8888 339 | - 2001:4860:4860::8844 340 | mtu: 1400 341 | freeDiameter: /open5gs/install/etc/freeDiameter/smf.conf 342 | 343 | # 344 | # nrf: 345 | # 346 | # > 347 | # 348 | # o SBI Client(http://127.0.0.1:7777) 349 | # sbi: 350 | # addr: 127.0.0.10 351 | # port: 7777 352 | # 353 | # o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) 354 | # sbi: 355 | # - addr: 127.0.0.10 356 | # tls: 357 | # key: nrf.key 358 | # pem: nrf.pem 359 | # - name: nrf.open5gs.org 360 | # 361 | # o SBI Client(http://[fe80::1%lo]:80) 362 | # If prefer_ipv4 is true, http://127.0.0.10:80 is selected. 363 | # 364 | # sbi: 365 | # addr: 366 | # - 127.0.0.10 367 | # - fe80::1%lo 368 | # 369 | nrf: 370 | sbi: 371 | - addr: 372 | - 127.0.0.10 373 | - ::1 374 | port: 7777 375 | 376 | # 377 | # upf: 378 | # 379 | # > 380 | # 381 | # o PFCP Client(127.0.0.7:8805) 382 | # 383 | # pfcp: 384 | # addr: 127.0.0.7 385 | # 386 | # 387 | # 388 | # o Round-Robin 389 | # (note that round robin can be disabled for a particular node 390 | # by setting flag 'rr' to 0) 391 | # 392 | # upf: 393 | # pfcp: 394 | # - addr: 127.0.0.7 395 | # - addr: 127.0.0.12 396 | # rr: 0 397 | # - addr: 127.0.0.19 398 | # 399 | # o UPF selection by eNodeB TAC 400 | # (either single TAC or multiple TACs, DECIMAL representation) 401 | # 402 | # upf: 403 | # pfcp: 404 | # - addr: 127.0.0.7 405 | # tac: 1 406 | # - addr: 127.0.0.12 407 | # tac: [3,5,8] 408 | # 409 | # o UPF selection by UE's DNN/APN (either single DNN/APN or multiple DNNs/APNs) 410 | # 411 | # upf: 412 | # pfcp: 413 | # - addr: 127.0.0.7 414 | # dnn: ims 415 | # - addr: 127.0.0.12 416 | # dnn: [internet, web] 417 | # 418 | # o UPF selection by CellID(e_cell_id: 28bit, nr_cell_id: 36bit) 419 | # (either single enb_id or multiple enb_ids, HEX representation) 420 | # 421 | # upf: 422 | # pfcp: 423 | # - addr: 127.0.0.7 424 | # e_cell_id: 463 425 | # - addr: 127.0.0.12 426 | # nr_cell_id: [123456789, 9413] 427 | # 428 | upf: 429 | pfcp: 430 | - addr: 127.0.0.7 431 | 432 | # 433 | # parameter: 434 | # 435 | # o Number of output streams per SCTP associations. 436 | # sctp_streams: 30 437 | # 438 | # o Disable use of IPv4 addresses (only IPv6) 439 | # no_ipv4: true 440 | # 441 | # o Disable use of IPv6 addresses (only IPv4) 442 | # no_ipv6: true 443 | # 444 | # o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. 445 | # prefer_ipv4: true 446 | # 447 | # o Disable selection of UPF PFCP in Round-Robin manner 448 | # no_pfcp_rr_select: true 449 | # 450 | parameter: 451 | 452 | # 453 | # max: 454 | # 455 | # o Maximum Number of UE per AMF/MME 456 | # ue: 1024 457 | # o Maximum Number of gNB/eNB per AMF/MME 458 | # gnb: 32 459 | # 460 | max: 461 | 462 | # 463 | # pool: 464 | # 465 | # o The default memory pool size was set assuming 1024 UEs. 466 | # To connect more UEs, you need to increase the size further. 467 | # 468 | # - Pool-size 128 => 65536 Number 469 | # - Pool-size 256 => 16384 Number 470 | # - Pool-size 512 => 4096 Number 471 | # - Pool-size 1024 => 1024 Number 472 | # - Pool-size 2048 => 512 Number 473 | # - Pool-size 8192 => 128 Number 474 | # - Pool-size 1024*1024 => 8 Number 475 | # 476 | # 128: 65536 477 | # 256: 16384 478 | # 512: 4096 479 | # 1024: 1024 480 | # 2048: 512 481 | # 8192: 128 482 | # big: 8 483 | # 484 | pool: 485 | 486 | # 487 | # time: 488 | # 489 | # o NF Instance Heartbeat (Default : 0) 490 | # NFs will not send heart-beat timer in NFProfile 491 | # NRF will send heart-beat timer in NFProfile 492 | # 493 | # o NF Instance Heartbeat (20 seconds) 494 | # NFs will send heart-beat timer (20 seconds) in NFProfile 495 | # NRF can change heart-beat timer in NFProfile 496 | # 497 | # nf_instance: 498 | # heartbeat: 20 499 | # 500 | # o Message Wait Duration (Default : 10,000 ms = 10 seconds) 501 | # 502 | # o Message Wait Duration (3000 ms) 503 | # message: 504 | # duration: 3000 505 | # 506 | # o Handover Wait Duration (Default : 300 ms) 507 | # Time to wait for SMF to send 508 | # PFCP Session Modification Request(Remove Indirect Tunnel) to the UPF 509 | # after sending Nsmf_PDUSession_UpdateSMContext Response(hoState:COMPLETED) 510 | # 511 | # o Handover Wait Duration (500ms) 512 | # handover: 513 | # duration: 500 514 | time: 515 | --------------------------------------------------------------------------------