Background
Main purpose of this feature to place VNFCs in sites with SRIOV-NIC enabled compute nodes.
If there are no sites with available SRIOV-NIC compute nodes, OOF can choose next best compute node flavors. Next best compute nodes may not SRIOV-NICs. Of course VNFCs, in this case, assumed to be tested with and without SRIOV-NIC by vendors.
The parameters to instantiate VNFs differ whether SRIOV-NIC based switching or normal vSwitch based switching at the NFVI.
...
Background
Main purpose of this feature to place VNFCs in sites with SRIOV-NIC enabled compute nodes.
If there are no sites with available SRIOV-NIC compute nodes, OOF can choose next best compute node flavors. Next best compute nodes may not SRIOV-NICs. Of course VNFCs, in this case, assumed to be tested with and without SRIOV-NIC by vendors.
The parameters to instantiate VNFs differ whether SRIOV-NIC based switching or normal vSwitch based switching at the NFVI.
In case of Openstack based cloud-regions, port is expected to be created explicitly with binding:vnic_type as direct. In case of vSwitch based switching, there is no need for explicit creation of port, but port can be created with binding:vnic_type as normal. So, based on flavor, appropriate value is expected to be passed when talking to Openstack.
...
|
VF-C will get pciVendorId, pciDeviceId and interfaceType from CSAR file, then call to OOF. OOF will response homing information to VF-C.
VF-C get OOF response, It will create network of SRIOV-NIC using physical network.
Then, It will create port based on network using interface type.
1.5 OOF Response
OOF just check /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/flavors/flavor/{flavor-id}/hpa-capabilities
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":[{ "vnfc_id":"<ID of VNFC>", "directives":[ { "directive_name":"<Name of directive,example flavor_directive>", "attributes":[ {
|
...
|
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.
VF-C get OOF response, It will create network of SRIOV-NIC using physical network.
Then, It will create port based on network using interface type.
1.5 OOF Response
OOF just check /cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/flavors/flavor/{flavor-id}/hpa-capabilities
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":"<Name of directive> "flavor_directive", "attributes": [ ] }, } ] |
For the newly added oofDirectives, we only return the vnfc part. For example:
"vnfc_directives": [ , { "vnfcdirective_idname": "vnic-info2", ] |
It is worth noting that
...
},
{ "directive_name": "vnic-info1",
"attributes": [
{"attribute_name": "vnic-type", "attribute_value":"direct"},
{"attribute_name": "provider_network", "attribute_value":"physnet1"}
]
},
{ "directive_name": "vnic-info2",
"attributes": [
{"attribute_name": "vnic-type", "attribute_value":"direct"},
{"attribute_name": "provider_network", "attribute_value":"physnet2"}
]
}
]
}
]
It is worth noting that the vnic-type is converted from interfaceType in OOF.
If interfaceType is SRIOV-NIC, then OOF returns 'vnic-type' as 'direct', If interfaceType is not SRIOV-NIC, OOF return 'vnic-type' as 'normal'.
1.6 Policy Data
"flavorLabel": "flavor_label_1",
"sriovNICLabel": "oof_returned_vnic_type_1
...
the vnic-type is converted from interfaceType in OOF.
If interfaceType is SRIOV-NIC, then OOF returns 'vnic-type' as 'direct', If interfaceType is not SRIOV-NIC, OOF return 'vnic-type' as 'normal'.
1.6 Policy Data
{
"service": "hpaPolicy",
"policyName": "oofCasablanca.hpaPolicy_vFW",
"description": "HPA policy for vFW",
"templateVersion": "0.0.1",
"version": "1.0",
"priority": "3",
"riskType": "test",
"riskLevel": "2",
"guard": "False",
"content": {
"resources": "vFW",
"identity": "hpaPolicy_vFW",
"policyScope": ["vFW", "US", "INTERNATIONAL", “ip", "vFW"],
"policyType": "hpaPolicy",
"flavorFeatures": [
{
"hpa-feature" : "pciePassthrough",
"mandatory" : "True",
"architecture": "generic",
"hpa-feature-attributes": [
{"hpa-attribute-key":"pciVendorId", "hpa-attribute-value": "1234","operator": "=", "unit": ""},
{"hpa-attribute-key":"pciDeviceId", "hpa-attribute-value": "5678","operator": "=", "unit": ""},
{"hpa-attribute-key":"pciCount", "hpa-attribute-value": "1","operator": "=", "unit": ""},
{"hpa-attribute-key":"cardType "hpa-attribute-value": "sriov-nic","operator": "=", "unit": ""},
...
“vduName” : “<vdu.Name>”,
"type":"vnfc/tocsa.nodes.nfv.Vdu.Compute",
"directives":[
{
"directive_name":"flavor",
"attributes":[
{
"attribute_name":" oof_returned_flavor_for_firewall ", //Admin needs to ensure that this value is same as flavor parameter in HOT
"attribute_value": "<Blank>”
}
]
}
]
"flavorProperties": [
{
"hpa-feature": "pciePassthrough",
"mandatory": "True",
"architecture": "generic",
"directives" : [
{
"directive_name": “pciePassthrough_directive”?
“attributes”: [
{ “attribute_name”: “oof_returned_vnic_type_for_firewall_protected”,
“attribute_value”: "direct"
},
{ “attribute_name”: “oof_returned_provider_network_for_firewall_protected”,
“attribute_value”: "physnet1"
}
]
}
],
"hpa-feature-attributes": [
{ "hpa-attribute-key": "pciVendorId"
...
, "hpa-attribute-value":
...
"
...
1234", "operator":
...
"=",
...
"unit":
...
""
...
]
...
},
...
{
...
"hpa-attribute-
...
key"
...
:
...
"
...
pciDeviceId",
...
"mandatory" : "True",
"architecture": "generic",
"hpa-feature-attributes": [
...
"hpa-attribute-value": "5678", "operator": "=", "unit": "" },
{ "hpa-attribute-key": "
...
pciCount",
...
"hpa-attribute-value":
...
"
...
1", "operator":
...
">=
...
{"hpa-attribute-key":"pciDeviceId", "hpa-attribute-value": "6789","operator": "=", "unit": ""},
...
", "unit": "" }
]
},
{
"hpa-feature": "pciePassthrough",
"mandatory": "True",
"architecture": "generic",
"directives" : [
{
"directive_name": “pciePassthrough_directive”?
“attributes”: [
{ “attribute_name”: “oof_returned_vnic_type_for_firewall_unprotected”,
“attribute_value”: "direct"
}
{ “attribute_name”: “oof_returned_provider_for_firewall_unprotected”,
“attribute_value”: "physnet2"
}
]
}
],
"hpa-feature-attributes": [
{ "hpa-attribute-key": "
...
pciVendorId",
...
"hpa-attribute-value":
...
"
...
3333", "operator":
...
"=",
...
"unit":
...
"" },
...
{ "hpa-attribute-key": "pciDeviceId"
...
, "hpa-attribute-value":
...
"
...
7777", "operator":
...
"=",
...
"unit":
...
"" },
...
{ "hpa-attribute-key": "pciCount"
...
, "hpa-attribute-value":
...
"
...
1", "operator":
...
">=",
...
"unit":
...
"" }
]
}
...
...
]
...
}
...
]
}
}
2. 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 | Libo | |
VF-C | Add create port process. | In Progress | Haibin | |
SO | Add create port process. | In Progress | Marcus | |
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 | - | |
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 |
...