Jump to: navigation, search

Difference between revisions of "Nova-neutron-sriov"

Line 10: Line 10:
 
In this document, we use the term neutron SR-IOV port to refer to a VF that can be configured as an Ethernet interface.
 
In this document, we use the term neutron SR-IOV port to refer to a VF that can be configured as an Ethernet interface.
  
A vNIC may be configured with multiple PFs, with each of them supporting the configuration of multiple VFs. This means that neutron SR-IOV ports are limited resources on a compute node. In addition, a neutron SR-IOV port is connected to a physical network, and different SR-IOV ports may be connected to different physical networks. Therefore, a VM that requires an SR-IOV port on a particular network needs to be placed on a compute node that supports neutron SR-IOV ports on that network. In this document, we will discuss the use of pci flavor to enable this.
+
A vNIC may be configured with multiple PFs, with each of them supporting the configuration of multiple VFs. This means that neutron SR-IOV ports are limited resources on a compute node. In addition, a neutron SR-IOV port is connected to a physical network, and different SR-IOV ports may be connected to different physical networks. Therefore, a VM that requires an SR-IOV port on a particular network needs to be placed on a compute node that supports neutron SR-IOV ports on that network. In this document, we will discuss how to support this.
  
 
== nova boot: Specify a neutron SR-IOV port==
 
== nova boot: Specify a neutron SR-IOV port==
 
Given the limited time we have in Icehouse, we decided not to change the syntax of the nova boot API initially. In order to specify a neutron SR-IOV port for a VM, however, the semantics of the port-id parameter in the --nic option will be extended to support SR-IOV ports. With these blueprints, each neutron port will be associated with a binding:profile dictionary, in which the port's vnic-type and pci flavor are defined.  
 
Given the limited time we have in Icehouse, we decided not to change the syntax of the nova boot API initially. In order to specify a neutron SR-IOV port for a VM, however, the semantics of the port-id parameter in the --nic option will be extended to support SR-IOV ports. With these blueprints, each neutron port will be associated with a binding:profile dictionary, in which the port's vnic-type and pci flavor are defined.  
  
== pci flavor ==
+
== a pci-extra-attr ''net-group'' ==
 +
It's assumed that the pci flavor APIs specified in this wiki
 +
To support neutron SR-IOV ports, a pci-extra-attr ''net-group'' is defined. The values of this attribute are the names of all the physical networks that are supported in a cloud.
 +
 
 
== vnic-type ==
 
== vnic-type ==
 
== vif-type ==
 
== vif-type ==
 +
== Putting All Together ==
 
== Scope of changes ==
 
== Scope of changes ==
 
* interpret the enhanced port-id parameter. For each neutron SR-IOV port, create a PCI request
 
* interpret the enhanced port-id parameter. For each neutron SR-IOV port, create a PCI request

Revision as of 03:58, 29 January 2014

Nova: support Neutron SR-IOV ports

Background

This blueprint is based on the discussions as documented in this wiki [[1]]

While the blueprint [[2]] addresses the common SR-IOV support in Nova, this blueprint attempts to capture the changes in Nova in order to support the neutron SR-IOV ports.

Traditionally, a neutron port is a virtual port that is either attached to a linux bridge or an openvswitch bridge on a compute node. With the introduction of SR-IOV, the intermediate virtual bridge is no longer required. Instead, the SR-IOV port is associated with a virtual function (VF) that is supported by the vNIC adaptor. In addition, the SR-IOV port may be extended to an upstream physical switch (IEEE 802.1br), and in such case, the port's configuration takes place in that switch. The SR-IOV port can also be connected with a macvtap device that resides on the host, which is then connected with a VF on the vNIC. The benefit of using a macvtap device is that it makes live migration with SR-IOV possible. We'll use a combination of vnic-type and vif-type to support the above requirements.

In this document, we use the term neutron SR-IOV port to refer to a VF that can be configured as an Ethernet interface.

A vNIC may be configured with multiple PFs, with each of them supporting the configuration of multiple VFs. This means that neutron SR-IOV ports are limited resources on a compute node. In addition, a neutron SR-IOV port is connected to a physical network, and different SR-IOV ports may be connected to different physical networks. Therefore, a VM that requires an SR-IOV port on a particular network needs to be placed on a compute node that supports neutron SR-IOV ports on that network. In this document, we will discuss how to support this.

nova boot: Specify a neutron SR-IOV port

Given the limited time we have in Icehouse, we decided not to change the syntax of the nova boot API initially. In order to specify a neutron SR-IOV port for a VM, however, the semantics of the port-id parameter in the --nic option will be extended to support SR-IOV ports. With these blueprints, each neutron port will be associated with a binding:profile dictionary, in which the port's vnic-type and pci flavor are defined.

a pci-extra-attr net-group

It's assumed that the pci flavor APIs specified in this wiki To support neutron SR-IOV ports, a pci-extra-attr net-group is defined. The values of this attribute are the names of all the physical networks that are supported in a cloud.

vnic-type

vif-type

Putting All Together

Scope of changes

  • interpret the enhanced port-id parameter. For each neutron SR-IOV port, create a PCI request
  • nova.network.neutronv2: changes required to support binding:profile
  • vif dictionary: add vlan id.
  • vif driver: add support to generate configs and interface XML for neutron SR-IOV ports for the vif types VIF_TYPE_802_QBG & VIF_TYPE_802_QBH