This blueprint is to add ML2 Mechanism Driver for SR-IOV capable NIC based switching (HW VEB), such as Mellanox ConnectX Family.
SR-IOV capable NIC, such as Mellanox ConnectX Family cards, provide embedded switching capability. As part of the both nova and neutron enchacements to support SR-IOV ports, the mechanism driver proposed by this blueprinht will initially support VLAN network type. Nova VIF Driver will take care of setting VLAN ID via libvirt network interface XML. The mechanism driver will require L2 agent to make run time networking setting updates on SR-IOV ports.
The Ml2 mechanism driver will be based on Simple Agent Mechanism Driver. The Ml2 mechanism driver will be capable to bind ports that match supported criteria listed below. It will support DIRECT and MACVTAP vnic types. It will support PCI VENDOR INFO initially matching Mellanox ConnectX Family. There will be an option to load the list of supported PCI VENDOR INFO from configuration file. The mechanism driver will include vlan_id attribute in port vif_details dictionary to provide nova vif driver with vlan id details. The mechanism driver will expect to get port binding:profile populated with physical_network and pci_vendor_info to identify if should bind the port and on which physical network to bind. To support L2 agent rpc calls, _device_to_port_id method of ml2 rpc module should be modified to service devices that are not prefixed by tap.
An alternative solution would be to develop a monolithic plugin. Since SR-IOV resources are limited and support less flexible configuration options as virtual ports, it makes sense to provide SR-IOV ports aside with virtual ports.
Possible impact on performance may be due to pci_vendor_info match check during the attemt to bind port.
The deployer must configure the following configuration variables:
Primary assignee: Irena Berezovsky <irenab>
Nova vif driver is required to support SR-IOV NIC based virtual interface. This functionality is added following the nova blueprint: https://blueprints.launchpad.net/nova/+spec/pci-passthrough-sriov
The code will be covered with unit tests. For tempest test coverage, third party testing is provided. The tests are run in devstack setup on physical server with SR-IOV ConnectX Family card.
Configuration Reference guide will be updated from the code.
SR-IOV support discussion details are here: