...
Gliffy | ||||
---|---|---|---|---|
|
1.
...
This is refer to Supported HPA Capability Requirements(DRAFT)#LogicalNodei/ORequirements
Logical Node i/O Requirements
...
Capability Name
...
Capability Value
...
Descriptiopn
...
pciVendorId
...
PCI-SIG vendor ID for the device
...
pciDeviceId
...
PCI-SIG device ID for the device
...
pciNumDevices
...
Number of PCI devices required.
...
pciAddress
...
Geographic location of the PCI device via the standard PCI-SIG addressing model of Domain:Bus:device:function
...
pciDeviceLocalToNumaNode
...
required
notRequired
...
Determines if I/O device affinity is required.
Network Interface Requirements
...
Capability Name
...
Capability Value
...
Description
...
nicFeature
...
LSO, LRO, RSS, RDMA
...
Long list of NIC related items such as LSO, LRO, RSS, RDMA, etc.
...
dataProcessingAccelerationLibray
...
Dpdk_Version
...
Name and version of the data processing acceleration library required. Orchestration can match any NIC that is known to be compatible with the specified library.
...
interfaceType
...
Virtio,
PCI-Passthrough,
SR-IOV, E1000, RTL8139, PCNET
...
Network interface type
...
vendorSpecificNicFeature
...
TBA
...
List of vendor specific NIC related items.
...
Scenario
Let us say, a site has three kinds of compute nodes with respect to SRIOV-NIC
1st set contains, say SRIOV-NIC cards of type XYZ (PCIe vendor ID: 1234 Device ID: 5678) and YUI(PCIe vendor ID:2345 Device ID:6789.
2nd set contains say SRIOV-NIC cards of type ABC (PCIe vendor ID: 4321 Device ID: 8765).
3rd set does not contain any SRIOV NIC cards.
1.1 Openstack Config SRIOV
Openstack configuration:
- NIC configuration refer to https://docs.openstack.org/neutron/pike/admin/config-sriov.html
Create
availability zone and host aggregate.
$ nova aggregate-create sriov-direct
$ nova aggregate-set-metadata sriov-direct sriov-nic=trueflavors.
Flavor1:$ openstack flavor create
m1.tinyflavor1 --id auto --ram 512 --disk
2040 --vcpus
24
$ openstack flavor set
m1.tinyflavor1 --property pci_passthrough:alias=
intel-15B3-1003:2NIC-sriov-1234-5678-physnet1:1
$ openstack flavor set
m1.tinyflavor1 --property
aggregate_instance_extra_specs:sriov-nic=true
After Openstack configs SR-IOV NIC, we will have a provider network.
- Create network and subnet:
$ openstack network create --provider-network-type vlan --provider-physical-network physnet --provider-segmentation_id 101 provider_net
$ openstack subnet create --network provider_net --subnet-range 192.168.100.0/24 subnet
2. Get the id of the neutron network where you want the SR-IOV port to be created:
$ net_id=`neutron net-show provider_net | grep "\ id\ " | awk '{ print $4 }'`
3. Create the SR-IOV port. We specify vnic_type=direct, but other options include normal, direct-physical, and macvtap:
$ port_id=`neutron port-create $net_id --name sriov_port --binding:vnic_type direct | grep "\ id\ " | awk '{ print $4 }'`
4. Create the VM. For the nic we specify the SR-IOV port created in step 2:
$ nova boot --flavor m1.tiny --image ubuntu_14.04 --nic port-id=$port_id test-sriov
Note: VF-C will execute four steps call four times to multi-cloud. SO will execute four steps just call one times to multi-cloud.
3. AAI Presentation
...
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.
Next two integers are meant for vendor id and device id.
If it is present after device id, it is assumed to be provider network.
As part of discovery, it populates the A&AI with two PCIe features for Flavor1.
hpa-feature=”pciePassthrough”,
architecture=”{hw_arch}",
version=”v1”,
Hpa-attribute-key | Hpa-attribute-value |
pciVendorId | 1234 |
pciDeviceId | 5678 |
pciCount | 1 |
cardType | SRIOV-NIC |
providerNetwork | Physnet1 |
hpa-feature=”pciePassthrough”,
architecture=”{hw_arch}",
version=”v1”,
Hpa-attribute-key | Hpa-attribute-value |
pciVendorId | 2345 |
pciDeviceId | 6789 |
pciCount | 1 |
cardType | SRIOV-NIC |
providerNetwork | Physnet2 |
1.3 SO call OOF
1.4 SO call OOF
1.5 OOF Response
As we known OOF just check /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/flavors/flavor/{flavor-id}/hpa-capabilities
Now, we need OOF also check and match /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/hpa-capabilities/hpa-capability/{hpa-capability-id}
hpa-capability-id="q236fd3d-0b15-11w4-81b2-6210efc6dff9",
hpa-feature=”pciePassthrough”,
architecture=”{hw_arch}",
version=”v1”,
...
hpa-attribute-key
...
hpa-attribute-value
...
pciCount
...
{value: 1}
...
pciVendorId
...
{value: "15B3"}
...
Seond, we need to add some attributes in the response returning to SO and VF-C like below.
|
4. ONAP Module Modify
Module Name | Modification | status | owner | comments |
---|---|---|---|---|
SDC | Add SR-IOV NIC attributes. | Completed | Alex Lianhao | |
Policy | Add SR-IOV NIC attributes. | In Progress | ||
VF-C | Add create port process. | In Progress | Haibin | |
SO | Add create port process. | In Progress | ||
OOF | Add the process for cloud region HPA capabilities | In Progess | Ruoyu | |
AAI | Nothing, we just add one hpa-attribute-key and hpa-attribute-value | Completed | - | now [A] API can support. |
ESR | Add SR-IOV NIC info to cloud extra info. | In Progress | Haibin | |
Multi-cloud | Register SR-IOV info to AAI. | In Progress | Haibin | |
VIM | Config SR-IOV NIC and create network with SR-IOV NIC. | In Progress | Haibin |
...
Seond, we need to add some attributes in the response returning to SO and VF-C like below.
|
...
|
...
"identifiers":[ "DLLSTX1A“ ] },
"assignmentInfo":[
{ "key":"locationId",
"value":"DLLSTX1A“ },
{ "key":"locationType",
"value":"openstack-cloud“ },
{ "key":"vimId",
"value":"rackspace_DLLSTX1A" },
{ "key":"flavors",
"value":{
"flavorLabel1xxx":"vimFlavorxxx",
"flavorLabel2xxx":"vimFlavorxxx" }}
{ "key": "SRIOV-NIC"
"value":{
"interfaceType": "SR-IOV",
"providerPhyNetwork": "physnet",
"vnicType": "direct",
...
|
SR-IOV NIC related Capability in Data model
This is refer to Supported HPA Capability Requirements(DRAFT)#LogicalNodei/ORequirements
Logical Node i/O Requirements
Capability Name | Capability Value | Descriptiopn |
---|---|---|
pciVendorId | PCI-SIG vendor ID for the device | |
pciDeviceId | PCI-SIG device ID for the device | |
pciNumDevices | Number of PCI devices required. | |
pciAddress | Geographic location of the PCI device via the standard PCI-SIG addressing model of Domain:Bus:device:function | |
pciDeviceLocalToNumaNode | required notRequired | Determines if I/O device affinity is required. |
Network Interface Requirements
Capability Name | Capability Value | Description |
---|---|---|
nicFeature | LSO, LRO, RSS, RDMA | Long list of NIC related items such as LSO, LRO, RSS, RDMA, etc. |
dataProcessingAccelerationLibray | Dpdk_Version | Name and version of the data processing acceleration library required. Orchestration can match any NIC that is known to be compatible with the specified library. |
interfaceType | Virtio, PCI-Passthrough, SR-IOV, E1000, RTL8139, PCNET | Network interface type |
vendorSpecificNicFeature | TBA | List of vendor specific NIC related items. |
Reference
https://docs.openstack.org/neutron/pike/admin/config-sriov.html
...