Deploying with SR-IOV Support =============================== TripleO can deploy Overcloud nodes with SR-IOV support. A new role ``ComputeSriov`` has been added to create a custom ``roles_data.yaml`` with composable SR-IOV role. Execute below command to create the ``roles_data.yaml``:: openstack overcloud roles generate -o roles_data.yaml Controller ComputeSriov Once a roles file is created, the following changes are required: - Deploy Command - Parameters - Network Config Deploy Command ---------------- Deploy command should include the generated roles data file from the above command. Deploy command should also include the SR-IOV environment file to include the neutron-sriov-agent service. All the required parameters are also specified in this environment file. The parameters has to be configured according to the baremetal on which SR-IOV needs to be enabled. Also, SR-IOV requires mandatory kernel parameters to be set, like ``intel_iommu=on iommu=pt`` on Intel machines. In order to enable the configuration of kernel parameters to the host, host-config-pre-network environment file has to be added for the deploy command. Adding the following arguments to the ``openstack overcloud deploy`` command will do the trick:: openstack overcloud deploy --templates \ -r roles_data.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/host-config-and-reboot.yaml \ ... Parameters ---------- Following are the list of parameters which need to be provided for deploying with SR-IOV support. * NovaPCIPassthrough: Provide the list of SR-IOV device names, the logical network, PCI addresses etc. The PF/VF devices matching the criteria would be available for guests. * NeutronPhysicalDevMappings: The map of logical network name and the physical interface. Example:: parameter_defaults: NovaPCIPassthrough: - devname: "p7p1" physical_network: "sriov1_net" - devname: "p7p2" physical_network: "sriov2_net" NeutronPhysicalDevMappings: "sriov1_net:p7p1,sriov2_net:p7p2" The parameter ``KernelArgs`` should be provided in the deployment environment file, with the set of kernel boot parameters to be applied on the ``ComputeSriov`` role where SR-IOV is enabled:: parameter_defaults: ComputeSriovParameters: KernelArgs: "intel_iommu=on iommu=pt" Network Config -------------- SR-IOV supported network interfaces should be specified in the network config templates as sriov_pf type. This mechanism of configuring numvfs for SR-IOV device is recommended and NeutronSriovNumVFs shall be avoided. Example:: network_config: - type: sriov_pf name: p7p2 mtu: 9000 numvfs: 10 use_dhcp: false defroute: false nm_controlled: true promisc: false