Chapter 4. Software requirements for NFV This section describes the supported configurations and drivers, and subscription details necessary for NFV. 4.1. Registering and enabling repositories To install Red Hat OpenStack Platform, you must register Red Hat OpenStack Platform director using the Red Hat Subscription Manager, and subscribe to the required channels. For more information about registering and updating your undercloud, see Registering the undercloud and attaching subscriptions in the Director Installation and Usage guide. Procedure Register your system with the Content Delivery Network, entering your Customer Portal user name and password when prompted. Determine the entitlement pool ID for Red Hat OpenStack Platform director, for example {Pool ID} from the following command and output: Include the Pool ID value in the following command to attach the Red Hat OpenStack Platform 16.2 entitlement. Disable the default repositories. Enable the required repositories for Red Hat OpenStack Platform with NFV. Update your system so you have the latest base system packages. Note To register your overcloud nodes, see Ansible-based overcloud registration in the Advanced Overcloud Customization guide. 4.2. Supported configurations for NFV deployments Red Hat OpenStack Platform (RHOSP) supports the following NFV deployments using director: Single root I/O virtualization (SR-IOV) Open vSwitch with Data Plane Development Kit (OVS-DPDK) Additionally, you can deploy RHOSP with any of the following features: Implementing composable services and custom roles. For more information, see the Composable services and custom roles in the Advanced Overcloud Customization guide Colocating Compute and Ceph Storage service on the same host. For more information, see the Hyperconverged Infrastructure Guide . Configuring Real-time Compute nodes. For more information, see Configuring real-time compute in the Configuring the Compute Service for Instance Creation guide. Enabling hardware offload. For more information, see Configuring OVS hardware offload . 4.2.1. Deploying RHOSP with the OVS mechanism driver Deploy RHOSP with the OVS mechanism driver: Procedure Modify the containers-prepare-parameter.yaml file so that the neutron_driver parameter is set to ovs . Include the neutron-ovs.yaml environment file in the /usr/share/openstack-tripleo-heat-templates/environments/services directory with your deployment script. 4.2.2. Deploying OVN with OVS-DPDK and SR-IOV Deploy DPDK and SRIOV VMs on the same node as OVN. Procedure Generate the ComputeOvsDpdkSriov role: Add OS::TripleO::Services::OVNMetadataAgent to the Controller role. Add the custom resources for OVS-DPDK with the resource_registry parameter: In the parameter_defaults section, edit the value of the tunnel type parameter to geneve : Optional: If you use a centralized routing model, disable Distributed Virtual Routing (DVR): Under parameters_defaults , set the bridge mapping: Configure the network interfaces in the computeovsdpdksriov.yaml file: Include the following yaml files in your deployment script: neutron-ovn-dpdk.yaml neutron-ovn-sriov.yaml Note Open Virtual Networking (OVN) is the default networking mechanism driver in Red Hat OpenStack Platform 16.2. If you want to use OVN with distributed virtual routing (DVR), you must include the environments/services/neutron-ovn-dvr-ha.yaml file in the openstack overcloud deploy command. If you want to use OVN without DVR, you must include the environments/services/neutron-ovn-ha.yaml file in the openstack overcloud deploy command, and set the NeutronEnableDVR parameter to false . If you want to use OVN with SR-IOV, you must include the environments/services/neutron-ovn-sriov.yaml file as the last of the OVN environment files in the openstack overcloud deploy command. 4.2.3. Deploying OVN with OVS TC Flower offload Deploy OVS TC Flower offload on the same node as OVN. Note The Red Hat Enterprise Linux Traffic Control (TC) subsystem does not support connection tracking (conntrack) helpers or application layer gateways (ALGs). Therefore, if you are using ALGs, you must disable TC Flower offload. Procedure Generate the ComputeOvsDpdkSriov role: Configure the physical_network parameter settings relevant to your deployment. For VLAN, set the physical_network parameter to the name of the network that you create in neutron after deployment. Use this value for the NeutronBridgeMappings parameter also. Under role-specific parameters, such as ComputeSriovOffloadParameters , ensure the value of the OvsHwOffload parameter is true . Configure the network interfaces in the computeovsdpdksriov.yaml file: Include the following yaml files in your deployment script: ovs-hw-offload.yaml neutron-ovn-sriov.yaml 4.3. Supported drivers for NFV For a complete list of supported drivers, see Component, Plug-In, and Driver Support in Red Hat OpenStack Platform . For a list of NICs tested for Red Hat OpenStack Platform deployments with NFV, see Tested NICs for NFV . 4.4. Compatibility with third-party software For a complete list of products and services tested, supported, and certified to perform with Red Hat OpenStack Platform, see Third Party Software compatible with Red Hat OpenStack Platform . You can filter the list by product version and software category. For a complete list of products and services tested, supported, and certified to perform with Red Hat Enterprise Linux, see Third Party Software compatible with Red Hat Enterprise Linux . You can filter the list by product version and software category.

