blob: c031ac86e59ef65e43cef376fe5254e41458aa93 [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
10
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -070011Network Settings
12----------------
Hyunsun Moond12f32b2021-07-30 12:55:00 -070013
14BESS UPF requires three networks, **enb**, **access**, and **core**, and all
15three networks must use different subnets. To help your understanding,
16the following example ACE environment will be used in the rest of the guide.
17
Zack Williams1ae109e2021-07-27 11:17:04 -070018.. image:: images/bess-upf-example-network.svg
Hyunsun Moond12f32b2021-07-30 12:55:00 -070019
Hyunsun Moon279a9482021-08-01 06:48:54 -070020+-----------+-----------+------------------------------------+-------------------+---------------+
21| Network | VLAN | Subnet | Interface | IP address |
22+-----------+-----------+------------------------------------+-------------------+---------------+
Zack Williams1ae109e2021-07-27 11:17:04 -070023| eNB | 2 | 192.168.2.0/24 (gw: 192.168.2.254) | mgmt server VLAN2 | 192.168.2.254 |
Hyunsun Moon279a9482021-08-01 06:48:54 -070024| | | +-------------------+---------------+
Zack Williams1ae109e2021-07-27 11:17:04 -070025| | | | eNB | 192.168.2.10 |
Hyunsun Moon279a9482021-08-01 06:48:54 -070026+-----------+-----------+------------------------------------+-------------------+---------------+
Zack Williams1ae109e2021-07-27 11:17:04 -070027| access | 3 | 192.168.3.0/24 (gw: 192.168.3.254) | mgmt server VLAN3 | 192.168.3.254 |
Hyunsun Moon279a9482021-08-01 06:48:54 -070028| | | +-------------------+---------------+
29| | | | upf access | 192.168.3.1 |
30+-----------+-----------+------------------------------------+-------------------+---------------+
Zack Williams1ae109e2021-07-27 11:17:04 -070031| core | 4 | 192.168.4.0/24 (gw: 192.168.4.254) | mgmt server VLAN4 | 192.168.4.254 |
Hyunsun Moon279a9482021-08-01 06:48:54 -070032| | | +-------------------+---------------+
33| | | | upf core | 192.168.4.1 |
34+-----------+-----------+------------------------------------+-------------------+---------------+
Hyunsun Moond12f32b2021-07-30 12:55:00 -070035
36.. note::
37
38 Management plane and out-of-band network are not depicted in the diagram.
39
40
41Note that the management server has the only external routable address and acts as a router for
42all networks in the Aether pod.
Zack Williams1ae109e2021-07-27 11:17:04 -070043So in order for UE to access the Internet, two things need to be done in the management server.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070044
Zack Williams1ae109e2021-07-27 11:17:04 -070045* For outgoing traffic, masquerade the internal address with the external address of the management server.
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -070046* For response traffic to UE, forward them to UPF's **core** interface.
Hyunsun Moond12f32b2021-07-30 12:55:00 -070047
48
49Check Cluster Resources
50-----------------------
51
52Before proceeding with the deployment, make sure the cluster has enough resources to run BESS UPF.
53
54* 2 dedicated cores (``"cpu"``)
Zack Williams1ae109e2021-07-27 11:17:04 -070055* 2 1GiB HugePages (``"hugepages-1Gi"``)
Hyunsun Moond12f32b2021-07-30 12:55:00 -070056* 2 SRIOV Virtual Functions bound to **vfio-pci** driver (``"intel.com/intel_sriov_vfio"``)
57
58In fact, these requirements are not mandatory to run BESS UPF, but are recommended for best performance.
59You can use the following command to check allocatable resources in the cluster nodes.
60
61.. code-block:: shell
62
Hyunsun Moon53a18a72021-08-10 16:57:32 -070063 $ kubectl get nodes -o json | jq '.items[].status.allocatable'
Hyunsun Moond12f32b2021-07-30 12:55:00 -070064 {
65 "cpu": "95",
66 "ephemeral-storage": "1770223432846",
67 "hugepages-1Gi": "32Gi",
68 "intel.com/intel_sriov_netdevice": "32",
69 "intel.com/intel_sriov_vfio": "32",
70 "memory": "360749956Ki",
71 "pods": "110"
72 }
73
74
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -070075Configure and Deploy
76--------------------
Hyunsun Moond12f32b2021-07-30 12:55:00 -070077
78Download ``aether-app-configs`` if you don't have it already in your development machine.
79
80.. code-block:: shell
81
82 $ cd $WORKDIR
83 $ git clone "ssh://[username]@gerrit.opencord.org:29418/aether-app-configs"
84
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -070085Move 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 -070086Don't forget to replace the IP addresses in the example configuration with the addresses of the actual cluster.
87
Hyunsun Moon2b2bf9a2021-08-01 05:29:48 -070088.. code-block:: yaml
Hyunsun Moond12f32b2021-07-30 12:55:00 -070089
90 $ cd $WORKDIR/aether-app-configs/apps/bess-upf/upf1
91 $ mkdir overlays/prd-ace-test
92 $ vi overlays/prd-ace-test/values.yaml
93 # SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
94
95 config:
96 upf:
97 enb:
98 subnet: "192.168.2.0/24"
99 access:
100 ip: "192.168.3.1/24"
101 gateway: "192.168.3.254"
Hyunsun Moon6001f942021-08-01 10:35:04 -0700102 vlan: 3
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700103 core:
104 ip: "192.168.4.1/24"
105 gateway: "192.168.4.254"
Hyunsun Moon6001f942021-08-01 10:35:04 -0700106 vlan: 4
Hyunsun Moonba65df22021-08-10 20:01:06 -0700107 # Override SRIOV resource name when using a NIC other than Intel
108 #sriov:
109 # resourceName: "mellanox.com/mellanox_sriov_vfio"
110 # Add below when connecting to 5G core
111 #cfgFiles:
112 # upf.json:
113 # cpiface:
114 # dnn: "8internet"
115 # hostname: "upf"
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700116
117
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -0700118Update ``fleet.yaml`` in the same directory to let Fleet use the custom configuration when deploying
119BESS UPF to the new cluster.
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700120
Hyunsun Moon2b2bf9a2021-08-01 05:29:48 -0700121.. code-block:: yaml
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700122
123 $ vi fleet.yaml
124 # add following block at the end
125 - name: prd-ace-test
126 clusterSelector:
127 matchLabels:
128 management.cattle.io/cluster-display-name: ace-test
129 helm:
130 valuesFiles:
131 - overlays/prd-ace-test/values.yaml
132
133
Hyunsun Moon2b2bf9a2021-08-01 05:29:48 -0700134Submit your changes.
Hyunsun Moond12f32b2021-07-30 12:55:00 -0700135
136.. code-block:: shell
137
138 $ cd $WORKDIR/aether-app-configs
139 $ git status
140 $ git add .
141 $ git commit -m "Add BESS UPF configs for test ACE"
142 $ git review
143
144
145Go to Fleet dashboard and wait until the cluster status becomes **Active**.
Hyunsun Moonb9c7dde2021-08-01 06:11:08 -0700146It can take up to 1 min for Fleet to fetch the configuration updates.