Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

Overall design


1. 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.

2. Openstack Config SRIOV

Openstack configuration:

  1. NIC configuration  refer to https://docs.openstack.org/neutron/pike/admin/config-sriov.html
  2. Create availability zone and host aggregate.
     $ nova aggregate-create sriov-direct
     $ nova aggregate-set-metadata sriov-direct sriov-nic=true 
     $ openstack flavor create m1.tiny --id auto --ram 512 --disk 20 --vcpus 2
     $ openstack flavor set m1.tiny --property pci_passthrough:alias=intel-15B3-1003:2
     $ openstack flavor set m1.tiny --property aggregate_instance_extra_specs:sriov-nic=true

After Openstack configs SR-IOV NIC, we will have a provider network.

  1. 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

PUT /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"}

pciDeviceId{value: "1003"}
interfaceType{value: "SR-IOV"}
providerPhyNetwork{value: "physnet"}
vnicType{value: "direct"}


4. ONAP Module Modify 

Module NameModificationstatusownercomments
SDCAdd SR-IOV NIC attributes.Completed

Alex

Lianhao


PolicyAdd SR-IOV NIC attributes.In Progress

VF-CAdd create port process.In ProgressHaibin
SOAdd create port process.In Progress

OOFAdd the process for cloud region HPA capabilitiesIn ProgessRuoyu
AAINothing, we just add one hpa-attribute-key and hpa-attribute-valueCompleted-now [A] API can support.
ESRAdd SR-IOV NIC info to cloud extra info.In ProgressHaibin
Multi-cloudRegister SR-IOV info to AAI.In ProgressHaibin
VIMConfig SR-IOV NIC and create network with SR-IOV NIC.In ProgressHaibin


[A] PUT /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/hpa-capabilities/hpa-capability/{hpa-capability-id}

4.1 VF-C Modification

  1. When it create network, VF-C will get provider network including network_type, physical_network and segmentation_id from AAI pass it Multi-cloud .
  2. When we create port , we need pass vnic type to multi-cloud. so we don't modify it. 

4.2 Multi-cloud Modification

      https://developer.openstack.org/api-ref/network/v2/

  1. Multi-cloud need to get provider network information and modify all provider network information for the request of submitting to VIM.
  2. Multi-cloud don't modify VF-C request, just pass to VIMs, so we don't modify it.

4.3 SO Modification

Please Marcus Williams helps to update it.

4.4 OOF Modification

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}

Seond,  we need to add some attributes in the response returning to SO and VF-C like below.

   "transactionId":"xxx-xxx-xxxx",
   "requestId":"
yyy-yyy-yyyy",
   "
requestStatus":"completed",
   "
statusMessage":"",
   "solutions":{  
      "
placementSolutions":[  
         [  {  "
resourceModuleName":"vG",
               "
serviceResourceId":"<copy from Req.>",
               "solution":{  
                  "
identifierType":"cloudRegionId",

                  "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",

                      }
               ] } ] ],
                  }

Reference

https://docs.openstack.org/neutron/pike/admin/config-sriov.html

https://builders.intel.com/docs/networkbuilders/EPA_Enablement_Guide_V2.pdf  of "2.3 Support for I/O Passthrough via SR-IOV"

HPA Policies and Mappings

Supported HPA Capability Requirements(DRAFT)#LogicalNodei/ORequirements

  • No labels