Commands:
[stack@director ~]USD sudo subscription-manager register
[stack@director ~]USD sudo subscription-manager list --available --all --matches="Red Hat OpenStack" Subscription Name: Name of SKU Provides: Red Hat Single Sign-On Red Hat Enterprise Linux Workstation Red Hat CloudForms Red Hat OpenStack Red Hat Software Collections (for RHEL Workstation) SKU: SKU-Number Contract: Contract-Number Pool ID: {Pool-ID}-123456 Provides Management: Yes Available: 1 Suggested: 1 Service Level: Support-level Service Type: Service-Type Subscription Type: Sub-type Ends: End-date System Type: Physical
[stack@director ~]USD sudo subscription-manager attach --pool={Pool-ID}-123456
subscription-manager repos --disable=*
sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --enable=rhel-8-for-x86_64-nfv-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms
[stack@director ~]USD sudo dnf update -y [stack@director ~]USD sudo reboot
parameter_defaults: ContainerImagePrepare: - push_destination: true set: neutron_driver: ovs
TEMPLATES=/usr/share/openstack-tripleo-heat-templates openstack overcloud deploy --templates -e USD{TEMPLATES}/environments/network-environment.yaml -e USD{TEMPLATES}/environments/network-isolation.yaml -e USD{TEMPLATES}/environments/services/neutron-ovs.yaml -e USD{TEMPLATES}/environments/services/neutron-ovs-dpdk.yaml -e USD{TEMPLATES}/environments/services/neutron-sriov.yaml -e /home/stack/containers-prepare-parameter.yaml
openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkSriov
resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdkSriov::Net::SoftwareConfig: nic-configs/computeovsdpdksriov.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml
NeutronTunnelTypes: 'geneve' NeutronNetworkType: ['geneve', 'vlan']
NeutronEnableDVR: false
The OVS logical-to-physical bridge mappings to use. NeutronBridgeMappings: "datacentre:br-ex,data1:br-link0,data2:br-link1"
- type: ovs_user_bridge name: br-link0 use_dhcp: false ovs_extra: - str_replace: template: set port br-link0 tag=_VLAN_TAG_ params: _VLAN_TAG_: get_param: TenantNetworkVlanID addresses: - ip_netmask: get_param: TenantIpSubnet members: - type: ovs_dpdk_port name: br-link0-dpdk-port0 rx_queue: 1 members: - type: interface name: eno3 - type: sriov_pf name: eno4 use_dhcp: false numvfs: 5 defroute: false nm_controlled: true hotplug: true promisc: false
openstack overcloud roles generate -o roles_data.yaml ControllerSriov ComputeSriov
parameter_defaults: NeutronBridgeMappings: 'datacentre:br-ex,tenant:br-offload' NeutronNetworkVLANRanges: 'tenant:502:505' NeutronFlatNetworks: 'datacentre,tenant' NeutronPhysicalDevMappings: - tenant:ens1f0 - tenant:ens1f1 NovaPCIPassthrough: - address: "0000:17:00.1" physical_network: "tenant" - address: "0000:3b:00.1" physical_network: "tenant" NeutronTunnelTypes: '' NeutronNetworkType: 'vlan' ComputeSriovOffloadParameters: OvsHwOffload: True KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 intel_iommu=on iommu=pt isolcpus=1-11,13-23" IsolCpusList: "1-11,13-23" NovaReservedHostMemory: 4096 NovaComputeCpuDedicatedSet: ['1-11','13-23'] NovaComputeCpuSharedSet: ['0','12']
- type: ovs_bridge name: br-offload mtu: 9000 use_dhcp: false addresses: - ip_netmask: get_param: TenantIpSubnet members: - type: linux_bond name: bond-pf bonding_options: "mode=active-backup miimon=100" members: - type: sriov_pf name: ens1f0 numvfs: 3 primary: true promisc: true use_dhcp: false defroute: false link_mode: switchdev - type: sriov_pf name: ens1f1 numvfs: 3 promisc: true use_dhcp: false defroute: false link_mode: switchdev
TEMPLATES_HOME="/usr/share/openstack-tripleo-heat-templates" CUSTOM_TEMPLATES="/home/stack/templates" openstack overcloud deploy --templates -r USD{CUSTOM_TEMPLATES}/roles_data.yaml -e USD{TEMPLATES_HOME}/environments/services/neutron-ovn-sriov.yaml -e USD{TEMPLATES_HOME}/environments/ovs-hw-offload.yaml -e USD{CUSTOM_TEMPLATES}/network-environment.yaml