Abstract Base IM Class for Network Function
We’d like to propose, at the information model level, a NetworkFunctionDesc class which is the base for VnfDesc and PnfDesc in the info model. It captures what is common about PNFs and VNFs (at least in my opinion). I started with the VnfD and removed fields I thought might not apply to PNFs, but I could use review. Clearly, the more the common elements are captured in NetworkFunctionDesc, the better/more accurate.
At the data model level, we would like to propose working towards a model where we do not further subclass Network Function. This permits service providers to construct services which use Network Functions whose capabilities are used to define them. Any concrete Network Function in the resource catalog (be it VNF, PNF, Allotted Network Function) which has those capabilities and meets the criteria of any filtering would be useable as a resolution for the abstract Network Function in the service. The concrete VNFs, PNFs, etc. would derive directly from Network Function and then be further specialized with their capabilities, etc. Of course, a service provider could directly use the concrete network functions in their service definitions, and that’s the likely scenario for a while until there is a defined use case for the abstract resolution. Some service providers already have this use case looming, so it’s not a long ways away.
We should strive to define some base capabilities for common behaviors and socialize them with the standards bodies in an effort to make onboarding simple (i.e, the standards bodies adopt/incorporate them). We might consider modeling extensions to those base capabilities in the same manner as being proposed in the HPA approach, a well defined and governed set of keys that encourages reuse as one vendor catches up to the next, but which continues to expand as one vendor gets ahead of the others.
Class: NetworkFunctionDesc
The NetworkFunctionDesc
Attribute Name | Type | Multiplicity | Description | Applied Stereotypes | ||||
descriptorId [called pnfdId for PNFs, vnfdId for VNFs, nsdId for network services, but it always means descriptorId for the particular class it appears in] | Identifier | 1 | Identifier of this NFD information element. This attribute shall be globally unique. NOTE: The NFD Identifier shall be used as the unique identifier of the NF Package that contains this NFD. Any modification of the content of the NFD or the NF Package shall result in a new NFD Identifier. | support: MANDATORY | ||||
provider | String | 1 | Provider of the NF and of the NFD. | support: MANDATORY | ||||
productName | String | 1 | Name to identify the NF Product. Invariant for the NF Product lifetime.[WCC1] | support: MANDATORY | ||||
descriptorInvariantId | String | 1 | Invariant ID that is shared across all versions of the descriptor | support: Mandatory | ||||
softwareVersion | String | 1 | Software version of the NF. This is changed when there is any change to the software that is included in the NF Package. | support: MANDATORY | ||||
descriptorVersion | String | 1 | Identifies the version of the NFD. | support: MANDATORY | ||||
productInfoName | String | 0..1 | Human readable name for the NF Product. Can change during the NF Product lifetime. | support: MANDATORY <experimental> | ||||
productInfoDescription | String | 0..1 | Human readable description of the NF Product. Can change during the NF Product lifetime. | support: MANDATORY | ||||
platformControllerType [was NF_Controller in pnfd proposal] | String | 0..N | Identifies the type of ONAP controller for the network function | support: MANDATORY <experimental> valueRange: Should be enums for the ONAP controller (APP-C, SDN-C, etc.) Not saying these are the enums, just they should be and that’s the type of data that should be captured. | ||||
localizationLanguage | String | 0..N | Information about localization languages of the NF (includes e.g. strings in the NFD). NOTE: This allows to provide one or more localization languages to support selecting a specific localization language at NF instantiation time. | support: MANDATORY <experimental> valueRange: refer to ISO936 https://www.iso.org/iso-639-language-codes.html | ||||
defaultLocalizationLanguage | String | 0..1 | Default localization language that is instantiated if no information about selected localization language is available. | support: MANDATORY <experimental> valueRange: refer to ISO936 https://www.iso.org/iso-639-language-codes.html condition: Shall be present if "localizationLanguage" is present and shall be absent otherwise. | ||||
nfExtCpd | ExtCpd [Proposing new base class which might supercede VnfExtCpd. No need to get so specific about virtualization in that class] At info model level, this should be a relationship. | 1..N | Describes external interface(s) exposed by this NF enabling connection with a network. | support: MANDATORY | ||||
deploymentFlavour | NfDf [Proposing new base class which may supercede VnfDf. The multiplicities in the VnfDf seem to support what would be applicable to a PNF (i.e., 0 lower bound)] At info model level, this should be a relationship. | 1..N Could this be 0..N? | Describes specific DF(s) of a NF with specific requirements for capacity and performance. | support: MANDATORY | ||||
configurableProperties | NfConfigurableProperties [Proposing new base class which may supercede VnfConfigurableProperties. The multiplicities in the Vnf version for autoscale and autoheal, and the fact that they are Booleans, seem to support what would be applicable to a PNF (i.e., 0 lower bound or false)]
| 0..1 | Describes the configurable properties of the NF (e.g. related to auto scaling and auto healing). | support: MANDATORY <experimental> | ||||
modifiableAttributes | NfInfoModifiableAttributes [Proposing new base class which may supercede VnfInfoModifiableAttributes They are generic enough to be applicable to a PNF (i.e., 0 lower bound)] | 0..1 | Describes the modifiable attributes of the NF. Editor's note: need check the usage of this attribute | support: MANDATORY <experimental> | ||||
lifeCycleManagementScript | LifeCycleManagementScript [Might require slight modification of the enums] | 0..N | Includes a list of events and corresponding management scripts performed for the NF. | support: MANDATORY <experimental> | ||||
elementGroup | NfdElementGroup [Suggest renaming this. While VNFs may have both VDUs and VLs, PNFs would only reference VLs.] | 0..N | Describes the associated elements of a NFD for a certain purpose during NF lifecycle management. | support: MANDATORY <experimental> | ||||
nfId | Identifier (runtime) |
| runtime instance id | Support: MANDATORY
| ||||
nfIndicator | NfIndicator [Suggest renaming this.] | 0..N | Declares the NF indicators that are supported by this NF. | support: MANDATORY <experimental> | ||||
NF Indicators are information supplied by the NF or the EM to provide some indication on the NF
behaviour. NFM can use these indicators in conjunction with host platform resource data to perform
auto-scaling decisions or to trigger a NF LCM script (e.g., failover). These indicators are applicable at both the NF level (e.g. global indicators) and the deployment flavour level of a certain NFD (e.g. local indicators). In this
release, NF indicators are only declared at the NF level.
Class: PNFDevice <experimental>
This class represents the purpose specific physical hardware platform on which the network function software runs.
Attribute Name | Type | Multiplicity | Description | Applied Stereotypes |
nfDescriptorId | Reference to NetworkFunctionDesc descriptorId | 1 | Reference to the identifier of the NFD information element. | support: MANDATORY |
nfDescriptorInvariantId | Reference to NetworkFunctionDesc descriptorInvariantId | 1 | Reference to the identifier of the NFD information element. | support: MANDATORY |
geographicLocationInfo (runtime) | Reference to Complex (need the definition from MultiVIM project) | 0..1 | Reference to the physical location | support: MANDATORY |
A PNF instance would be related 1..1 to a PNFDevice instance.
[WCC1]Should always have been just the invariant id so that the name could change but I'm not going to mess with this name now.