cloud-infrastructure and cloud-regions in A&AI DB is in Amsterdam release.
Introducing following:
- EPA-flavor, EPA-feature and EPA-feature-attribute: A given cloud-region may support multiple groups of hardware features. Both Azure and AWS has multiple groups of HW features defined for each region. Azure calls them as "VM Sizes" and AWS calls them as "Instance types". In Openstack world, Openstack VIM administrator also defines multiple groups of HW features (called as flavors in Openstack). EPA-flavor is represents these HW feature groups. Each EPA-flavor has set of EPA-features and each EPA-feature is defined by EPA-feature-attributes.
Sequence Diagrams
Discovery of EPA-flavors when cloud-region is added
Periodic Discovery of EPA-flavors
VNFC Instantiation
A&AI Schema Changes
Current AAI Schema
Modified AAI Schema
EPA Feature Definition
Requirements that are kept in mind are :
- Expose HW capability of various CPU architecture (Intel x86, ARM etc...) in generic fashion.
- Provide flexibility to expose CPU architecture and vendor specific features.
- Support for multiple Clouds such as Openstack clouds, AWS Cloud, Azure Cloud etc...
- No hardcoding of EPA feature names OR attribute names in ONAP (other than Multi-Cloud plugin)
Following table provides EPA features and attributes. Also, it describes matching constraints for each EPA feature. These constrains are applied while finding the best compute-group for placing VNFC.
Following format is used to represent the EPA feature name:
<Hardware or Software feature>-<Generic feature or CPU architecture/vendor specific featuers>-<feature name>
Attributes are represented as <feature attribute>:<feature value>
<EPA feature name> | <EPA Feature attributes> | Matching constraints | Comments |
---|---|---|---|
hw-generic-vcpu | vcpus:<num of cpus> | Integer, Greater than & nearest | This capability provides number of virtual CPUs supported by constituing compute-group |
sw-generic-cpuPinning | policy: <dedicated or shared) | Enum, Exact match | Core pinning |
sw-generic-threading | policy:<prefer/isolate/require> | Enum. Exact match | If threading is enabled, this feature provides capability on whether the constituting compute group provides best method to put all threads as siblings (if prefer is used), must put threads as siblings (if require is used) and isolate across multiple physical cores (if isolate is used) |
hw-generic-memory | size: <in Mbutes> | Integer, Greater than & nearest | This capability provides the amout of memory supported by compute-group. |
hw-generic-ephemeralDiskSize | size: <in Gbytes> | Integer, Greater than & nearest | This capability provides the amout of ephemeral disk memory supported by compute-group. |
hw-generic-permDiskSize | size: <in Gbytes> | Integer, Greater than & nearest | This capability provides the amout of permanent disk memory supported by compute-group. |
hw-generic-cpuNuma | distribution: <equal or specific> Valid if <specific> List of following: NumaNode.<N> : <No. of vCPUs> | Boolean, exact match List, Greater than & nearest (All vCPUs across all NUMA nodes can't exceed number of vCPUs | This capability exposes Numa capability for vCPUs in the compute-group. "equal' means when VNF is placed using this compute-group, vCPUs are equally divided across possible NUMA nodes. "specific" means that CPUs assigned to VNFs are acorss multiple NUMA nodes as specified. |
hw-generic-memoryNuma | distribution: <equal or specific> Valid if <specific> List of following: NumaNode.<N> : <Amount of memory> | Boolean, exact match List, Greater than & nearest | This capability exposes Numa capability for memory in the compute-group. "equal' means when VNF is placed using this compute-group, memory assigned to VNFs comes equally NUMA nodes. "specific" means that memory is assigned to VNF is acorss multiple NUMA nodes as specified. |
hw-generic-pagesize | size : <size in Kbytes> | Integer, Greater tahn & nearest | This capability exposes page size supported in the compute-group |
sw-generic-realtimeVMM | supported : <yes/no> | Boolean, exact match | This capability exposes whether real time VMM is supported in the compute-group |
sw-generic-ovsDPDK | supported : <yes/no> | Boolean, exact match | This capability exposes whether OVS-DPDK is supported in the compute-group |
hw-generic-lookasideCrypto | |||
hw-generic-lookasideCompression | |||
hw-generic-PCISmartNIC | |||
hw-generic-tpm | supported : <yes/no> | Boolean, exact match | This capability exposes whether TPM(Trusted Platform Module) is supported in the compute-group |
hw-generic-secureboot | supported : <yes/no> | Boolean, exact match | This capability exposes whether Secure Boot is supported in the compute-group |
hw-intel64-aes | supported : <yes/no> | Boolean, exact match | |
hw-intel64-rdrand | supported : <yes/no> | Boolean, exact match | |
hw-intel64-avx1 | supported : <yes/no> | Boolean, exact match | |
hw-intel64-avx2 | supported : <yes/no> | Boolean, exact match | |
hw-intel64-avx512 | supported : <yes/no> | Boolean, exact match | |
hw-intel64-mpx | supported : <yes/no> | Boolean, exact match | |
hw-intel64-sse | supported : <yes/no> | Boolean, exact match | |
hw-intel64-cat | supported : <yes/no> | Boolean, exact match | |
hw-intel64-cmt | supported : <yes/no> | Boolean, exact match | |
hw-intel64-sgx | supported : <yes/no> | Boolean, exact match | |
hw-intel64-sha | supported : <yes/no> | Boolean, exact match | |
hw-intel64-pclmuldq | supported : <yes/no> | Boolean, exact match | |
hw-intel64-adcx | supported : <yes/no> | Boolean, exact match | |
hw-intel64-bootguard | supported : <yes/no> | Boolean, exact match | |
hw-arm64-trustzone | |||
hw-generic-virtIOsmartNIC |