ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 1 | .. |
| 2 | SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org> |
| 3 | SPDX-License-Identifier: Apache-2.0 |
| 4 | |
ajay | 0751498 | 2021-12-07 22:24:32 -0800 | [diff] [blame] | 5 | .. _deployment_5G_guide: |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 6 | |
ajay | 0751498 | 2021-12-07 22:24:32 -0800 | [diff] [blame] | 7 | 5G Deployment Guide |
| 8 | =================== |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 9 | |
| 10 | Deployment Overview |
| 11 | ------------------- |
| 12 | SD-Core is released with Helm chart and container images. |
| 13 | We recommend using **Kubernetes** and **Helm** to deploy SD-Core. |
Ajay Lotan Thakur | d057307 | 2022-05-04 19:16:52 -0700 | [diff] [blame] | 14 | SD-Core images are hosted on docker hub. |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 15 | |
| 16 | Hardware resource requirement |
| 17 | ----------------------------- |
| 18 | |
ajay | ce0380c | 2021-12-14 21:51:00 -0800 | [diff] [blame] | 19 | .. list-table:: CPU & Memory Requirements for 5G components |
| 20 | :widths: 5 5 5 |
| 21 | :header-rows: 1 |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 22 | |
ajay | ce0380c | 2021-12-14 21:51:00 -0800 | [diff] [blame] | 23 | * - SD-Core Component |
| 24 | - Required CPU |
| 25 | - Required Memory in Gi |
| 26 | * - AMF |
| 27 | - 2 CPU Cores |
| 28 | - 4Gi |
| 29 | * - SMF |
| 30 | - 2 CPU Cores |
| 31 | - 4Gi |
| 32 | * - NRF |
| 33 | - 2 CPU Cores |
| 34 | - 1Gi |
| 35 | * - NSSF |
| 36 | - 2 CPU Cores |
| 37 | - 1Gi |
| 38 | * - AUSF |
| 39 | - 1 CPU Cores |
| 40 | - 1Gi |
| 41 | * - PCF |
| 42 | - 1 CPU Cores |
| 43 | - 1Gi |
| 44 | * - UDR |
| 45 | - 2 CPU Cores |
| 46 | - 1Gi |
| 47 | * - UDM |
| 48 | - 2 CPU Cores |
| 49 | - 1Gi |
| 50 | * - Config5G(webconsole) |
| 51 | - 1 CPU Cores |
| 52 | - 1Gi |
| 53 | * - SimApp |
| 54 | - 1 CPU Cores |
| 55 | - 1Gi |
| 56 | * - MongoDB |
| 57 | - 2 CPU Cores |
| 58 | - 4Gi |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 59 | * - UPF-Adapter |
| 60 | - 1 CPU Cores |
| 61 | - 1Gi |
| 62 | * - SCTP Load Balancer |
| 63 | - 1 CPU Cores |
| 64 | - 1Gi |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 65 | |
Ajay Lotan Thakur | 05ce5ce | 2022-09-25 20:36:16 -0700 | [diff] [blame] | 66 | .. note:: |
| 67 | SD-Core deployment is tested on Intel/AMD hardware. There is WIP to run SD-Core |
| 68 | on ARM architecture. |
| 69 | |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 70 | Deployment Options |
| 71 | ------------------ |
| 72 | |
| 73 | Development Environments |
| 74 | """""""""""""""""""""""" |
| 75 | |
ajay | ce0380c | 2021-12-14 21:51:00 -0800 | [diff] [blame] | 76 | Please refer (see :ref:`aiab-guide`) to setup 5G development environment. |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 77 | |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 78 | Production Environments - 5G |
| 79 | """""""""""""""""""""""""""" |
| 80 | |
| 81 | To install SD-Core into your Kubernetes cluster, follow instructions |
| 82 | |
| 83 | Step1 - Clone SD-Core 5G Helm chart |
| 84 | ''''''''''''''''''''''''''''''''''' |
| 85 | .. code-block:: |
| 86 | |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 87 | git clone "https://gerrit.opencord.org/sdcore-helm-charts" |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 88 | cd sdcore-helm-charts/sdcore-helm-charts/ |
| 89 | helm dep update #Update Helm dependencies |
| 90 | |
| 91 | Step2 - Prepare your Helm value for 5G |
| 92 | '''''''''''''''''''''''''''''''''''''' |
| 93 | |
| 94 | You can modify existing values.yaml directly, but we recommend composing another value |
| 95 | file myvalues.yaml using values.yaml as an example. We are highlighting a few things we |
| 96 | need to modify here. More explanation of the supported Helm values can be found in the |
| 97 | Configuration section below. |
| 98 | |
| 99 | Step3 - Install 5G using SD-Core umbrella helm chart |
| 100 | '''''''''''''''''''''''''''''''''''''''''''''''''''' |
| 101 | |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 102 | The following command will deploy the SD-Core helm chart with release name sdcore-5g in the sdcore-5g namespace. |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 103 | |
| 104 | .. code-block:: |
| 105 | |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 106 | helm install -n sdcore-5g --create-namespace -f myvalues.yaml sdcore-5g ~/cord/sdcore-helm-charts/sdcore-helm-charts |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 107 | |
| 108 | To verify the installation: |
| 109 | |
| 110 | .. code-block:: |
| 111 | |
| 112 | helm -n sdcore-5g ls |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 113 | xxxx@node:~$ helm -n sdcore-5g ls |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 114 | NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION |
| 115 | sdcore-5g sdcore-5g 1 2022-03-05 16:25:32.338495035 -0700 MST deployed sd-core-0.10.9 |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 116 | xxxx@node:~$ |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 117 | |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 118 | xxxx@node:~$ kubectl get pods -n sdcore-5g |
| 119 | NAME READY STATUS RESTARTS AGE |
| 120 | amf-6cddb6ff5-g5kwp 1/1 Running 0 8d |
| 121 | ausf-64fb5c5df5-g9xps 1/1 Running 0 8d |
| 122 | gnbsim-0 1/1 Running 0 8d |
| 123 | mongodb-0 1/1 Running 0 8d |
| 124 | mongodb-1 1/1 Running 0 8d |
| 125 | mongodb-arbiter-0 1/1 Running 0 8d |
| 126 | nrf-69794885b-pgl8f 1/1 Running 0 8d |
| 127 | nssf-fc9c48c89-dxqn7 1/1 Running 0 8d |
| 128 | pcf-5c7d7767c9-wv6dl 1/1 Running 0 8d |
| 129 | simapp-669b99db9d-lbbm4 1/1 Running 0 8d |
| 130 | smf-b87fc6f8f-4jdqr 1/1 Running 0 8d |
| 131 | smf-b87fc6f8f-xt2n2 1/1 Running 0 8d |
| 132 | udm-f948b57dc-n5b4h 1/1 Running 0 8d |
| 133 | udr-698445bd87-8ptpm 1/1 Running 0 8d |
| 134 | upf-0 5/5 Running 0 8d |
| 135 | upf-adapter-c4844b7fb-wqbvw 1/1 Running 0 8d |
| 136 | webui-8cfb9659c-hqfp9 1/1 Running 0 8d |
| 137 | xxxx@node:~$ |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 138 | |
| 139 | To uninstall: |
| 140 | |
| 141 | .. code-block:: |
| 142 | |
| 143 | helm -n sdcore-5g uninstall sdcore-5g |
| 144 | kubectl delete namespace sdcore-5g # also remove the sdcore-5g if needed |
| 145 | |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 146 | Cloud Native Configuration - 5G |
| 147 | """""""""""""""""""""""""""""""" |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 148 | |
Ankur Upadhyaya | 4efce0a | 2022-10-07 11:12:08 -0600 | [diff] [blame] | 149 | Following configuration need to be enabled in 5G helm values override file. |
| 150 | It is important to understand usage of following flags |
| 151 | |
| 152 | - **SCTP Load Balancer** : |
| 153 | Enable this flag to introduce SCTP Load Balancer between gNBs and multiple AMF instances |
| 154 | to load balance sctp connections across multiple AMF instances. |
| 155 | |
| 156 | - **DB Store** : |
| 157 | Enable this flag to preserve AMF context or SMF PDU session into Database. |
| 158 | This is required for any AMF/SMF instance to load session/context of any |
| 159 | other instance which being fault recovered. |
| 160 | |
| 161 | - **UPF-Adapter** : |
| 162 | Enable this flag to introduce UPF-Adapter between multiple SMF instances |
| 163 | and UPF. This required for the case where UPF doesn't support multiple |
| 164 | SMF association with same pfcp node-id. |
| 165 | |
| 166 | - **NRF Keep-Alive** : |
| 167 | Enable this flag for NRF to maintain multiple NF profiles and trigger periodic |
| 168 | profile updates from the registered NFs. |
| 169 | |
| 170 | - **UE IP-Address alloc via UPF** : |
| 171 | Enable this flag to get UE IP-Address allocated via UPF rather than locally by SMF. |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 172 | |
| 173 | Enable AMF Sctp Load Balancer |
| 174 | ''''''''''''''''''''''''''''' |
| 175 | Edit sd-core-5g-values.yaml as following |
| 176 | |
| 177 | .. code-block:: |
| 178 | |
| 179 | sctplb: |
| 180 | deploy: true |
| 181 | |
Ankur Upadhyaya | 4efce0a | 2022-10-07 11:12:08 -0600 | [diff] [blame] | 182 | Enable AMF DB Store |
| 183 | ''''''''''''''''''' |
| 184 | Edit sd-core-5g-values.yaml as following |
| 185 | |
| 186 | .. code-block:: |
| 187 | |
| 188 | amf: |
| 189 | cfgFiles: |
| 190 | amfcfg.conf: |
| 191 | configuration: |
| 192 | enableDBStore: true |
| 193 | |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 194 | Enable SMF DB Store |
| 195 | ''''''''''''''''''' |
| 196 | Edit sd-core-5g-values.yaml as following |
| 197 | |
| 198 | .. code-block:: |
| 199 | |
| 200 | smf: |
| 201 | cfgFiles: |
| 202 | smfcfg.conf: |
| 203 | configuration: |
| 204 | enableDBStore: true |
| 205 | |
| 206 | Enable UPF-Adapter |
| 207 | '''''''''''''''''' |
| 208 | Edit sd-core-5g-values.yaml as following |
| 209 | |
| 210 | .. code-block:: |
| 211 | |
| 212 | upfadapter: |
| 213 | deploy: true |
| 214 | |
| 215 | Enable NRF Keep-Alive |
| 216 | '''''''''''''''''''''' |
| 217 | Edit sd-core-5g-values.yaml as following |
| 218 | |
| 219 | .. code-block:: |
| 220 | |
| 221 | nrf: |
| 222 | cfgFiles: |
| 223 | nrfcfg.conf: |
| 224 | configuration: |
| 225 | mongoDBStreamEnable: false |
| 226 | nfProfileExpiryEnable: true |
| 227 | nfKeepAliveTime: 60 |
| 228 | |
| 229 | Enable UE IP-Address allocation by UPF |
| 230 | '''''''''''''''''''''''''''''''''''''' |
| 231 | This is optional feature to allocate UE IP-Address via UPF rather than locally via SMF. |
| 232 | Edit sd-core-5g-values.yaml as following |
| 233 | |
| 234 | .. code-block:: |
| 235 | |
| 236 | cpiface: |
| 237 | dnn: "internet" |
| 238 | hostname: "upf" |
| 239 | enable_ue_ip_alloc: true |
| 240 | ue_ip_pool: "172.250.0.0/16" |