Requirements for VNFD
These diagrams come from papyrus based on R3 vnf model clean, blue ones are new requirements added.
COLOR EXPLANATION: Black means already have in R3, all the attributes with colors are new requirements to propose. Blue means haved discussed, pink means haven't yet. Currently, all the attributes have been introduced, so pink is no longer have, all the pink attributes turn into blue ones. Red means already have in ONAP, but to align with new IFA 011 v2.5.1, I suggest to remove them from the current position to the new places I list here. Orange means the suggested modifications for the discussed attributes.
If the proposed attributes are aligned with IFA specs, you will find a sentence below the attribute name, if not, they are the extended requirements.
ONAP Vnfd View
ONAP Vnfd - Topology View
Vnf Deployment Flavor
VNF Instance
Class: Vnf
Attribute Name | Type | Mult. | Stereotypes | Description | Rationale |
vnfInstanceId | Identifier | 1 | Experimental OpenModelAttribute
| identifier of the VNF instance
| |
vnfInstanceName | String | 1..* | Experimental OpenModelAttribute
| name of the VNF instance. Multiple names are possible.
| |
vnfProductName | String | 0..1 | Experimental OpenModelAttribute
| name to identify the VNF Product, invariant for the VNF Product lifetime
| |
description | invalid | 0..1 | Experimental OpenModelAttribute
| description of the VNF instance
| |
vnfProvider | invalid | 1 | Experimental OpenModelAttribute
| provider of the VNF model
| |
vnfdId | Identifier | 1 | Experimental OpenModelAttribute
| identifier of the VNF model
| |
vnfdVersion | String | 1 | Experimental OpenModelAttribute
| version of the VNF model
| |
vnfSoftwareVersion | String | 1 | Experimental OpenModelAttribute
| Software version of the VNF. This is changed when there is any change to the software that is included in the VNF package
| |
onboardedVnfPkgInfoId | Identifier | 1 | Experimental OpenModelAttribute
| identifier of the specific VNF package on which the VNF instance is based
| |
availabilityZone | invalid | 1 | Experimental OpenModelAttribute
| availability zone information of the VNF instance
| |
operationalStatus | OperationalStatus | 0..1 | Experimental OpenModelAttribute
| indicator for whether the resource is considered operational. Valid values are in-service-path and out-of-service-path.
| |
orchestrationStatus | OrchestrationStatus | 1 | Experimental OpenModelAttribute
| whether the VNF instance is instantiated
| |
oamlpv4Address |
IpAddress | 0..1 | Experimental OpenModelAttribute
| oam ip address, ipv4
| |
oamlpv6Address |
IpAddress | 0..1 | Experimental OpenModelAttribute
| oam ip address, ipv6
| |
instantiatedVnfInfo | invalid | 0..1 | Experimental OpenModelAttribute
| information specific to an instantiated VNF instance, e.g., vm information
| |
inMaint | Boolean | 0..1 | Experimental OpenModelAttribute
| whether the VNF instance is in maintenance mode, if yes, DCAE will not observe alarms/traps, etc.
| |
isClosedLoopDisabled | Boolean | 0..1 | Experimental OpenModelAttribute
| whether closed loop function is enabled
| |
encryptedAccessFlag | Boolean | 0..1 | Experimental OpenModelAttribute
| whether this VNF is accessed using SSH
| |
vnfConfigurableProperty | invalid | 0..1 | Experimental OpenModelAttribute
| indicator for whether autoHeal and autoScale is enabled
| |
nfNamingCode | String | 1 | Experimental OpenModelAttribute
| String assigned to this model used for naming purpose.
| |
vnfNamingPolicyId | String | 1 | Experimental OpenModelAttribute
| Identifier of the policy which has the naming logic for this VNF instance
| |
vnfHomingPolicyId | String | 1 | Experimental OpenModelAttribute
| Identifier of the policy which provides homing conditions.
| |
nfType | String | 1 | Experimental OpenModelAttribute
| Generic description of the type of network function
| |
nfFunction | String | 1 | Experimental OpenModelAttribute
| English description of network function that the specific VNF deployment is providing.
| |
nfRole | String | 1 | Experimental OpenModelAttribute
| Role in the network this model will be providing
| |
closedLoopStatus | ClosedLoopStatus | 1 | Experimental OpenModelAttribute
| Whether closed loop capabilities are enabled for this or not.
| |
_nfc (vnfcinstance) | Vnfc | 1..* | Experimental OpenModelAttribute
| Relatonship to the NF components that are part of this VNF.
| |
_vnfd | Vnfd | 1 | Experimental OpenModelAttribute
| Relationship to the VNF descriptor
| |
_vnfvirtuallink | VnfVirtualLink | 0..* | Experimental OpenModelAttribute
| Relationship to VnfVirtualLink
|
Class: Vdu
Attribute Name | Type | Mult. | Stereotypes | Description | Rationale |
vduId | Identifier | 1 | Preliminary OpenModelAttribute
| Unique identifier of this Vdu in VNFD.
| |
name | String | 1 | Preliminary OpenModelAttribute
| Human readable name of the Vdu.
| |
description | String | 1 | Preliminary OpenModelAttribute
| Human readable description of the Vdu.
| |
bootOrder | KeyValuePair | 0..* | Preliminary OpenModelAttribute
| Boot order of valid boot devices. NOTE: If no boot order is defined the default boot order defined in the VIM or NFVI shall be used.
| |
nfviConstraint | KeyValuePair | 0..* | Preliminary OpenModelAttribute
| Describes constraints on the NFVI for the VNFC instance(s) created from this Vdu. For example, aspects of a secure hosting environment for the VNFC instance that involve additional entities or processes. NOTE: These are constraints other than stipulating that a VNFC instance has access to a certain resource, as a prerequisite to instantiation. The attributes virtualComputeDesc and virtualStorageDesc define the resources required for instantiation of the VNFC instance.
| |
monitoringParameter | MonitoringParameter | 0..* | Preliminary OpenModelAttribute
| Defines the virtualised resources monitoring parameters on VDU level.
| |
injectFiles | String | 0..* | Preliminary OpenModelAttribute
| Describes the information (e.g. URL) about the scripts, config drive metadata, etc. which can be used during Vdu booting process.
| |
configurableProperties | VnfcConfigurableProperties | 1 | Preliminary OpenModelAttribute
| Describes the configurable properties of all VNFC instances based on this VDU.
| |
_vduCpd | VduCpd | 1 | Preliminary OpenModelAttribute
| Describes network connectivity between a VNFC instance (based on this Vdu) and an Virtual Link (VL).
| |
_virtualComputeDesc | VirtualComputeDesc | 1..* | Preliminary OpenModelAttribute
| Describes CPU, Memory and acceleration requirements of the Virtualisation Container realising this Vdu.
| |
_virtualStorageDesc | VirtualStorageDesc | 0..* | Preliminary OpenModelAttribute
| Describes storage requirements for a VirtualStorage instance attached to the virtualisation container created from virtualComputeDesc defined for this Vdu.
| |
_swImageDesc | SwImageDesc | 0..1 | Preliminary OpenModelAttribute
| Describes the software image which is directly loaded on the virtualisation container realising this Vdu. NOTE: More software images can be attached to the virtualisation container using VirtualStorage resources.
| |
_dependsOn | Vdu | 0..* | OpenModelAttribute
| Specify instantiation priority and dependencies of VDU.
| Each template will write the other VDUs that needed deployed before instantiating this VDU. When VDU A points to VDU B and C, it means need B and C instantiated first. If B needs D and E, then will deploy D and E in advance, utill finding no dependcy, namely the atomic ones. 0 means no dependency. |
Class: VduCpd
Attribute Name | Type | Mult. | Stereotypes | Description | Rationale |
bitrateRequirement | Number | 0..1 | Preliminary OpenModelAttribute
| Bitrate requirement on this CP.
| |
vnicName | String | 0..1 | Preliminary OpenModelAttribute
| Describes the name of the vNIC this CP attaches to, e.g. eth0. It will be configured during the Vdu booting process.
| |
vnicOrder | String | 0..1 | Preliminary OpenModelAttribute
| Describes the order to create the vNIC within the scope of this Vdu.
| |
vnicType | VnicType | 0..1 | Preliminary OpenModelAttribute
| Describes the type of the vNIC this CP attaches to.
| |
_virtualNetworkInterfaceRequirements | VirtualNetworkInterfaceRequirements | 0..* | Preliminary OpenModelAttribute
| Specifies requirements on a virtual network interface realising the CPs instantiated from this CPD.
| |
securityGroups | String | 0..* | OpenModelAttribute
| VNFD needs to specify the security group name {security_groups} for each vNic.
| See description. |
portSecurityEnabled | Boolean | 0..1 | OpenModelAttribute
| VNFD needs to specify whether to enable security group for the vNic.
| See description. |
_qos | QoS | 0..1 | OpenModelAttribute
| Describe the Qos requirements of the VduCpd.
| See description. Qos should be put in the Class level, and thus there should be an association. Note: In this proposal, I first supplement requirments for "Qos", you can find 3 new attributes in "Qos" class; then need the Qos requirements for VduCpd, namely this association. |
cpdId | Identifier | 1 | Preliminary OpenModelAttribute
| Identifier of this Cpd information element.
| |
cpRole | String | 0..1 | Preliminary OpenModelAttribute
| Identifies the role of the port in the context of the traffic flow patterns in the VNF or parent NS. For example a VNF with a tree flow pattern within the VNF will have legal cpRoles of ROOT and LEAF.
| |
description | String | 0..1 | Preliminary OpenModelAttribute
| Provides human-readable information on the purpose of the CP (e.g. CP for control plane traffic).
| |
cpProtocol | CpProtocolData | 1..* | Preliminary OpenModelAttribute
| Identifies the protocol layering information the CP uses for connectivity purposes and associated information. There shall be one cpProtocol for each layer protocol as indicated by the attribute layerProtocol. Editor's note: the attribute "layerProtocol" still needs further discussion and not included in this table.
| |
trunkMode | Boolean | 1 | Preliminary OpenModelAttribute
| Information about whether the CP instantiated from this CPD is in Trunk mode (802.1Q or other).
| |
allowedAddressData | AddressData | 0..* | Preliminary OpenModelAttribute
| For specifying floating IP(s) to be shared among Cpds, which are reserved for vnfReservedCpd described in the VNFD.
|
Class: VduProfile
Attribute Name | Type | Mult. | Stereotypes | Description | Rationale |
vdudId | Identifier | 1 | Preliminary OpenModelAttribute
| Uniquely identifies a VDU.
| |
minNumberOfInstances | Integer | 1 | Preliminary OpenModelAttribute
| Minimum number of instances of the VNFC based on this VDU that is permitted to exist for this flavour.
| |
maxNumberOfInstances | Integer | 1 | Preliminary OpenModelAttribute
| Maximum number of instances of the VNFC based on this VDU that is permitted to exist for this flavour.
| |
localAffinityOrAntiAffinityRule | LocalAffinityOrAntiAffinityRule | 0..* | Preliminary OpenModelAttribute
| Specifies affinity or anti-affinity rules applicable between the virtualisation containers (e.g. virtual machines) to be created based on this VDU.
| |
affinityOrAntiAffinityGroupId | Identifier | 0..* | Preliminary OpenModelAttribute
| Identifier(s) of the affinity or anti-affinity group(s) the VDU belongs to. NOTE: Each identifier references an affinity or anti-affinity group which expresses affinity or anti-affinity relationships between the virtualisation container(s) (e.g. virtual machine(s)) to be created using this VDU and the virtualisation container(s) (e.g. virtual machine(s)) to be created using other VDU(s) in the same group.
| |
watchdog | String | 0..1 | Preliminary OpenModelAttribute
| Watchdog action to be triggered by the VIM for the VNF in case the heart beat fails, e.g. reset or hard shutdown, etc.
| |
vmBootUpTimeOut | Integer | 0..1 | Preliminary OpenModelAttribute
| Timeout value for the VNFM to wait before the successful booting up of the VDU.
| |
securityGroups | String | 0..* | OpenModelAttribute
| VNFD needs to specify the security group name {security_groups} for each VDU.
| See description. |
flavorExtraSpecs | KeyValuePair | 0..* | OpenModelAttribute
| Additional expansion requirements for Infrastructure layer, e.g. HA property (Host Aggregate label).
| This attribute is the extension for Openstack flavor, currently including:
|
Class: VirtualStorageDesc
Attribute Name | Type | Mult. | Stereotypes | Description | Rationale |
id | Identifier | 1 | Preliminary OpenModelAttribute
| Unique identifier of this VirtualStorageDesc in the VNFD.
| |
typeOfStorage | String | 1 | Preliminary OpenModelAttribute
| Type of virtualised storage resource (e.g. volume, object).
| |
sizeOfStorage | Number | 1 | Preliminary OpenModelAttribute
| Size of virtualised storage resource (e.g. size of volume, in GB).
| |
vduStorageRequirements | KeyValuePair | 0..* | Preliminary OpenModelAttribute
| An array of key-value pairs that articulate the storage deployment requirements.
| |
rdmaEnabled | Boolean | 0..1 | OpenModelAttribute
Obsolete | Indicate if the storage support RDMA.
| |
swImageDesc | Identifier | 0..1 | Preliminary OpenModelAttribute
| Software image to be loaded on the VirtualStorage resource created based on this VirtualStorageDesc.
| |
multiAttach | Boolean | 0..1 | OpenModelAttribute
| Indicating whether a vDisk is a shared volume in VNFD.
| Each vDisk corresponds to one volume, it should set if the volume can be shared by other VMs. |
_storageQos | StorageQos | 0..1 | OpenModelAttribute
| Describe storage Qos requirements.
| Describe special Qos requirements for storage, see datatype"StorageQos" for details. |
_volumeType | VolumeType | 0..1 | OpenModelAttribute
| Describe the volume type a storage is based on.
| In Openstack, a backend can have multiple volume types to choose, when instantiate a vStorage, must specify one volume type. |
Datatype: L2ProtocolData
Attribute Name | Type | Mult. | Access | Stereotypes | Description | Rationale |
name (Aligned with IFA 011v2.5.1) | String | 0..1 | RW | OpenModelAttribute
| Network name associated with this L2 protocol.
| |
networkType (Aligned with IFA 011v2.5.1) | NetworkType | 0..1 | RW | OpenModelAttribute
| Specifies the network type for this L2 protocol. Possible values: FLAT, VLAN, VXLAN, GRE. | |
vlanTransparent (Aligned with IFA 011v2.5.1) | Boolean | 0..1 | RW | OpenModelAttribute
| Indicating whether "VLAN Transparent Mode" is supported. Default is "FALSE" if not specified otherwise. | |
segmentationId | String | 0..1 | RW | OpenModelAttribute
| Network segment ID. | The id of vlan/vxlan. |
physicalNetwork | String | 0..1 | RW | OpenModelAttribute
| The connected physical network of network type (VLAN or VxLAN) . | When vlan or vxlan is going to connecting a physical network, it should specify the name of host port. |
routerExternal | Boolean | 0..1 | RW | OpenModelAttribute
| Specify if a vrouter comes from an external network. | There are two usage situations of vrouters, one is using in the virtual network internally, another is using to connet to the external network. This attribute shows the two situations, if "true", then the vrouter is using to connect another network; if "false", then using internally. |
Datatype: L3ProtocolData
Attribute Name | Type | Mult. | Access | Stereotypes | Description | Rationale |
cidr (Aligned with IFA 011v2.5.1) | String | 1 | RW | OpenModelAttribute
| Specifies the CIDR (Classless Inter- Domain Routing) of this L3 protocol. See note.
| |
ipAllocationPools (Aligned with IFA 011v2.5.1) | KeyValuePair | 0..N | RW | OpenModelAttribute
| Specifies the allocation pools with start and end IP addresses for this L3 protocol. See note . | |
gatewayIp (Aligned with IFA 011v2.5.1) | IpAddress | 0..1 | RW | OpenModelAttribute
| Specifies the gateway IP address for this L3 protocol. See note. | |
ipVersion (Aligned with IFA 011v2.5.1) | IpVersion | 1 | RW | OpenModelAttribute
| Specifies IP version of this L3 protocol. | |
dhcpEnabled (Aligned with IFA 011v2.5.1)
| Boolean | 0..1 | RW | OpenModelAttribute
| Indicates whether DHCP (Dynamic Host Configuration Protocol) is enabled or disabled for this L3 protocol. See note. | |
ipv6AddressMode (Aligned with IFA 011v2.5.1) | Ipv6AddressMode | 0..1 | RW | OpenModelAttribute
| Specifies IPv6 address mode. Possible values: • SLAAC. • DHCPV6-STATEFUL. • DHCPV6-STATELESS. May be present when the value of the ipVersion attribute is "IPV6" and shall be absent otherwise. See Note. | |
ipv6RaMode | Ipv6AddressMode | 0..1 | RW | OpenModelAttribute
| Specifies IPv6 address mode for vrouter. Possible values: • SLAAC. • DHCPV6-STATEFUL. • DHCPV6-STATELESS. May be present when the value of the ipVersion attribute is "IPV6" and shall be absent otherwise. Must be present when the VLAN/VXLAN connects to one or more vrouters. Note2: The value of ipv6RaMode and ipv6AddressMode must be same. | This attribute comes from Openstack demand, the address mode should be separately set for vRouter and dhcp. The usage for the ipv6RaMode and ipv6AddressMode has the following situation:
|
hostRoutes | KeyValuePair | 0..N | RW | OpenModelAttribute
| Static routing list, including estination and nexthop information. | See description. Estination and nexthop will be provided by network elements. |
dnsNameServers | String | 0..N | RW | OpenModelAttribute
| DNS server list. | See description. |
Note: If this attribute is included in the VNFD, the attribute value shall be provided at run-time, unless a default value is provided at design time in the VNFD. If a default value is provided at design-time, this value may be overridden at run-time. |
Class: Qos (Suggest to change to class instead of data type)
Attribute Name | Type | Mult. | Access | Stereotypes | Description | Rationale |
latency | Number | 1 | RW | OpenModelAttribute
Preliminary | Maximum latency in ms.
| |
packetDelayVariation | Number | 1 | RW | OpenModelAttribute
Preliminary | Maximum jitter in ms.
| |
packetLossRatio | Number | 0..1 | RW | OpenModelAttribute
Preliminary | Maximum packet loss ratio. Cardinality is 0 if no packetLossRatio requirement exists.
| |
qosId | Identifier | 1 | RW | OpenModelAttribute
| Qos ID.
| Give Qos an id for muliple classes to quote. This means Qos will be a class. |
qosName | String | 1 | RW | OpenModelAttribute
| Human readable Qos name.
| Human readable name, corresponding to qosId. |
rules | KeyValuePair | 0..* | RW | OpenModelAttribute
| Detailed requirements of Qos, including maximum bandwidth limitation{max_kbps}、maximum burst bandwidth limitation{max_burst_kbps} 、direction{egress|ingress},etc.
| See description. Note: the whole Qos attributes are needed for both VL and VduCpd. |
Class: StorageQos
Attribute Name | Type | Mult. | Access | Stereotypes | Description | Rationale |
qosId | Identifier | 1 | RW | OpenModelAttribute
| Unique identifier of the storage Qos in VNFD.
| See description. |
qosName | String | 1 | RW | OpenModelAttribute
| Name of storage QoS.
| Human readable name, corresponding to the Id. |
consumer | ConsumerScope | 1 | RW | OpenModelAttribute
| Consumer type.
| Identify the volume which a Storge is based on comes from the backend or local. |
qosSpecs | KeyValuePair | 0..* | RW | OpenModelAttribute
| Describe qualities of Qos:total read/write rate{total_bytes_sec}、total read/write IOPS{total_iops_sec}.
| This is used for the information of basic stroge Qos requirements. |
Class: VolumeType
Attribute Name | Type | Mult. | Access | Stereotypes | Description | Rationale |
volumeTypeId | Identifier | 1 | RW | OpenModelAttribute
| Unique identifier of volume type in VNFD.
| See description. |
volumeTypeName | String | 1 | RW | OpenModelAttribute
| Name of volume type.
| Human readable name, corresponding to the Id. |
backendName | String | 1 | RW | OpenModelAttribute
| Name of the object linking to the backend distributed storage.(Name in cinder)
| Each volume type has a corresponding backend, the name is also the name in Openstack Cinder configuration. |
Class: VnfDf
Attribute Name | Type | Mult. | Stereotypes | Description |
flavorId | Identifier | 1 | OpenModelAttribute
Preliminary | Identifier of this DF within the VNFD. |
description | String | 1 | OpenModelAttribute
Preliminary | Human readable description of the DF. |
_virtuaLlinkProfile | VirtualLinkProfile | 0..* | OpenModelAttribute
Preliminary | Defines the internal VLD along with additional data which is used in this DF. NOTE 1: This allows for different VNF internal topologies between DFs. NOTE 2: virtualLinkProfile needs to be provided for all VLs that the CPs of the VDUs in the VDU profiles connect to. |
_instantiationLevel | InstantiationLevel | 1..* | OpenModelAttribute
Preliminary | Describes the various levels of resources that can be used to instantiate the VNF using this flavour. Examples: Small, Medium, Large. If there is only one "instantiationLevel" entry, it shall be treated as the default instantiation level for this DF. |
_affinityOrAntiAffinityGroup | AffinityOrAntiAffinityGroup | 0..* | OpenModelAttribute
Preliminary | Specifies affinity or anti-affinity relationship applicable between the virtualisation containers (e.g. virtual machines) to be created using different VDUs or internal VLs to be created using different VnfVirtualLinkDesc(s) in the same affinity or anti-affinity group. NOTE: In the present specification, including either VDU(s) or VnfVirtualLinkDesc(s) into the same affinity or anti-affinity group is supported. Extension to support including both VDU(s) and VnfVirtualLinkDesc(s) into the same affinity or anti-affinity group is left for future specification. |
_scalingAspect | ScalingAspect | 0..* | OpenModelAttribute
Preliminary | The scaling aspects supported by this DF of the VNF. scalingAspect shall be present if the VNF supports scaling. |
_vduProfile | VduProfile | 1..* | OpenModelAttribute
Preliminary | Describes additional instantiation data for the VDUs used in this flavor. |
_vduCpdProfile | VduCpdProfile | 1..* | OpenModelAttribute
Preliminary | Describes additional instantiation data for the vduCpds used in this flavour. |
_placementGroup | PlacementGroup | 0..* | OpenModelAttribute
Preliminary | Determine where VNFC's (VDU's) are placed with respect to the VNF |
_baseConfigGroup | BaseConfigGroup | 1 | OpenModelAttribute
Preliminary | BaseConfigGroup may set Access Control Lists (ACL's) and establish security groups and server groups. BaseConfigGroup creates/establishs storage for the VM's (OpenStack Cinder). BaseConfigGroup may establish internal networks such as OAM (VNF Mgmt) or MNS (Maintenance & Surveillance) established. |
_deploymentGroup | DeploymentGroup | 0..* | OpenModelAttribute
Preliminary | DeploymentGroup provides the minimum viable VDU and associated VNFC configuration for a useable VNF. |
_scalinggroup | ScalingGroup | 0..* | OpenModelAttribute
Preliminary | Identifies the vaious scaling groups within the VNF which identify which vnfcs that need to be scaled together. |
Class: VduCpdProfile
Attribute Name | Type | Mult. | Stereotypes | Description |
_vduCpd | VduCpd | 1 | OpenModelAttribute
Preliminary | Uniquely identifies a VduCpd. |
_AffinityOrAntiAffinityGroup | AffinityOrAntiAffinityGroup | 0..* | OpenModelAttribute
Preliminary | Identifier(s) of the affinity or anti-affinity group(s) the VduCpd belongs to. |
Class: AffinityOrAntiAffinityGroup
Attribute Name | Type | Mult. | Access | Stereotypes | Description |
groupId | Identifier | 1 | RW | OpenModelAttribute
Preliminary | Identifies an affinity or anti-affinity group to which the affinity or anti-affinity rule applies. |
type | RuleType | 1 | RW | OpenModelAttribute
Preliminary | Specifies whether the rule is an affinity rule or an anti-affinity rule.
|
scope | RuleScope | 1 | RW | OpenModelAttribute
Preliminary | Specifies the scope of the rule. Currently, the scopes of the rule include:
Suggest to add NFVI_NIC.
|
Enumerations
1. ConsumerScope
Contains Enumeration Literals:
- BACK_END
- LOCAL
2. NetworkType
Contains Enumeration Literals:
- VLAN
- VXLAN
- FLAT
- GRE
3. IpVersionContains Enumeration Literals:
- IPv4
- IPv6
4. AssociatedLayerProtocol
Contains Enumeration Literals:
Ethernet, MPLS, ODU2, IPV4, IPV6 and Pseudo-Wire.