ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 1 | .. |
Ankur Upadhyaya | 71795a3 | 2023-04-17 10:05:47 +0530 | [diff] [blame^] | 2 | SPDX-FileCopyrightText: 2023-present Intel Corporation |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 3 | SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org> |
| 4 | SPDX-License-Identifier: Apache-2.0 |
| 5 | |
ajay | 0751498 | 2021-12-07 22:24:32 -0800 | [diff] [blame] | 6 | .. _deployment_5G_guide: |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 7 | |
ajay | 0751498 | 2021-12-07 22:24:32 -0800 | [diff] [blame] | 8 | 5G Deployment Guide |
| 9 | =================== |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 10 | |
| 11 | Deployment Overview |
| 12 | ------------------- |
| 13 | SD-Core is released with Helm chart and container images. |
| 14 | We recommend using **Kubernetes** and **Helm** to deploy SD-Core. |
Ajay Lotan Thakur | d057307 | 2022-05-04 19:16:52 -0700 | [diff] [blame] | 15 | SD-Core images are hosted on docker hub. |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 16 | |
| 17 | Hardware resource requirement |
| 18 | ----------------------------- |
| 19 | |
ajay | ce0380c | 2021-12-14 21:51:00 -0800 | [diff] [blame] | 20 | .. list-table:: CPU & Memory Requirements for 5G components |
| 21 | :widths: 5 5 5 |
| 22 | :header-rows: 1 |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 23 | |
ajay | ce0380c | 2021-12-14 21:51:00 -0800 | [diff] [blame] | 24 | * - SD-Core Component |
| 25 | - Required CPU |
| 26 | - Required Memory in Gi |
| 27 | * - AMF |
| 28 | - 2 CPU Cores |
| 29 | - 4Gi |
| 30 | * - SMF |
| 31 | - 2 CPU Cores |
| 32 | - 4Gi |
| 33 | * - NRF |
| 34 | - 2 CPU Cores |
| 35 | - 1Gi |
| 36 | * - NSSF |
| 37 | - 2 CPU Cores |
| 38 | - 1Gi |
| 39 | * - AUSF |
| 40 | - 1 CPU Cores |
| 41 | - 1Gi |
| 42 | * - PCF |
| 43 | - 1 CPU Cores |
| 44 | - 1Gi |
| 45 | * - UDR |
| 46 | - 2 CPU Cores |
| 47 | - 1Gi |
| 48 | * - UDM |
| 49 | - 2 CPU Cores |
| 50 | - 1Gi |
| 51 | * - Config5G(webconsole) |
| 52 | - 1 CPU Cores |
| 53 | - 1Gi |
| 54 | * - SimApp |
| 55 | - 1 CPU Cores |
| 56 | - 1Gi |
| 57 | * - MongoDB |
| 58 | - 2 CPU Cores |
| 59 | - 4Gi |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 60 | * - UPF-Adapter |
| 61 | - 1 CPU Cores |
| 62 | - 1Gi |
| 63 | * - SCTP Load Balancer |
| 64 | - 1 CPU Cores |
| 65 | - 1Gi |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 66 | |
Ajay Lotan Thakur | 05ce5ce | 2022-09-25 20:36:16 -0700 | [diff] [blame] | 67 | .. note:: |
| 68 | SD-Core deployment is tested on Intel/AMD hardware. There is WIP to run SD-Core |
| 69 | on ARM architecture. |
| 70 | |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 71 | Deployment Options |
| 72 | ------------------ |
| 73 | |
| 74 | Development Environments |
| 75 | """""""""""""""""""""""" |
| 76 | |
ajay | ce0380c | 2021-12-14 21:51:00 -0800 | [diff] [blame] | 77 | Please refer (see :ref:`aiab-guide`) to setup 5G development environment. |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 78 | |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 79 | Production Environments - 5G |
| 80 | """""""""""""""""""""""""""" |
| 81 | |
| 82 | To install SD-Core into your Kubernetes cluster, follow instructions |
| 83 | |
| 84 | Step1 - Clone SD-Core 5G Helm chart |
| 85 | ''''''''''''''''''''''''''''''''''' |
| 86 | .. code-block:: |
| 87 | |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 88 | git clone "https://gerrit.opencord.org/sdcore-helm-charts" |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 89 | cd sdcore-helm-charts/sdcore-helm-charts/ |
| 90 | helm dep update #Update Helm dependencies |
| 91 | |
| 92 | Step2 - Prepare your Helm value for 5G |
| 93 | '''''''''''''''''''''''''''''''''''''' |
| 94 | |
| 95 | You can modify existing values.yaml directly, but we recommend composing another value |
| 96 | file myvalues.yaml using values.yaml as an example. We are highlighting a few things we |
| 97 | need to modify here. More explanation of the supported Helm values can be found in the |
| 98 | Configuration section below. |
| 99 | |
| 100 | Step3 - Install 5G using SD-Core umbrella helm chart |
| 101 | '''''''''''''''''''''''''''''''''''''''''''''''''''' |
| 102 | |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 103 | 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] | 104 | |
| 105 | .. code-block:: |
| 106 | |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 107 | 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] | 108 | |
| 109 | To verify the installation: |
| 110 | |
| 111 | .. code-block:: |
| 112 | |
| 113 | helm -n sdcore-5g ls |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 114 | xxxx@node:~$ helm -n sdcore-5g ls |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 115 | NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION |
| 116 | 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] | 117 | xxxx@node:~$ |
ajay | cbd1706 | 2022-03-06 11:12:58 -0800 | [diff] [blame] | 118 | |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 119 | xxxx@node:~$ kubectl get pods -n sdcore-5g |
| 120 | NAME READY STATUS RESTARTS AGE |
| 121 | amf-6cddb6ff5-g5kwp 1/1 Running 0 8d |
| 122 | ausf-64fb5c5df5-g9xps 1/1 Running 0 8d |
| 123 | gnbsim-0 1/1 Running 0 8d |
| 124 | mongodb-0 1/1 Running 0 8d |
| 125 | mongodb-1 1/1 Running 0 8d |
| 126 | mongodb-arbiter-0 1/1 Running 0 8d |
| 127 | nrf-69794885b-pgl8f 1/1 Running 0 8d |
| 128 | nssf-fc9c48c89-dxqn7 1/1 Running 0 8d |
| 129 | pcf-5c7d7767c9-wv6dl 1/1 Running 0 8d |
| 130 | simapp-669b99db9d-lbbm4 1/1 Running 0 8d |
| 131 | smf-b87fc6f8f-4jdqr 1/1 Running 0 8d |
| 132 | smf-b87fc6f8f-xt2n2 1/1 Running 0 8d |
| 133 | udm-f948b57dc-n5b4h 1/1 Running 0 8d |
| 134 | udr-698445bd87-8ptpm 1/1 Running 0 8d |
| 135 | upf-0 5/5 Running 0 8d |
| 136 | upf-adapter-c4844b7fb-wqbvw 1/1 Running 0 8d |
| 137 | webui-8cfb9659c-hqfp9 1/1 Running 0 8d |
| 138 | xxxx@node:~$ |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 139 | |
| 140 | To uninstall: |
| 141 | |
| 142 | .. code-block:: |
| 143 | |
| 144 | helm -n sdcore-5g uninstall sdcore-5g |
| 145 | kubectl delete namespace sdcore-5g # also remove the sdcore-5g if needed |
| 146 | |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 147 | Cloud Native Configuration - 5G |
| 148 | """""""""""""""""""""""""""""""" |
ajay | d19711c | 2021-12-07 12:07:04 -0800 | [diff] [blame] | 149 | |
Ankur Upadhyaya | 4efce0a | 2022-10-07 11:12:08 -0600 | [diff] [blame] | 150 | Following configuration need to be enabled in 5G helm values override file. |
| 151 | It is important to understand usage of following flags |
| 152 | |
| 153 | - **SCTP Load Balancer** : |
| 154 | Enable this flag to introduce SCTP Load Balancer between gNBs and multiple AMF instances |
| 155 | to load balance sctp connections across multiple AMF instances. |
| 156 | |
| 157 | - **DB Store** : |
| 158 | Enable this flag to preserve AMF context or SMF PDU session into Database. |
| 159 | This is required for any AMF/SMF instance to load session/context of any |
| 160 | other instance which being fault recovered. |
| 161 | |
| 162 | - **UPF-Adapter** : |
| 163 | Enable this flag to introduce UPF-Adapter between multiple SMF instances |
Ankur Upadhyaya | 71795a3 | 2023-04-17 10:05:47 +0530 | [diff] [blame^] | 164 | and UPF. This required for the case where UPF does not support multiple |
Ankur Upadhyaya | 4efce0a | 2022-10-07 11:12:08 -0600 | [diff] [blame] | 165 | SMF association with same pfcp node-id. |
| 166 | |
| 167 | - **NRF Keep-Alive** : |
| 168 | Enable this flag for NRF to maintain multiple NF profiles and trigger periodic |
| 169 | profile updates from the registered NFs. |
| 170 | |
| 171 | - **UE IP-Address alloc via UPF** : |
Ankur Upadhyaya | 71795a3 | 2023-04-17 10:05:47 +0530 | [diff] [blame^] | 172 | Enable this config to get UE IP-Address allocated via UPF rather than locally by SMF. |
| 173 | |
| 174 | - **Static UE IP-Address alloc** : |
| 175 | Enable this config to reserve static UE IP-Address for any specific UE. |
| 176 | |
| 177 | - **Custom IMSI support** : |
| 178 | Employ this config to have custom IMSI(starts with leading zeroes) for development environment with real UE. |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 179 | |
| 180 | Enable AMF Sctp Load Balancer |
| 181 | ''''''''''''''''''''''''''''' |
| 182 | Edit sd-core-5g-values.yaml as following |
| 183 | |
| 184 | .. code-block:: |
| 185 | |
| 186 | sctplb: |
| 187 | deploy: true |
| 188 | |
Ankur Upadhyaya | 4efce0a | 2022-10-07 11:12:08 -0600 | [diff] [blame] | 189 | Enable AMF DB Store |
| 190 | ''''''''''''''''''' |
| 191 | Edit sd-core-5g-values.yaml as following |
| 192 | |
| 193 | .. code-block:: |
| 194 | |
| 195 | amf: |
| 196 | cfgFiles: |
| 197 | amfcfg.conf: |
| 198 | configuration: |
| 199 | enableDBStore: true |
| 200 | |
Ankur Upadhyaya | 4f0e3b0 | 2022-10-06 11:15:39 -0600 | [diff] [blame] | 201 | Enable SMF DB Store |
| 202 | ''''''''''''''''''' |
| 203 | Edit sd-core-5g-values.yaml as following |
| 204 | |
| 205 | .. code-block:: |
| 206 | |
| 207 | smf: |
| 208 | cfgFiles: |
| 209 | smfcfg.conf: |
| 210 | configuration: |
| 211 | enableDBStore: true |
| 212 | |
| 213 | Enable UPF-Adapter |
| 214 | '''''''''''''''''' |
| 215 | Edit sd-core-5g-values.yaml as following |
| 216 | |
| 217 | .. code-block:: |
| 218 | |
| 219 | upfadapter: |
| 220 | deploy: true |
| 221 | |
| 222 | Enable NRF Keep-Alive |
| 223 | '''''''''''''''''''''' |
| 224 | Edit sd-core-5g-values.yaml as following |
| 225 | |
| 226 | .. code-block:: |
| 227 | |
| 228 | nrf: |
| 229 | cfgFiles: |
| 230 | nrfcfg.conf: |
| 231 | configuration: |
| 232 | mongoDBStreamEnable: false |
| 233 | nfProfileExpiryEnable: true |
| 234 | nfKeepAliveTime: 60 |
| 235 | |
| 236 | Enable UE IP-Address allocation by UPF |
| 237 | '''''''''''''''''''''''''''''''''''''' |
| 238 | This is optional feature to allocate UE IP-Address via UPF rather than locally via SMF. |
| 239 | Edit sd-core-5g-values.yaml as following |
| 240 | |
| 241 | .. code-block:: |
| 242 | |
| 243 | cpiface: |
| 244 | dnn: "internet" |
| 245 | hostname: "upf" |
| 246 | enable_ue_ip_alloc: true |
| 247 | ue_ip_pool: "172.250.0.0/16" |
Ankur Upadhyaya | 71795a3 | 2023-04-17 10:05:47 +0530 | [diff] [blame^] | 248 | |
| 249 | |
| 250 | Enable Static UE IP-Address allocation |
| 251 | '''''''''''''''''''''''''''''''''''''' |
| 252 | This config shall help in reserving Static UE IP-Address for any given UE. |
| 253 | The config should mention details about DNN, UE's IMSI and preferred IP-Address from that DNN pool. |
| 254 | |
| 255 | .. code-block:: |
| 256 | |
| 257 | smf: |
| 258 | cfgFiles: |
| 259 | smfcfg.conf: |
| 260 | configuration: |
| 261 | staticIpInfo: |
| 262 | - dnn: internet |
| 263 | imsiIpInfo: |
| 264 | supi-123456789012341: "172.250.237.10" |
| 265 | supi-123456789012342: "172.250.237.11" |
| 266 | |
| 267 | Enable Custom IMSI with real UE 5G deployment |
| 268 | ''''''''''''''''''''''''''''''''''''''''''''' |
| 269 | |
| 270 | Following configuration is required to have custom test IMSI with real UE 5G deployment. |
| 271 | |
| 272 | Existing MCC/MNC = 208/93 |
| 273 | New MCC/MNC = 001/22 |
| 274 | |
| 275 | Patch following files |
| 276 | |
| 277 | * Mandatory |
| 278 | |
| 279 | Patch aether-in-a-box/sd-core-5g-values.yaml as following |
| 280 | |
| 281 | .. code-block:: |
| 282 | |
| 283 | # below block configures the subscribers and their security details. |
| 284 | # you can have any number of subscriber ranges |
| 285 | subscribers: |
| 286 | - - ueId-start: "208930100007487" |
| 287 | - ueId-end: "208930100007500" |
| 288 | - plmnId: "20893" |
| 289 | + - ueId-start: "001220100007487" |
| 290 | + ueId-end: "001220100007500" |
| 291 | + plmnId: "00122" |
| 292 | opc: "981d464c7c52eb6e5036234984ad0bcf" |
| 293 | op: "" |
| 294 | key: "5122250214c33e723a5dd523fc145fc0" |
| 295 | sequenceNumber: "16f3b3f70fc2" |
| 296 | - - ueId-start: "208930100007501" |
| 297 | - ueId-end: "208930100007599" |
| 298 | - plmnId: "20893" |
| 299 | + - ueId-start: "001220100007501" |
| 300 | + ueId-end: "001220100007599" |
| 301 | + plmnId: "00122" |
| 302 | opc: "981d464c7c52eb6e5036234984ad0bcf" |
| 303 | op: "" |
| 304 | key: "5122250214c33e723a5dd523fc145fc0" |
| 305 | |
| 306 | * only if ROC is employed |
| 307 | |
| 308 | Patch aether-in-a-box/roc-5g-models.json as following |
| 309 | |
| 310 | .. code-block:: |
| 311 | |
| 312 | "imsi-definition": { |
| 313 | - "mcc": "208", |
| 314 | - "mnc": "93", |
| 315 | + "mcc": "001", |
| 316 | + "mnc": "22", |
| 317 | { |
| 318 | "sim-id": "aiab-sim-1", |
| 319 | "display-name": "UE 1 Sim", |
| 320 | - "imsi": "208930100007487" |
| 321 | + "imsi": "001220100007487" |
| 322 | }, |