├── oai-5g-charts ├── 0-mysql │ ├── .helmignore │ ├── templates │ │ ├── configurationFiles-configmap.yaml │ │ ├── serviceaccount.yaml │ │ ├── initializationFiles-configmap.yaml │ │ ├── servicemonitor.yaml │ │ ├── pvc.yaml │ │ ├── tests │ │ │ ├── test-configmap.yaml │ │ │ └── test.yaml │ │ ├── svc.yaml │ │ ├── _helpers.tpl │ │ ├── secrets.yaml │ │ ├── NOTES.txt │ │ └── deployment.yaml │ ├── Chart.yaml │ └── values.yaml ├── oai-5g-basic │ ├── charts │ │ ├── mysql-8.0.31.tgz │ │ ├── oai-amf-v1.5.0.tgz │ │ ├── oai-nrf-v1.5.0.tgz │ │ ├── oai-smf-v1.5.0.tgz │ │ ├── oai-udm-v1.5.0.tgz │ │ ├── oai-udr-v1.5.0.tgz │ │ ├── oai-upf-v1.5.0.tgz │ │ └── oai-ausf-v1.5.0.tgz │ ├── Chart.lock │ ├── Chart.yaml │ └── values.yaml ├── 1-nrf │ ├── templates │ │ ├── oai-nrf-serviceaccount.yaml │ │ ├── oai-nrf-configmap.yaml │ │ ├── oai-nrf-pvc.yaml │ │ ├── NOTES.txt │ │ ├── oai-nrf-service.yaml │ │ ├── _helpers.tpl │ │ └── oai-nrf-deployment.yaml │ ├── values.yaml │ └── Chart.yaml ├── 2-udr │ ├── templates │ │ ├── oai-udr-serviceaccount.yaml │ │ ├── oai-udr-configmap.yaml │ │ ├── NOTES.txt │ │ ├── oai-udr-pvc.yaml │ │ ├── oai-udr-service.yaml │ │ ├── _helpers.tpl │ │ └── oai-udr-deployment.yaml │ ├── Chart.yaml │ └── values.yaml ├── 3-udm │ ├── templates │ │ ├── oai-udm-serviceaccount.yaml │ │ ├── oai-udm-configmap.yaml │ │ ├── NOTES.txt │ │ ├── oai-udm-service.yaml │ │ ├── _helpers.tpl │ │ └── oai-udm-deployment.yaml │ ├── Chart.yaml │ └── values.yaml ├── 4-ausf │ ├── templates │ │ ├── oai-ausf-serviceaccount.yaml │ │ ├── oai-ausf-configmap.yaml │ │ ├── NOTES.txt │ │ ├── oai-ausf-service.yaml │ │ ├── _helpers.tpl │ │ └── oai-ausf-deployment.yaml │ ├── values.yaml │ └── Chart.yaml ├── 5-amf │ ├── templates │ │ ├── oai-amf-serviceaccount.yaml │ │ ├── NOTES.txt │ │ ├── oai-amf-multus.yaml │ │ ├── oai-amf-service.yaml │ │ ├── _helpers.tpl │ │ ├── oai-amf-deployment.yaml │ │ └── oai-amf-configmap.yaml │ ├── Chart.yaml │ └── values.yaml ├── 6-upf │ ├── templates │ │ ├── oai-upf-serviceaccount.yaml │ │ ├── NOTES.txt │ │ ├── oai-upf-multus.yaml │ │ ├── oai-upf-service.yaml │ │ ├── _helpers.tpl │ │ ├── oai-upf-deployment.yaml │ │ └── oai-upf-configmap.yaml │ ├── Chart.yaml │ └── values.yaml └── 7-smf │ ├── templates │ ├── oai-smf-serviceaccount.yaml │ ├── NOTES.txt │ ├── oai-smf-multus.yaml │ ├── oai-smf-service.yaml │ ├── _helpers.tpl │ ├── oai-smf-deployment.yaml │ └── oai-smf-configmap.yaml │ ├── Chart.yaml │ └── values.yaml ├── docs ├── images │ ├── nms_ui.png │ ├── dockerpsa.PNG │ ├── force_yes.PNG │ ├── master_UI.png │ ├── magma-test_UI.png │ ├── nms_ui_login.png │ ├── agw_S1AP_testing.PNG │ ├── apicontroller_ui.png │ ├── broken_packages.PNG │ ├── ovs_build_result.PNG │ ├── Magma_Architecture.jpg │ ├── NMS_First_Interface.png │ ├── agw_S1AP_testing_02.PNG │ ├── agw_S1AP_testing_03.PNG │ ├── magma-doc_add_AGW.PNG │ ├── nms_ui_login_access.png │ ├── ovs_deploy_result.PNG │ ├── Free5GC-Architecture.PNG │ ├── Free5GC-WebUI_Access.PNG │ ├── magma-doc_200_status.PNG │ ├── magma-doc_Network_Tab.PNG │ ├── magma-doc_agw_status.png │ ├── oai-5gcn_architecture.png │ ├── Longhorn-Main_Interface.PNG │ ├── NMS_Network_Management.png │ ├── ansible_playbook_error.PNG │ ├── installing_magma_task1.PNG │ ├── orc8r_helm_upload_github.png │ ├── ansible_playbook_solution.PNG │ ├── magma-doc_Interfaz_incial.PNG │ ├── magma-doc_network_created.png │ ├── Free5GC-WebUI_Add_Subscriber.PNG │ ├── Free5GC-WebUI_First_Interface.PNG │ ├── add_agw_to_orc8r_vagrant_01.PNG │ ├── add_agw_to_orc8r_vagrant_02.PNG │ ├── add_agw_to_orc8r_vagrant_03.PNG │ ├── add_agw_to_orc8r_vagrant_04.PNG │ ├── add_agw_to_orc8r_vagrant_05.PNG │ ├── add_agw_to_orc8r_vagrant_06.PNG │ ├── add_agw_to_orc8r_vagrant_07.PNG │ ├── feg_registration_APIInterface.PNG │ ├── feg_registration_NMSFeGView.PNG │ ├── feg_registration_tierCreation.PNG │ ├── installing_magma_task1_error.png │ ├── magma-doc_network_management.png │ ├── feg_registration_enableFeGView.PNG │ ├── oai-HelmChart-Deployment-Diagram.png │ ├── Free5GC-WebUI_Add_Subscriber_Values.PNG │ ├── feg_registration_NMSFeGViewSelection.PNG │ ├── feg_registration_fegNetworkCreation.PNG │ ├── virtualization_example_environment_base.png │ ├── validate_containerRegistry_uploading_push.PNG │ ├── feg_registration_FederationGatewayCreation.PNG │ └── feg_registration_fegNetworkCreationValidation.PNG └── icons │ ├── OSM_icon.png │ └── srsLTE_icon.png ├── diagrams └── srsLTE_and_Magma_v1.6_simulation.drawio.png ├── README.md └── tutorials ├── srsRAN └── README.md └── srsRAN-and-magma ├── README.md └── ran_configurations ├── enb.conf └── ue.conf /oai-5g-charts/0-mysql/.helmignore: -------------------------------------------------------------------------------- 1 | .git 2 | OWNERS -------------------------------------------------------------------------------- /docs/images/nms_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/nms_ui.png -------------------------------------------------------------------------------- /docs/icons/OSM_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/icons/OSM_icon.png -------------------------------------------------------------------------------- /docs/images/dockerpsa.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/dockerpsa.PNG -------------------------------------------------------------------------------- /docs/images/force_yes.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/force_yes.PNG -------------------------------------------------------------------------------- /docs/images/master_UI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/master_UI.png -------------------------------------------------------------------------------- /docs/icons/srsLTE_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/icons/srsLTE_icon.png -------------------------------------------------------------------------------- /docs/images/magma-test_UI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-test_UI.png -------------------------------------------------------------------------------- /docs/images/nms_ui_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/nms_ui_login.png -------------------------------------------------------------------------------- /docs/images/agw_S1AP_testing.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/agw_S1AP_testing.PNG -------------------------------------------------------------------------------- /docs/images/apicontroller_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/apicontroller_ui.png -------------------------------------------------------------------------------- /docs/images/broken_packages.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/broken_packages.PNG -------------------------------------------------------------------------------- /docs/images/ovs_build_result.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/ovs_build_result.PNG -------------------------------------------------------------------------------- /docs/images/Magma_Architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/Magma_Architecture.jpg -------------------------------------------------------------------------------- /docs/images/NMS_First_Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/NMS_First_Interface.png -------------------------------------------------------------------------------- /docs/images/agw_S1AP_testing_02.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/agw_S1AP_testing_02.PNG -------------------------------------------------------------------------------- /docs/images/agw_S1AP_testing_03.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/agw_S1AP_testing_03.PNG -------------------------------------------------------------------------------- /docs/images/magma-doc_add_AGW.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-doc_add_AGW.PNG -------------------------------------------------------------------------------- /docs/images/nms_ui_login_access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/nms_ui_login_access.png -------------------------------------------------------------------------------- /docs/images/ovs_deploy_result.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/ovs_deploy_result.PNG -------------------------------------------------------------------------------- /docs/images/Free5GC-Architecture.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/Free5GC-Architecture.PNG -------------------------------------------------------------------------------- /docs/images/Free5GC-WebUI_Access.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/Free5GC-WebUI_Access.PNG -------------------------------------------------------------------------------- /docs/images/magma-doc_200_status.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-doc_200_status.PNG -------------------------------------------------------------------------------- /docs/images/magma-doc_Network_Tab.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-doc_Network_Tab.PNG -------------------------------------------------------------------------------- /docs/images/magma-doc_agw_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-doc_agw_status.png -------------------------------------------------------------------------------- /docs/images/oai-5gcn_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/oai-5gcn_architecture.png -------------------------------------------------------------------------------- /docs/images/Longhorn-Main_Interface.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/Longhorn-Main_Interface.PNG -------------------------------------------------------------------------------- /docs/images/NMS_Network_Management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/NMS_Network_Management.png -------------------------------------------------------------------------------- /docs/images/ansible_playbook_error.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/ansible_playbook_error.PNG -------------------------------------------------------------------------------- /docs/images/installing_magma_task1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/installing_magma_task1.PNG -------------------------------------------------------------------------------- /docs/images/orc8r_helm_upload_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/orc8r_helm_upload_github.png -------------------------------------------------------------------------------- /docs/images/ansible_playbook_solution.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/ansible_playbook_solution.PNG -------------------------------------------------------------------------------- /docs/images/magma-doc_Interfaz_incial.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-doc_Interfaz_incial.PNG -------------------------------------------------------------------------------- /docs/images/magma-doc_network_created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-doc_network_created.png -------------------------------------------------------------------------------- /docs/images/Free5GC-WebUI_Add_Subscriber.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/Free5GC-WebUI_Add_Subscriber.PNG -------------------------------------------------------------------------------- /docs/images/Free5GC-WebUI_First_Interface.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/Free5GC-WebUI_First_Interface.PNG -------------------------------------------------------------------------------- /docs/images/add_agw_to_orc8r_vagrant_01.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/add_agw_to_orc8r_vagrant_01.PNG -------------------------------------------------------------------------------- /docs/images/add_agw_to_orc8r_vagrant_02.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/add_agw_to_orc8r_vagrant_02.PNG -------------------------------------------------------------------------------- /docs/images/add_agw_to_orc8r_vagrant_03.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/add_agw_to_orc8r_vagrant_03.PNG -------------------------------------------------------------------------------- /docs/images/add_agw_to_orc8r_vagrant_04.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/add_agw_to_orc8r_vagrant_04.PNG -------------------------------------------------------------------------------- /docs/images/add_agw_to_orc8r_vagrant_05.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/add_agw_to_orc8r_vagrant_05.PNG -------------------------------------------------------------------------------- /docs/images/add_agw_to_orc8r_vagrant_06.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/add_agw_to_orc8r_vagrant_06.PNG -------------------------------------------------------------------------------- /docs/images/add_agw_to_orc8r_vagrant_07.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/add_agw_to_orc8r_vagrant_07.PNG -------------------------------------------------------------------------------- /docs/images/feg_registration_APIInterface.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_APIInterface.PNG -------------------------------------------------------------------------------- /docs/images/feg_registration_NMSFeGView.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_NMSFeGView.PNG -------------------------------------------------------------------------------- /docs/images/feg_registration_tierCreation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_tierCreation.PNG -------------------------------------------------------------------------------- /docs/images/installing_magma_task1_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/installing_magma_task1_error.png -------------------------------------------------------------------------------- /docs/images/magma-doc_network_management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/magma-doc_network_management.png -------------------------------------------------------------------------------- /docs/images/feg_registration_enableFeGView.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_enableFeGView.PNG -------------------------------------------------------------------------------- /docs/images/oai-HelmChart-Deployment-Diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/oai-HelmChart-Deployment-Diagram.png -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/mysql-8.0.31.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/mysql-8.0.31.tgz -------------------------------------------------------------------------------- /diagrams/srsLTE_and_Magma_v1.6_simulation.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/diagrams/srsLTE_and_Magma_v1.6_simulation.drawio.png -------------------------------------------------------------------------------- /docs/images/Free5GC-WebUI_Add_Subscriber_Values.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/Free5GC-WebUI_Add_Subscriber_Values.PNG -------------------------------------------------------------------------------- /docs/images/feg_registration_NMSFeGViewSelection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_NMSFeGViewSelection.PNG -------------------------------------------------------------------------------- /docs/images/feg_registration_fegNetworkCreation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_fegNetworkCreation.PNG -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/oai-amf-v1.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/oai-amf-v1.5.0.tgz -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/oai-nrf-v1.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/oai-nrf-v1.5.0.tgz -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/oai-smf-v1.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/oai-smf-v1.5.0.tgz -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/oai-udm-v1.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/oai-udm-v1.5.0.tgz -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/oai-udr-v1.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/oai-udr-v1.5.0.tgz -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/oai-upf-v1.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/oai-upf-v1.5.0.tgz -------------------------------------------------------------------------------- /docs/images/virtualization_example_environment_base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/virtualization_example_environment_base.png -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/charts/oai-ausf-v1.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/oai-5g-charts/oai-5g-basic/charts/oai-ausf-v1.5.0.tgz -------------------------------------------------------------------------------- /docs/images/validate_containerRegistry_uploading_push.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/validate_containerRegistry_uploading_push.PNG -------------------------------------------------------------------------------- /docs/images/feg_registration_FederationGatewayCreation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_FederationGatewayCreation.PNG -------------------------------------------------------------------------------- /docs/images/feg_registration_fegNetworkCreationValidation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/caprivm/virtualization/HEAD/docs/images/feg_registration_fegNetworkCreationValidation.PNG -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Open Source Tool Guides for Telco! 2 | 3 | Go to [this Wiki](https://github.com/caprivm/virtualization/wiki) to get all information! 4 | 5 | ## Contact 6 | 7 | **caprivm** (jcaviedesv@unal.edu.co) -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/templates/oai-nrf-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.enabled}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ .Values.serviceAccount.name }} 6 | {{- end}} -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/templates/oai-udr-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.enabled}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ .Values.serviceAccount.name }} 6 | {{- end}} -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/templates/oai-udm-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.enabled}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ .Values.serviceAccount.name }} 6 | {{- end}} -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/templates/oai-ausf-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.enabled}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ .Values.serviceAccount.name }} 6 | {{- end}} -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/templates/oai-amf-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.enabled}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ .Values.serviceAccount.name }} 6 | {{- end}} -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/templates/oai-upf-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.enabled}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ .Values.serviceAccount.name }} 6 | {{- end}} -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/templates/oai-smf-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.enabled}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ .Values.serviceAccount.name }} 6 | {{- end}} -------------------------------------------------------------------------------- /tutorials/srsRAN/README.md: -------------------------------------------------------------------------------- 1 | ## Install srsRAN to simulate a eNB + UE in a single machine 2 | Get all the information related to the installation and simulation in the next video: 3 | 4 | https://youtu.be/yTZOPhK3_9Q -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/templates/oai-nrf-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Chart.Name }}-configmap 5 | data: 6 | {{- range $key, $val := .Values.nrfConfig }} 7 | {{ $key }}: {{ $val | quote }} 8 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/templates/oai-udr-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Chart.Name }}-configmap 5 | data: 6 | {{- range $key, $val := .Values.udrConfig }} 7 | {{ $key }}: {{ $val | quote }} 8 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/templates/oai-udm-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Chart.Name }}-configmap 5 | data: 6 | {{- range $key, $val := .Values.udmConfig }} 7 | {{ $key }}: {{ $val | quote }} 8 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/templates/oai-ausf-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Chart.Name }}-configmap 5 | data: 6 | {{- range $key, $val := .Values.ausfConfig }} 7 | {{ $key }}: {{ $val | quote }} 8 | {{- end }} 9 | -------------------------------------------------------------------------------- /tutorials/srsRAN-and-magma/README.md: -------------------------------------------------------------------------------- 1 | ## Connect the srsLTE with Magma 2 | To simulate the connection between srsLTE (UE + eNB), use the following YouTube video tutorial for support. 3 | 4 | [![srsLTE with Magma](../../diagrams/srsLTE_and_Magma_v1.6_simulation.drawio.png)](https://youtu.be/ve2jKymE-pI) 5 | -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application name by running these commands: 2 | export UDR_POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-udr.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application name by running these commands: 2 | export UDM_POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-udm.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application name by running these commands: 2 | export SMF_POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-smf.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application name by running these commands: 2 | export AUSF_POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-ausf.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application name by running these commands: 2 | export SPGWU_TINY_POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-spgwu-tiny.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/configurationFiles-configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.configurationFiles }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ template "mysql.fullname" . }}-configuration 6 | namespace: {{ .Release.Namespace }} 7 | data: 8 | {{- range $key, $val := .Values.configurationFiles }} 9 | {{ $key }}: |- 10 | {{ $val | indent 4}} 11 | {{- end }} 12 | {{- end -}} -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create }} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ template "mysql.serviceAccountName" . }} 6 | labels: 7 | app: {{ template "mysql.fullname" . }} 8 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 9 | release: "{{ .Release.Name }}" 10 | heritage: "{{ .Release.Service }}" 11 | {{- end }} 12 | -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: mysql 3 | version: 8.0.31 4 | appVersion: 8.0.31 5 | description: mysql chart used for oai5g core 6 | keywords: 7 | - mysql 8 | - database 9 | - sql 10 | home: https://www.mysql.com/ 11 | icon: https://www.mysql.com/common/logos/logo-mysql-170x115.png 12 | sources: 13 | - https://github.com/kubernetes/charts 14 | - https://github.com/docker-library/mysql 15 | deprecated: false 16 | engine: gotpl 17 | -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/templates/oai-nrf-pvc.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.persistence.enabled }} 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: {{ .Values.persistence.tcpdump.claimName }} 6 | spec: 7 | accessModes: 8 | {{ toYaml .Values.persistence.accessModes | indent 4 }} 9 | storageClassName: {{ .Values.persistence.storageClassName }} 10 | resources: 11 | requests: 12 | storage: {{ .Values.persistence.tcpdump.size }} 13 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/templates/oai-udr-pvc.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.persistence.enabled }} 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: {{ .Values.persistence.tcpdump.claimName }} 6 | spec: 7 | accessModes: 8 | {{ toYaml .Values.persistence.accessModes | indent 4 }} 9 | storageClassName: {{ .Values.persistence.storageClassName }} 10 | resources: 11 | requests: 12 | storage: {{ .Values.persistence.tcpdump.size }} 13 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/initializationFiles-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ template "mysql.fullname" . }}-initialization 5 | namespace: {{ .Release.Namespace }} 6 | data: 7 | {{- if eq .Values.oai5gdatabase "mini" }} 8 | {{ (.Files.Glob "initialization/oai_db-mini.sql").AsConfig | indent 2 | trim }} 9 | {{- else }} 10 | {{ (.Files.Glob "initialization/oai_db-basic.sql").AsConfig | indent 2 | trim }} 11 | {{- end }} 12 | -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application name by running these commands: 2 | export AMF_POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-amf.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 3 | export AMF_eth0_IP=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-amf.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[*].status.podIP}") -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application name and service bus ip-address by running these commands: 2 | export NRF_POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nrf.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 3 | export NRF_SBI=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nrf.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[*].status.podIP}") -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/templates/oai-udr-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Chart.Name }}-svc 5 | labels: 6 | {{- include "oai-udr.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | clusterIP: {{ .Values.service.clusterIP }} 10 | ports: 11 | - name: http1 12 | port: {{ .Values.udrConfig.sbiPortHttp1 }} 13 | targetPort: 80 14 | protocol: TCP 15 | - name: http2 16 | port: {{ .Values.udrConfig.sbiPortHttp2 }} 17 | targetPort: 8080 18 | protocol: TCP 19 | selector: 20 | {{- include "oai-udr.selectorLabels" . | nindent 4 }} -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/templates/oai-udm-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Chart.Name }}-svc 5 | labels: 6 | {{- include "oai-udm.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | clusterIP: {{ .Values.service.clusterIP }} 10 | ports: 11 | - name: http1 12 | port: {{ .Values.udmConfig.sbiPortHttp1 }} 13 | targetPort: 80 14 | protocol: TCP 15 | - name: http2 16 | port: {{ .Values.udmConfig.sbiPortHttp2 }} 17 | targetPort: 8080 18 | protocol: TCP 19 | selector: 20 | {{- include "oai-udm.selectorLabels" . | nindent 4 }} 21 | -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/templates/oai-ausf-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Chart.Name }}-svc 5 | labels: 6 | {{- include "oai-ausf.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | clusterIP: {{ .Values.service.clusterIP }} 10 | ports: 11 | - name: http1 12 | port: {{ .Values.ausfConfig.sbiPortHttp1 }} 13 | targetPort: 80 14 | protocol: TCP 15 | - name: http2 16 | port: {{ .Values.ausfConfig.sbiPortHttp2 }} 17 | targetPort: 8080 18 | protocol: TCP 19 | selector: 20 | {{- include "oai-ausf.selectorLabels" . | nindent 4 }} -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/templates/oai-nrf-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Chart.Name }}-svc 5 | labels: 6 | {{- include "oai-nrf.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | clusterIP: {{ .Values.service.clusterIP }} 10 | ports: 11 | - name: http1 12 | port: {{ .Values.nrfConfig.nrfInterfacePortForSBI }} 13 | targetPort: 80 14 | protocol: TCP 15 | - name: http2 16 | port: {{ .Values.nrfConfig.nrfInterfaceHttp2PortForSBI }} 17 | targetPort: 8080 18 | protocol: TCP 19 | selector: 20 | {{- include "oai-nrf.selectorLabels" . | nindent 4 }} -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/templates/oai-upf-multus.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.multus.create }} 2 | apiVersion: "k8s.cni.cncf.io/v1" 3 | kind: NetworkAttachmentDefinition 4 | metadata: 5 | name: {{ .Chart.Name }}-n3-net1 6 | spec: 7 | config: '{ 8 | "cniVersion": "0.3.1", 9 | "type": "macvlan", 10 | "master": {{- cat .Values.multus.hostInterface | nospace | quote }}, 11 | "mode": "bridge", 12 | "ipam": { 13 | "type": "static", 14 | "addresses": [ 15 | { 16 | "address": {{- cat .Values.multus.n3IpAddress "/" .Values.multus.n3Netmask | nospace | quote }} 17 | } 18 | ] 19 | } 20 | }' 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/templates/oai-amf-multus.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.multus.create }} 2 | apiVersion: "k8s.cni.cncf.io/v1" 3 | kind: NetworkAttachmentDefinition 4 | metadata: 5 | name: {{ .Chart.Name }}-n2-net1 6 | spec: 7 | config: '{ 8 | "cniVersion": "0.3.1", 9 | "type": "macvlan", 10 | "mode": "bridge", 11 | "master": {{- cat .Values.multus.hostInterface | nospace | quote }}, 12 | "ipam": { 13 | "type": "static", 14 | "addresses": [ 15 | { 16 | "address": {{- cat .Values.multus.n2IpAddress "/" .Values.multus.n2Netmask | nospace | quote }} 17 | } 18 | ] 19 | } 20 | }' 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/templates/oai-smf-multus.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.multus.create }} 2 | apiVersion: "k8s.cni.cncf.io/v1" 3 | kind: NetworkAttachmentDefinition 4 | metadata: 5 | name: {{ .Chart.Name }}-n4-net1 6 | spec: 7 | config: '{ 8 | "cniVersion": "0.3.1", 9 | "type": "macvlan", 10 | "master": {{- cat .Values.multus.hostInterface | nospace | quote }}, 11 | "mode": "bridge", 12 | "ipam": { 13 | "type": "static", 14 | "addresses": [ 15 | { 16 | "address": {{- cat .Values.multus.n4IpAddress "/" .Values.multus.n4Netmask | nospace | quote }}, 17 | "gateway": "{{ .Values.multus.n4Gateway }}" 18 | } 19 | ] 20 | } 21 | }' 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: mysql 3 | repository: file://../0-mysql 4 | version: 8.0.31 5 | - name: oai-nrf 6 | repository: file://../1-nrf 7 | version: v1.5.0 8 | - name: oai-udr 9 | repository: file://../2-udr 10 | version: v1.5.0 11 | - name: oai-udm 12 | repository: file://../3-udm 13 | version: v1.5.0 14 | - name: oai-ausf 15 | repository: file://../4-ausf 16 | version: v1.5.0 17 | - name: oai-amf 18 | repository: file://../5-amf 19 | version: v1.5.0 20 | - name: oai-smf 21 | repository: file://../7-smf 22 | version: v1.5.0 23 | - name: oai-upf 24 | repository: file://../6-upf 25 | version: v1.5.0 26 | digest: sha256:dcae6cd6ad450c51659286443a12b007fcab8860520bf6d62a0f7c037a89e241 27 | generated: "2023-02-13T03:33:01.336322919Z" 28 | -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/templates/oai-smf-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Chart.Name }}-svc 5 | labels: 6 | {{- include "oai-smf.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | clusterIP: {{ .Values.service.clusterIP }} 10 | selector: 11 | {{- include "oai-smf.selectorLabels" . | nindent 4 }} 12 | ports: 13 | {{- if .Values.multus.create }} 14 | - name: oai-smf 15 | port: {{ .Values.service.port }} 16 | targetPort: 8805 17 | protocol: UDP 18 | {{ end }} 19 | - name: http1 20 | port: {{ .Values.smfParameters.sbiPortHttp1 }} 21 | targetPort: 80 22 | protocol: TCP 23 | - name: http2 24 | port: {{ .Values.smfParameters.sbiPortHttp2 }} 25 | targetPort: 8080 26 | protocol: TCP -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/servicemonitor.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: ServiceMonitor 4 | metadata: 5 | name: {{ include "mysql.fullname" . }} 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: {{ template "mysql.fullname" . }} 9 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 10 | release: "{{ .Release.Name }}" 11 | heritage: "{{ .Release.Service }}" 12 | {{- if .Values.metrics.serviceMonitor.additionalLabels }} 13 | {{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }} 14 | {{- end }} 15 | spec: 16 | endpoints: 17 | - port: metrics 18 | interval: 30s 19 | namespaceSelector: 20 | matchNames: 21 | - {{ .Release.Namespace }} 22 | selector: 23 | matchLabels: 24 | app: {{ include "mysql.fullname" . }} 25 | release: {{ .Release.Name }} 26 | {{- end }} 27 | -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/pvc.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} 2 | kind: PersistentVolumeClaim 3 | apiVersion: v1 4 | metadata: 5 | name: {{ template "mysql.fullname" . }} 6 | namespace: {{ .Release.Namespace }} 7 | {{- with .Values.persistence.annotations }} 8 | annotations: 9 | {{ toYaml . | indent 4 }} 10 | {{- end }} 11 | labels: 12 | app: {{ template "mysql.fullname" . }} 13 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 14 | release: "{{ .Release.Name }}" 15 | heritage: "{{ .Release.Service }}" 16 | spec: 17 | accessModes: 18 | - {{ .Values.persistence.accessMode | quote }} 19 | resources: 20 | requests: 21 | storage: {{ .Values.persistence.size | quote }} 22 | {{- if .Values.persistence.storageClass }} 23 | {{- if (eq "-" .Values.persistence.storageClass) }} 24 | storageClassName: "" 25 | {{- else }} 26 | storageClassName: "{{ .Values.persistence.storageClass }}" 27 | {{- end }} 28 | {{- end }} 29 | {{- end }} 30 | -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/templates/oai-upf-service.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: {{ .Chart.Name }}-svc-ngu 6 | labels: 7 | {{- include "oai-spgwu-tiny.labels" . | nindent 4 }} 8 | spec: 9 | type: NodePort 10 | clusterIP: {{ .Values.service.nguClusterIp }} 11 | ports: 12 | - name: oai-spgwu-tiny 13 | port: {{ .Values.service.nguPort }} 14 | targetPort: 2152 15 | protocol: TCP 16 | nodePort: {{ .Values.service.nguNodePort }} 17 | selector: 18 | {{- include "oai-spgwu-tiny.selectorLabels" . | nindent 4 }} 19 | --- 20 | apiVersion: v1 21 | kind: Service 22 | metadata: 23 | name: {{ .Values.service.name }} 24 | labels: 25 | {{- include "oai-spgwu-tiny.labels" . | nindent 4 }} 26 | spec: 27 | type: {{ .Values.service.type }} 28 | clusterIP: {{ .Values.service.pfcpClusterIp }} 29 | ports: 30 | - name: pfcp 31 | port: {{ .Values.service.pfcpPort }} 32 | targetPort: 8805 33 | protocol: UDP 34 | selector: 35 | {{- include "oai-spgwu-tiny.selectorLabels" . | nindent 4 }} -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/tests/test-configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.testFramework.enabled }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ template "mysql.fullname" . }}-test 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: {{ template "mysql.fullname" . }} 9 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 10 | heritage: "{{ .Release.Service }}" 11 | release: "{{ .Release.Name }}" 12 | data: 13 | run.sh: |- 14 | {{- if .Values.ssl.enabled | and .Values.mysqlRootPassword }} 15 | @test "Testing SSL MySQL Connection" { 16 | mysql --host={{ template "mysql.fullname" . }} --port={{ .Values.service.port | default "3306" }} --ssl-cert=/ssl/server-cert.pem --ssl-key=ssl/server-key.pem -u root -p{{ .Values.mysqlRootPassword }} 17 | } 18 | {{- else if .Values.mysqlRootPassword }} 19 | @test "Testing MySQL Connection" { 20 | mysql --host={{ template "mysql.fullname" . }} --port={{ .Values.service.port | default "3306" }} -u root -p{{ .Values.mysqlRootPassword }} 21 | } 22 | {{- end }} 23 | {{- end }} 24 | -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/templates/oai-amf-service.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: {{ .Chart.Name }}-svc-ngap 6 | labels: 7 | {{- include "oai-amf.labels" . | nindent 4 }} 8 | spec: 9 | type: {{ .Values.service.ngap.type }} 10 | clusterIP: {{ .Values.service.ngap.clusterIP }} 11 | ports: 12 | - name: oai-amf 13 | port: {{ .Values.service.ngap.port }} 14 | targetPort: 38412 15 | protocol: SCTP 16 | nodePort: {{ .Values.service.ngap.nodePort }} 17 | selector: 18 | {{- include "oai-amf.selectorLabels" . | nindent 4 }} 19 | --- 20 | apiVersion: v1 21 | kind: Service 22 | metadata: 23 | name: {{ .Chart.Name }}-svc 24 | labels: 25 | {{- include "oai-amf.labels" . | nindent 4 }} 26 | spec: 27 | type: {{ .Values.service.type }} 28 | clusterIP: {{ .Values.service.clusterIP }} 29 | ports: 30 | - name: http1 31 | port: {{ .Values.amfParameters.sbiPortHttp1 }} 32 | targetPort: 80 33 | protocol: TCP 34 | - name: http2 35 | port: {{ .Values.amfParameters.sbiPortHttp2 }} 36 | targetPort: 8080 37 | protocol: TCP 38 | selector: 39 | {{- include "oai-amf.selectorLabels" . | nindent 4 }} -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "mysql.fullname" . }} 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: {{ template "mysql.fullname" . }} 8 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 9 | release: "{{ .Release.Name }}" 10 | heritage: "{{ .Release.Service }}" 11 | annotations: 12 | {{- if .Values.service.annotations }} 13 | {{ toYaml .Values.service.annotations | indent 4 }} 14 | {{- end }} 15 | {{- if and (.Values.metrics.enabled) (.Values.metrics.annotations) }} 16 | {{ toYaml .Values.metrics.annotations | indent 4 }} 17 | {{- end }} 18 | spec: 19 | type: {{ .Values.service.type }} 20 | {{- if (and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP))) }} 21 | loadBalancerIP: {{ .Values.service.loadBalancerIP }} 22 | {{- end }} 23 | ports: 24 | - name: mysql 25 | port: {{ .Values.service.port }} 26 | targetPort: mysql 27 | {{- if .Values.service.nodePort }} 28 | nodePort: {{ .Values.service.nodePort }} 29 | {{- end }} 30 | {{- if .Values.mysqlx.port.enabled }} 31 | - name: mysqlx 32 | port: 33060 33 | targetPort: mysqlx 34 | protocol: TCP 35 | {{- end }} 36 | {{- if .Values.metrics.enabled }} 37 | - name: metrics 38 | port: 9104 39 | targetPort: metrics 40 | {{- end }} 41 | selector: 42 | app: {{ template "mysql.fullname" . }} 43 | -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: oai-5g-basic 3 | type: application 4 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 5 | version: v1.5.0 6 | description: OAI 5G Release 16 Core Network 7 | 8 | appVersion: master-v1.5.0 9 | 10 | keywords: 11 | - 5GCN 12 | - AMF 13 | - SMF 14 | - NRF 15 | - UPF 16 | - UDM 17 | - UDR 18 | - AUSF 19 | 20 | maintainers: 21 | - name: OPENAIRINTERFACE 22 | email: contact@openairinterface.org 23 | 24 | dependencies: 25 | - condition: mysql.enabled 26 | name: mysql 27 | repository: "file://../0-mysql" 28 | version: 8.0.31 29 | - condition: oai-nrf.enabled 30 | name: oai-nrf 31 | repository: "file://../1-nrf" 32 | version: v1.5.0 33 | - condition: oai-udr.enabled 34 | name: oai-udr 35 | repository: "file://../2-udr" 36 | version: v1.5.0 37 | - condition: oai-udm.enabled 38 | name: oai-udm 39 | repository: "file://../3-udm" 40 | version: v1.5.0 41 | - condition: oai-ausf.enabled 42 | name: oai-ausf 43 | repository: "file://../4-ausf" 44 | version: v1.5.0 45 | - condition: oai-amf.enabled 46 | name: oai-amf 47 | repository: "file://../5-amf" 48 | version: v1.5.0 49 | - condition: oai-smf.enabled 50 | name: oai-smf 51 | repository: "file://../7-smf" 52 | version: v1.5.0 53 | - condition: oai-upf.enabled 54 | name: oai-upf 55 | repository: "file://../6-upf" 56 | version: v1.5.0 57 | 58 | -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "mysql.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "mysql.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- printf .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Generate chart secret name 29 | */}} 30 | {{- define "mysql.secretName" -}} 31 | {{ default (include "mysql.fullname" .) .Values.existingSecret }} 32 | {{- end -}} 33 | 34 | {{/* 35 | Create the name of the service account to use 36 | */}} 37 | {{- define "mysql.serviceAccountName" -}} 38 | {{- if .Values.serviceAccount.create -}} 39 | {{ default (include "mysql.fullname" .) .Values.serviceAccount.name }} 40 | {{- else -}} 41 | {{ default "default" .Values.serviceAccount.name }} 42 | {{- end -}} 43 | {{- end -}} 44 | -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/values.yaml: -------------------------------------------------------------------------------- 1 | replicas: 1 2 | 3 | imagePullSecrets: 4 | create: false 5 | pullSecrets: 6 | - name: "" 7 | 8 | start: 9 | tcpdump: false 10 | 11 | service: 12 | type: ClusterIP 13 | clusterIP: 10.233.19.104 14 | 15 | nrfImage: 16 | registry: docker.io 17 | repository: oaisoftwarealliance/oai-nrf 18 | tag: v1.5.0 19 | pullPolicy: IfNotPresent 20 | 21 | tcpdumpImage: 22 | registry: docker.io 23 | repository: corfr/tcpdump 24 | tag: latest 25 | pullPolicy: IfNotPresent 26 | 27 | nrfConfig: 28 | tz: "Europe/Paris" 29 | nrfApiVersion: "v1" 30 | nrfInterfaceHttp2PortForSBI: "8080" 31 | nrfInterfaceNameForSBI: "eth0" 32 | nrfInterfacePortForSBI: "80" 33 | instance: "0" 34 | pidDirectory: "/var/run" 35 | 36 | serviceAccount: 37 | enabled: true 38 | name: "oai-nrf-sa" 39 | 40 | podSecurityContext: 41 | runAsUser: 0 42 | runAsGroup: 0 43 | 44 | securityContext: 45 | privileged: false 46 | 47 | persistence: 48 | enabled: false 49 | accessModes: 50 | - ReadWriteOnce 51 | storageClassName: longhorn 52 | tcpdump: 53 | claimName: oai-nrf-tcpdump 54 | size: 1Gi 55 | 56 | resources: 57 | enabled: false 58 | limits: 59 | tcpdump: 60 | cpu: 100m 61 | memory: 128Mi 62 | nrf: 63 | cpu: 100m 64 | memory: 128Mi 65 | requests: 66 | tcpdump: 67 | cpu: 100m 68 | memory: 128Mi 69 | nrf: 70 | cpu: 100m 71 | memory: 128Mi 72 | 73 | readinessProbe: true 74 | livenessProbe: false 75 | terminationGracePeriodSeconds: 5 76 | nodeSelector: {} 77 | nodeName: 78 | -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/secrets.yaml: -------------------------------------------------------------------------------- 1 | {{- if not .Values.existingSecret }} 2 | {{- if or (not .Values.allowEmptyRootPassword) (or .Values.mysqlRootPassword .Values.mysqlPassword) }} 3 | apiVersion: v1 4 | kind: Secret 5 | metadata: 6 | name: {{ template "mysql.fullname" . }} 7 | namespace: {{ .Release.Namespace }} 8 | labels: 9 | app: {{ template "mysql.fullname" . }} 10 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 11 | release: "{{ .Release.Name }}" 12 | heritage: "{{ .Release.Service }}" 13 | type: Opaque 14 | data: 15 | {{ if .Values.mysqlRootPassword }} 16 | mysql-root-password: {{ .Values.mysqlRootPassword | b64enc | quote }} 17 | {{ else }} 18 | {{ if not .Values.allowEmptyRootPassword }} 19 | mysql-root-password: {{ randAlphaNum 10 | b64enc | quote }} 20 | {{ end }} 21 | {{ end }} 22 | {{ if .Values.mysqlPassword }} 23 | mysql-password: {{ .Values.mysqlPassword | b64enc | quote }} 24 | {{ else }} 25 | {{ if not .Values.allowEmptyRootPassword }} 26 | mysql-password: {{ randAlphaNum 10 | b64enc | quote }} 27 | {{ end }} 28 | {{ end }} 29 | {{ end }} 30 | {{- if .Values.ssl.enabled }} 31 | {{ if .Values.ssl.certificates }} 32 | {{- range .Values.ssl.certificates }} 33 | --- 34 | apiVersion: v1 35 | kind: Secret 36 | metadata: 37 | name: {{ .name }} 38 | labels: 39 | app: {{ template "mysql.fullname" $ }} 40 | chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}" 41 | release: "{{ $.Release.Name }}" 42 | heritage: "{{ $.Release.Service }}" 43 | type: Opaque 44 | data: 45 | ca.pem: {{ .ca | b64enc }} 46 | server-cert.pem: {{ .cert | b64enc }} 47 | server-key.pem: {{ .key | b64enc }} 48 | {{- end }} 49 | {{- end }} 50 | {{- end }} 51 | {{- end }} 52 | -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/Chart.yaml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Licensed to the OpenAirInterface (OAI) Software Alliance under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The OpenAirInterface Software Alliance licenses this file to You under 6 | # the OAI Public License, Version 1.1 (the "License"); you may not use this file 7 | # except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.openairinterface.org/?page_id=698 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | #------------------------------------------------------------------------------- 18 | # For more information about the OpenAirInterface (OAI) Software Alliance: 19 | # contact@openairinterface.org 20 | ################################################################################ 21 | apiVersion: v2 22 | name: oai-nrf 23 | description: A Helm chart for NRF network function 24 | 25 | type: application 26 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 27 | version: v1.5.0 28 | appVersion: v1.5.0 29 | 30 | keywords: 31 | - 5GCN 32 | - NRF 33 | 34 | sources: 35 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nrf 36 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed 37 | - https://openairinterface.org/ 38 | 39 | maintainers: 40 | - name: OPENAIRINTERFACE 41 | email: contact@openairinterface.org 42 | -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/values.yaml: -------------------------------------------------------------------------------- 1 | replicas: 1 2 | 3 | imagePullSecrets: 4 | create: false 5 | pullSecrets: 6 | - name: "" 7 | 8 | start: 9 | tcpdump: false 10 | 11 | service: 12 | type: ClusterIP 13 | clusterIP: 10.233.28.39 14 | 15 | ausfImage: 16 | registry: docker.io 17 | repository: oaisoftwarealliance/oai-ausf 18 | tag: v1.5.0 19 | pullPolicy: IfNotPresent 20 | 21 | tcpdumpImage: 22 | registry: docker.io 23 | repository: corfr/tcpdump 24 | tag: latest 25 | pullPolicy: IfNotPresent 26 | 27 | ausfConfig: 28 | ausfName: "oai-ausf" 29 | instanceId: "0" 30 | nrfApiVersion: "v1" 31 | nrfFqdn: "oai-nrf-svc" 32 | nrfIpAddress: "10.233.19.104" 33 | nrfPort: "80" 34 | pidDirectory: "/var/run" 35 | registerNrf: "yes" 36 | sbiIfName: "eth0" 37 | sbiPortHttp1: "80" 38 | sbiPortHttp2: "8080" 39 | tz: "Europe/Paris" 40 | udmFqdn: "oai-udm-svc" 41 | udmIpAddress: "10.233.58.64" 42 | udmPort: "80" 43 | udmVersionNb: "v1" 44 | useFqdnDns: "no" 45 | useHttp2: "no" 46 | 47 | serviceAccount: 48 | enabled: true 49 | name: "oai-ausf-sa" 50 | 51 | podSecurityContext: 52 | runAsUser: 0 53 | runAsGroup: 0 54 | 55 | securityContext: 56 | privileged: false 57 | 58 | persistence: 59 | enabled: false 60 | accessModes: 61 | - ReadWriteOnce 62 | storageClassName: longhorn 63 | tcpdump: 64 | claimName: oai-ausf-tcpdump 65 | size: 1Gi 66 | 67 | resources: 68 | enabled: false 69 | limits: 70 | tcpdump: 71 | cpu: 100m 72 | memory: 128Mi 73 | ausf: 74 | cpu: 100m 75 | memory: 128Mi 76 | requests: 77 | tcpdump: 78 | cpu: 100m 79 | memory: 128Mi 80 | ausf: 81 | cpu: 100m 82 | memory: 128Mi 83 | 84 | readinessProbe: true 85 | livenessProbe: false 86 | terminationGracePeriodSeconds: 5 87 | nodeSelector: {} 88 | nodeName: -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/Chart.yaml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Licensed to the OpenAirInterface (OAI) Software Alliance under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The OpenAirInterface Software Alliance licenses this file to You under 6 | # the OAI Public License, Version 1.1 (the "License"); you may not use this file 7 | # except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.openairinterface.org/?page_id=698 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | #------------------------------------------------------------------------------- 18 | # For more information about the OpenAirInterface (OAI) Software Alliance: 19 | # contact@openairinterface.org 20 | ################################################################################ 21 | apiVersion: v2 22 | name: oai-amf 23 | description: Helm chart for AMF network function 24 | 25 | type: application 26 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 27 | version: v1.5.0 28 | appVersion: v1.5.0 29 | 30 | keywords: 31 | - 5GCN 32 | - AMF 33 | 34 | sources: 35 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-amf 36 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed 37 | - https://openairinterface.org/ 38 | 39 | maintainers: 40 | - name: OPENAIRINTERFACE 41 | email: contact@openairinterface.org 42 | -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/Chart.yaml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Licensed to the OpenAirInterface (OAI) Software Alliance under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The OpenAirInterface Software Alliance licenses this file to You under 6 | # the OAI Public License, Version 1.1 (the "License"); you may not use this file 7 | # except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.openairinterface.org/?page_id=698 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | #------------------------------------------------------------------------------- 18 | # For more information about the OpenAirInterface (OAI) Software Alliance: 19 | # contact@openairinterface.org 20 | ################################################################################ 21 | apiVersion: v2 22 | name: oai-smf 23 | description: A Helm chart for SMF network function 24 | 25 | type: application 26 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 27 | version: v1.5.0 28 | appVersion: v1.5.0 29 | 30 | keywords: 31 | - 5G 32 | - SMF 33 | 34 | sources: 35 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-smf 36 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed 37 | - https://openairinterface.org/ 38 | 39 | maintainers: 40 | - name: OPENAIRINTERFACE 41 | email: contact@openairinterface.org 42 | -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/Chart.yaml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Licensed to the OpenAirInterface (OAI) Software Alliance under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The OpenAirInterface Software Alliance licenses this file to You under 6 | # the OAI Public License, Version 1.1 (the "License"); you may not use this file 7 | # except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.openairinterface.org/?page_id=698 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | #------------------------------------------------------------------------------- 18 | # For more information about the OpenAirInterface (OAI) Software Alliance: 19 | # contact@openairinterface.org 20 | ################################################################################ 21 | 22 | apiVersion: v2 23 | name: oai-udr 24 | description: Helm chart for UDR network function 25 | 26 | type: application 27 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 28 | version: v1.5.0 29 | appVersion: v1.5.0 30 | 31 | keywords: 32 | - 5GCN 33 | - UDR 34 | 35 | sources: 36 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-udr 37 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed 38 | - https://openairinterface.org/ 39 | 40 | maintainers: 41 | - name: OPENAIRINTERFACE 42 | email: contact@openairinterface.org 43 | -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/Chart.yaml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Licensed to the OpenAirInterface (OAI) Software Alliance under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The OpenAirInterface Software Alliance licenses this file to You under 6 | # the OAI Public License, Version 1.1 (the "License"); you may not use this file 7 | # except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.openairinterface.org/?page_id=698 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | #------------------------------------------------------------------------------- 18 | # For more information about the OpenAirInterface (OAI) Software Alliance: 19 | # contact@openairinterface.org 20 | ################################################################################ 21 | 22 | apiVersion: v2 23 | name: oai-udm 24 | description: Helm chart for UDM network function 25 | 26 | type: application 27 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 28 | version: v1.5.0 29 | appVersion: v1.5.0 30 | 31 | keywords: 32 | - 5GCN 33 | - UDM 34 | 35 | sources: 36 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-udm 37 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed 38 | - https://openairinterface.org/ 39 | 40 | maintainers: 41 | - name: OPENAIRINTERFACE 42 | email: contact@openairinterface.org 43 | -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/Chart.yaml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Licensed to the OpenAirInterface (OAI) Software Alliance under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The OpenAirInterface Software Alliance licenses this file to You under 6 | # the OAI Public License, Version 1.1 (the "License"); you may not use this file 7 | # except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.openairinterface.org/?page_id=698 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | #------------------------------------------------------------------------------- 18 | # For more information about the OpenAirInterface (OAI) Software Alliance: 19 | # contact@openairinterface.org 20 | ################################################################################ 21 | apiVersion: v2 22 | name: oai-ausf 23 | description: Helm chart for AUSF network function 24 | 25 | type: application 26 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 27 | version: v1.5.0 28 | appVersion: v1.5.0 29 | 30 | keywords: 31 | - 5GCN 32 | - AUSF 33 | 34 | sources: 35 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-ausf 36 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed 37 | - https://openairinterface.org/ 38 | 39 | maintainers: 40 | - name: OPENAIRINTERFACE 41 | email: contact@openairinterface.org 42 | -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/values.yaml: -------------------------------------------------------------------------------- 1 | replicas: 1 2 | 3 | imagePullSecrets: 4 | create: false 5 | pullSecrets: 6 | - name: "" 7 | 8 | start: 9 | tcpdump: false 10 | 11 | service: 12 | type: ClusterIP 13 | clusterIP: 10.233.58.64 14 | 15 | udmImage: 16 | registry: docker.io 17 | repository: oaisoftwarealliance/oai-udm 18 | tag: v1.5.0 19 | pullPolicy: IfNotPresent 20 | 21 | tcpdumpImage: 22 | registry: docker.io 23 | repository: corfr/tcpdump 24 | tag: latest 25 | pullPolicy: IfNotPresent 26 | 27 | udmConfig: 28 | instance: "0" 29 | nrfRegistration: "yes" 30 | nrfApiVersionNb: "v1" 31 | nrfFqdn: "oai-nrf-svc" 32 | nrfIpAddress: "10.233.19.104" 33 | nrfPort: "80" 34 | pidDirectory: "/var/run" 35 | sbiIfName: "eth0" 36 | sbiPortHttp1: "80" 37 | sbiPortHttp2: "8080" 38 | tz: "Europe/Paris" 39 | udmApiVersionNb: "v1" 40 | udmName: "oai-udm" 41 | udrApiVersionNb: "v1" 42 | udrFqdn: "oai-udr-svc" 43 | udrIpAddress: "10.233.51.216" 44 | udrPort: "80" 45 | useFqdnDns: "no" 46 | useHttp2: "no" 47 | 48 | serviceAccount: 49 | enabled: true 50 | name: "oai-udm-sa" 51 | 52 | podSecurityContext: 53 | runAsUser: 0 54 | runAsGroup: 0 55 | 56 | securityContext: 57 | privileged: false 58 | 59 | persistence: 60 | enabled: false 61 | accessModes: 62 | - ReadWriteOnce 63 | storageClassName: longhorn 64 | tcpdump: 65 | claimName: oai-udm-tcpdump 66 | size: 1Gi 67 | 68 | resources: 69 | enabled: false 70 | limits: 71 | tcpdump: 72 | cpu: 100m 73 | memory: 128Mi 74 | udm: 75 | cpu: 100m 76 | memory: 128Mi 77 | requests: 78 | tcpdump: 79 | cpu: 100m 80 | memory: 128Mi 81 | udm: 82 | cpu: 100m 83 | memory: 128Mi 84 | 85 | readinessProbe: false 86 | livenessProbe: false 87 | terminationGracePeriodSeconds: 5 88 | nodeSelector: {} 89 | nodeName: -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/values.yaml: -------------------------------------------------------------------------------- 1 | replicas: 1 2 | 3 | imagePullSecrets: 4 | create: false 5 | pullSecrets: 6 | - name: "" 7 | 8 | start: 9 | tcpdump: false 10 | 11 | service: 12 | type: ClusterIP 13 | clusterIP: 10.233.51.216 14 | 15 | udrImage: 16 | registry: docker.io 17 | repository: oaisoftwarealliance/oai-udr 18 | tag: v1.5.0 19 | pullPolicy: IfNotPresent 20 | 21 | tcpdumpImage: 22 | registry: docker.io 23 | repository: corfr/tcpdump 24 | version: latest 25 | pullPolicy: IfNotPresent 26 | 27 | udrConfig: 28 | instance: "0" 29 | mySqlDb: "oai_db" 30 | mySqlPass: "linux" 31 | mySqlServer: "mysql" 32 | mySqlUser: "root" 33 | waitMysql: "120" 34 | dbConnectionTimeout: "300" 35 | nrfApiVersion: "v1" 36 | nrfFqdn: "oai-nrf-svc" 37 | nrfIpv4Address: "10.233.19.104" 38 | nrfPort: "80" 39 | pidDirectory: "/var/run" 40 | registerNrf: "yes" 41 | sbiIfName: "eth0" 42 | sbiPortHttp1: "80" 43 | sbiPortHttp2: "8080" 44 | tz: "Europe/Paris" 45 | udrApiVersion: "v1" 46 | udrName: "oai-udr" 47 | useFqdnDns: "no" 48 | usehttp2: "no" 49 | 50 | serviceAccount: 51 | enabled: true 52 | name: "oai-udr-sa" 53 | 54 | podSecurityContext: 55 | runAsUser: 0 56 | runAsGroup: 0 57 | 58 | securityContext: 59 | privileged: false 60 | 61 | persistence: 62 | enabled: false 63 | accessModes: 64 | - ReadWriteOnce 65 | storageClassName: longhorn 66 | tcpdump: 67 | claimName: oai-udr-tcpdump 68 | size: 1Gi 69 | 70 | resources: 71 | enabled: false 72 | limits: 73 | tcpdump: 74 | cpu: 100m 75 | memory: 128Mi 76 | udr: 77 | cpu: 100m 78 | memory: 128Mi 79 | requests: 80 | tcpdump: 81 | cpu: 100m 82 | memory: 128Mi 83 | udr: 84 | cpu: 100m 85 | memory: 128Mi 86 | 87 | readinessProbe: true 88 | livenessProbe: false 89 | terminationGracePeriodSeconds: 5 90 | nodeSelector: {} 91 | nodeName: -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/Chart.yaml: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Licensed to the OpenAirInterface (OAI) Software Alliance under one or more 3 | # contributor license agreements. See the NOTICE file distributed with 4 | # this work for additional information regarding copyright ownership. 5 | # The OpenAirInterface Software Alliance licenses this file to You under 6 | # the OAI Public License, Version 1.1 (the "License"); you may not use this file 7 | # except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.openairinterface.org/?page_id=698 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | #------------------------------------------------------------------------------- 18 | # For more information about the OpenAirInterface (OAI) Software Alliance: 19 | # contact@openairinterface.org 20 | ################################################################################ 21 | apiVersion: v2 22 | name: oai-spgwu-tiny 23 | description: A Helm chart for UPF/SPGWU TINY as network function 24 | 25 | type: application 26 | icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png 27 | version: v1.5.0 28 | appVersion: v1.5.0 29 | 30 | keywords: 31 | - EPC 32 | - 4G 33 | - 5G 34 | - SPGW-U 35 | - UPF 36 | 37 | sources: 38 | - https://github.com/OPENAIRINTERFACE/openair-spgwu-tiny 39 | - https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed 40 | - https://openairinterface.org/ 41 | 42 | maintainers: 43 | - name: OPENAIRINTERFACE 44 | email: contact@openairinterface.org 45 | -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/tests/test.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.testFramework.enabled }} 2 | apiVersion: v1 3 | kind: Pod 4 | metadata: 5 | name: {{ template "mysql.fullname" . }}-test 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: {{ template "mysql.fullname" . }} 9 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 10 | heritage: "{{ .Release.Service }}" 11 | release: "{{ .Release.Name }}" 12 | annotations: 13 | "helm.sh/hook": test-success 14 | spec: 15 | {{- if .Values.testFramework.securityContext }} 16 | securityContext: {{ toYaml .Values.testFramework.securityContext | nindent 4 }} 17 | {{- end }} 18 | {{- if .Values.imagePullSecrets }} 19 | imagePullSecrets: 20 | {{- range .Values.imagePullSecrets }} 21 | - name: {{ . }} 22 | {{- end}} 23 | {{- end }} 24 | {{- with .Values.nodeSelector }} 25 | nodeSelector: 26 | {{ toYaml . | indent 4 }} 27 | {{- end }} 28 | {{- with .Values.affinity }} 29 | affinity: 30 | {{ toYaml . | indent 4 }} 31 | {{- end }} 32 | {{- with .Values.tolerations }} 33 | tolerations: 34 | {{ toYaml . | indent 4 }} 35 | {{- end }} 36 | containers: 37 | - name: {{ .Release.Name }}-test 38 | image: "{{ .Values.testFramework.image }}:{{ .Values.testFramework.tag }}" 39 | imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}" 40 | command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"] 41 | volumeMounts: 42 | - mountPath: /tests 43 | name: tests 44 | readOnly: true 45 | {{- if .Values.ssl.enabled }} 46 | - name: certificates 47 | mountPath: /ssl 48 | {{- end }} 49 | volumes: 50 | - name: tests 51 | configMap: 52 | name: {{ template "mysql.fullname" . }}-test 53 | {{- if .Values.ssl.enabled }} 54 | - name: certificates 55 | secret: 56 | secretName: {{ .Values.ssl.secret }} 57 | {{- end }} 58 | restartPolicy: Never 59 | {{- end }} 60 | -------------------------------------------------------------------------------- /oai-5g-charts/oai-5g-basic/values.yaml: -------------------------------------------------------------------------------- 1 | mysql: 2 | enabled: true 3 | weight: 0 4 | imagePullPolicy: IfNotPresent 5 | oai5gdatabase: basic 6 | imagePullSecrets: 7 | - name: regcred 8 | persistence: 9 | enabled: false 10 | 11 | oai-nrf: 12 | enabled: true 13 | weight: 0 14 | start: 15 | tcpdump: false 16 | service: 17 | type: ClusterIP 18 | clusterIP: 10.233.19.104 19 | nrfImage: 20 | registry: docker.io 21 | repository: oaisoftwarealliance/oai-nrf 22 | tag: v1.5.0 23 | pullPolicy: IfNotPresent 24 | nrfConfig: 25 | tz: "Europe/Paris" 26 | nrfApiVersion: "v1" 27 | nrfInterfaceHttp2PortForSBI: "8080" 28 | nrfInterfaceNameForSBI: "eth0" 29 | nrfInterfacePortForSBI: "80" 30 | instance: "0" 31 | pidDirectory: "/var/run" 32 | 33 | oai-udr: 34 | enabled: true 35 | weight: 1 36 | start: 37 | tcpdump: false 38 | service: 39 | type: ClusterIP 40 | clusterIP: 10.233.51.216 41 | nrfImage: 42 | registry: docker.io 43 | repository: oaisoftwarealliance/oai-udr 44 | tag: v1.5.0 45 | pullPolicy: IfNotPresent 46 | udrConfig: 47 | instance: "0" 48 | mySqlDb: "oai_db" 49 | mySqlPass: "linux" 50 | mySqlServer: "mysql" 51 | mySqlUser: "root" 52 | waitMysql: "120" 53 | dbConnectionTimeout: "300" 54 | nrfApiVersion: "v1" 55 | nrfFqdn: "oai-nrf-svc" 56 | nrfPort: "80" 57 | pidDirectory: "/var/run" 58 | registerNrf: "yes" 59 | sbiIfName: "eth0" 60 | sbiPortHttp1: "80" 61 | sbiPortHttp2: "8080" 62 | tz: "Europe/Paris" 63 | udrApiVersion: "v1" 64 | udrName: "oai-udr" 65 | useFqdnDns: "no" 66 | usehttp2: "no" 67 | 68 | oai-udm: 69 | enabled: true 70 | weight: 2 71 | 72 | oai-ausf: 73 | enabled: true 74 | weight: 3 75 | 76 | oai-amf: 77 | enabled: true 78 | weight: 4 79 | multus: 80 | create: false 81 | 82 | oai-upf: 83 | enabled: true 84 | weight: 5 85 | multus: 86 | create: false 87 | 88 | oai-smf: 89 | enabled: true 90 | weight: 6 91 | multus: 92 | create: false 93 | -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "oai-nrf.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "oai-nrf.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "oai-nrf.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "oai-nrf.labels" -}} 38 | helm.sh/chart: {{ include "oai-nrf.chart" . }} 39 | {{ include "oai-nrf.selectorLabels" . }} 40 | {{- if .Chart.AppVersion }} 41 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 42 | {{- end }} 43 | app.kubernetes.io/managed-by: {{ .Release.Service }} 44 | {{- end -}} 45 | 46 | {{/* 47 | Selector labels 48 | */}} 49 | {{- define "oai-nrf.selectorLabels" -}} 50 | app.kubernetes.io/name: {{ include "oai-nrf.name" . }} 51 | app.kubernetes.io/instance: {{ .Release.Name }} 52 | {{- end -}} 53 | 54 | {{/* 55 | Create the name of the service account to use 56 | */}} 57 | {{- define "oai-nrf.serviceAccountName" -}} 58 | {{- if .Values.serviceAccount.create -}} 59 | {{ default (include "oai-nrf.fullname" .) .Values.serviceAccount.name }} 60 | {{- else -}} 61 | {{ default "default" .Values.serviceAccount.name }} 62 | {{- end -}} 63 | {{- end -}} -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "oai-udr.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "oai-udr.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "oai-udr.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "oai-udr.labels" -}} 38 | helm.sh/chart: {{ include "oai-udr.chart" . }} 39 | {{ include "oai-udr.selectorLabels" . }} 40 | {{- if .Chart.AppVersion }} 41 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 42 | {{- end }} 43 | app.kubernetes.io/managed-by: {{ .Release.Service }} 44 | {{- end -}} 45 | 46 | {{/* 47 | Selector labels 48 | */}} 49 | {{- define "oai-udr.selectorLabels" -}} 50 | app.kubernetes.io/name: {{ include "oai-udr.name" . }} 51 | app.kubernetes.io/instance: {{ .Release.Name }} 52 | {{- end -}} 53 | 54 | {{/* 55 | Create the name of the service account to use 56 | */}} 57 | {{- define "oai-udr.serviceAccountName" -}} 58 | {{- if .Values.serviceAccount.create -}} 59 | {{ default (include "oai-udr.fullname" .) .Values.serviceAccount.name }} 60 | {{- else -}} 61 | {{ default "default" .Values.serviceAccount.name }} 62 | {{- end -}} 63 | {{- end -}} -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "oai-udm.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "oai-udm.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "oai-udm.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "oai-udm.labels" -}} 38 | helm.sh/chart: {{ include "oai-udm.chart" . }} 39 | {{ include "oai-udm.selectorLabels" . }} 40 | {{- if .Chart.AppVersion }} 41 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 42 | {{- end }} 43 | app.kubernetes.io/managed-by: {{ .Release.Service }} 44 | {{- end -}} 45 | 46 | {{/* 47 | Selector labels 48 | */}} 49 | {{- define "oai-udm.selectorLabels" -}} 50 | app.kubernetes.io/name: {{ include "oai-udm.name" . }} 51 | app.kubernetes.io/instance: {{ .Release.Name }} 52 | {{- end -}} 53 | 54 | {{/* 55 | Create the name of the service account to use 56 | */}} 57 | {{- define "oai-udm.serviceAccountName" -}} 58 | {{- if .Values.serviceAccount.create -}} 59 | {{ default (include "oai-udm.fullname" .) .Values.serviceAccount.name }} 60 | {{- else -}} 61 | {{ default "default" .Values.serviceAccount.name }} 62 | {{- end -}} 63 | {{- end -}} -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "oai-amf.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "oai-amf.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "oai-amf.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "oai-amf.labels" -}} 38 | helm.sh/chart: {{ include "oai-amf.chart" . }} 39 | {{ include "oai-amf.selectorLabels" . }} 40 | {{- if .Chart.AppVersion }} 41 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 42 | {{- end }} 43 | app.kubernetes.io/managed-by: {{ .Release.Service }} 44 | {{- end -}} 45 | 46 | {{/* 47 | Selector labels 48 | */}} 49 | {{- define "oai-amf.selectorLabels" -}} 50 | app.kubernetes.io/name: {{ include "oai-amf.name" . }} 51 | app.kubernetes.io/instance: {{ .Release.Name }} 52 | {{- end -}} 53 | 54 | {{/* 55 | Create the name of the service account to use 56 | */}} 57 | {{- define "oai-amf.serviceAccountName" -}} 58 | {{- if .Values.serviceAccount.create -}} 59 | {{ default (include "oai-amf.fullname" .) .Values.serviceAccount.name }} 60 | {{- else -}} 61 | {{ default "default" .Values.serviceAccount.name }} 62 | {{- end -}} 63 | {{- end -}} -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "oai-smf.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "oai-smf.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "oai-smf.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "oai-smf.labels" -}} 38 | helm.sh/chart: {{ include "oai-smf.chart" . }} 39 | {{ include "oai-smf.selectorLabels" . }} 40 | {{- if .Chart.AppVersion }} 41 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 42 | {{- end }} 43 | app.kubernetes.io/managed-by: {{ .Release.Service }} 44 | {{- end -}} 45 | 46 | {{/* 47 | Selector labels 48 | */}} 49 | {{- define "oai-smf.selectorLabels" -}} 50 | app.kubernetes.io/name: {{ include "oai-smf.name" . }} 51 | app.kubernetes.io/instance: {{ .Release.Name }} 52 | {{- end -}} 53 | 54 | {{/* 55 | Create the name of the service account to use 56 | */}} 57 | {{- define "oai-smf.serviceAccountName" -}} 58 | {{- if .Values.serviceAccount.create -}} 59 | {{ default (include "oai-smf.fullname" .) .Values.serviceAccount.name }} 60 | {{- else -}} 61 | {{ default "default" .Values.serviceAccount.name }} 62 | {{- end -}} 63 | {{- end -}} 64 | -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "oai-ausf.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "oai-ausf.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "oai-ausf.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "oai-ausf.labels" -}} 38 | helm.sh/chart: {{ include "oai-ausf.chart" . }} 39 | {{ include "oai-ausf.selectorLabels" . }} 40 | {{- if .Chart.AppVersion }} 41 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 42 | {{- end }} 43 | app.kubernetes.io/managed-by: {{ .Release.Service }} 44 | {{- end -}} 45 | 46 | {{/* 47 | Selector labels 48 | */}} 49 | {{- define "oai-ausf.selectorLabels" -}} 50 | app.kubernetes.io/name: {{ include "oai-ausf.name" . }} 51 | app.kubernetes.io/instance: {{ .Release.Name }} 52 | {{- end -}} 53 | 54 | {{/* 55 | Create the name of the service account to use 56 | */}} 57 | {{- define "oai-ausf.serviceAccountName" -}} 58 | {{- if .Values.serviceAccount.create -}} 59 | {{ default (include "oai-ausf.fullname" .) .Values.serviceAccount.name }} 60 | {{- else -}} 61 | {{ default "default" .Values.serviceAccount.name }} 62 | {{- end -}} 63 | {{- end -}} -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "oai-spgwu-tiny.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "oai-spgwu-tiny.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "oai-spgwu-tiny.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "oai-spgwu-tiny.labels" -}} 38 | helm.sh/chart: {{ include "oai-spgwu-tiny.chart" . }} 39 | {{ include "oai-spgwu-tiny.selectorLabels" . }} 40 | {{- if .Chart.AppVersion }} 41 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 42 | {{- end }} 43 | app.kubernetes.io/managed-by: {{ .Release.Service }} 44 | {{- end -}} 45 | 46 | {{/* 47 | Selector labels 48 | */}} 49 | {{- define "oai-spgwu-tiny.selectorLabels" -}} 50 | app.kubernetes.io/name: {{ include "oai-spgwu-tiny.name" . }} 51 | app.kubernetes.io/instance: {{ .Release.Name }} 52 | {{- end -}} 53 | 54 | {{/* 55 | Create the name of the service account to use 56 | */}} 57 | {{- define "oai-spgwu-tiny.serviceAccountName" -}} 58 | {{- if .Values.serviceAccount.create -}} 59 | {{ default (include "oai-spgwu-tiny.fullname" .) .Values.serviceAccount.name }} 60 | {{- else -}} 61 | {{ default "default" .Values.serviceAccount.name }} 62 | {{- end -}} 63 | {{- end -}} -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | MySQL can be accessed via port 3306 on the following DNS name from within your cluster: 2 | {{ template "mysql.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local 3 | 4 | {{- if .Values.mysqlx.port.enabled }} 5 | Connection to the X protocol of MySQL can be done via 33060 on the following DNS name from within your cluster: 6 | {{ template "mysql.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local 7 | {{- end }} 8 | 9 | {{- if .Values.existingSecret }} 10 | If you have not already created the mysql password secret: 11 | 12 | kubectl create secret generic {{ .Values.existingSecret }} --namespace {{ .Release.Namespace }} --from-file=./mysql-root-password --from-file=./mysql-password 13 | {{ else }} 14 | 15 | To get your root password run: 16 | 17 | MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo) 18 | {{- end }} 19 | 20 | To connect to your database: 21 | 22 | 1. Run an Ubuntu pod that you can use as a client: 23 | 24 | kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il 25 | 26 | 2. Install the mysql client: 27 | 28 | $ apt-get update && apt-get install mysql-client -y 29 | 30 | 3. Connect using the mysql cli, then provide your password: 31 | $ mysql -h {{ template "mysql.fullname" . }} -p 32 | 33 | To connect to your database directly from outside the K8s cluster: 34 | {{- if contains "NodePort" .Values.service.type }} 35 | MYSQL_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath='{.items[0].status.addresses[0].address}') 36 | MYSQL_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath='{.spec.ports[0].nodePort}') 37 | 38 | {{- else if contains "ClusterIP" .Values.service.type }} 39 | MYSQL_HOST=127.0.0.1 40 | MYSQL_PORT={{ .Values.service.port }} 41 | 42 | # Execute the following command to route the connection: 43 | kubectl port-forward svc/{{ template "mysql.fullname" . }} {{ .Values.service.port }} 44 | 45 | {{- end }} 46 | 47 | mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD} 48 | 49 | -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/values.yaml: -------------------------------------------------------------------------------- 1 | multus: 2 | create: false 3 | hostInterface: "eno2.100" 4 | n3IpAddress: "172.21.11.100" 5 | n3Netmask: "22" 6 | n6Gateway: "172.21.11.254" 7 | 8 | replicas: 1 9 | 10 | imagePullSecrets: 11 | create: false 12 | pullSecrets: 13 | - name: "" 14 | 15 | start: 16 | tcpdump: false 17 | upf: true 18 | 19 | service: 20 | name: oai-spgwu-tiny-svc 21 | type: ClusterIP 22 | nguClusterIp: 10.233.45.210 23 | nguPort: 2152 24 | nguNodePort: 32152 25 | pfcpClusterIp: 10.233.45.211 26 | pfcpPort: 8805 27 | 28 | upfImage: 29 | registry: docker.io 30 | repository: oaisoftwarealliance/oai-spgwu-tiny 31 | tag: v1.5.0 32 | pullPolicy: IfNotPresent 33 | 34 | tcpdumpImage: 35 | registry: docker.io 36 | repository: corfr/tcpdump 37 | tag: latest 38 | pullPolicy: IfNotPresent 39 | 40 | upfConfig: 41 | upfName: "oai-spgwu-tiny" 42 | tz: "Europe/Paris" 43 | instance: "0" 44 | pidDirectory: "/var/run" 45 | 46 | upfParameters: 47 | byPassUlPfcpRules: "no" 48 | dnn: "oai" 49 | ueNatOption: "yes" 50 | ueIpRange: "12.1.1.0/24" 51 | ueIpRangeNatRules: "12.2.1.0/24" 52 | interfaceNameForN3: "eth0" 53 | interfaceNameForN4: "eth0" 54 | interfaceNameForN6: "eth0" 55 | threadsN3Priority: 98 56 | threadsN4Priority: 88 57 | threadsN6Priority: 99 58 | threadsN3UL: 1 59 | threadsN4UL: 1 60 | threadsN6UL: 1 61 | 62 | upfConnections: 63 | useFqdnDNS: "no" 64 | useHttp2: "no" 65 | smf: 66 | ip: "10.233.42.105" 67 | fqdn: "oai-smf-svc" 68 | nrf: 69 | registration: "yes" 70 | ip: "10.233.19.104" 71 | httpVersion: 1 72 | apiVersion: v1 73 | port: "80" 74 | fqdn: "oai-nrf-svc" 75 | upf: 76 | nssaiSst: 1 77 | nssaiSd: "0x1" 78 | 79 | serviceAccount: 80 | enabled: true 81 | name: "oai-spgwu-tiny" 82 | 83 | podSecurityContext: 84 | runAsUser: 0 85 | runAsGroup: 0 86 | 87 | securityContext: 88 | privileged: true 89 | 90 | persistence: 91 | enabled: false 92 | accessModes: 93 | - ReadWriteOnce 94 | storageClassName: longhorn 95 | tcpdump: 96 | claimName: oai-spgwu-tiny-tcpdump 97 | size: 1Gi 98 | 99 | resources: 100 | enabled: false 101 | limits: 102 | tcpdump: 103 | cpu: 100m 104 | memory: 128Mi 105 | upf: 106 | cpu: 100m 107 | memory: 128Mi 108 | requests: 109 | tcpdump: 110 | cpu: 100m 111 | memory: 128Mi 112 | upf: 113 | cpu: 100m 114 | memory: 128Mi 115 | 116 | readinessProbe: true 117 | livenessProbe: false 118 | terminationGracePeriodSeconds: 5 119 | nodeSelector: {} 120 | nodeName: -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/values.yaml: -------------------------------------------------------------------------------- 1 | multus: 2 | create: false 3 | hostInterface: "eno2.100" 4 | n2IpAddress: "172.21.11.100" 5 | n2Netmask: "22" 6 | n2Gateway: "172.21.11.254" 7 | 8 | replicas: 1 9 | 10 | imagePullSecrets: 11 | create: false 12 | pullSecrets: 13 | - name: "" 14 | 15 | start: 16 | tcpdump: false 17 | amf: true 18 | 19 | service: 20 | type: ClusterIP 21 | clusterIP: 10.233.10.242 22 | ngap: 23 | type: "NodePort" 24 | clusterIP: 10.233.35.154 25 | port: 38412 26 | nodePort: 30412 27 | 28 | amfImage: 29 | registry: docker.io 30 | repository: oaisoftwarealliance/oai-amf 31 | tag: v1.5.0 32 | pullPolicy: IfNotPresent 33 | 34 | tcpdumpImage: 35 | registry: docker.io 36 | repository: corfr/tcpdump 37 | tag: latest 38 | pullPolicy: IfNotPresent 39 | 40 | amfConfig: 41 | amfName: "oai-amf" 42 | tz: "Europe/Paris" 43 | instance: "0" 44 | pidDirectory: "/var/run" 45 | operatorKey: "C42449363BBAD02B66D16BC975D77CC1" 46 | 47 | amfParameters: 48 | mcc: "001" 49 | mnc: "01" 50 | tac: "0x0001" 51 | regionId: 128 52 | amfSetId: 1 53 | amfPointer: 54 | guami: 1 55 | guamiList: 0 56 | sst0: 1 57 | sd0: "0x1" 58 | interfaceNameforNGAP: "eth0" 59 | interfaceNameforSBI: "eth0" 60 | sbiPortHttp1: 80 61 | sbiPortHttp2: 8080 62 | inteAlgoList: '[ "NIA1" , "NIA1" , "NIA2" ]' 63 | ciphAlgoList: '[ "NEA0" , "NEA1" , "NEA2" ]' 64 | 65 | amfConnections: 66 | useFqdnDNS: "no" 67 | useHttp2: "no" 68 | smf: 69 | selection: "no" 70 | ip: "10.233.95.126" 71 | porthttp1: "80" 72 | porthttp2: "8080" 73 | fqdn: "oai-smf-svc" 74 | nrf: 75 | registration: "yes" 76 | selection: "no" 77 | external: "no" 78 | ip: "10.233.19.104" 79 | port: "80" 80 | fqdn: "oai-nrf-svc" 81 | ausf: 82 | external: "yes" 83 | ip: "10.233.28.39" 84 | port: "80" 85 | fqdn: "oai-ausf-svc" 86 | udm: 87 | external: "no" 88 | ip: "10.233.58.64" 89 | port: "80" 90 | fqdn: "oai-udm-svc" 91 | nssf: 92 | external: "no" 93 | ip: "127.0.0.1" 94 | port: "80" 95 | fqdn: "localhost" 96 | mysql: 97 | server: "mysql" 98 | user: "root" 99 | password: "linux" 100 | db: "oai_db" 101 | 102 | serviceAccount: 103 | enabled: true 104 | name: "oai-amf-sa" 105 | 106 | podSecurityContext: 107 | runAsUser: 0 108 | runAsGroup: 0 109 | 110 | securityContext: 111 | privileged: false 112 | 113 | persistence: 114 | enabled: false 115 | accessModes: 116 | - ReadWriteOnce 117 | storageClassName: longhorn 118 | tcpdump: 119 | claimName: oai-amf-tcpdump 120 | size: 1Gi 121 | 122 | resources: 123 | enabled: false 124 | limits: 125 | tcpdump: 126 | cpu: 100m 127 | memory: 128Mi 128 | amf: 129 | cpu: 100m 130 | memory: 128Mi 131 | requests: 132 | tcpdump: 133 | cpu: 100m 134 | memory: 128Mi 135 | amf: 136 | cpu: 100m 137 | memory: 128Mi 138 | 139 | readinessProbe: true 140 | livenessProbe: false 141 | terminationGracePeriodSeconds: 5 142 | nodeSelector: {} 143 | nodeName: -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/values.yaml: -------------------------------------------------------------------------------- 1 | multus: 2 | create: false 3 | hostInterface: "eno2.100" 4 | n4IpAddress: "172.21.6.202" 5 | n4Netmask: "22" 6 | n4Gateway: "172.21.7.254" 7 | 8 | replicas: 1 9 | 10 | imagePullSecrets: 11 | create: false 12 | pullSecrets: 13 | - name: "" 14 | 15 | start: 16 | tcpdump: false 17 | smf: true 18 | 19 | service: 20 | type: ClusterIP 21 | clusterIP: 10.233.42.105 22 | port: 8805 23 | 24 | smfImage: 25 | registry: docker.io 26 | repository: oaisoftwarealliance/oai-smf 27 | tag: v1.5.0 28 | pullPolicy: IfNotPresent 29 | 30 | tcpdumpImage: 31 | registry: docker.io 32 | repository: corfr/tcpdump 33 | tag: latest 34 | pullPolicy: IfNotPresent 35 | 36 | smfConfig: 37 | smfName: "oai-smf" 38 | tz: "Europe/Paris" 39 | instance: "0" 40 | pidDirectory: "/var/run" 41 | 42 | smfParameters: 43 | apiVersion: v1 44 | defaultSessionType: "IPv4" 45 | defaultSscMode: 1 46 | dnn: "oai" 47 | dnnRange1: "12.1.1.2 - 12.1.1.254" 48 | dnnRange2: "12.2.1.41 - 12.2.1.254" 49 | dnsDefaultCscf: "127.0.0.1" 50 | dnsPrimary: "8.8.8.8" 51 | dnsSecondary: "8.8.4.4" 52 | interfaceNameForN4: "eth0" 53 | interfaceNameForSBI: "eth0" 54 | nssaiSd: "0x1" 55 | nssaiSst: 1 56 | pduSessionType: "IPv4" 57 | qosProfile5QI: 1 58 | qosProfilePriorityLevel: 1 59 | qosProfileAppPriorityLevel: 15 60 | qosProfileArpPreEmptCap: "NOT_PREEMPT" 61 | qosProfileArpPreEmptVuln: "NOT_PREEMPTABLE" 62 | sbiPortHttp1: 80 63 | sbiPortHttp2: 8080 64 | sessionAmbrDL: "1000Mbps" 65 | sessionAmbrUL: "1000Mbps" 66 | ueMtu: 1500 67 | 68 | smfConnections: 69 | useLocalSubscriptionInfo: "yes" 70 | useLocalPCCRules: "yes" 71 | useFqdnDNS: "no" 72 | useHttp2: "no" 73 | amf: 74 | apiVersion: v1 75 | discover: "yes" 76 | fqdn: "oai-amf-svc" 77 | ip: "10.233.10.242" 78 | port: "80" 79 | smf: 80 | ip: "10.233.95.120" 81 | fqdn: "oai-smf-svc" 82 | nrf: 83 | registration: "yes" 84 | apiVersion: v1 85 | fqdn: "oai-nrf-svc" 86 | ip: "10.233.19.104" 87 | port: "80" 88 | udm: 89 | apiVersion: v1 90 | fqdn: "oai-udm-svc" 91 | ip: "10.233.58.64" 92 | port: "80" 93 | upf: 94 | discover: "yes" 95 | domainAccess: "none" 96 | domainCore: "none" 97 | fqdn: "oai-spgwu-tiny-svc" 98 | ip: "10.233.45.210" 99 | nssaiSst: 1 100 | nssaiSd: "0x1" 101 | pcf: 102 | apiVersion: "v1" 103 | discover: "no" 104 | ip: "127.0.0.1" 105 | port: "80" 106 | fqdn: "localhost" 107 | 108 | serviceAccount: 109 | enabled: true 110 | name: "oai-smf-sa" 111 | 112 | podSecurityContext: 113 | runAsUser: 0 114 | runAsGroup: 0 115 | 116 | securityContext: 117 | privileged: false 118 | 119 | persistence: 120 | enabled: false 121 | accessModes: 122 | - ReadWriteOnce 123 | storageClassName: longhorn 124 | tcpdump: 125 | claimName: oai-spgwu-tiny-tcpdump 126 | size: 1Gi 127 | 128 | resources: 129 | enabled: false 130 | limits: 131 | tcpdump: 132 | cpu: 100m 133 | memory: 128Mi 134 | smf: 135 | cpu: 100m 136 | memory: 128Mi 137 | requests: 138 | tcpdump: 139 | cpu: 100m 140 | memory: 128Mi 141 | smf: 142 | cpu: 100m 143 | memory: 128Mi 144 | 145 | readinessProbe: true 146 | livenessProbe: false 147 | terminationGracePeriodSeconds: 5 148 | nodeSelector: {} 149 | nodeName: -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/templates/oai-upf-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ .Chart.Name }} 5 | labels: 6 | {{- include "oai-spgwu-tiny.labels" . | nindent 4 }} 7 | spec: 8 | replicas: {{ .Values.replicas }} 9 | selector: 10 | matchLabels: 11 | {{- include "oai-spgwu-tiny.selectorLabels" . | nindent 6 }} 12 | strategy: 13 | type: Recreate 14 | template: 15 | metadata: 16 | labels: 17 | {{- include "oai-spgwu-tiny.selectorLabels" . | nindent 8 }} 18 | {{- if .Values.multus.create }} 19 | annotations: 20 | k8s.v1.cni.cncf.io/networks: >- 21 | [{ 22 | "name": "{{ .Chart.Name }}-n3-net1", 23 | "default-route": ["{{ .Values.multus.n6Gateway }}"] 24 | }] 25 | {{- end }} 26 | spec: 27 | securityContext: 28 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 29 | {{- if .Values.imagePullSecrets.create }} 30 | imagePullSecrets: 31 | {{ toYaml .Values.imagePullSecrets.pullSecrets | indent 8 }} 32 | {{- end }} 33 | containers: 34 | - name: tcpdump 35 | image: "{{ .Values.tcpdumpImage.registry }}/{{ .Values.tcpdumpImage.repository }}:{{ .Values.tcpdumpImage.tag }}" 36 | imagePullPolicy: {{ .Values.tcpdumpImage.pullPolicy }} 37 | securityContext: 38 | privileged: true 39 | {{- if .Values.resources.enabled}} 40 | resources: 41 | requests: 42 | memory: {{ .Values.resources.tcpdump.requests.memory | quote }} 43 | cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }} 44 | limits: 45 | memory: {{ .Values.resources.tcpdump.limits.memory | quote }} 46 | cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }} 47 | {{- end}} 48 | {{- if .Values.start.tcpdump}} 49 | command: 50 | - /bin/sh 51 | - -c 52 | - /usr/sbin/tcpdump -i any -w /pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap 53 | {{- else}} 54 | command: 55 | - /bin/sleep 56 | - infinity 57 | {{- end}} 58 | {{- if .Values.persistence.enabled}} 59 | volumeMounts: 60 | - mountPath: "/pcap" 61 | name: tcpdump-5gcn-volume 62 | {{- end}} 63 | - name: spgwu 64 | image: "{{ .Values.upfImage.registry }}/{{ .Values.upfImage.repository }}:{{ .Values.upfImage.tag }}" 65 | imagePullPolicy: IfNotPresent 66 | volumeMounts: 67 | - mountPath: /openair-spgwu-tiny/etc 68 | name: configuration 69 | {{- if .Values.resources.enabled}} 70 | resources: 71 | requests: 72 | memory: {{ .Values.resources.upf.requests.memory | quote }} 73 | cpu: {{ .Values.resources.upf.requests.cpu | quote }} 74 | limits: 75 | memory: {{ .Values.resources.upf.limits.memory | quote }} 76 | cpu: {{ .Values.resources.upf.limits.cpu | quote }} 77 | {{- end}} 78 | securityContext: 79 | {{- toYaml .Values.securityContext | nindent 12 }} 80 | {{- if .Values.readinessProbe}} 81 | readinessProbe: 82 | exec: 83 | command: 84 | - /bin/bash 85 | - /openair-spgwu-tiny/bin/healthcheck.sh 86 | initialDelaySeconds: 2 87 | periodSeconds: 3 88 | {{- end}} 89 | {{- if .Values.livenessProbe}} 90 | livenessProbe: 91 | exec: 92 | command: 93 | - /bin/bash 94 | - /openair-spgwu-tiny/bin/healthcheck.sh 95 | initialDelaySeconds: 10 96 | periodSeconds: 5 97 | {{- end}} 98 | ports: 99 | - containerPort: {{ .Values.service.pfcpPort }} 100 | name: pfcp 101 | - containerPort: {{ .Values.service.nguPort }} 102 | name: s1u 103 | {{- if .Values.start.upf}} 104 | command: 105 | - /openair-spgwu-tiny/bin/oai_spgwu 106 | - -c 107 | - /openair-spgwu-tiny/etc/spgw_u.conf 108 | - -o 109 | {{- else}} 110 | command: 111 | - /bin/sleep 112 | - infinity 113 | {{- end}} 114 | volumes: 115 | {{- if .Values.persistence.enabled}} 116 | - name: tcpdump-5gcn-volume 117 | persistenceVolumeClaim: 118 | claimName: {{ .Values.persistence.tcpdump.claimName }} 119 | {{- end}} 120 | - name: configuration 121 | configMap: 122 | name: {{ .Chart.Name }}-configmap 123 | items: 124 | - key: upfConfiguration 125 | path: spgw_u.conf 126 | dnsPolicy: ClusterFirst 127 | restartPolicy: Always 128 | schedulerName: default-scheduler 129 | {{- if .Values.serviceAccount.enabled}} 130 | serviceAccountName: {{ .Values.serviceAccount.name }} 131 | {{- end}} 132 | terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} 133 | {{- if .Values.nodeSelector}} 134 | nodeSelector: 135 | {{- toYaml .Values.nodeSelector | nindent 12 }} 136 | {{- end }} 137 | {{- if .Values.nodeName}} 138 | nodeName: {{ .Values.nodeName }} 139 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/templates/oai-smf-deployment.yaml: -------------------------------------------------------------------------------- 1 | # Source: oai-smf/templates/deployment.yaml 2 | apiVersion: apps/v1 3 | kind: Deployment 4 | metadata: 5 | name: {{ .Chart.Name }} 6 | labels: 7 | {{- include "oai-smf.labels" . | nindent 4 }} 8 | spec: 9 | replicas: {{ .Values.replicas }} 10 | selector: 11 | matchLabels: 12 | {{- include "oai-smf.selectorLabels" . | nindent 6 }} 13 | strategy: 14 | type: Recreate 15 | template: 16 | metadata: 17 | labels: 18 | {{- include "oai-smf.selectorLabels" . | nindent 8 }} 19 | {{- if .Values.multus.create }} 20 | annotations: 21 | k8s.v1.cni.cncf.io/networks: >- 22 | [{ 23 | "name": "oai-smf-n4-net1", 24 | "default-route": ["172.21.7.254"] 25 | }] 26 | {{- end }} 27 | spec: 28 | securityContext: 29 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 30 | {{- if .Values.imagePullSecrets.create }} 31 | imagePullSecrets: 32 | {{ toYaml .Values.imagePullSecrets.pullSecrets | indent 8 }} 33 | {{- end }} 34 | containers: 35 | - name: tcpdump 36 | image: "{{ .Values.tcpdumpImage.registry }}/{{ .Values.tcpdumpImage.repository }}:{{ .Values.tcpdumpImage.tag }}" 37 | imagePullPolicy: {{ .Values.tcpdumpImage.pullPolicy }} 38 | securityContext: 39 | privileged: false 40 | {{- if .Values.resources.enabled}} 41 | resources: 42 | requests: 43 | memory: {{ .Values.resources.tcpdump.requests.memory | quote }} 44 | cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }} 45 | limits: 46 | memory: {{ .Values.resources.tcpdump.limits.memory | quote }} 47 | cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }} 48 | {{- end}} 49 | {{- if .Values.start.tcpdump}} 50 | command: 51 | - /bin/sh 52 | - -c 53 | - /usr/sbin/tcpdump -i any -w /pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap 54 | {{- else}} 55 | command: 56 | - /bin/sleep 57 | - infinity 58 | {{- end}} 59 | {{- if .Values.persistence.enabled}} 60 | volumeMounts: 61 | - mountPath: "/pcap" 62 | name: tcpdump-5gcn-volume 63 | {{- end}} 64 | - name: smf 65 | image: "{{ .Values.smfImage.registry }}/{{ .Values.smfImage.repository }}:{{ .Values.smfImage.tag }}" 66 | imagePullPolicy: {{ .Values.smfImage.pullPolicy }} 67 | volumeMounts: 68 | - mountPath: /openair-smf/etc 69 | name: configuration 70 | {{- if .Values.resources.enabled}} 71 | resources: 72 | requests: 73 | memory: {{ .Values.resources.smf.requests.memory | quote }} 74 | cpu: {{ .Values.resources.smf.requests.cpu | quote }} 75 | limits: 76 | memory: {{ .Values.resources.smf.limits.memory | quote }} 77 | cpu: {{ .Values.resources.smf.limits.cpu | quote }} 78 | {{- end}} 79 | securityContext: 80 | {{- toYaml .Values.securityContext | nindent 12 }} 81 | {{- if .Values.readinessProbe}} 82 | readinessProbe: 83 | exec: 84 | command: 85 | - /bin/bash 86 | - /openair-smf/bin/healthcheck.sh 87 | initialDelaySeconds: 2 88 | periodSeconds: 3 89 | {{- end}} 90 | {{- if .Values.livenessProbe}} 91 | livenessProbe: 92 | exec: 93 | command: 94 | - /bin/bash 95 | - /openair-smf/bin/healthcheck.sh 96 | initialDelaySeconds: 10 97 | periodSeconds: 5 98 | {{- end}} 99 | ports: 100 | - containerPort: {{ .Values.service.port }} 101 | name: oai-smf 102 | - containerPort: {{ .Values.smfParameters.sbiPortHttp1 }} 103 | name: http1 104 | - containerPort: {{ .Values.smfParameters.sbiPortHttp2 }} 105 | name: http2 106 | {{- if .Values.start.smf}} 107 | command: 108 | - /openair-smf/bin/oai_smf 109 | - -c 110 | - /openair-smf/etc/smf.conf 111 | - -o 112 | {{- else}} 113 | command: 114 | - /bin/sleep 115 | - infinity 116 | {{- end}} 117 | volumes: 118 | {{- if .Values.persistence.enabled}} 119 | - name: tcpdump-5gcn-volume 120 | persistenceVolumeClaim: 121 | claimName: {{ .Values.persistence.tcpdump.claimName }} 122 | {{- end}} 123 | - name: configuration 124 | configMap: 125 | name: {{ .Chart.Name }}-configmap 126 | items: 127 | - key: smfConfiguration 128 | path: smf.conf 129 | dnsPolicy: ClusterFirst 130 | restartPolicy: Always 131 | schedulerName: default-scheduler 132 | {{- if .Values.serviceAccount.enabled}} 133 | serviceAccountName: {{ .Values.serviceAccount.name }} 134 | {{- end}} 135 | terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} 136 | {{- if .Values.nodeSelector}} 137 | nodeSelector: 138 | {{- toYaml .Values.nodeSelector | nindent 12 }} 139 | {{- end }} 140 | {{- if .Values.nodeName}} 141 | nodeName: {{ .Values.nodeName }} 142 | {{- end }} 143 | -------------------------------------------------------------------------------- /oai-5g-charts/1-nrf/templates/oai-nrf-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | namespace: oai-5gcn 5 | name: {{ .Chart.Name }} 6 | labels: 7 | {{- include "oai-nrf.labels" . | nindent 4 }} 8 | spec: 9 | replicas: {{ .Values.replicas }} 10 | selector: 11 | matchLabels: 12 | {{- include "oai-nrf.selectorLabels" . | nindent 6 }} 13 | strategy: 14 | type: Recreate 15 | template: 16 | metadata: 17 | labels: 18 | {{- include "oai-nrf.selectorLabels" . | nindent 8 }} 19 | spec: 20 | securityContext: 21 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 22 | {{- if .Values.imagePullSecrets.create }} 23 | imagePullSecrets: 24 | {{ toYaml .Values.imagePullSecrets.pullSecrets | indent 8 }} 25 | {{- end }} 26 | containers: 27 | - name: tcpdump 28 | image: "{{ .Values.tcpdumpImage.registry }}/{{ .Values.tcpdumpImage.repository }}:{{ .Values.tcpdumpImage.tag }}" 29 | imagePullPolicy: {{ .Values.tcpdumpImage.pullPolicy }} 30 | {{- if .Values.resources.enabled}} 31 | resources: 32 | requests: 33 | memory: {{ .Values.resources.tcpdump.requests.memory | quote }} 34 | cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }} 35 | limits: 36 | memory: {{ .Values.resources.tcpdump.limits.memory | quote }} 37 | cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }} 38 | {{- end}} 39 | {{- if .Values.start.tcpdump}} 40 | command: 41 | - /bin/sh 42 | - -c 43 | - /usr/sbin/tcpdump -i any -w /pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap 44 | {{- else}} 45 | command: 46 | - /bin/sleep 47 | - infinity 48 | {{- end}} 49 | {{- if .Values.persistence.enabled}} 50 | volumeMounts: 51 | - mountPath: "/pcap" 52 | name: tcpdump-5gcn-volume 53 | {{- end}} 54 | - name: nrf 55 | image: "{{ .Values.nrfImage.registry }}/{{ .Values.nrfImage.repository }}:{{ .Values.nrfImage.tag }}" 56 | imagePullPolicy: {{ .Values.nrfImage.pullPolicy }} 57 | {{- if .Values.resources.enabled}} 58 | resources: 59 | requests: 60 | memory: {{ .Values.resources.nrf.requests.memory | quote }} 61 | cpu: {{ .Values.resources.nrf.requests.cpu | quote }} 62 | limits: 63 | memory: {{ .Values.resources.nrf.limits.memory | quote }} 64 | cpu: {{ .Values.resources.nrf.limits.cpu | quote }} 65 | {{- end}} 66 | securityContext: 67 | {{- toYaml .Values.securityContext | nindent 10 }} 68 | {{- if .Values.readinessProbe}} 69 | readinessProbe: 70 | exec: 71 | command: 72 | - /bin/bash 73 | - /openair-nrf/bin/healthcheck.sh 74 | initialDelaySeconds: 2 75 | periodSeconds: 3 76 | {{- end}} 77 | {{- if .Values.livenessProbe}} 78 | livenessProbe: 79 | exec: 80 | command: 81 | - /bin/bash 82 | - /openair-nrf/bin/healthcheck.sh 83 | initialDelaySeconds: 15 84 | periodSeconds: 5 85 | {{- end}} 86 | ports: 87 | - containerPort: {{ .Values.nrfConfig.nrfInterfacePortForSBI }} 88 | name: http1 89 | protocol: TCP 90 | - containerPort: {{ .Values.nrfConfig.nrfInterfaceHttp2PortForSBI }} 91 | name: http2 92 | protocol: TCP 93 | env: 94 | - name: TZ 95 | valueFrom: 96 | configMapKeyRef: 97 | name: {{ .Chart.Name }}-configmap 98 | key: tz 99 | - name: NRF_INTERFACE_NAME_FOR_SBI 100 | valueFrom: 101 | configMapKeyRef: 102 | name: {{ .Chart.Name }}-configmap 103 | key: nrfInterfaceNameForSBI 104 | - name: NRF_INTERFACE_PORT_FOR_SBI 105 | valueFrom: 106 | configMapKeyRef: 107 | name: {{ .Chart.Name }}-configmap 108 | key: nrfInterfacePortForSBI 109 | - name: NRF_INTERFACE_HTTP2_PORT_FOR_SBI 110 | valueFrom: 111 | configMapKeyRef: 112 | name: {{ .Chart.Name }}-configmap 113 | key: nrfInterfaceHttp2PortForSBI 114 | - name: NRF_API_VERSION 115 | valueFrom: 116 | configMapKeyRef: 117 | name: {{ .Chart.Name }}-configmap 118 | key: nrfApiVersion 119 | - name: INSTANCE 120 | valueFrom: 121 | configMapKeyRef: 122 | name: {{ .Chart.Name }}-configmap 123 | key: instance 124 | - name: PID_DIRECTORY 125 | valueFrom: 126 | configMapKeyRef: 127 | name: {{ .Chart.Name }}-configmap 128 | key: pidDirectory 129 | volumes: 130 | {{- if .Values.persistence.enabled}} 131 | - name: tcpdump-5gcn-volume 132 | persistenceVolumeClaim: 133 | claimName: {{ .Values.persistence.tcpdump.claimName }} 134 | {{- end}} 135 | dnsPolicy: ClusterFirst 136 | restartPolicy: Always 137 | {{- if .Values.serviceAccount.enabled}} 138 | serviceAccountName: {{ .Values.serviceAccount.name }} 139 | {{- end}} 140 | terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} 141 | {{- if .Values.nodeSelector}} 142 | nodeSelector: 143 | {{- toYaml .Values.nodeSelector | nindent 12 }} 144 | {{- end }} 145 | {{- if .Values.nodeName}} 146 | nodeName: {{ .Values.nodeName }} 147 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/6-upf/templates/oai-upf-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Chart.Name }}-configmap 5 | data: 6 | {{- range $key, $val := .Values.upfConfig }} 7 | {{ $key }}: {{ $val | quote }} 8 | {{- end }} 9 | upfConfiguration: | 10 | SPGW-U = 11 | { 12 | FQDN = "{{ .Values.upfConfig.upfName }}-svc"; # only needed for 4g 13 | INSTANCE = {{ .Values.upfConfig.instance }}; # 0 is the default 14 | PID_DIRECTORY = "{{ .Values.upfConfig.pidDirectory }}"; # /var/run is the default 15 | INTERFACES: 16 | { 17 | S1U_S12_S4_UP: 18 | { 19 | # S-GW binded interface for S1-U communication (GTPV1-U) can be ethernet interface, virtual ethernet interface, we don't advise wireless interfaces 20 | INTERFACE_NAME = "{{ .Values.upfParameters.interfaceNameForN3 }}"; # STRING, interface name, YOUR NETWORK CONFIG HERE 21 | IPV4_ADDRESS = "read"; # STRING, CIDR or "read to let app read interface configured IP address 22 | PORT = 2152; # Default is 2152 23 | SCHED_PARAMS : 24 | { 25 | # CPU_ID = 2; 26 | SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR } 27 | SCHED_PRIORITY = {{ .Values.upfParameters.threadsN3Priority }}; 28 | POOL_SIZE = {{ .Values.upfParameters.threadsN3UL }}; 29 | }; 30 | }; 31 | SX: 32 | { 33 | # S/P-GW binded interface for SX communication 34 | INTERFACE_NAME = "{{ .Values.upfParameters.interfaceNameForN4 }}"; # STRING, interface name 35 | IPV4_ADDRESS = "read"; # STRING, CIDR or "read" to let app read interface configured IP address 36 | PORT = 8805; # Default is 8805 37 | SCHED_PARAMS : 38 | { 39 | # CPU_ID = 1; 40 | SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR } 41 | SCHED_PRIORITY = {{ .Values.upfParameters.threadsN4Priority }}; 42 | POOL_SIZE = {{ .Values.upfParameters.threadsN4UL }}; 43 | }; 44 | }; 45 | SGI : 46 | { 47 | # No config to set, the software will set the SGi interface to the interface used for the default route. 48 | INTERFACE_NAME = "{{ .Values.upfParameters.interfaceNameForN6 }}"; # STRING, interface name or "default_gateway" 49 | IPV4_ADDRESS = "read"; # STRING, CIDR or "read" to let app read interface configured IP address 50 | SCHED_PARAMS : 51 | { 52 | # CPU_ID = 3; 53 | SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR } 54 | SCHED_PRIORITY = {{ .Values.upfParameters.threadsN6Priority }}; 55 | POOL_SIZE = {{ .Values.upfParameters.threadsN6UL }}; 56 | }; 57 | }; 58 | }; 59 | 60 | SNAT = "{{ .Values.upfParameters.ueNatOption }}"; # SNAT Values in {yes, no} 61 | PDN_NETWORK_LIST = ( 62 | {NETWORK_IPV4 = "{{ .Values.upfParameters.ueIpRange }}";}, # 1 ITEM SUPPORTED ONLY 63 | {NETWORK_IPV4 = "{{ .Values.upfParameters.ueIpRangeNatRules }}";} # For subequent items SNAT rules have to be created manually 64 | ); 65 | 66 | # SMF List 67 | SPGW-C_LIST = ( 68 | {IPV4_ADDRESS = "{{ .Values.upfConnections.smf.ip }}" ;} 69 | ); 70 | 71 | NON_STANDART_FEATURES : 72 | { 73 | BYPASS_UL_PFCP_RULES = "{{ .Values.upfParameters.byPassUlPfcpRules }}"; # 'no' for standart features, yes for enhancing UL throughput 74 | }; 75 | 76 | SUPPORT_5G_FEATURES: 77 | { 78 | # STRING, {"yes", "no"}, 79 | ENABLE_5G_FEATURES = "yes" # Set to 'yes' to support 5G Features 80 | REGISTER_NRF = "{{ .Values.upfConnections.nrf.registration }}"; # Set to 'yes' if UPF resgisters to an NRF 81 | USE_FQDN_NRF = "{{ .Values.upfConnections.useFqdnDNS }}"; # Set to 'yes' if UPF relies on a DNS/FQDN service to resolve NRF's FQDN 82 | UPF_FQDN_5G = "{{ .Values.upfConfig.upfName }}-svc"; # Set FQDN of UPF 83 | 84 | NRF : 85 | { 86 | IPV4_ADDRESS = "{{ .Values.upfConnections.nrf.ip }}"; # YOUR NRF CONFIG HERE 87 | PORT = {{ .Values.upfConnections.nrf.port }}; # YOUR NRF CONFIG HERE (default: 80) 88 | HTTP_VERSION = {{ .Values.upfConnections.nrf.httpVersion }}; #Set HTTP version for NRF (1 or 2)Default 1 89 | API_VERSION = "{{ .Values.upfConnections.nrf.apiVersion }}"; # YOUR NRF API VERSION HERE 90 | FQDN = "{{ .Values.upfConnections.nrf.fqdn }}"; 91 | }; 92 | 93 | # Additional info to be sent to NRF for supporting Network Slicing 94 | UPF_INFO = ( 95 | { NSSAI_SST = {{ .Values.upfConnections.upf.nssaiSst }}; NSSAI_SD = "{{ .Values.upfConnections.upf.nssaiSd }}"; DNN_LIST = ({DNN = "{{ .Values.upfParameters.dnn }}";}); }, 96 | { NSSAI_SST = {{ .Values.upfConnections.upf.nssaiSst }}; NSSAI_SD = "{{ .Values.upfConnections.upf.nssaiSd }}"; DNN_LIST = ({DNN = "{{ .Values.upfParameters.dnn }}";}); } 97 | ); 98 | } 99 | }; -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/templates/oai-amf-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ .Chart.Name }} 5 | labels: 6 | {{- include "oai-amf.labels" . | nindent 4 }} 7 | spec: 8 | replicas: {{ .Values.replicas }} 9 | selector: 10 | matchLabels: 11 | {{- include "oai-amf.selectorLabels" . | nindent 6 }} 12 | strategy: 13 | type: Recreate 14 | template: 15 | metadata: 16 | labels: 17 | {{- include "oai-amf.selectorLabels" . | nindent 8 }} 18 | {{- if .Values.multus.create }} 19 | annotations: 20 | k8s.v1.cni.cncf.io/networks: >- 21 | [{ 22 | "name": "{{ .Chart.Name }}-n2-net1", 23 | "default-route": ["{{ .Values.multus.n2Gateway }}"] 24 | }] 25 | {{- end }} 26 | spec: 27 | securityContext: 28 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 29 | {{- if .Values.imagePullSecrets.create }} 30 | imagePullSecrets: 31 | {{ toYaml .Values.imagePullSecrets.pullSecrets | indent 8 }} 32 | {{- end }} 33 | containers: 34 | - name: tcpdump 35 | image: "{{ .Values.tcpdumpImage.registry }}/{{ .Values.tcpdumpImage.repository }}:{{ .Values.tcpdumpImage.tag }}" 36 | imagePullPolicy: {{ .Values.tcpdumpImage.pullPolicy }} 37 | securityContext: 38 | privileged: false 39 | {{- if .Values.resources.enabled}} 40 | resources: 41 | requests: 42 | memory: {{ .Values.resources.tcpdump.requests.memory | quote }} 43 | cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }} 44 | limits: 45 | memory: {{ .Values.resources.tcpdump.limits.memory | quote }} 46 | cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }} 47 | {{- end}} 48 | {{- if .Values.start.tcpdump}} 49 | command: 50 | - /bin/sh 51 | - -c 52 | - /usr/sbin/tcpdump -i any -w /pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap 53 | {{- else}} 54 | command: 55 | - /bin/sleep 56 | - infinity 57 | {{- end}} 58 | {{- if .Values.persistence.enabled}} 59 | volumeMounts: 60 | - mountPath: "/pcap" 61 | name: tcpdump-5gcn-volume 62 | {{- end}} 63 | - name: amf 64 | image: "{{ .Values.amfImage.registry }}/{{ .Values.amfImage.repository }}:{{ .Values.amfImage.tag }}" 65 | imagePullPolicy: {{ .Values.amfImage.pullPolicy }} 66 | volumeMounts: 67 | - mountPath: /openair-amf/etc 68 | name: configuration 69 | {{- if .Values.resources.enabled}} 70 | resources: 71 | requests: 72 | memory: {{ .Values.resources.amf.requests.memory | quote }} 73 | cpu: {{ .Values.resources.amf.requests.cpu | quote }} 74 | limits: 75 | memory: {{ .Values.resources.amf.limits.memory | quote }} 76 | cpu: {{ .Values.resources.amf.limits.cpu | quote }} 77 | {{- end}} 78 | securityContext: 79 | {{- toYaml .Values.securityContext | nindent 12 }} 80 | {{- if .Values.readinessProbe}} 81 | readinessProbe: 82 | exec: 83 | command: 84 | - /bin/bash 85 | - /openair-amf/bin/healthcheck.sh 86 | initialDelaySeconds: 2 87 | periodSeconds: 3 88 | {{- end}} 89 | {{- if .Values.livenessProbe}} 90 | livenessProbe: 91 | exec: 92 | command: 93 | - /bin/bash 94 | - /openair-amf/bin/healthcheck.sh 95 | initialDelaySeconds: 10 96 | periodSeconds: 5 97 | {{- end}} 98 | ports: 99 | - containerPort: {{ .Values.service.ngap.port }} 100 | name: oai-amf 101 | protocol: SCTP 102 | - containerPort: {{ .Values.amfParameters.sbiPortHttp1 }} 103 | name: http1 104 | protocol: TCP 105 | - containerPort: {{ .Values.amfParameters.sbiPortHttp2 }} 106 | name: http2 107 | protocol: TCP 108 | env: 109 | - name: TZ 110 | valueFrom: 111 | configMapKeyRef: 112 | name: oai-amf-configmap-variables 113 | key: tz 114 | - name: INSTANCE 115 | valueFrom: 116 | configMapKeyRef: 117 | name: oai-amf-configmap-variables 118 | key: instance 119 | - name: PID_DIRECTORY 120 | valueFrom: 121 | configMapKeyRef: 122 | name: oai-amf-configmap-variables 123 | key: pidDirectory 124 | - name: OPERATOR_KEY 125 | valueFrom: 126 | configMapKeyRef: 127 | name: oai-amf-configmap-variables 128 | key: operatorKey 129 | {{- if .Values.start.amf}} 130 | command: 131 | - /openair-amf/bin/oai_amf 132 | - -c 133 | - /openair-amf/etc/amf.conf 134 | - -o 135 | {{- else}} 136 | command: 137 | - /bin/sleep 138 | - infinity 139 | {{- end}} 140 | volumes: 141 | {{- if .Values.persistence.enabled}} 142 | - name: tcpdump-5gcn-volume 143 | persistenceVolumeClaim: 144 | claimName: {{ .Values.persistence.tcpdump.claimName }} 145 | {{- end}} 146 | - name: configuration 147 | configMap: 148 | name: {{ .Chart.Name }}-configmap 149 | items: 150 | - key: amfConfiguration 151 | path: amf.conf 152 | dnsPolicy: ClusterFirst 153 | restartPolicy: Always 154 | schedulerName: default-scheduler 155 | {{- if .Values.serviceAccount.enabled}} 156 | serviceAccountName: {{ .Values.serviceAccount.name }} 157 | {{- end}} 158 | terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} 159 | {{- if .Values.nodeSelector}} 160 | nodeSelector: 161 | {{- toYaml .Values.nodeSelector | nindent 12 }} 162 | {{- end }} 163 | {{- if .Values.nodeName}} 164 | nodeName: {{ .Values.nodeName }} 165 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/5-amf/templates/oai-amf-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Chart.Name }}-configmap 5 | data: 6 | {{- range $key, $val := .Values.amfConfig }} 7 | {{ $key }}: {{ $val | quote }} 8 | {{- end }} 9 | amfConfiguration: | 10 | AMF = 11 | { 12 | INSTANCE_ID = {{ .Values.amfConfig.instance }} ; # 0 is the default 13 | PID_DIRECTORY = "{{ .Values.amfConfig.pidDirectory }}"; # /var/run is the default 14 | 15 | AMF_NAME = "{{ .Values.amfConfig.amfName }}"; 16 | 17 | RELATIVE_CAPACITY = 30; 18 | # Display statistics about whole system (in seconds) 19 | STATISTICS_TIMER_INTERVAL = 20; # YOUR CONFIG HERE 20 | CORE_CONFIGURATION: 21 | { 22 | EMERGENCY_SUPPORT = "false"; 23 | }; 24 | GUAMI: 25 | { 26 | MCC = "{{ .Values.amfParameters.mcc }}"; MNC = "{{ .Values.amfParameters.mnc }}"; RegionID = "{{ .Values.amfParameters.regionId }}"; AMFSetID = "{{ .Values.amfParameters.amfSetId }}"; AMFPointer = "{{ .Values.amfParameters.amfPointer.guami }}" 27 | } 28 | 29 | SERVED_GUAMI_LIST = ( 30 | {MCC = "{{ .Values.amfParameters.mcc }}"; MNC = "{{ .Values.amfParameters.mnc }}"; RegionID = "{{ .Values.amfParameters.regionId }}"; AMFSetID = "{{ .Values.amfParameters.amfSetId }}"; AMFPointer = "{{ .Values.amfParameters.amfPointer.guamiList }}"} 31 | ); 32 | 33 | PLMN_SUPPORT_LIST = ( 34 | { 35 | MCC = "{{ .Values.amfParameters.mcc }}"; MNC = "{{ .Values.amfParameters.mnc }}"; TAC = {{ .Values.amfParameters.tac }}; 36 | SLICE_SUPPORT_LIST = ( 37 | {SST = {{ .Values.amfParameters.sst0 }}; SD = "{{ .Values.amfParameters.sd0 }}"} 38 | ) 39 | } 40 | ); 41 | 42 | INTERFACES: 43 | { 44 | # AMF binded interface for N1/N2 interface (NGAP) 45 | NGAP_AMF: 46 | { 47 | INTERFACE_NAME = "{{ .Values.amfParameters.interfaceNameforNGAP }}"; 48 | IPV4_ADDRESS = "read"; 49 | PORT = 38412; 50 | PPID = 60; 51 | }; 52 | 53 | # AMF binded interface for SBI (N11 (SMF)/N12 (AUSF), etc.) 54 | SBI: 55 | { 56 | INTERFACE_NAME = "{{ .Values.amfParameters.interfaceNameforSBI }}"; 57 | IPV4_ADDRESS = "read"; 58 | PORT = {{ .Values.amfParameters.sbiPortHttp1 }}; 59 | API_VERSION = "v1"; 60 | HTTP2_PORT = {{ .Values.amfParameters.sbiPortHttp2 }}; 61 | 62 | SMF_INSTANCES_POOL = ( 63 | {SMF_INSTANCE_ID = 1; IPV4_ADDRESS = "{{ .Values.amfConnections.smf.ip }}"; PORT = "{{ .Values.amfConnections.smf.porthttp1 }}"; HTTP2_PORT = {{ .Values.amfConnections.smf.porthttp2 }}, VERSION = "v1"; FQDN = "{{ .Values.amfConnections.smf.fqdn }}", SELECTED = "true"} # YOUR SMF CONFIG HERE 64 | ); 65 | }; 66 | 67 | NRF : 68 | { 69 | IPV4_ADDRESS = "{{ .Values.amfConnections.nrf.ip }}"; 70 | PORT = {{ .Values.amfConnections.nrf.port }}; # Default: 80 71 | API_VERSION = "v1"; 72 | FQDN = "{{ .Values.amfConnections.nrf.fqdn }}" 73 | }; 74 | 75 | AUSF : 76 | { 77 | IPV4_ADDRESS = "{{ .Values.amfConnections.ausf.ip }}"; 78 | PORT = {{ .Values.amfConnections.ausf.port }}; # Default: 80 79 | API_VERSION = "v1"; 80 | FQDN = "{{ .Values.amfConnections.ausf.fqdn }}" 81 | }; 82 | 83 | UDM : 84 | { 85 | IPV4_ADDRESS = "{{ .Values.amfConnections.udm.ip }}"; 86 | PORT = {{ .Values.amfConnections.udm.port }}; # Default: 80 87 | API_VERSION = "v2"; 88 | FQDN = "{{ .Values.amfConnections.udm.fqdn }}" 89 | }; 90 | 91 | NSSF : 92 | { 93 | IPV4_ADDRESS = "{{ .Values.amfConnections.nssf.ip }}"; 94 | PORT = {{ .Values.amfConnections.nssf.port }}; # Default: 80 95 | API_VERSION = "v2"; 96 | FQDN = "{{ .Values.amfConnections.nssf.fqdn }}" 97 | }; 98 | }; 99 | 100 | SUPPORT_FEATURES: 101 | { 102 | # STRING, {"yes", "no"}, 103 | NF_REGISTRATION = "{{ .Values.amfConnections.nrf.registration }}"; # Set to yes if AMF registers to an NRF 104 | NRF_SELECTION = "{{ .Values.amfConnections.nrf.selection }}"; # Set to yes to enable NRF discovery and selection 105 | EXTERNAL_NRF = "{{ .Values.amfConnections.nrf.external }}"; # Set to yes if AMF works with an external NRF 106 | SMF_SELECTION = "{{ .Values.amfConnections.smf.selection }}"; # Set to yes to enable SMF discovery and selection 107 | EXTERNAL_AUSF = "{{ .Values.amfConnections.ausf.external }}"; # Set to yes if AMF works with an external AUSF 108 | EXTERNAL_UDM = "{{ .Values.amfConnections.udm.external }}"; # Set to yes if AMF works with an external UDM 109 | EXTERNAL_NSSF = "{{ .Values.amfConnections.nssf.external }}"; # Set to yes if AMF works with an external NSSF 110 | USE_FQDN_DNS = "{{ .Values.amfConnections.useFqdnDNS }}"; # Set to yes if AMF relies on a DNS to resolve NRF/SMF/UDM/AUSF's FQDN 111 | USE_HTTP2 = "{{ .Values.amfConnections.useHttp2 }}"; # Set to yes to enable HTTP2 for AMF server 112 | } 113 | 114 | AUTHENTICATION: 115 | { 116 | ## MySQL mandatory options 117 | MYSQL_server = "{{ .Values.amfConnections.mysql.server }}"; # MySQL Server address 118 | MYSQL_user = "{{ .Values.amfConnections.mysql.user }}"; # Database server login 119 | MYSQL_pass = "{{ .Values.amfConnections.mysql.password }}"; # Database server password 120 | MYSQL_db = "{{ .Values.amfConnections.mysql.db }}"; # Your database name 121 | RANDOM = "true"; 122 | }; 123 | 124 | NAS: 125 | { 126 | ORDERED_SUPPORTED_INTEGRITY_ALGORITHM_LIST = {{ .Values.amfParameters.inteAlgoList }} ; 127 | ORDERED_SUPPORTED_CIPHERING_ALGORITHM_LIST = {{ .Values.amfParameters.ciphAlgoList }} ; 128 | }; 129 | }; 130 | 131 | MODULES = 132 | { 133 | NGAP_MESSAGE = ( 134 | {MSG_NAME = "NGSetupRequest"; ProcedureCode = 21; TypeOfMessage = "initialMessage"} 135 | ); 136 | }; 137 | -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/values.yaml: -------------------------------------------------------------------------------- 1 | # mysql image version 2 | ## ref: https://hub.docker.com/r/library/mysql/tags/ 3 | ## 4 | image: "docker.io/mysql" 5 | imageTag: "8.0" 6 | 7 | strategy: 8 | type: Recreate 9 | 10 | busybox: 11 | image: "busybox" 12 | tag: "latest" 13 | 14 | testFramework: 15 | enabled: false 16 | image: "bats/bats" 17 | tag: "1.2.1" 18 | imagePullPolicy: IfNotPresent 19 | securityContext: {} 20 | 21 | ## Specify password for root user 22 | ## 23 | ## Default: random 10 character string 24 | mysqlRootPassword: linux 25 | 26 | ## Create a database user 27 | ## 28 | mysqlUser: test 29 | ## Default: random 10 character string 30 | mysqlPassword: test 31 | 32 | ## Allow unauthenticated access, uncomment to enable 33 | ## 34 | # mysqlAllowEmptyPassword: true 35 | 36 | ## Create a database 37 | ## 38 | mysqlDatabase: oai_db 39 | 40 | #### added to handle two setting for oai database for mini and basic 41 | 42 | oai5gdatabase: basic #only two values mini or basic nothing else default is basic 43 | 44 | 45 | ## Specify an imagePullPolicy (Required) 46 | ## It's recommended to change this to 'Always' if the image tag is 'latest' 47 | ## ref: http://kubernetes.io/docs/user-guide/images/#updating-images 48 | ## 49 | imagePullPolicy: IfNotPresent 50 | 51 | ## Additionnal arguments that are passed to the MySQL container. 52 | ## For example use --default-authentication-plugin=mysql_native_password if older clients need to 53 | ## connect to a MySQL 8 instance. 54 | args: [] 55 | 56 | extraVolumes: | 57 | # - name: extras 58 | # emptyDir: {} 59 | extraVolumeMounts: | 60 | # - name: extras 61 | # mountPath: /usr/share/extras 62 | # readOnly: true 63 | extraInitContainers: | 64 | # - name: do-something 65 | # image: busybox 66 | # command: ['do', 'something'] 67 | ## A string to add extra environment variables 68 | # extraEnvVars: | 69 | # - name: EXTRA_VAR 70 | # value: "extra" 71 | 72 | # Optionally specify an array of imagePullSecrets. 73 | # Secrets must be manually created in the namespace. 74 | # ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod 75 | imagePullSecrets: 76 | - name: regcred 77 | 78 | ## Node selector 79 | ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector 80 | #nodeSelector: 81 | # env: dev 82 | 83 | ## Affinity 84 | ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity 85 | affinity: {} 86 | 87 | ## Tolerations for pod assignment 88 | ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ 89 | ## 90 | tolerations: [] 91 | 92 | livenessProbe: 93 | initialDelaySeconds: 50 94 | periodSeconds: 15 95 | timeoutSeconds: 10 96 | successThreshold: 1 97 | failureThreshold: 3 98 | 99 | readinessProbe: 100 | initialDelaySeconds: 15 101 | periodSeconds: 15 102 | timeoutSeconds: 5 103 | successThreshold: 1 104 | failureThreshold: 3 105 | 106 | ## Persist data to a persistent volume 107 | persistence: 108 | enabled: true 109 | ## database data Persistent Volume Storage Class 110 | ## If defined, storageClassName: 111 | ## If set to "-", storageClassName: "", which disables dynamic provisioning 112 | ## If undefined (the default) or set to null, no storageClassName spec is 113 | ## set, choosing the default provisioner. (gp2 on AWS, standard on 114 | ## GKE, AWS & OpenStack) 115 | ## 116 | # storageClass: "-" 117 | accessMode: ReadWriteOnce 118 | size: 8Gi 119 | annotations: {} 120 | 121 | ## Use an alternate scheduler, e.g. "stork". 122 | ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ 123 | ## 124 | # schedulerName: 125 | 126 | ## Security context 127 | securityContext: 128 | enabled: false 129 | runAsUser: 999 130 | fsGroup: 999 131 | 132 | ## Configure resource requests and limits 133 | ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ 134 | ## 135 | resources: 136 | requests: 137 | memory: 256Mi 138 | cpu: 100m 139 | 140 | # Custom mysql configuration files path 141 | configurationFilesPath: /etc/mysql/conf.d/ 142 | 143 | # Custom mysql configuration files used to override default mysql settings 144 | configurationFiles: {} 145 | # mysql.cnf: |- 146 | # [mysqld] 147 | # skip-name-resolve 148 | # ssl-ca=/ssl/ca.pem 149 | # ssl-cert=/ssl/server-cert.pem 150 | # ssl-key=/ssl/server-key.pem 151 | 152 | 153 | mysqlx: 154 | port: 155 | enabled: false 156 | 157 | metrics: 158 | enabled: false 159 | image: prom/mysqld-exporter 160 | imageTag: v0.10.0 161 | imagePullPolicy: IfNotPresent 162 | resources: {} 163 | annotations: {} 164 | # prometheus.io/scrape: "true" 165 | # prometheus.io/port: "9104" 166 | livenessProbe: 167 | initialDelaySeconds: 15 168 | timeoutSeconds: 5 169 | readinessProbe: 170 | initialDelaySeconds: 5 171 | timeoutSeconds: 1 172 | flags: [] 173 | serviceMonitor: 174 | enabled: false 175 | additionalLabels: {} 176 | 177 | ## Configure the service 178 | ## ref: http://kubernetes.io/docs/user-guide/services/ 179 | service: 180 | annotations: {} 181 | ## Specify a service type 182 | ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types 183 | type: ClusterIP 184 | port: 3306 185 | # nodePort: 32000 186 | # loadBalancerIP: 187 | 188 | ## Pods Service Account 189 | ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ 190 | serviceAccount: 191 | ## Specifies whether a ServiceAccount should be created 192 | ## 193 | create: false 194 | ## The name of the ServiceAccount to use. 195 | ## If not set and create is true, a name is generated using the mariadb.fullname template 196 | # name: 197 | 198 | ssl: 199 | enabled: false 200 | secret: mysql-ssl-certs 201 | certificates: 202 | # - name: mysql-ssl-certs 203 | # ca: |- 204 | # -----BEGIN CERTIFICATE----- 205 | # ... 206 | # -----END CERTIFICATE----- 207 | # cert: |- 208 | # -----BEGIN CERTIFICATE----- 209 | # ... 210 | # -----END CERTIFICATE----- 211 | # key: |- 212 | # -----BEGIN RSA PRIVATE KEY----- 213 | # ... 214 | # -----END RSA PRIVATE KEY----- 215 | 216 | ## Populates the 'TZ' system timezone environment variable 217 | ## ref: https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html 218 | ## 219 | ## Default: nil (mysql will use image's default timezone, normally UTC) 220 | ## Example: 'Australia/Sydney' 221 | # timezone: 222 | 223 | # Deployment Annotations 224 | deploymentAnnotations: {} 225 | 226 | # To be added to the database server pod(s) 227 | podAnnotations: {} 228 | podLabels: {} 229 | 230 | ## Set pod priorityClassName 231 | # priorityClassName: {} 232 | 233 | 234 | ## Init container resources defaults 235 | initContainer: 236 | resources: 237 | requests: 238 | memory: 10Mi 239 | cpu: 10m 240 | -------------------------------------------------------------------------------- /oai-5g-charts/4-ausf/templates/oai-ausf-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ .Chart.Name }} 5 | labels: 6 | {{- include "oai-ausf.labels" . | nindent 4 }} 7 | spec: 8 | replicas: {{ .Values.replicas }} 9 | selector: 10 | matchLabels: 11 | {{- include "oai-ausf.selectorLabels" . | nindent 6 }} 12 | strategy: 13 | type: Recreate 14 | template: 15 | metadata: 16 | labels: 17 | {{- include "oai-ausf.selectorLabels" . | nindent 8 }} 18 | spec: 19 | securityContext: 20 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 21 | {{- if .Values.imagePullSecrets.create }} 22 | imagePullSecrets: 23 | - name: regcred 24 | {{- end }} 25 | containers: 26 | - name: tcpdump 27 | image: "{{ .Values.tcpdumpImage.registry }}/{{ .Values.tcpdumpImage.repository }}:{{ .Values.tcpdumpImage.tag }}" 28 | imagePullPolicy: {{ .Values.tcpdumpImage.pullPolicy }} 29 | {{- if .Values.resources.enabled}} 30 | resources: 31 | requests: 32 | memory: {{ .Values.resources.tcpdump.requests.memory | quote }} 33 | cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }} 34 | limits: 35 | memory: {{ .Values.resources.tcpdump.limits.memory | quote }} 36 | cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }} 37 | {{- end}} 38 | {{- if .Values.start.tcpdump}} 39 | command: 40 | - /bin/sh 41 | - -c 42 | - /usr/sbin/tcpdump -i any -w /pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap 43 | {{- else}} 44 | command: 45 | - /bin/sleep 46 | - infinity 47 | {{- end}} 48 | {{- if .Values.persistence.enabled}} 49 | volumeMounts: 50 | - mountPath: "/pcap" 51 | name: tcpdump-5gcn-volume 52 | {{- end}} 53 | - name: ausf 54 | image: "{{ .Values.ausfImage.registry }}/{{ .Values.ausfImage.repository }}:{{ .Values.ausfImage.tag }}" 55 | imagePullPolicy: {{ .Values.ausfImage.pullPolicy }} 56 | {{- if .Values.resources.enabled}} 57 | resources: 58 | requests: 59 | memory: {{ .Values.resources.ausf.requests.memory | quote }} 60 | cpu: {{ .Values.resources.ausf.requests.cpu | quote }} 61 | limits: 62 | memory: {{ .Values.resources.ausf.limits.memory | quote }} 63 | cpu: {{ .Values.resources.ausf.limits.cpu | quote }} 64 | {{- end}} 65 | securityContext: 66 | {{- toYaml .Values.securityContext | nindent 12 }} 67 | {{- if .Values.readinessProbe}} 68 | readinessProbe: 69 | exec: 70 | command: 71 | - /bin/bash 72 | - /openair-ausf/bin/healthcheck.sh 73 | initialDelaySeconds: 2 74 | periodSeconds: 3 75 | {{- end}} 76 | {{- if .Values.livenessProbe}} 77 | livenessProbe: 78 | exec: 79 | command: 80 | - /bin/bash 81 | - /openair-ausf/bin/healthcheck.sh 82 | initialDelaySeconds: 10 83 | periodSeconds: 5 84 | {{- end}} 85 | ports: 86 | - containerPort: {{ .Values.ausfConfig.sbiPortHttp1 }} 87 | name: http1 88 | - containerPort: {{ .Values.ausfConfig.sbiPortHttp2 }} 89 | name: http2 90 | env: 91 | - name: TZ 92 | valueFrom: 93 | configMapKeyRef: 94 | name: oai-ausf-configmap 95 | key: tz 96 | - name: INSTANCE_ID 97 | valueFrom: 98 | configMapKeyRef: 99 | name: oai-ausf-configmap 100 | key: instanceId 101 | - name: PID_DIR 102 | valueFrom: 103 | configMapKeyRef: 104 | name: oai-ausf-configmap 105 | key: pidDirectory 106 | - name: REGISTER_NRF 107 | valueFrom: 108 | configMapKeyRef: 109 | name: oai-ausf-configmap 110 | key: registerNrf 111 | - name: AUSF_NAME 112 | valueFrom: 113 | configMapKeyRef: 114 | name: oai-ausf-configmap 115 | key: ausfName 116 | - name: SBI_IF_NAME 117 | valueFrom: 118 | configMapKeyRef: 119 | name: oai-ausf-configmap 120 | key: sbiIfName 121 | - name: SBI_PORT 122 | valueFrom: 123 | configMapKeyRef: 124 | name: oai-ausf-configmap 125 | key: sbiPortHttp1 126 | - name: SBI_HTTP2_PORT 127 | valueFrom: 128 | configMapKeyRef: 129 | name: oai-ausf-configmap 130 | key: sbiPortHttp2 131 | - name: USE_HTTP2 132 | valueFrom: 133 | configMapKeyRef: 134 | name: oai-ausf-configmap 135 | key: useHttp2 136 | - name: USE_FQDN_DNS 137 | valueFrom: 138 | configMapKeyRef: 139 | name: oai-ausf-configmap 140 | key: useFqdnDns 141 | - name: UDM_IP_ADDRESS 142 | valueFrom: 143 | configMapKeyRef: 144 | name: oai-ausf-configmap 145 | key: udmIpAddress 146 | - name: UDM_PORT 147 | valueFrom: 148 | configMapKeyRef: 149 | name: oai-ausf-configmap 150 | key: udmPort 151 | - name: UDM_VERSION_NB 152 | valueFrom: 153 | configMapKeyRef: 154 | name: oai-ausf-configmap 155 | key: udmVersionNb 156 | - name: UDM_FQDN 157 | valueFrom: 158 | configMapKeyRef: 159 | name: oai-ausf-configmap 160 | key: udmFqdn 161 | - name: NRF_IPV4_ADDRESS 162 | valueFrom: 163 | configMapKeyRef: 164 | name: oai-ausf-configmap 165 | key: nrfIpAddress 166 | - name: NRF_PORT 167 | valueFrom: 168 | configMapKeyRef: 169 | name: oai-ausf-configmap 170 | key: nrfPort 171 | - name: NRF_API_VERSION 172 | valueFrom: 173 | configMapKeyRef: 174 | name: oai-ausf-configmap 175 | key: nrfApiVersion 176 | - name: NRF_FQDN 177 | valueFrom: 178 | configMapKeyRef: 179 | name: oai-ausf-configmap 180 | key: nrfFqdn 181 | volumes: 182 | {{- if .Values.persistence.enabled}} 183 | - name: tcpdump-5gcn-volume 184 | persistenceVolumeClaim: 185 | claimName: {{ .Values.persistence.tcpdump.claimName }} 186 | {{- end}} 187 | dnsPolicy: ClusterFirst 188 | restartPolicy: Always 189 | schedulerName: default-scheduler 190 | {{- if .Values.serviceAccount.enabled}} 191 | serviceAccountName: {{ .Values.serviceAccount.name }} 192 | {{- end}} 193 | terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} 194 | {{- if .Values.nodeSelector}} 195 | nodeSelector: 196 | {{- toYaml .Values.nodeSelector | nindent 12 }} 197 | {{- end }} 198 | {{- if .Values.nodeName}} 199 | nodeName: {{ .Values.nodeName }} 200 | {{- end }} -------------------------------------------------------------------------------- /oai-5g-charts/3-udm/templates/oai-udm-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ .Chart.Name }} 5 | labels: 6 | {{- include "oai-udm.labels" . | nindent 4 }} 7 | spec: 8 | replicas: 1 9 | selector: 10 | matchLabels: 11 | {{- include "oai-udm.selectorLabels" . | nindent 6 }} 12 | strategy: 13 | type: Recreate 14 | template: 15 | metadata: 16 | labels: 17 | {{- include "oai-udm.selectorLabels" . | nindent 8 }} 18 | spec: 19 | securityContext: 20 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 21 | {{- if .Values.imagePullSecrets.create }} 22 | imagePullSecrets: 23 | {{ toYaml .Values.imagePullSecrets.pullSecrets | indent 8 }} 24 | {{- end }} 25 | containers: 26 | - name: tcpdump 27 | image: "{{ .Values.tcpdumpImage.registry }}/{{ .Values.tcpdumpImage.repository }}:{{ .Values.tcpdumpImage.tag }}" 28 | imagePullPolicy: {{ .Values.tcpdumpImage.pullPolicy }} 29 | {{- if .Values.resources.enabled}} 30 | resources: 31 | requests: 32 | memory: {{ .Values.resources.tcpdump.requests.memory | quote }} 33 | cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }} 34 | limits: 35 | memory: {{ .Values.resources.tcpdump.limits.memory | quote }} 36 | cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }} 37 | {{- end}} 38 | {{- if .Values.start.tcpdump}} 39 | command: 40 | - /bin/sleep 41 | - infinity 42 | {{- else}} 43 | command: 44 | - /bin/sleep 45 | - infinity 46 | {{- end}} 47 | {{- if .Values.persistence.enabled}} 48 | volumeMounts: 49 | - mountPath: "/pcap" 50 | name: tcpdump-5gcn-volume 51 | {{- end}} 52 | - name: udm 53 | image: "{{ .Values.udmImage.registry }}/{{ .Values.udmImage.repository }}:{{ .Values.udmImage.tag }}" 54 | imagePullPolicy: {{ .Values.udmImage.pullPolicy }} 55 | {{- if .Values.resources.enabled}} 56 | resources: 57 | requests: 58 | memory: {{ .Values.resources.udm.requests.memory | quote }} 59 | cpu: {{ .Values.resources.udm.requests.cpu | quote }} 60 | limits: 61 | memory: {{ .Values.resources.udm.limits.memory | quote }} 62 | cpu: {{ .Values.resources.udm.limits.cpu | quote }} 63 | {{- end}} 64 | securityContext: 65 | {{- toYaml .Values.securityContext | nindent 10 }} 66 | {{- if .Values.readinessProbe}} 67 | readinessProbe: 68 | exec: 69 | command: 70 | - /bin/bash 71 | - /openair-udm/bin/healthcheck.sh 72 | initialDelaySeconds: 2 73 | periodSeconds: 3 74 | {{- end}} 75 | {{- if .Values.livenessProbe}} 76 | livenessProbe: 77 | exec: 78 | command: 79 | - /bin/bash 80 | - /openair-udm/bin/healthcheck.sh 81 | initialDelaySeconds: 10 82 | periodSeconds: 5 83 | {{- end}} 84 | env: 85 | - name: TZ 86 | valueFrom: 87 | configMapKeyRef: 88 | name: oai-udm-configmap 89 | key: tz 90 | - name: INSTANCE 91 | valueFrom: 92 | configMapKeyRef: 93 | name: oai-udm-configmap 94 | key: instance 95 | - name: PID_DIRECTORY 96 | valueFrom: 97 | configMapKeyRef: 98 | name: oai-udm-configmap 99 | key: pidDirectory 100 | - name: UDM_NAME 101 | valueFrom: 102 | configMapKeyRef: 103 | name: oai-udm-configmap 104 | key: udmName 105 | - name: SBI_IF_NAME 106 | valueFrom: 107 | configMapKeyRef: 108 | name: oai-udm-configmap 109 | key: sbiIfName 110 | - name: SBI_PORT 111 | valueFrom: 112 | configMapKeyRef: 113 | name: oai-udm-configmap 114 | key: sbiPortHttp1 115 | - name: SBI_HTTP2_PORT 116 | valueFrom: 117 | configMapKeyRef: 118 | name: oai-udm-configmap 119 | key: sbiPortHttp2 120 | - name: USE_HTTP2 121 | valueFrom: 122 | configMapKeyRef: 123 | name: oai-udm-configmap 124 | key: useHttp2 125 | - name: UDM_VERSION_NB 126 | valueFrom: 127 | configMapKeyRef: 128 | name: oai-udm-configmap 129 | key: udmApiVersionNb 130 | - name: USE_FQDN_DNS 131 | valueFrom: 132 | configMapKeyRef: 133 | name: oai-udm-configmap 134 | key: useFqdnDns 135 | - name: UDR_IP_ADDRESS 136 | valueFrom: 137 | configMapKeyRef: 138 | name: oai-udm-configmap 139 | key: udrIpAddress 140 | - name: UDR_PORT 141 | valueFrom: 142 | configMapKeyRef: 143 | name: oai-udm-configmap 144 | key: udrPort 145 | - name: UDR_VERSION_NB 146 | valueFrom: 147 | configMapKeyRef: 148 | name: oai-udm-configmap 149 | key: udrApiVersionNb 150 | - name: UDR_FQDN 151 | valueFrom: 152 | configMapKeyRef: 153 | name: oai-udm-configmap 154 | key: udrFqdn 155 | - name: REGISTER_NRF 156 | valueFrom: 157 | configMapKeyRef: 158 | name: oai-udm-configmap 159 | key: nrfRegistration 160 | - name: NRF_IPV4_ADDRESS 161 | valueFrom: 162 | configMapKeyRef: 163 | name: oai-udm-configmap 164 | key: nrfIpAddress 165 | - name: NRF_PORT 166 | valueFrom: 167 | configMapKeyRef: 168 | name: oai-udm-configmap 169 | key: nrfPort 170 | - name: NRF_API_VERSION 171 | valueFrom: 172 | configMapKeyRef: 173 | name: oai-udm-configmap 174 | key: nrfApiVersionNb 175 | - name: NRF_FQDN 176 | valueFrom: 177 | configMapKeyRef: 178 | name: oai-udm-configmap 179 | key: nrfFqdn 180 | readinessProbe: 181 | exec: 182 | command: 183 | - /bin/bash 184 | - /openair-udm/bin/healthcheck.sh 185 | initialDelaySeconds: 2 186 | periodSeconds: 3 187 | securityContext: 188 | privileged: false 189 | ports: 190 | - containerPort: {{ .Values.udmConfig.sbiPortHttp1 }} 191 | name: http1 192 | - containerPort: {{ .Values.udmConfig.sbiPortHttp2 }} 193 | name: http2 194 | volumes: 195 | {{- if .Values.persistence.enabled}} 196 | - name: tcpdump-5gcn-volume 197 | persistenceVolumeClaim: 198 | claimName: {{ .Values.persistence.tcpdump.claimName }} 199 | {{- end}} 200 | dnsPolicy: ClusterFirst 201 | restartPolicy: Always 202 | {{- if .Values.serviceAccount.enabled}} 203 | serviceAccountName: {{ .Values.serviceAccount.name }} 204 | {{- end}} 205 | schedulerName: default-scheduler 206 | terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} 207 | {{- if .Values.nodeSelector}} 208 | nodeSelector: 209 | {{- toYaml .Values.nodeSelector | nindent 12 }} 210 | {{- end }} 211 | {{- if .Values.nodeName}} 212 | nodeName: {{ .Values.nodeName }} 213 | {{- end }} 214 | -------------------------------------------------------------------------------- /oai-5g-charts/2-udr/templates/oai-udr-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ .Chart.Name }} 5 | labels: 6 | {{- include "oai-udr.labels" . | nindent 4 }} 7 | spec: 8 | replicas: {{ .Values.replicas }} 9 | selector: 10 | matchLabels: 11 | {{- include "oai-udr.selectorLabels" . | nindent 6 }} 12 | strategy: 13 | type: Recreate 14 | template: 15 | metadata: 16 | labels: 17 | {{- include "oai-udr.selectorLabels" . | nindent 8 }} 18 | spec: 19 | securityContext: 20 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 21 | {{- if .Values.imagePullSecrets.create }} 22 | imagePullSecrets: 23 | {{ toYaml .Values.imagePullSecrets.pullSecrets | indent 8 }} 24 | {{- end }} 25 | containers: 26 | - name: tcpdump 27 | image: "{{ .Values.tcpdumpImage.registry }}/{{ .Values.tcpdumpImage.repository }}:{{ .Values.tcpdumpImage.version }}" 28 | imagePullPolicy: {{ .Values.tcpdumpImage.pullPolicy }} 29 | {{- if .Values.resources.enabled}} 30 | resources: 31 | requests: 32 | memory: {{ .Values.resources.tcpdump.requests.memory | quote }} 33 | cpu: {{ .Values.resources.tcpdump.requests.cpu | quote }} 34 | limits: 35 | memory: {{ .Values.resources.tcpdump.limits.memory | quote }} 36 | cpu: {{ .Values.resources.tcpdump.limits.cpu | quote }} 37 | {{- end}} 38 | {{- if .Values.start.tcpdump}} 39 | command: 40 | - /bin/sh 41 | - -c 42 | - /usr/sbin/tcpdump -i any -w /pcap/{{ .Chart.Name }}_`date +%Y-%m-%d_%H_%M-%S-%Z`.pcap 43 | {{- else}} 44 | command: 45 | - /bin/sleep 46 | - infinity 47 | {{- end}} 48 | {{- if .Values.persistence.enabled}} 49 | volumeMounts: 50 | - mountPath: "/pcap" 51 | name: tcpdump-5gcn-volume 52 | {{- end}} 53 | - name: udr 54 | image: "{{ .Values.udrImage.registry }}/{{ .Values.udrImage.repository }}:{{ .Values.udrImage.tag }}" 55 | imagePullPolicy: {{ .Values.udrImage.pullPolicy }} 56 | {{- if .Values.resources.enabled}} 57 | resources: 58 | requests: 59 | memory: {{ .Values.resources.udr.requests.memory | quote }} 60 | cpu: {{ .Values.resources.udr.requests.cpu | quote }} 61 | limits: 62 | memory: {{ .Values.resources.udr.limits.memory | quote }} 63 | cpu: {{ .Values.resources.udr.limits.cpu | quote }} 64 | {{- end}} 65 | securityContext: 66 | {{- toYaml .Values.securityContext | nindent 10 }} 67 | {{- if .Values.readinessProbe}} 68 | readinessProbe: 69 | exec: 70 | command: 71 | - /bin/bash 72 | - /openair-udr/bin/healthcheck.sh 73 | initialDelaySeconds: 2 74 | periodSeconds: 3 75 | {{- end}} 76 | {{- if .Values.livenessProbe}} 77 | livenessProbe: 78 | exec: 79 | command: 80 | - /bin/bash 81 | - /openair-udr/bin/healthcheck.sh 82 | initialDelaySeconds: 15 83 | periodSeconds: 5 84 | {{- end}} 85 | ports: 86 | - containerPort: {{ .Values.udrConfig.sbiPortHttp1 }} 87 | name: http1 88 | - containerPort: {{ .Values.udrConfig.sbiPortHttp2 }} 89 | name: http2 90 | env: 91 | - name: TZ 92 | valueFrom: 93 | configMapKeyRef: 94 | name: {{ .Chart.Name }}-configmap 95 | key: tz 96 | - name: UDR_NAME 97 | valueFrom: 98 | configMapKeyRef: 99 | name: {{ .Chart.Name }}-configmap 100 | key: udrName 101 | - name: INSTANCE 102 | valueFrom: 103 | configMapKeyRef: 104 | name: {{ .Chart.Name }}-configmap 105 | key: instance 106 | - name: PID_DIRECTORY 107 | valueFrom: 108 | configMapKeyRef: 109 | name: {{ .Chart.Name }}-configmap 110 | key: pidDirectory 111 | - name: USE_FQDN_DNS 112 | valueFrom: 113 | configMapKeyRef: 114 | name: {{ .Chart.Name }}-configmap 115 | key: useFqdnDns 116 | - name: UDR_INTERFACE_NAME_FOR_NUDR 117 | valueFrom: 118 | configMapKeyRef: 119 | name: {{ .Chart.Name }}-configmap 120 | key: sbiIfName 121 | - name: REGISTER_NRF 122 | valueFrom: 123 | configMapKeyRef: 124 | name: {{ .Chart.Name }}-configmap 125 | key: registerNrf 126 | - name: USE_HTTP2 127 | valueFrom: 128 | configMapKeyRef: 129 | name: {{ .Chart.Name }}-configmap 130 | key: usehttp2 131 | - name: UDR_INTERFACE_PORT_FOR_NUDR 132 | valueFrom: 133 | configMapKeyRef: 134 | name: {{ .Chart.Name }}-configmap 135 | key: sbiPortHttp1 136 | - name: UDR_INTERFACE_HTTP2_PORT_FOR_NUDR 137 | valueFrom: 138 | configMapKeyRef: 139 | name: {{ .Chart.Name }}-configmap 140 | key: sbiPortHttp2 141 | - name: UDR_API_VERSION 142 | valueFrom: 143 | configMapKeyRef: 144 | name: {{ .Chart.Name }}-configmap 145 | key: udrApiVersion 146 | - name: NRF_IPV4_ADDRESS 147 | valueFrom: 148 | configMapKeyRef: 149 | name: {{ .Chart.Name }}-configmap 150 | key: nrfIpv4Address 151 | - name: NRF_PORT 152 | valueFrom: 153 | configMapKeyRef: 154 | name: {{ .Chart.Name }}-configmap 155 | key: nrfPort 156 | - name: NRF_API_VERSION 157 | valueFrom: 158 | configMapKeyRef: 159 | name: {{ .Chart.Name }}-configmap 160 | key: nrfApiVersion 161 | - name: NRF_FQDN 162 | valueFrom: 163 | configMapKeyRef: 164 | name: {{ .Chart.Name }}-configmap 165 | key: nrfFqdn 166 | - name: MYSQL_IPV4_ADDRESS 167 | valueFrom: 168 | configMapKeyRef: 169 | name: {{ .Chart.Name }}-configmap 170 | key: mySqlServer 171 | - name: MYSQL_USER 172 | valueFrom: 173 | configMapKeyRef: 174 | name: {{ .Chart.Name }}-configmap 175 | key: mySqlUser 176 | - name: DB_CONNECTION_TIMEOUT 177 | valueFrom: 178 | configMapKeyRef: 179 | name: {{ .Chart.Name }}-configmap 180 | key: dbConnectionTimeout 181 | - name: MYSQL_PASS 182 | valueFrom: 183 | configMapKeyRef: 184 | name: {{ .Chart.Name }}-configmap 185 | key: mySqlPass 186 | - name: MYSQL_DB 187 | valueFrom: 188 | configMapKeyRef: 189 | name: {{ .Chart.Name }}-configmap 190 | key: mySqlDb 191 | - name: WAIT_MYSQL 192 | valueFrom: 193 | configMapKeyRef: 194 | name: {{ .Chart.Name }}-configmap 195 | key: waitMysql 196 | volumes: 197 | {{- if .Values.persistence.enabled}} 198 | - name: tcpdump-5gcn-volume 199 | persistenceVolumeClaim: 200 | claimName: {{ .Values.persistence.tcpdump.claimName }} 201 | {{- end}} 202 | dnsPolicy: ClusterFirst 203 | restartPolicy: Always 204 | schedulerName: default-scheduler 205 | {{- if .Values.serviceAccount.enabled}} 206 | serviceAccountName: {{ .Values.serviceAccount.name }} 207 | {{- end}} 208 | terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} 209 | {{- if .Values.nodeSelector}} 210 | nodeSelector: 211 | {{- toYaml .Values.nodeSelector | nindent 12 }} 212 | {{- end }} 213 | {{- if .Values.nodeName}} 214 | nodeName: {{ .Values.nodeName }} 215 | {{- end }} 216 | -------------------------------------------------------------------------------- /oai-5g-charts/7-smf/templates/oai-smf-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Chart.Name }}-configmap 5 | data: 6 | {{- range $key, $val := .Values.smfConfig }} 7 | {{ $key }}: {{ $val | quote }} 8 | {{- end }} 9 | smfConfiguration: | 10 | SMF = 11 | { 12 | FQDN = "{{ .Values.smfConfig.smfName }}"; 13 | INSTANCE = {{ .Values.smfConfig.instance }}; # 0 is the default 14 | PID_DIRECTORY = "{{ .Values.smfConfig.pidDirectory }}"; # /var/run is the default 15 | INTERFACES: 16 | { 17 | N4: 18 | { 19 | # SMF binded interface for N4 communication (UPF) 20 | INTERFACE_NAME = "{{ .Values.smfParameters.interfaceNameForN4 }}"; # YOUR NETWORK CONFIG HERE 21 | IPV4_ADDRESS = "read"; 22 | }; 23 | 24 | SBI: 25 | { 26 | # SMF binded interface for SBI interface (e.g., communication with AMF, UDM) 27 | INTERFACE_NAME = "{{ .Values.smfParameters.interfaceNameForSBI }}"; # YOUR NETWORK CONFIG HERE 28 | IPV4_ADDRESS = "read"; 29 | PORT = {{ .Values.smfParameters.sbiPortHttp1 }}; # YOUR NETWORK CONFIG HERE (default: 80) 30 | HTTP2_PORT = {{ .Values.smfParameters.sbiPortHttp2 }}; # YOUR NETWORK CONFIG HERE 31 | API_VERSION = "{{ .Values.smfParameters.apiVersion }}"; # YOUR SMF API VERSION CONFIG HERE 32 | }; 33 | 34 | }; 35 | 36 | # DNN configurations with pool of UE assigned IP addresses 37 | # Do not make IP pools overlap 38 | # first IPv4 address X.Y.Z.1 is reserved for GTP network device on UPF 39 | DNN_LIST = ( 40 | # PDU_SESSION_TYPE choice in {IPv4, IPv6, IPv4v6} 41 | # DNN IP ADDRESS RANGE format is for example: "12.2.1.2 - 12.2.1.128" 42 | {DNN_NI = "{{ .Values.smfParameters.dnn }}"; PDU_SESSION_TYPE = "{{ .Values.smfParameters.pduSessionType }}"; IPV4_RANGE = "{{ .Values.smfParameters.dnnRange1 }}"; IPV6_PREFIX = "2001:1:2::/64"}, 43 | {DNN_NI = "{{ .Values.smfParameters.dnn }}"; PDU_SESSION_TYPE = "{{ .Values.smfParameters.pduSessionType }}"; IPV4_RANGE = "{{ .Values.smfParameters.dnnRange2 }}"; IPV6_PREFIX = "3001:1:2::/64"} 44 | ); 45 | 46 | # DNS address communicated to UEs 47 | DEFAULT_DNS_IPV4_ADDRESS = "{{ .Values.smfParameters.dnsPrimary }}"; # YOUR DNS CONFIG HERE 48 | DEFAULT_DNS_SEC_IPV4_ADDRESS = "{{ .Values.smfParameters.dnsSecondary }}"; # YOUR DNS CONFIG HERE 49 | # IPV6 tunnels are not supported 50 | DEFAULT_DNS_IPV6_ADDRESS = "2001:4860:4860::8888"; # YOUR DNS CONFIG HERE 51 | DEFAULT_DNS_SEC_IPV6_ADDRESS = "2001:4860:4860::8844"; # YOUR DNS CONFIG HERE 52 | 53 | #Default P-CSCF server 54 | DEFAULT_CSCF_IPV4_ADDRESS = "{{ .Values.smfParameters.dnsDefaultCscf }}"; 55 | DEFAULT_CSCF_IPV6_ADDRESS = "fe80::7915:f408:1787:db8b"; 56 | 57 | # DEFAULT UE MTU 58 | UE_MTU = {{ .Values.smfParameters.ueMtu }}; 59 | 60 | # SUPPORT FEATURES 61 | SUPPORT_FEATURES: 62 | { 63 | # STRING, {"yes", "no"}, 64 | REGISTER_NRF = "{{ .Values.smfConnections.nrf.registration }}"; # Set to yes if SMF resgisters to an NRF 65 | DISCOVER_UPF = "{{ .Values.smfConnections.upf.discover }}"; # Set to yes to enable UPF discovery and selection 66 | DISCOVER_PCF = "{{ .Values.smfConnections.pcf.discover }}"; # Set to yes to enable PCF discovery and selection 67 | FORCE_PUSH_PROTOCOL_CONFIGURATION_OPTIONS = "no"; # Non standard feature, normally should be set to "no", 68 | # but you may need to set to yes for UE that do not explicitly request a PDN address through NAS signalling 69 | USE_LOCAL_SUBSCRIPTION_INFO = "{{ .Values.smfConnections.useLocalSubscriptionInfo }}"; # Set to yes if SMF uses local subscription information instead of from an UDM 70 | USE_LOCAL_PCC_RULES = "{{ .Values.smfConnections.useLocalPCCRules }}"; # Set to yes if SMF uses local PCC rules instead of from an PCF 71 | USE_FQDN_DNS = "{{ .Values.smfConnections.useFqdnDNS }}"; # Set to yes if AMF/UDM/NRF/UPF will relying on a DNS to resolve FQDN 72 | HTTP_VERSION = 1; # Default: 1 73 | } 74 | 75 | AMF : 76 | { 77 | IPV4_ADDRESS = "{{ .Values.smfConnections.amf.ip }}"; # YOUR AMF CONFIG HERE 78 | PORT = {{ .Values.smfConnections.amf.port }}; # YOUR AMF CONFIG HERE (default: 80) 79 | API_VERSION = "{{ .Values.smfConnections.amf.apiVersion }}"; # YOUR AMF API VERSION FOR SBI CONFIG HERE 80 | FQDN = "{{ .Values.smfConnections.amf.fqdn }}" # YOUR AMF FQDN CONFIG HERE 81 | }; 82 | 83 | UDM : 84 | { 85 | IPV4_ADDRESS = "{{ .Values.smfConnections.udm.ip }}"; # YOUR UDM CONFIG HERE 86 | PORT = {{ .Values.smfConnections.udm.port }}; # YOUR UDM CONFIG HERE (default: 80) 87 | API_VERSION = "{{ .Values.smfConnections.udm.apiVersion }}"; # YOUR UDM API VERSION FOR SBI CONFIG HERE 88 | FQDN = "{{ .Values.smfConnections.udm.fqdn }}" # YOUR UDM FQDN CONFIG HERE 89 | }; 90 | 91 | NRF : 92 | { 93 | IPV4_ADDRESS = "{{ .Values.smfConnections.nrf.ip }}"; # YOUR NRF CONFIG HERE 94 | PORT = {{ .Values.smfConnections.nrf.port }}; # YOUR NRF CONFIG HERE (default: 80) 95 | API_VERSION = "{{ .Values.smfConnections.nrf.apiVersion }}"; # YOUR NRF API VERSION FOR SBI CONFIG HERE 96 | FQDN = "{{ .Values.smfConnections.nrf.fqdn }}" # YOUR NRF FQDN CONFIG HERE 97 | }; 98 | 99 | PCF : 100 | { 101 | IPV4_ADDRESS = "{{ .Values.smfConnections.pcf.ip }}"; # YOUR PCF CONFIG HERE 102 | PORT = {{ .Values.smfConnections.pcf.port }}; # YOUR PCF CONFIG HERE (default: 80) 103 | API_VERSION = "{{ .Values.smfConnections.pcf.apiVersion }}"; # YOUR PCF API VERSION FOR SBI CONFIG HERE 104 | FQDN = "{{ .Values.smfConnections.pcf.fqdn }}" # YOUR PCF FQDN CONFIG HERE 105 | }; 106 | 107 | UPF_LIST = ( 108 | {IPV4_ADDRESS = "{{ .Values.smfConnections.upf.ip }}"; 109 | FQDN = "{{ .Values.smfConnections.upf.fqdn }}"; NWI_LIST = ({DOMAIN_ACCESS = "{{ .Values.smfConnections.upf.domainAccess }}", 110 | DOMAIN_CORE = "{{ .Values.smfConnections.upf.domainCore }}"})} # YOUR UPF CONFIG HERE 111 | ); # NWI_LIST IS OPTIONAL PARAMETER 112 | 113 | LOCAL_CONFIGURATION : 114 | { 115 | SESSION_MANAGEMENT_SUBSCRIPTION_LIST = ( 116 | { NSSAI_SST = {{ .Values.smfParameters.nssaiSst }}, NSSAI_SD = "{{ .Values.smfParameters.nssaiSd }}", DNN = "{{ .Values.smfParameters.dnn }}", DEFAULT_SESSION_TYPE = "{{ .Values.smfParameters.defaultSessionType }}", DEFAULT_SSC_MODE = {{ .Values.smfParameters.defaultSscMode }}, 117 | QOS_PROFILE_5QI = {{ .Values.smfParameters.qosProfile5QI }}, QOS_PROFILE_PRIORITY_LEVEL = {{ .Values.smfParameters.qosProfilePriorityLevel }}, QOS_PROFILE_ARP_PRIORITY_LEVEL = {{ .Values.smfParameters.qosProfileAppPriorityLevel }}, QOS_PROFILE_ARP_PREEMPTCAP = "{{ .Values.smfParameters.qosProfileArpPreEmptCap }}", 118 | QOS_PROFILE_ARP_PREEMPTVULN = "{{ .Values.smfParameters.qosProfileArpPreEmptVuln }}", SESSION_AMBR_UL = "{{ .Values.smfParameters.sessionAmbrDL }}", SESSION_AMBR_DL = "{{ .Values.smfParameters.sessionAmbrUL }}"}, 119 | { NSSAI_SST = {{ .Values.smfParameters.nssaiSst }}, NSSAI_SD = "{{ .Values.smfParameters.nssaiSd }}", DNN = "{{ .Values.smfParameters.dnn }}", DEFAULT_SESSION_TYPE = "{{ .Values.smfParameters.defaultSessionType }}", DEFAULT_SSC_MODE = {{ .Values.smfParameters.defaultSscMode }}, 120 | QOS_PROFILE_5QI = {{ .Values.smfParameters.qosProfile5QI }}, QOS_PROFILE_PRIORITY_LEVEL = {{ .Values.smfParameters.qosProfilePriorityLevel }}, QOS_PROFILE_ARP_PRIORITY_LEVEL = {{ .Values.smfParameters.qosProfileAppPriorityLevel }}, QOS_PROFILE_ARP_PREEMPTCAP = "{{ .Values.smfParameters.qosProfileArpPreEmptCap }}", 121 | QOS_PROFILE_ARP_PREEMPTVULN = "{{ .Values.smfParameters.qosProfileArpPreEmptVuln }}", SESSION_AMBR_UL = "{{ .Values.smfParameters.sessionAmbrDL }}", SESSION_AMBR_DL = "{{ .Values.smfParameters.sessionAmbrUL }}"} 122 | ); 123 | }; 124 | }; 125 | -------------------------------------------------------------------------------- /oai-5g-charts/0-mysql/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ template "mysql.fullname" . }} 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: {{ template "mysql.fullname" . }} 8 | chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" 9 | app.kubernetes.io/instance: "{{ .Release.Name }}" 10 | heritage: "{{ .Release.Service }}" 11 | {{- with .Values.deploymentAnnotations }} 12 | annotations: 13 | {{ toYaml . | indent 4 }} 14 | {{- end }} 15 | 16 | spec: 17 | strategy: 18 | {{ toYaml .Values.strategy | indent 4 }} 19 | selector: 20 | matchLabels: 21 | app: {{ template "mysql.fullname" . }} 22 | app.kubernetes.io/instance: {{ .Release.Name }} 23 | template: 24 | metadata: 25 | labels: 26 | app: {{ template "mysql.fullname" . }} 27 | app.kubernetes.io/instance: {{ .Release.Name }} 28 | {{- with .Values.podLabels }} 29 | {{ toYaml . | indent 8 }} 30 | {{- end }} 31 | {{- with .Values.podAnnotations }} 32 | annotations: 33 | {{ toYaml . | indent 8 }} 34 | {{- end }} 35 | spec: 36 | {{- if .Values.schedulerName }} 37 | schedulerName: "{{ .Values.schedulerName }}" 38 | {{- end }} 39 | {{- if .Values.imagePullSecrets }} 40 | imagePullSecrets: 41 | {{ toYaml .Values.imagePullSecrets | indent 8 }} 42 | {{- end }} 43 | {{- if .Values.priorityClassName }} 44 | priorityClassName: "{{ .Values.priorityClassName }}" 45 | {{- end }} 46 | {{- if .Values.securityContext.enabled }} 47 | securityContext: 48 | fsGroup: {{ .Values.securityContext.fsGroup }} 49 | runAsUser: {{ .Values.securityContext.runAsUser }} 50 | {{- end }} 51 | serviceAccountName: {{ template "mysql.serviceAccountName" . }} 52 | initContainers: 53 | - name: "remove-lost-found" 54 | image: "{{ .Values.busybox.image}}:{{ .Values.busybox.tag }}" 55 | imagePullPolicy: {{ .Values.imagePullPolicy | quote }} 56 | resources: 57 | {{ toYaml .Values.initContainer.resources | indent 10 }} 58 | command: ["rm", "-fr", "/var/lib/mysql/lost+found"] 59 | volumeMounts: 60 | - name: data 61 | mountPath: /var/lib/mysql 62 | {{- if .Values.persistence.subPath }} 63 | subPath: {{ .Values.persistence.subPath }} 64 | {{- end }} 65 | {{- if .Values.extraInitContainers }} 66 | {{ tpl .Values.extraInitContainers . | indent 6 }} 67 | {{- end }} 68 | {{- if .Values.nodeSelector }} 69 | nodeSelector: 70 | {{ toYaml .Values.nodeSelector | indent 8 }} 71 | {{- end }} 72 | {{- if .Values.affinity }} 73 | affinity: 74 | {{ toYaml .Values.affinity | indent 8 }} 75 | {{- end }} 76 | {{- if .Values.tolerations }} 77 | tolerations: 78 | {{ toYaml .Values.tolerations | indent 8 }} 79 | {{- end }} 80 | containers: 81 | - name: {{ template "mysql.fullname" . }} 82 | image: "{{ .Values.image }}:{{ .Values.imageTag }}" 83 | imagePullPolicy: {{ .Values.imagePullPolicy | quote }} 84 | 85 | {{- with .Values.args }} 86 | args: 87 | {{- range . }} 88 | - {{ . | quote }} 89 | {{- end }} 90 | {{- end }} 91 | resources: 92 | {{ toYaml .Values.resources | indent 10 }} 93 | env: 94 | {{- if .Values.mysqlAllowEmptyPassword }} 95 | - name: MYSQL_ALLOW_EMPTY_PASSWORD 96 | value: "true" 97 | {{- end }} 98 | {{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlRootPassword)) }} 99 | - name: MYSQL_ROOT_PASSWORD 100 | valueFrom: 101 | secretKeyRef: 102 | name: {{ template "mysql.secretName" . }} 103 | key: mysql-root-password 104 | {{- if .Values.mysqlAllowEmptyPassword }} 105 | optional: true 106 | {{- end }} 107 | {{- end }} 108 | {{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlPassword)) }} 109 | - name: MYSQL_PASSWORD 110 | valueFrom: 111 | secretKeyRef: 112 | name: {{ template "mysql.secretName" . }} 113 | key: mysql-password 114 | {{- if or .Values.mysqlAllowEmptyPassword (empty .Values.mysqlUser) }} 115 | optional: true 116 | {{- end }} 117 | {{- end }} 118 | - name: MYSQL_USER 119 | value: {{ default "" .Values.mysqlUser | quote }} 120 | - name: MYSQL_DATABASE 121 | value: {{ default "" .Values.mysqlDatabase | quote }} 122 | {{- if .Values.timezone }} 123 | - name: TZ 124 | value: {{ .Values.timezone }} 125 | {{- end }} 126 | {{- if .Values.extraEnvVars }} 127 | {{ tpl .Values.extraEnvVars . | indent 8 }} 128 | {{- end }} 129 | ports: 130 | - name: mysql 131 | containerPort: 3306 132 | {{- if .Values.mysqlx.port.enabled }} 133 | - name: mysqlx 134 | port: 33060 135 | {{- end }} 136 | livenessProbe: 137 | exec: 138 | command: 139 | {{- if .Values.mysqlAllowEmptyPassword }} 140 | - mysqladmin 141 | - ping 142 | {{- else }} 143 | - sh 144 | - -c 145 | - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}" 146 | {{- end }} 147 | initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} 148 | periodSeconds: {{ .Values.livenessProbe.periodSeconds }} 149 | timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} 150 | successThreshold: {{ .Values.livenessProbe.successThreshold }} 151 | failureThreshold: {{ .Values.livenessProbe.failureThreshold }} 152 | readinessProbe: 153 | exec: 154 | command: 155 | {{- if .Values.mysqlAllowEmptyPassword }} 156 | - mysqladmin 157 | - ping 158 | {{- else }} 159 | - sh 160 | - -c 161 | - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}" 162 | {{- end }} 163 | initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} 164 | periodSeconds: {{ .Values.readinessProbe.periodSeconds }} 165 | timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} 166 | successThreshold: {{ .Values.readinessProbe.successThreshold }} 167 | failureThreshold: {{ .Values.readinessProbe.failureThreshold }} 168 | volumeMounts: 169 | - name: data 170 | mountPath: /var/lib/mysql 171 | {{- if .Values.persistence.subPath }} 172 | subPath: {{ .Values.persistence.subPath }} 173 | {{- end }} 174 | {{- if .Values.configurationFiles }} 175 | {{- range $key, $val := .Values.configurationFiles }} 176 | - name: configurations 177 | mountPath: {{ $.Values.configurationFilesPath }}{{ $key }} 178 | subPath: {{ $key }} 179 | {{- end -}} 180 | {{- end }} 181 | - name: migrations 182 | mountPath: /docker-entrypoint-initdb.d 183 | {{- if .Values.ssl.enabled }} 184 | - name: certificates 185 | mountPath: /ssl 186 | {{- end }} 187 | {{- if .Values.extraVolumeMounts }} 188 | {{ tpl .Values.extraVolumeMounts . | indent 8 }} 189 | {{- end }} 190 | {{- if .Values.metrics.enabled }} 191 | - name: metrics 192 | image: "{{ .Values.metrics.image }}:{{ .Values.metrics.imageTag }}" 193 | imagePullPolicy: {{ .Values.metrics.imagePullPolicy | quote }} 194 | {{- if .Values.mysqlAllowEmptyPassword }} 195 | command: 196 | - 'sh' 197 | - '-c' 198 | - 'DATA_SOURCE_NAME="root@(localhost:3306)/" /bin/mysqld_exporter' 199 | {{- else }} 200 | env: 201 | - name: MYSQL_ROOT_PASSWORD 202 | valueFrom: 203 | secretKeyRef: 204 | name: {{ template "mysql.secretName" . }} 205 | key: mysql-root-password 206 | command: 207 | - 'sh' 208 | - '-c' 209 | - 'DATA_SOURCE_NAME="root:$MYSQL_ROOT_PASSWORD@(localhost:3306)/" /bin/mysqld_exporter' 210 | {{- end }} 211 | {{- range $f := .Values.metrics.flags }} 212 | - {{ $f | quote }} 213 | {{- end }} 214 | ports: 215 | - name: metrics 216 | containerPort: 9104 217 | livenessProbe: 218 | httpGet: 219 | path: / 220 | port: metrics 221 | initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }} 222 | timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }} 223 | readinessProbe: 224 | httpGet: 225 | path: / 226 | port: metrics 227 | initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }} 228 | timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }} 229 | resources: 230 | {{ toYaml .Values.metrics.resources | indent 10 }} 231 | {{- end }} 232 | volumes: 233 | {{- if .Values.configurationFiles }} 234 | - name: configurations 235 | configMap: 236 | name: {{ template "mysql.fullname" . }}-configuration 237 | {{- end }} 238 | - name: migrations 239 | configMap: 240 | name: {{ template "mysql.fullname" . }}-initialization 241 | {{- if .Values.ssl.enabled }} 242 | - name: certificates 243 | secret: 244 | secretName: {{ .Values.ssl.secret }} 245 | {{- end }} 246 | - name: data 247 | {{- if .Values.persistence.enabled }} 248 | persistentVolumeClaim: 249 | claimName: {{ .Values.persistence.existingClaim | default (include "mysql.fullname" .) }} 250 | {{- else }} 251 | emptyDir: {} 252 | {{- end -}} 253 | {{- if .Values.extraVolumes }} 254 | {{ tpl .Values.extraVolumes . | indent 6 }} 255 | {{- end }} 256 | -------------------------------------------------------------------------------- /tutorials/srsRAN-and-magma/ran_configurations/enb.conf: -------------------------------------------------------------------------------- 1 | ##################################################################### 2 | # srsENB configuration file 3 | ##################################################################### 4 | 5 | ##################################################################### 6 | # eNB configuration 7 | # 8 | # enb_id: 20-bit eNB identifier. 9 | # mcc: Mobile Country Code 10 | # mnc: Mobile Network Code 11 | # mme_addr: IP address of MME for S1 connnection 12 | # gtp_bind_addr: Local IP address to bind for GTP connection 13 | # gtp_advertise_addr: IP address of eNB to advertise for DL GTP-U Traffic 14 | # s1c_bind_addr: Local IP address to bind for S1AP connection 15 | # n_prb: Number of Physical Resource Blocks (6,15,25,50,75,100) 16 | # tm: Transmission mode 1-4 (TM1 default) 17 | # nof_ports: Number of Tx ports (1 port default, set to 2 for TM2/3/4) 18 | # 19 | ##################################################################### 20 | [enb] 21 | enb_id = 0x19B 22 | mcc = 901 23 | mnc = 70 24 | mme_addr = 172.24.98.129 25 | gtp_bind_addr = 172.24.98.92 26 | s1c_bind_addr = 172.24.98.92 27 | #n_prb = 50 28 | #tm = 4 29 | #nof_ports = 2 30 | 31 | ##################################################################### 32 | # eNB configuration files 33 | # 34 | # sib_config: SIB1, SIB2 and SIB3 configuration file 35 | # note: when enabling mbms, use the sib.conf.mbsfn configuration file which includes SIB13 36 | # rr_config: Radio Resources configuration file 37 | # drb_config: DRB configuration file 38 | ##################################################################### 39 | [enb_files] 40 | sib_config = sib.conf 41 | rr_config = rr.conf 42 | drb_config = drb.conf 43 | 44 | ##################################################################### 45 | # RF configuration 46 | # 47 | # dl_earfcn: EARFCN code for DL (only valid if a single cell is configured in rr.conf) 48 | # tx_gain: Transmit gain (dB). 49 | # rx_gain: Optional receive gain (dB). If disabled, AGC if enabled 50 | # 51 | # Optional parameters: 52 | # dl_freq: Override DL frequency corresponding to dl_earfcn 53 | # ul_freq: Override UL frequency corresponding to dl_earfcn (must be set if dl_freq is set) 54 | # device_name: Device driver family. 55 | # Supported options: "auto" (uses first found), "UHD", "bladeRF", "soapy" or "zmq". 56 | # device_args: Arguments for the device driver. Options are "auto" or any string. 57 | # Default for UHD: "recv_frame_size=9232,send_frame_size=9232" 58 | # Default for bladeRF: "" 59 | # time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay 60 | # from antenna to timestamp insertion. 61 | # Default "auto". B210 USRP: 100 samples, bladeRF: 27. 62 | ##################################################################### 63 | [rf] 64 | #dl_earfcn = 3350 65 | #tx_gain = 80 66 | #rx_gain = 40 67 | 68 | #device_name = auto 69 | 70 | # For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings: 71 | # USRP B210: num_recv_frames=64,num_send_frames=64 72 | # And for 75 PRBs, also append ",master_clock_rate=15.36e6" to the device args 73 | 74 | # For best performance when BW<5 MHz (25 PRB), use the following device_args settings: 75 | # USRP B210: send_frame_size=512,recv_frame_size=512 76 | 77 | #device_args = auto 78 | #time_adv_nsamples = auto 79 | 80 | # Example for ZMQ-based operation with TCP transport for I/Q samples 81 | device_name = zmq 82 | device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6 83 | 84 | ##################################################################### 85 | # Packet capture configuration 86 | # 87 | # MAC-layer packets are captured to file a the compact format decoded 88 | # by the Wireshark. For decoding, use the UDP dissector and the UDP 89 | # heuristic dissection. Edit the preferences (Edit > Preferences > 90 | # Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with 91 | # Protocol=udp. Further, enable the heuristic dissection in UDP under: 92 | # Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp 93 | # For more information see: https://wiki.wireshark.org/MAC-LTE 94 | # Configuring this Wireshark preferences is needed for decoding the MAC PCAP 95 | # files as well as for the live network capture option. 96 | # 97 | # Please note that this setting will by default only capture MAC 98 | # frames on dedicated channels, and not SIB. You have to build with 99 | # WRITE_SIB_PCAP enabled in srsenb/src/stack/mac/mac.cc if you want 100 | # SIB to be part of the MAC pcap file. 101 | # 102 | # S1AP Packets are captured to file in the compact format decoded by 103 | # the Wireshark s1ap dissector and with DLT 150. 104 | # To use the dissector, edit the preferences for DLT_USER to 105 | # add an entry with DLT=150, Payload Protocol=s1ap. 106 | # 107 | # mac_enable: Enable MAC layer packet captures (true/false) 108 | # mac_filename: File path to use for packet captures 109 | # s1ap_enable: Enable or disable the PCAP. 110 | # s1ap_filename: File name where to save the PCAP. 111 | # 112 | # mac_net_enable: Enable MAC layer packet captures sent over the network (true/false default: false) 113 | # bind_ip: Bind IP address for MAC network trace (default: "0.0.0.0") 114 | # bind_port: Bind port for MAC network trace (default: 5687) 115 | # client_ip: Client IP address for MAC network trace (default "127.0.0.1") 116 | # client_port Client IP address for MAC network trace (default: 5847) 117 | ##################################################################### 118 | [pcap] 119 | enable = false 120 | filename = /tmp/enb.pcap 121 | s1ap_enable = false 122 | s1ap_filename = /tmp/enb_s1ap.pcap 123 | 124 | mac_net_enable = false 125 | bind_ip = 0.0.0.0 126 | bind_port = 5687 127 | client_ip = 127.0.0.1 128 | client_port = 5847 129 | 130 | ##################################################################### 131 | # Log configuration 132 | # 133 | # Log levels can be set for individual layers. "all_level" sets log 134 | # level for all layers unless otherwise configured. 135 | # Format: e.g. phy_level = info 136 | # 137 | # In the same way, packet hex dumps can be limited for each level. 138 | # "all_hex_limit" sets the hex limit for all layers unless otherwise 139 | # configured. 140 | # Format: e.g. phy_hex_limit = 32 141 | # 142 | # Logging layers: rf, phy, phy_lib, mac, rlc, pdcp, rrc, gtpu, s1ap, stack, all 143 | # Logging levels: debug, info, warning, error, none 144 | # 145 | # filename: File path to use for log output. Can be set to stdout 146 | # to print logs to standard output 147 | # file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created. 148 | # If set to negative, a single log file will be created. 149 | ##################################################################### 150 | [log] 151 | all_level = warning 152 | all_hex_limit = 32 153 | filename = /tmp/enb.log 154 | file_max_size = -1 155 | 156 | [gui] 157 | enable = false 158 | 159 | ##################################################################### 160 | # Scheduler configuration options 161 | # 162 | # sched_policy: User MAC scheduling policy (E.g. time_rr, time_pf) 163 | # max_aggr_level: Optional maximum aggregation level index (l=log2(L) can be 0, 1, 2 or 3) 164 | # pdsch_mcs: Optional fixed PDSCH MCS (ignores reported CQIs if specified) 165 | # pdsch_max_mcs: Optional PDSCH MCS limit 166 | # pusch_mcs: Optional fixed PUSCH MCS (ignores reported CQIs if specified) 167 | # pusch_max_mcs: Optional PUSCH MCS limit 168 | # min_nof_ctrl_symbols: Minimum number of control symbols 169 | # max_nof_ctrl_symbols: Maximum number of control symbols 170 | # 171 | ##################################################################### 172 | [scheduler] 173 | #policy = time_pf 174 | #policy_args = 2 175 | #max_aggr_level = -1 176 | #pdsch_mcs = -1 177 | #pdsch_max_mcs = -1 178 | #pusch_mcs = -1 179 | #pusch_max_mcs = 16 180 | #min_nof_ctrl_symbols = 1 181 | #max_nof_ctrl_symbols = 3 182 | #pucch_multiplex_enable = false 183 | 184 | ##################################################################### 185 | # eMBMS configuration options 186 | # 187 | # enable: Enable MBMS transmission in the eNB 188 | # m1u_multiaddr: Multicast addres the M1-U socket will register to 189 | # m1u_if_addr: Address of the inteferface the M1-U interface will listen for multicast packets. 190 | # mcs: Modulation and Coding scheme for MBMS traffic. 191 | # 192 | ##################################################################### 193 | [embms] 194 | #enable = false 195 | #m1u_multiaddr = 239.255.0.1 196 | #m1u_if_addr = 127.0.1.201 197 | #mcs = 20 198 | 199 | 200 | 201 | ##################################################################### 202 | # Channel emulator options: 203 | # enable: Enable/Disable internal Downlink/Uplink channel emulator 204 | # 205 | # -- AWGN Generator 206 | # awgn.enable: Enable/disable AWGN generator 207 | # awgn.snr: Target SNR in dB 208 | # 209 | # -- Fading emulator 210 | # fading.enable: Enable/disable fading simulator 211 | # fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc) 212 | # 213 | # -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2 214 | # Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period 215 | # delay.enable: Enable/disable delay simulator 216 | # delay.period_s: Delay period in seconds. 217 | # delay.init_time_s: Delay initial time in seconds. 218 | # delay.maximum_us: Maximum delay in microseconds 219 | # delay.minumum_us: Minimum delay in microseconds 220 | # 221 | # -- Radio-Link Failure (RLF) Emulator 222 | # rlf.enable: Enable/disable RLF simulator 223 | # rlf.t_on_ms: Time for On state of the channel (ms) 224 | # rlf.t_off_ms: Time for Off state of the channel (ms) 225 | # 226 | # -- High Speed Train Doppler model simulator 227 | # hst.enable: Enable/Disable HST simulator 228 | # hst.period_s: HST simulation period in seconds 229 | # hst.fd_hz: Doppler frequency in Hz 230 | # hst.init_time_s: Initial time in seconds 231 | ##################################################################### 232 | [channel.dl] 233 | #enable = false 234 | 235 | [channel.dl.awgn] 236 | #enable = false 237 | #snr = 30 238 | 239 | [channel.dl.fading] 240 | #enable = false 241 | #model = none 242 | 243 | [channel.dl.delay] 244 | #enable = false 245 | #period_s = 3600 246 | #init_time_s = 0 247 | #maximum_us = 100 248 | #minimum_us = 10 249 | 250 | [channel.dl.rlf] 251 | #enable = false 252 | #t_on_ms = 10000 253 | #t_off_ms = 2000 254 | 255 | [channel.dl.hst] 256 | #enable = false 257 | #period_s = 7.2 258 | #fd_hz = 750.0 259 | #init_time_s = 0.0 260 | 261 | [channel.ul] 262 | #enable = false 263 | 264 | [channel.ul.awgn] 265 | #enable = false 266 | #n0 = -30 267 | 268 | [channel.ul.fading] 269 | #enable = false 270 | #model = none 271 | 272 | [channel.ul.delay] 273 | #enable = false 274 | #period_s = 3600 275 | #init_time_s = 0 276 | #maximum_us = 100 277 | #minimum_us = 10 278 | 279 | [channel.ul.rlf] 280 | #enable = false 281 | #t_on_ms = 10000 282 | #t_off_ms = 2000 283 | 284 | [channel.ul.hst] 285 | #enable = false 286 | #period_s = 7.2 287 | #fd_hz = -750.0 288 | #init_time_s = 0.0 289 | 290 | 291 | ##################################################################### 292 | # Expert configuration options 293 | # 294 | # pusch_max_its: Maximum number of turbo decoder iterations (Default 4) 295 | # pusch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental) 296 | # nof_phy_threads: Selects the number of PHY threads (maximum 4, minimum 1, default 3) 297 | # metrics_period_secs: Sets the period at which metrics are requested from the eNB. 298 | # metrics_csv_enable: Write eNB metrics to CSV file. 299 | # metrics_csv_filename: File path to use for CSV metrics. 300 | # tracing_enable: Write source code tracing information to a file. 301 | # tracing_filename: File path to use for tracing information. 302 | # tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store. 303 | # pregenerate_signals: Pregenerate uplink signals after attach. Improves CPU performance. 304 | # tx_amplitude: Transmit amplitude factor (set 0-1 to reduce PAPR) 305 | # rrc_inactivity_timer Inactivity timeout used to remove UE context from RRC (in milliseconds). 306 | # max_prach_offset_us: Maximum allowed RACH offset (in us) 307 | # nof_prealloc_ues: Number of UE memory resources to preallocate during eNB initialization for faster UE creation (Default 8) 308 | # eea_pref_list: Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1). 309 | # eia_pref_list: Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0). 310 | # 311 | ##################################################################### 312 | [expert] 313 | #pusch_max_its = 8 # These are half iterations 314 | #pusch_8bit_decoder = false 315 | nof_phy_threads = 1 316 | #metrics_period_secs = 1 317 | #metrics_csv_enable = false 318 | #metrics_csv_filename = /tmp/enb_metrics.csv 319 | #report_json_enable = true 320 | #report_json_filename = /tmp/enb_report.json 321 | #alarms_log_enable = true 322 | #alarms_filename = /tmp/enb_alarms.log 323 | #tracing_enable = true 324 | #tracing_filename = /tmp/enb_tracing.log 325 | #tracing_buffcapacity = 1000000 326 | #pregenerate_signals = false 327 | #tx_amplitude = 0.6 328 | #rrc_inactivity_timer = 30000 329 | #max_nof_kos = 100 330 | #max_prach_offset_us = 30 331 | #nof_prealloc_ues = 8 332 | #eea_pref_list = EEA0, EEA2, EEA1 333 | #eia_pref_list = EIA2, EIA1, EIA0 334 | -------------------------------------------------------------------------------- /tutorials/srsRAN-and-magma/ran_configurations/ue.conf: -------------------------------------------------------------------------------- 1 | ##################################################################### 2 | # srsUE configuration file 3 | ##################################################################### 4 | 5 | ##################################################################### 6 | # RF configuration 7 | # 8 | # freq_offset: Uplink and Downlink optional frequency offset (in Hz) 9 | # tx_gain: Transmit gain (dB). 10 | # rx_gain: Optional receive gain (dB). If disabled, AGC if enabled 11 | # 12 | # nof_antennas: Number of antennas per carrier (all carriers have the same number of antennas) 13 | # device_name: Device driver family. Supported options: "auto" (uses first found), "UHD" or "bladeRF" 14 | # device_args: Arguments for the device driver. Options are "auto" or any string. 15 | # Default for UHD: "recv_frame_size=9232,send_frame_size=9232" 16 | # Default for bladeRF: "" 17 | # device_args_2: Arguments for the RF device driver 2. 18 | # device_args_3: Arguments for the RF device driver 3. 19 | # time_adv_nsamples: Transmission time advance (in number of samples) to compensate for RF delay 20 | # from antenna to timestamp insertion. 21 | # Default "auto". B210 USRP: 100 samples, bladeRF: 27. 22 | # continuous_tx: Transmit samples continuously to the radio or on bursts (auto/yes/no). 23 | # Default is auto (yes for UHD, no for rest) 24 | ##################################################################### 25 | [rf] 26 | #freq_offset = 0 27 | tx_gain = 80 28 | #rx_gain = 40 29 | 30 | #nof_antennas = 1 31 | 32 | # For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings: 33 | # USRP B210: num_recv_frames=64,num_send_frames=64 34 | 35 | # For best performance when BW<5 MHz (25 PRB), use the following device_args settings: 36 | # USRP B210: send_frame_size=512,recv_frame_size=512 37 | 38 | #device_args = auto 39 | #time_adv_nsamples = auto 40 | #continuous_tx = auto 41 | 42 | # Example for ZMQ-based operation with TCP transport for I/Q samples 43 | device_name = zmq 44 | device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6 45 | 46 | ##################################################################### 47 | # EUTRA RAT configuration 48 | # 49 | # dl_earfcn: Downlink EARFCN list. 50 | # 51 | # Optional parameters: 52 | # dl_freq: Override DL frequency corresponding to dl_earfcn 53 | # ul_freq: Override UL frequency corresponding to dl_earfcn 54 | # nof_carriers: Number of carriers 55 | ##################################################################### 56 | [rat.eutra] 57 | #dl_earfcn = 3350 58 | #nof_carriers = 1 59 | 60 | ##################################################################### 61 | # NR RAT configuration 62 | # 63 | # Optional parameters: 64 | # bands: List of support NR bands seperated by a comma (default 78) 65 | # nof_carriers: Number of NR carriers (must be at least 1 for NR support) 66 | ##################################################################### 67 | [rat.nr] 68 | # bands = 78 69 | # nof_carriers = 0 70 | 71 | ##################################################################### 72 | # Packet capture configuration 73 | # 74 | # Packet capture is supported at the MAC, MAC_NR, and NAS layer. 75 | # MAC-layer packets are captured to file a the compact format decoded 76 | # by the Wireshark. For decoding, use the UDP dissector and the UDP 77 | # heuristic dissection. Edit the preferences (Edit > Preferences > 78 | # Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with 79 | # Protocol=udp. Further, enable the heuristic dissection in UDP under: 80 | # Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp 81 | # For more information see: https://wiki.wireshark.org/MAC-LTE 82 | # Using the same filename for mac_filename and mac_nr_filename writes both 83 | # MAC-LTE and MAC-NR to the same file allowing a better analysis. 84 | # NAS-layer packets are dissected with DLT=148, and Protocol = nas-eps. 85 | # 86 | # enable: Enable packet captures of layers (mac/mac_nr/nas/none) multiple option list 87 | # mac_filename: File path to use for MAC packet capture 88 | # mac_nr_filename: File path to use for MAC NR packet capture 89 | # nas_filename: File path to use for NAS packet capture 90 | ##################################################################### 91 | [pcap] 92 | #enable = none 93 | #mac_filename = /tmp/ue_mac.pcap 94 | #mac_nr_filename = /tmp/ue_mac_nr.pcap 95 | #nas_filename = /tmp/ue_nas.pcap 96 | 97 | ##################################################################### 98 | # Log configuration 99 | # 100 | # Log levels can be set for individual layers. "all_level" sets log 101 | # level for all layers unless otherwise configured. 102 | # Format: e.g. phy_level = info 103 | # 104 | # In the same way, packet hex dumps can be limited for each level. 105 | # "all_hex_limit" sets the hex limit for all layers unless otherwise 106 | # configured. 107 | # Format: e.g. phy_hex_limit = 32 108 | # 109 | # Logging layers: rf, phy, mac, rlc, pdcp, rrc, nas, gw, usim, stack, all 110 | # Logging levels: debug, info, warning, error, none 111 | # 112 | # filename: File path to use for log output. Can be set to stdout 113 | # to print logs to standard output 114 | # file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created. 115 | # If set to negative, a single log file will be created. 116 | ##################################################################### 117 | [log] 118 | all_level = warning 119 | phy_lib_level = none 120 | all_hex_limit = 32 121 | filename = /tmp/ue.log 122 | file_max_size = -1 123 | 124 | ##################################################################### 125 | # USIM configuration 126 | # 127 | # mode: USIM mode (soft/pcsc) 128 | # algo: Authentication algorithm (xor/milenage) 129 | # op/opc: 128-bit Operator Variant Algorithm Configuration Field (hex) 130 | # - Specify either op or opc (only used in milenage) 131 | # k: 128-bit subscriber key (hex) 132 | # imsi: 15 digit International Mobile Subscriber Identity 133 | # imei: 15 digit International Mobile Station Equipment Identity 134 | # pin: PIN in case real SIM card is used 135 | # reader: Specify card reader by it's name as listed by 'pcsc_scan'. If empty, try all available readers. 136 | ##################################################################### 137 | [usim] 138 | #mode = soft 139 | #algo = xor 140 | opc = E734F8734007D6C5CE7A0508809E7E9C 141 | k = 8BAF473F2F8FD09487CCCBD7097C6862 142 | imsi = 901700100001111 143 | imei = 353490069873319 144 | #reader = 145 | #pin = 1234 146 | 147 | ##################################################################### 148 | # RRC configuration 149 | # 150 | # ue_category: Sets UE category (range 1-5). Default: 4 151 | # release: UE Release (8 to 15) 152 | # feature_group: Hex value of the featureGroupIndicators field in the 153 | # UECapabilityInformation message. Default 0xe6041000 154 | # mbms_service_id: MBMS service id for autostarting MBMS reception 155 | # (default -1 means disabled) 156 | # mbms_service_port: Port of the MBMS service 157 | # nr_measurement_pci: NR PCI for the simulated NR measurement. Default: 500 158 | # nr_short_sn_support: Announce PDCP short SN support. Default: true 159 | ##################################################################### 160 | [rrc] 161 | #ue_category = 4 162 | #release = 15 163 | #feature_group = 0xe6041000 164 | #mbms_service_id = -1 165 | #mbms_service_port = 4321 166 | 167 | ##################################################################### 168 | # NAS configuration 169 | # 170 | # apn: Set Access Point Name (APN) 171 | # apn_protocol: Set APN protocol (IPv4, IPv6 or IPv4v6.) 172 | # user: Username for CHAP authentication 173 | # pass: Password for CHAP authentication 174 | # force_imsi_attach: Whether to always perform an IMSI attach 175 | # eia: List of integrity algorithms included in UE capabilities 176 | # Supported: 1 - Snow3G, 2 - AES 177 | # eea: List of ciphering algorithms included in UE capabilities 178 | # Supported: 0 - NULL, 1 - Snow3G, 2 - AES 179 | ##################################################################### 180 | [nas] 181 | apn = uniandes.apn 182 | apn_protocol = ipv4 183 | #user = srsuser 184 | #pass = srspass 185 | #force_imsi_attach = false 186 | #eia = 1,2 187 | #eea = 0,1,2 188 | 189 | ##################################################################### 190 | # GW configuration 191 | # 192 | # netns: Network namespace to create TUN device. Default: empty 193 | # ip_devname: Name of the tun_srsue device. Default: tun_srsue 194 | # ip_netmask: Netmask of the tun_srsue device. Default: 255.255.255.0 195 | ##################################################################### 196 | [gw] 197 | #netns = 198 | ip_devname = tun_srsue 199 | ip_netmask = 255.255.255.0 200 | 201 | ##################################################################### 202 | # GUI configuration 203 | # 204 | # Simple GUI displaying PDSCH constellation and channel freq response. 205 | # (Requires building with srsGUI) 206 | # enable: Enable the graphical interface (true/false) 207 | ##################################################################### 208 | [gui] 209 | enable = false 210 | 211 | ##################################################################### 212 | # Channel emulator options: 213 | # enable: Enable/Disable internal Downlink/Uplink channel emulator 214 | # 215 | # -- AWGN Generator 216 | # awgn.enable: Enable/disable AWGN generator 217 | # awgn.snr: SNR in dB 218 | # awgn.signal_power: Received signal power in decibels full scale (dBfs) 219 | # 220 | # -- Fading emulator 221 | # fading.enable: Enable/disable fading simulator 222 | # fading.model: Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc) 223 | # 224 | # -- Delay Emulator delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2 225 | # Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period 226 | # delay.enable: Enable/disable delay simulator 227 | # delay.period_s: Delay period in seconds. 228 | # delay.init_time_s: Delay initial time in seconds. 229 | # delay.maximum_us: Maximum delay in microseconds 230 | # delay.minumum_us: Minimum delay in microseconds 231 | # 232 | # -- Radio-Link Failure (RLF) Emulator 233 | # rlf.enable: Enable/disable RLF simulator 234 | # rlf.t_on_ms: Time for On state of the channel (ms) 235 | # rlf.t_off_ms: Time for Off state of the channel (ms) 236 | # 237 | # -- High Speed Train Doppler model simulator 238 | # hst.enable: Enable/Disable HST simulator 239 | # hst.period_s: HST simulation period in seconds 240 | # hst.fd_hz: Doppler frequency in Hz 241 | # hst.init_time_s: Initial time in seconds 242 | ##################################################################### 243 | [channel.dl] 244 | #enable = false 245 | 246 | [channel.dl.awgn] 247 | #enable = false 248 | #snr = 30 249 | 250 | [channel.dl.fading] 251 | #enable = false 252 | #model = none 253 | 254 | [channel.dl.delay] 255 | #enable = false 256 | #period_s = 3600 257 | #init_time_s = 0 258 | #maximum_us = 100 259 | #minimum_us = 10 260 | 261 | [channel.dl.rlf] 262 | #enable = false 263 | #t_on_ms = 10000 264 | #t_off_ms = 2000 265 | 266 | [channel.dl.hst] 267 | #enable = false 268 | #period_s = 7.2 269 | #fd_hz = 750.0 270 | #init_time_s = 0.0 271 | 272 | [channel.ul] 273 | #enable = false 274 | 275 | [channel.ul.awgn] 276 | #enable = false 277 | #n0 = -30 278 | 279 | [channel.ul.fading] 280 | #enable = false 281 | #model = none 282 | 283 | [channel.ul.delay] 284 | #enable = false 285 | #period_s = 3600 286 | #init_time_s = 0 287 | #maximum_us = 100 288 | #minimum_us = 10 289 | 290 | [channel.ul.rlf] 291 | #enable = false 292 | #t_on_ms = 10000 293 | #t_off_ms = 2000 294 | 295 | [channel.ul.hst] 296 | #enable = false 297 | #period_s = 7.2 298 | #fd_hz = -750.0 299 | #init_time_s = 0.0 300 | 301 | ##################################################################### 302 | # PHY configuration options 303 | # 304 | # rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings 305 | # prach_gain: PRACH gain (dB). If defined, forces a gain for the tranmsission of PRACH only., 306 | # Default is to use tx_gain in [rf] section. 307 | # cqi_max: Upper bound on the maximum CQI to be reported. Default 15. 308 | # cqi_fixed: Fixes the reported CQI to a constant value. Default disabled. 309 | # snr_ema_coeff: Sets the SNR exponential moving average coefficient (Default 0.1) 310 | # snr_estim_alg: Sets the noise estimation algorithm. (Default refs) 311 | # Options: pss: use difference between received and known pss signal, 312 | # refs: use difference between noise references and noiseless (after filtering) 313 | # empty: use empty subcarriers in the boarder of pss/sss signal 314 | # pdsch_max_its: Maximum number of turbo decoder iterations (Default 4) 315 | # pdsch_meas_evm: Measure PDSCH EVM, increases CPU load (default false) 316 | # nof_phy_threads: Selects the number of PHY threads (maximum 4, minimum 1, default 3) 317 | # equalizer_mode: Selects equalizer mode. Valid modes are: "mmse", "zf" or any 318 | # non-negative real number to indicate a regularized zf coefficient. 319 | # Default is MMSE. 320 | # correct_sync_error: Channel estimator measures and pre-compensates time synchronization error. Increases CPU usage, 321 | # improves PDSCH decoding in high SFO and high speed UE scenarios. 322 | # sfo_ema: EMA coefficient to average sample offsets used to compute SFO 323 | # sfo_correct_period: Period in ms to correct sample time to adjust for SFO 324 | # sss_algorithm: Selects the SSS estimation algorithm. Can choose between 325 | # {full, partial, diff}. 326 | # estimator_fil_auto: The channel estimator smooths the channel estimate with an adaptative filter. 327 | # estimator_fil_stddev: Sets the channel estimator smooth gaussian filter standard deviation. 328 | # estimator_fil_order: Sets the channel estimator smooth gaussian filter order (even values perform better). 329 | # The taps are [w, 1-2w, w] 330 | # 331 | # snr_to_cqi_offset: Sets an offset in the SNR to CQI table. This is used to adjust the reported CQI. 332 | # 333 | # interpolate_subframe_enabled: Interpolates in the time domain the channel estimates within 1 subframe. Default is to average. 334 | # 335 | # pdsch_csi_enabled: Stores the Channel State Information and uses it for weightening the softbits. It is only 336 | # used in TM1. It is True by default. 337 | # 338 | # pdsch_8bit_decoder: Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental) 339 | # force_ul_amplitude: Forces the peak amplitude in the PUCCH, PUSCH and SRS (set 0.0 to 1.0, set to 0 or negative for disabling) 340 | # 341 | # in_sync_rsrp_dbm_th: RSRP threshold (in dBm) above which the UE considers to be in-sync 342 | # in_sync_snr_db_th: SNR threshold (in dB) above which the UE considers to be in-sync 343 | # nof_in_sync_events: Number of PHY in-sync events before sending an in-sync event to RRC 344 | # nof_out_of_sync_events: Number of PHY out-sync events before sending an out-sync event to RRC 345 | # 346 | ##################################################################### 347 | [phy] 348 | #rx_gain_offset = 62 349 | #prach_gain = 30 350 | #cqi_max = 15 351 | #cqi_fixed = 10 352 | #snr_ema_coeff = 0.1 353 | #snr_estim_alg = refs 354 | #pdsch_max_its = 8 # These are half iterations 355 | #pdsch_meas_evm = false 356 | nof_phy_threads = 1 357 | #equalizer_mode = mmse 358 | #correct_sync_error = false 359 | #sfo_ema = 0.1 360 | #sfo_correct_period = 10 361 | #sss_algorithm = full 362 | #estimator_fil_auto = false 363 | #estimator_fil_stddev = 1.0 364 | #estimator_fil_order = 4 365 | #snr_to_cqi_offset = 0.0 366 | #interpolate_subframe_enabled = false 367 | #pdsch_csi_enabled = true 368 | #pdsch_8bit_decoder = false 369 | #force_ul_amplitude = 0 370 | 371 | #in_sync_rsrp_dbm_th = -130.0 372 | #in_sync_snr_db_th = 3.0 373 | #nof_in_sync_events = 10 374 | #nof_out_of_sync_events = 20 375 | 376 | ##################################################################### 377 | # Simulation configuration options 378 | # 379 | # The UE simulation supports turning on and off airplane mode in the UE. 380 | # The actions are carried periodically until the UE is stopped. 381 | # 382 | # airplane_t_on_ms: Time to leave airplane mode turned on (in ms) 383 | # 384 | # airplane_t_off_ms: Time to leave airplane mode turned off (in ms) 385 | # 386 | ##################################################################### 387 | [sim] 388 | #airplane_t_on_ms = -1 389 | #airplane_t_off_ms = -1 390 | 391 | ##################################################################### 392 | # General configuration options 393 | # 394 | # metrics_csv_enable: Write UE metrics to CSV file. 395 | # 396 | # metrics_period_secs: Sets the period at which metrics are requested from the UE. 397 | # 398 | # metrics_csv_filename: File path to use for CSV metrics. 399 | # 400 | # tracing_enable: Write source code tracing information to a file. 401 | # 402 | # tracing_filename: File path to use for tracing information. 403 | # 404 | # tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store. 405 | # 406 | # have_tti_time_stats: Calculate TTI execution statistics using system clock 407 | # 408 | ##################################################################### 409 | [general] 410 | #metrics_csv_enable = false 411 | #metrics_period_secs = 1 412 | #metrics_csv_filename = /tmp/ue_metrics.csv 413 | #have_tti_time_stats = true 414 | #tracing_enable = true 415 | #tracing_filename = /tmp/ue_tracing.log 416 | #tracing_buffcapacity = 1000000 417 | --------------------------------------------------------------------------------