Overall design
Gliffy | ||||
---|---|---|---|---|
|
1. Scenario
Let us say, a site has three kinds of compute nodes with respect to SRIOV-NIC
...
3rd set does not contain any SRIOV NIC cards.
1.1 Openstack Config SRIOV
Openstack configuration:
- NIC configuration refer to to https://docs.openstack.org/neutron/pike/admin/config-sriov.html
Create flavors.
Flavor1:$ openstack flavor create flavor1 --id auto --ram 512 --disk 40 --vcpus 4
$ openstack flavor set flavor1 --property pci_passthrough:alias=NIC-sriov-1234-5678-physnet1:1
$ openstack flavor set flavor1 --property pci_passthrough:alias=NIC-sriov-2345-6789-physnet2:1
Flavor2:
$ openstack flavor create flavor2 --id auto --ram 512 --disk 40 --vcpus 4$ openstack flavor set flavor2 --property pci_passthrough:alias=NIC-sriov-4321-8765:2
Flavor3
$ openstack flavor create flavor3 --id auto --ram 512 --disk 40 --vcpus 4
1.2 Mutli-cloud discovery
When it reads the flavors information from openstack site, if the pci_passthrough alias start with NIC-sriov, then it assumes that it is SRIOV NIC type.
...
As part of discovery, it populates the A&AI with two PCIe features for Flavor1.
hpa-feature=”pciePassthrough”,
...
Hpa-attribute-key | Hpa-attribute-value |
pciVendorId | 2345 |
pciDeviceId | 6789 |
pciCount | 1 |
interfaceType | SRIOV-NIC |
providerNetwork | Physnet2 |
1.3 SO call OOF
SO will get pciVendorId, pciDeviceId and interfaceType from CSAR file, then call to OOF. OOF will response homing information to SO, SO don't interpret it and pass through it to Multi-cloud.
1.4 VF-C call OOF
VF-C will get pciVendorId, pciDeviceId and interfaceType from CSAR file, then call to OOF. OOF will response homing information to VF-C.
1.5 OOF Response
OOF will match the SRIOV information along with the constraint provided by Policy and add extra attributes inside the assignmentInfo data block when returning the response to SO and VF-C.
Sample looks like below.
"assignmentInfo": [ { "key":"locationType", { "key":"vimId", { "key":"oofDirectives", "directives":[ { "vnfc_directives":[ } ] |
For the newly added oofDirectives, we only return the vnfc part. For example:
"vnfc_directives": [ { "vnfc_id":"", "directives":[ { "directive_name": "flavor_directive", "attributes": [ ] }, ] } } |
It is worth noting that the vnic-type is converted from interfaceType in OOF.
...