SR-IOV networking support¶
SR-IOV is a mechanism for passing hardware virtualized network functions (VF) or full physical function (PF) directly to KVM instances; the OpenStack charms should be updated to support this capability.
Problem Description¶
Using Open vSwitch and the chain of bridges, veth pairs and tap devices incurs an overhead on network throughput and latency that is not acceptable in some use cases for OpenStack.
SR-IOV allows part of (a VF) or a full (a PF) SR-IOV enabled network card to be connected directly to a KVM instance via the virtualization layer provided by libvirt.
Support for both of these types of passthrough was implemented in full in the Mitaka release.
Proposed Change¶
Supporting SR-IOV will require changes in three charms; specifically:
neutron-api: Enablement of the ML2 mechanism driver for SR-IOV
nova-cloud-controller: Enablement of appropriate scheduler filters for management of PCI passthrough devices
nova-compute: White listing of PCI devices for use by compute instances.
SR-IOV will be enabled using a configuration option on the neutron-api charm ‘enable-sriov’; The nova-cloud-controller charm will be notified of the state of this option via the relation between the nova-cloud-controller charm and the neutron-api charm.
In the first implementation, a pci-device-whitelist configuration option will be provided by the nova-compute charm to allow allocation of specific PCI devices to compute instances. This is a direct pass through to a Nova configuration option. Later revisions of this feature may use as-yet unimplemented features in Juju to manage PCI device allocation at the unit level.
Initial SR-IOV support will be agent-less (i.e. not using the neutron-sriov-agent).
Flat and VLAN networking modes will be supported.
Alternatives¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
james-page
Gerrit Topic¶
Use Gerrit topic “sriov-support” for all patches related to this spec.
git-review -t sriov-support
Work Items¶
Initial charm support for SR-IOV¶
neutron-api: Add enable-sriov config option, enable mechanism driver, pass details to nova-cloud-controller charm.
nova-cloud-controller: Add PciPassthroughFilter to scheduler filters when enable-sriov is enabled by the neutron-api charm.
nova-compute: Add pci-device-whitelist configuration option, pass directly into nova.conf configuration file template(s).
Mojo specification for SR-IOV base enablement¶
Functional testing specification for deployment of an SR-IOV enabled OpenStack Cloud.
SR-IOV VF/PF scheduling testing¶
Focussed testing on ensuring that scheduling behaviour is tuned appropriately when SR-IOV is in use within a cloud.
Juju device binding support¶
Stretch objective for Newton cycle; superceeds pci-device-whitelist option on nova-compute charm
Repositories¶
No new git repositories required.
Documentation¶
Updates to the README’s in the impacted charms will be made as part of this change.
Security¶
No additional security concerns.
Testing¶
Code changes will be covered by unit tests; functional testing will be done using a Mojo specification.
Dependencies¶
OpenStack Mitaka.
SR-IOV enabled hardware in the Ubuntu OpenStack QA lab for functional testing
Juju device management support