Support ETSI NFV SOL003 to interoperate with 3rd-party NFVO¶
https://blueprints.launchpad.net/tacker/+spec/support-vnfm-operations
Enables Tacker to operate as a VNFM that can interoperate with 3rd-party NFVO. Therefore, support ETSI NFV SOL003 [2] Or-Vnfm specifications and VNF lifecycle operations interoperating with NFVO.
Problem description¶
In current Tacker implementation, functions of VNFM and NFVO are tightly coupled.
The reason for such an implementation is that users can easily build NFV environment(VNFM + NFVO) to small start using Tacker. On the other hand, it is also important for Tacker to cooperate with 3rd-party NFVO as VNFM when considering the practical application of Tacker. So, Tacker as VNFM will support VNF package and grant APIs based on ETSI NFV SOL003 [2].
Proposed change¶
This feature supports the functionality for Tacker to connect to NFVO as VNFM. When Tacker connects to 3rd-party NFVO (as referred to NFVO) as VNFM, Tacker(VNFM) needs the following information from NFVO, so the operations to get them will be implemented.
VNF package information
Grant information
1) NFVO information management¶
1-1) Flow of Getting VNF package¶
When operating as VNFM connected to NFVO, Tacker-VNFM uses the following API to get the VNF package information from NFVO when starting lifecycle management(LCM) operation. The following APIs sent from VNFM can be sent or suppressed by the Tacker configuration.
VNF packages uses “vnf_packages” API.
Precondition: One or more “Individual VNF package” resources are created.
- VNF packages (GET)
When VNFM receives Create VNF request, VNFM will request get vnfPkgInformation to NFVO. VNFM sets the attribute based filtering parameter to get vnfPkgId. NFVO sends http response with vnfPkgInfo that is based on the vnfPkgId. After http response is received, VNFM stores the received vnfPkgId.
VNF package content (GET)
VNFD in an individual VNF package (GET)
- Individual VNF package artifact (GET)
VNFM requests to get information of content/VNFD/artifact. NFVO provides such information to VNFM. After http response is received, VNFM stores the contents received.
- Individual VNF package (GET)
In a case of having vnfPkgId, VNFM can get only related vnfPkgInformation. ModifyVNF Information can send this API.
1-2) Flow of grant request with synchronous response¶
This operation allows the VNFM to request a grant for authorization of a VNF LCM operation. This interface supports multiple use cases, such as:
The NFVO can approve or reject a request based on policies (e.g. dependencies between VNFs) and available capacity.
When applicable, the NFVO can reserve resources based on the VNFM’s virtualised resources request.
The NFVO can provide to the VNFM information about the VIM where cloud resources are allocated. This can include additional information such as the availability zone.
Grant API is sent in below sequences: - Instantiation - Healing - Scaling - Termination
After receiving 201 created with body data, VNFM updates the grant information.
Postcondition: The grant information is available to the VNFM.
2) A judgement of NFVO operation condition¶
Since API transmission is performed for connection with NFVO, communication with NFVO is enabled by setting URI in the Tacker configuration. If no URI is set, all API transmissions for NFVO will be suppressed. The following APIs sent from VNFM can be sent or suppressed by the Tacker configuration.
VNF package information
Grant information
4) API enhancement of CreateVNF¶
For enhancement of receiving VNF package metadata, VNFM support “metadata” parameter on “Create VNF” request. This parameter is stored in VNFM. This parameter overwrites 6.2.35 tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata in SOL001 [1]. However, metadata does not affect lifecycle based on SOL003 [2] 5.5.2.2 Type: VnfInstance. Therefore, Tacker just save metadata.
Alternatives¶
None
Data model impact¶
Add a table in tacker
database.
placement_constraint:
id id varchar(36) Not Null vnf_instance_id vnf_instance_id varchar(36) Not Null affinity_or_anti_affinity affinity_or_anti_affinity varchar(255) Not Null scope scope varchar(255) Not Null server_group_name server_group_name varchar(255) Not Null resource resource json Not Null created_at created_at datetime Not Null updated_at updated_at datetime deleted_at deleted_at datetime deleted deleted tinyint(1) Not Null
This table has id as primary key. vnf_instance_id is a foreign key of vnf_instances.`id`.
REST API impact¶
None
Security impact¶
All APIs are authenticated by OAuth2 and encrypted by TLS1.2.
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
VNFM get pkg data/Image during Instantiation execute. The process may take some time.
Other deployer impact¶
None
Developer impact¶
Tacker-VNFM calls the following APIs as a client. These attributes are based on ETSI NFV SOL003 [2].
- Name: GrantsDescription: Request a grantMethod type: POSTURL for the resource: /grant/v1/grantsRequest:
Data type
Cardinality
Description
GrantRequest
1
Parameters for requesting Grants resource.
Attribute name
Data type
Cardinality
Support
vnfInstanceId
Identifier
1
Yes
vnfLcmOpOccId
Identifier
1
Yes
vnfdId
Identifier
1
Yes
flavourId
Identifier
0..1
Yes
operation
GrantedLcmOperationType
1
Yes
isAutomaticInvocation
Boolean
1
Yes
instantiationLevelId
Identifier
0..1
No
addResources
ResourceDefinition
0..N
Yes
tempResources
ResourceDefinition
0..N
No
removeResources
ResourceDefinition
0..N
Yes
updateResources
ResourceDefinition
0..N
No
placementConstraints
PlacementConstraint
0..N
Yes
vimConstraints
VimConstraint
0..N
No
additionalParams
KeyValuePairs
0..1
No
_links
Structure (inlined)
1
Yes
>vnfLcmOpOcc
Link
1
Yes
>vnfInstance
Link
1
Yes
Response:Data type
Cardinality
Response Codes
Description
Grant
1
Success 201Error 400 401 403The grant has been created successfully (synchronous mode).
Attributename
Datatype
Cardinality
Support
id
Identifier
1
Yes
vnfInstanceId
Identifier
1
Yes
vnfLcmOpOccId
Identifier
1
Yes
vimConnections
VimConnectionInfo
0..N
Yes
zones
ZoneInfo
0..N
Yes
zoneGroups
ZoneGroupInfo
0..N
No
computeReservationId
IdentifierInVim
0..1
No
networkReservationId
IdentifierInVim
0..1
No
storageReservationId
IdentifierInVim
0..1
No
addResources
GrantInfo
0..N
Yes
tempResources
GrantInfo
0..N
No
removeResources
GrantInfo
0..N
Yes
updateResources
GrantInfo
0..N
No
vimAssets
Structure(inlined)
0..1
Yes
>computeResourceFlavours
VimComputeResourceFlavour
0..N
Yes
>softwareImages
VimSoftwareImage
0..N
Yes
extVirtualLinks
ExtVirtualLinkData
0..N
No
extManagedVirtualLinks
ExtManagedVirtualLinkData
0..N
No
additionalParams
KeyValuePairs
0..1
Yes
_links
Structure(inlined)
1
Yes
>self
Link
1
Yes
>vnfLcmOpOcc
Link
1
Yes
>vnfInstance
Link
1
Yes
- Name: VNF packagesDescription: Query VNF packages informationMethod type: GETURL for the resource: /vnf_packages
- Name: VNF package contentDescription: Fetch an on-boarded VNF packageMethod type: GETURL for the resource: /vnf_packages/{vnfPkgId}/package_content
- Name: VNFD of an individual VNF packageDescription: Read VNFD of an onboarded VNF packageMethod type: GETURL for the resource: /vnf_packages/{vnfPkgId}/vnfd
- Name: Individual VNF package artifactDescription: Fetch individual VNF package artifactMethod type: GETURL for the resource: /vnf_packages/{vnfPkgId}/artifacts/{artifactPath}
- Name: Individual VNF packageDescription: Read information about an individual VNF packageMethod type: GETURL for the resource: /vnf_packages/{vnfPkgId}
Implementation¶
Assignee(s)¶
- Primary assignee:
Makoto Hamada <makoto.hamada.xu@hco.ntt.co.jp>
Work Items¶
Implement process of Getting VNF package and Grant.
Add new config and change Tacker Config documentation.
Support OAuth2.0 and TLS1.2
Support API enhancement of CreateVNF.
Add new unit and functional tests.
Dependencies¶
“Create VNF” referred in “Proposed change” is ETSI SOL based API proposed in the spec [4].
Testing¶
Unit and functional test cases will be added for VNF package and Grant.
Documentation Impact¶
A new configuration options for connection of NFV will be added to configuration reference.