blob: 73fae09b3f0773c75b191b8ddecb4f1d0e2c1a32 [file] [log] [blame]
Hyunsun Moond12f32b2021-07-30 12:55:00 -07001..
2 SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
3 SPDX-License-Identifier: Apache-2.0
4
5BESS UPF Deployment
6===================
7
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -07008This section describes how to configure and deploy BESS UPF.
Hyunsun Moond12f32b2021-07-30 12:55:00 -07009
Hyunsun Moon015eb212021-08-24 18:06:24 -070010Network Configuration
11---------------------
Hyunsun Moond12f32b2021-07-30 12:55:00 -070012
Hyunsun Moon015eb212021-08-24 18:06:24 -070013BESS UPF enabled edge setup requires three additional user plane subnets
14apart from the default K8S subnets.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070015
Hyunsun Moon015eb212021-08-24 18:06:24 -070016* **enb**: Used to provide eNBs with connectivity to SD-Core and UPF.
17* **access**: Used to provide UPF with connectivity to eNBs.
18* **core**: Used to provide UPF with edge services as well as the Internet access.
19
20To help your understanding, the following example ACE environment will be used in the rest of the guide.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070021
Zack Williams1ae109e2021-07-27 11:17:04 -070022.. image:: images/bess-upf-example-network.svg
Hyunsun Moond12f32b2021-07-30 12:55:00 -070023
Hyunsun Moond12f32b2021-07-30 12:55:00 -070024.. note::
25
Hyunsun Moon015eb212021-08-24 18:06:24 -070026 Admin and out-of-band networks are not depicted in the diagram.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070027
Hyunsun Moon015eb212021-08-24 18:06:24 -070028+-----------+-----------+------------------------------------+-------------------+---------------+
29| Network | VLAN ID | Subnet | Interface | IP address |
30+-----------+-----------+------------------------------------+-------------------+---------------+
31| k8smgmt | 1 | 192.168.1.0/24 (gw: 192.168.1.1) | management server | 192.168.1.254 |
32| | | +-------------------+---------------+
33| | | | compute1 | 192.168.1.3 |
34| | | +-------------------+---------------+
35| | | | compute2 | 192.168.1.4 |
36| | | +-------------------+---------------+
37| | | | compute3 | 192.168.1.5 |
38+-----------+-----------+------------------------------------+-------------------+---------------+
39| enb | 2 | 192.168.2.0/24 (gw: 192.168.2.1) | enb1 | 192.168.2.10 |
40+-----------+-----------+------------------------------------+-------------------+---------------+
41| access | 3 | 192.168.3.0/24 (gw: 192.168.3.1) | upf1 access | 192.168.3.10 |
42+-----------+-----------+------------------------------------+-------------------+---------------+
43| core | 4 | 192.168.4.0/24 (gw: 192.168.4.1) | management server | 192.168.4.254 |
44| | | +-------------------+---------------+
45| | | | upf1 core | 192.168.4.10 |
46+-----------+-----------+------------------------------------+-------------------+---------------+
Hyunsun Moond12f32b2021-07-30 12:55:00 -070047
Hyunsun Moon015eb212021-08-24 18:06:24 -070048It is assumed that the management server has the only external routable address and acts
49as a router connecting the Aether pod to the outside.
50This means that all uplink packets leaving the Aether pod needs to be masqueraded with the
51external address of the management server or the k8smgmt address if the destination
52is Aether central.
53Also, in order for downlink traffic to UE to be delivered to its destination,
54it must be forwarded to the UPF's core interface.
55This adds additional routes to the management server and L3 switch.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070056
Charles Chan84869672022-03-04 15:54:42 -080057.. note::
58
59 There is a work-in-progress on interface consolidation in BESS UPF,
60 which will merge `enb`, `access` and `core` into just one interface and
61 simplify the configuration significantly.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070062
63Check Cluster Resources
64-----------------------
65
Hyunsun Moon015eb212021-08-24 18:06:24 -070066Before proceeding with the deployment, make sure the cluster has enough resources
67to run BESS UPF by running the command below.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070068
69.. code-block:: shell
70
Hyunsun Moon53a18a72021-08-10 16:57:32 -070071 $ kubectl get nodes -o json | jq '.items[].status.allocatable'
Hyunsun Moond12f32b2021-07-30 12:55:00 -070072 {
73 "cpu": "95",
74 "ephemeral-storage": "1770223432846",
75 "hugepages-1Gi": "32Gi",
76 "intel.com/intel_sriov_netdevice": "32",
77 "intel.com/intel_sriov_vfio": "32",
78 "memory": "360749956Ki",
79 "pods": "110"
80 }
81
Hyunsun Moon015eb212021-08-24 18:06:24 -070082For best performance, BESS UPF requires the following resources:
83
84* 2 dedicated cores (``"cpu"``)
85* 2 1GiB HugePages (``"hugepages-1Gi"``)
86* 2 SRIOV Virtual Functions bound to **vfio-pci** driver (``"intel.com/intel_sriov_vfio"``)
87
88For environments where these resources are not available, contact Ops team for
89advanced configuration.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070090
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -070091Configure and Deploy
92--------------------
Hyunsun Moond12f32b2021-07-30 12:55:00 -070093
94Download ``aether-app-configs`` if you don't have it already in your development machine.
95
96.. code-block:: shell
97
98 $ cd $WORKDIR
99 $ git clone "ssh://[username]@gerrit.opencord.org:29418/aether-app-configs"
100
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -0700101Move the directory to ``apps/bess-upf/upf1`` and create a Helm values file for the new cluster as shown below.
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700102Don't forget to replace the IP addresses in the example configuration with the addresses of the actual cluster.
103
Hyunsun Moon2b2bf9a2021-08-01 05:29:48 -0700104.. code-block:: yaml
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700105
106 $ cd $WORKDIR/aether-app-configs/apps/bess-upf/upf1
107 $ mkdir overlays/prd-ace-test
108 $ vi overlays/prd-ace-test/values.yaml
Hyunsun Moon015eb212021-08-24 18:06:24 -0700109 # SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700110
111 config:
112 upf:
113 enb:
114 subnet: "192.168.2.0/24"
115 access:
Hyunsun Moon015eb212021-08-24 18:06:24 -0700116 ip: "192.168.3.10/24"
117 gateway: "192.168.3.1"
Hyunsun Moon6001f942021-08-01 10:35:04 -0700118 vlan: 3
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700119 core:
Hyunsun Moon015eb212021-08-24 18:06:24 -0700120 ip: "192.168.4.10/24"
121 gateway: "192.168.4.1"
Hyunsun Moon6001f942021-08-01 10:35:04 -0700122 vlan: 4
Hyunsun Moonba65df22021-08-10 20:01:06 -0700123 # Add below when connecting to 5G core
124 #cfgFiles:
125 # upf.json:
Charles Chan84869672022-03-04 15:54:42 -0800126 # gtppsc: true
Hyunsun Moonba65df22021-08-10 20:01:06 -0700127 # cpiface:
Charles Chan84869672022-03-04 15:54:42 -0800128 # dnn: "internet" # should match the one configured in ROC
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700129
130
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -0700131Update ``fleet.yaml`` in the same directory to let Fleet use the custom configuration when deploying
132BESS UPF to the new cluster.
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700133
Hyunsun Moon2b2bf9a2021-08-01 05:29:48 -0700134.. code-block:: yaml
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700135
136 $ vi fleet.yaml
137 # add following block at the end
138 - name: prd-ace-test
139 clusterSelector:
140 matchLabels:
141 management.cattle.io/cluster-display-name: ace-test
142 helm:
143 valuesFiles:
144 - overlays/prd-ace-test/values.yaml
145
146
Hyunsun Moon2b2bf9a2021-08-01 05:29:48 -0700147Submit your changes.
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700148
149.. code-block:: shell
150
151 $ cd $WORKDIR/aether-app-configs
152 $ git status
153 $ git add .
154 $ git commit -m "Add BESS UPF configs for test ACE"
155 $ git review
156
157
158Go to Fleet dashboard and wait until the cluster status becomes **Active**.
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -0700159It can take up to 1 min for Fleet to fetch the configuration updates.