Skip to content

Commit 838055c

Browse files
author
Jaganathan Palanisamy
committed
NFV Networker Ovs Dpdk changes
This change is to add the documentaion for Openstack dataplane deployment for Networker OVS DPDK nodes.
1 parent f8710e3 commit 838055c

File tree

1 file changed

+189
-0
lines changed

1 file changed

+189
-0
lines changed

nfv_networker_ovs_dpdk.md

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
# NFV OVS DPDK
2+
3+
This document describes how to deploy EDPM nodes with OVS DPDK.
4+
5+
## Procedure Overview
6+
7+
1. Configure kernel args and tuned parameters
8+
2. Configure OVS DPDK parameters
9+
3. Configure the networks with DPDK interfaces of the networker nodes
10+
2. Configure Neutron parameters.
11+
12+
In order to complete the above procedure, the `services` list of the
13+
`OpenStackDataPlaneNodeSet` CR needs to be edited.
14+
15+
## OpenStackDataPlaneNodeSet services list
16+
17+
Networker nodes can be configured by creating an
18+
`OpenStackDataPlaneNodeSet` CR which the
19+
[openstack-operator](https://openstack-k8s-operators.github.io/openstack-operator)
20+
will reconcile to create OpenStackDataPlaneService resources
21+
when an `OpenStackDataPlaneDeployment` CR is created.
22+
OpenStackDataPlaneNodeSet CR has a `services` list like the following:
23+
24+
```yaml
25+
apiVersion: dataplane.openstack.org/v1beta1
26+
kind: OpenStackDataPlaneNodeSet
27+
spec:
28+
...
29+
services:
30+
- bootstrap
31+
- download-cache
32+
- reboot-os
33+
- configure-ovs-dpdk
34+
- configure-network
35+
- validate-network
36+
- install-os
37+
- configure-os
38+
- ssh-known-hosts
39+
- run-os
40+
- install-certs
41+
- ovn
42+
- neutron-ovn
43+
- neutron-metadata
44+
```
45+
Only the services which are on the list will be configured.
46+
47+
## Configure the EDPM ansible variables of the Networker nodes
48+
49+
EDPM ansible variabes based on following EDPM ansible roles,
50+
```
51+
[edpm_ovs_dpdk](https://github.com/openstack-k8s-operators/edpm-ansible/blob/main/roles/edpm_ovs_dpdk/meta/argument_specs.yml)
52+
[edpm_kernel](https://github.com/openstack-k8s-operators/edpm-ansible/blob/main/roles/edpm_kernel/meta/argument_specs.yml)
53+
[edpm_tuned](https://github.com/openstack-k8s-operators/edpm-ansible/blob/main/roles/edpm_tuned/meta/argument_specs.yml)
54+
[edpm_ovn](https://github.com/openstack-k8s-operators/edpm-ansible/blob/main/roles/edpm_ovn/meta/argument_specs.yml)
55+
[edpm_libvirt](https://github.com/openstack-k8s-operators/edpm-ansible/blob/main/roles/edpm_libvirt/meta/argument_specs.yml)
56+
57+
Following are the list of EDPM ansible variables which need to be
58+
provided for deploying with OVS DPDK support.
59+
```
60+
edpm_ovs_dpdk_pmd_core_list: List of Logical CPUs to be allocated for Poll Mode Driver
61+
62+
edpm_ovs_dpdk_socket_memory: Socket memory list per NUMA node
63+
64+
edpm_ovs_dpdk_memory_channels: Number of memory channel per socket
65+
66+
edpm_ovn_bridge_mappings: List of bridge and dpdk ports mappings
67+
68+
edpm_kernel_args: Configures kernel boot parameters
69+
70+
edpm_tuned_profile: tuned profile configuration
71+
72+
edpm_tuned_isolated_cores: List of isolated cores
73+
```
74+
75+
Example:
76+
```
77+
dpm_ovs_dpdk_pmd_core_list: "1,13,2,14,3,15"
78+
edpm_ovs_dpdk_socket_memory: "4096"
79+
edpm_ovs_dpdk_memory_channels: "4"
80+
edpm_ovn_bridge_mappings: ['dpdk2:br-link2','dpdk1:br-link1']
81+
edpm_kernel_args: "default_hugepagesz=1GB hugepagesz=1G hugepages=64 iommu=pt intel_iommu=on tsx=off isolcpus=2-11,14-23"
82+
edpm_tuned_profile: "cpu-partitioning"
83+
edpm_tuned_isolated_cores: "2-11,14-23"
84+
```
85+
86+
edpm_network_config_template:
87+
DPDK supported network interfaces should be specified in the network config templates to configure OVS DPDK on the Networker node.
88+
89+
```
90+
edpm_network_config_template
91+
-
92+
type: ovs_user_bridge
93+
name: br-link
94+
use_dhcp: false
95+
members:
96+
-
97+
type: ovs_dpdk_port
98+
name: dpdk0
99+
mtu: 2000
100+
rx_queue: 2
101+
members:
102+
-
103+
type: interface
104+
name: nic3
105+
```
106+
107+
This example also assumes that the Networker nodes:
108+
109+
- PXE and boot settings are already configured.
110+
- Are at least one baremetal networker with DPDK interfaces.
111+
112+
Create an `OpenStackDataPlaneNodeSet` CR file,
113+
e.g. `dataplane_cr.yaml` to represent the EDPM nodes. See
114+
[dataplane_v1beta1_openstackdataplanenodeset.yaml](https://github.com/openstack-k8s-operators/openstack-operator/blob/main/config/samples/dataplane_v1beta1_openstackdataplanenodeset.yaml)
115+
for an example to modify as described in this document.
116+
117+
Do not yet create the CR in OpenShift as the edits described in the
118+
next sections are required.
119+
120+
The example
121+
[dataplane_v1beta1_openstackdataplanenodeset_ovs_dpdk.yaml](https://github.com/openstack-k8s-operators/openstack-operator/tree/main/config/samples/dataplane/ovs_dpdk)
122+
has OVS DPDK interfaces network configuration and required edpm ansible parameters.
123+
124+
Modify your `OpenStackDataPlaneNodeSet` CR to set
125+
[edpm-ansible](https://github.com/openstack-k8s-operators/edpm-ansible)
126+
variables so that the
127+
[edpm_network_config role](https://github.com/openstack-k8s-operators/edpm-ansible/blob/main/roles/edpm_network_config/)
128+
will configure networks with ovs dpdk interfaces.
129+
130+
131+
`OpenStackDataPlaneNodeSet`
132+
[Networker services list](https://openstack-k8s-operators.github.io/openstack-operator/dataplane/#_composable_services)
133+
134+
```yaml
135+
apiVersion: dataplane.openstack.org/v1beta1
136+
kind: OpenStackDataPlaneNodeSet
137+
spec:
138+
...
139+
roles:
140+
edpm-networker:
141+
...
142+
services:
143+
- bootstrap
144+
- download-cache
145+
- reboot-os
146+
- configure-ovs-dpdk
147+
- configure-network
148+
- validate-network
149+
- install-os
150+
- configure-os
151+
- ssh-known-hosts
152+
- run-os
153+
- install-certs
154+
- ovn
155+
- neutron-ovn
156+
- neutron-metadata
157+
```
158+
159+
### Create the OpenStackDataPlaneNodeSet
160+
161+
Create the CR from your directory based on the example
162+
[dataplane_v1beta1_openstackdataplanenodeset_ovs_dpdk](https://github.com/openstack-k8s-operators/openstack-operator/tree/main/config/samples/dataplane/ovs_dpdk)
163+
with the changes described in the previous section.
164+
```
165+
oc kustomize --load-restrictor LoadRestrictionsNone openstack-operator/config/samples/dataplane/ovs_dpdk > dataplane_cr.yaml
166+
```
167+
168+
### Create a OpenStackDataPlaneDeployment
169+
170+
Creating an `OpenStackDataPlaneDeployment` will trigger Ansible jobs
171+
to configure an Networker. Which Ansible roles are run depends on the
172+
`services` list.
173+
174+
Each `OpenStackDataPlaneDeployment` can have its own
175+
`servicesOverride` list which will redefine the list
176+
of services of an `OpenStackDataPlaneNodeSet` for a
177+
deployment.
178+
179+
The example
180+
[dataplane_v1beta1_openstackdataplanedeployment_ovs_dpdk](https://github.com/openstack-k8s-operators/openstack-operator/tree/main/config/samples/dataplane/ovs_dpdk)
181+
182+
Create the CR based on the example
183+
```
184+
oc kustomize --load-restrictor LoadRestrictionsNone openstack-operator/config/samples/dataplane/ovs_dpdk > dataplane_cr.yaml
185+
oc create -f dataplane_cr.yaml
186+
```
187+
188+
The Netoworker OVS DPDK deployment should be complete after the Ansible jobs started
189+
from creating the above CR finish successfully.

0 commit comments

Comments
 (0)