Add VNF package sample for practical use cases

https://blueprints.launchpad.net/tacker/+spec/add-vnf-package-sample-for-practical-use-cases

This specification describes features of the VNF package we aim to add. In this package, use cases listed below will be supported.

  • use multiple deployment flavours

  • deploy VNF connected to an external network

  • deploy VNF as HA cluster

  • deploy scalable VNF

  • configure VNF with an ansible mgmt driver

Problem description

There are some samples in current tacker repository, but these represent a simple structure and not for users who want to deploy complicated VNF used in a practical environment. Therefore, it is important to add a VNF package sample in order to help them know how to deploy VNF required in practical use cases.

Proposed change

We aim to add a VNF package as a sample and explain how to use it in documentation. The diagram below shows the structure of VNFD used in this sample package.

+-------------------------------------------------------------------------------------------------------------------------------------------------+
|  VNFD                                                                                                                                           |
|                                                                                                                                                 |
|    +----------------------------+    +----------------------------------------------------------------------------------------------------+     |
|    | Deployment flavour: ha     |    |   Deployment flavour: scalable                                                                     |     |
|    |  +---------+ +---------+   |    | |------------------------------+ +------------------------------+ +------------------------------+ |     |
|    |  | VDU0    | | VDU1    |   |    | | VDU0                         | | VDU1                         | | VDU2                         | |     |
|    |  |         | |         |   |    | |   properties:                | |   properties:                | |   properties:                | |     |
|    |  |         | |         |   |    | |     vdu_profile:             | |     vdu_profile:             | |     vdu_profile:             | |     |
|    |  |         | |         |   |    | |       min_num_of_instance:1  | |       min_num_of_instance:0  | |       min_num_of_instance:0  | |     |
|    |  +------+--+ +--+------+   |    | |       max_num_of_instance:1  | |       max_num_of_instance:1  | |       max_num_of_instance:1  | |     |
|    |         |\     /|          |    | +------+--------------+--------+ +------+--------------+--------+ +------+--------------+--------+ |     |
|    |         | \   / |          |    |        |              |                 |              |                 |              |          |     |
|    |         |  \ /  |          |    |        |              |                 |              |                 |              |          |     |
|    |         |   +vip|          |    |        |              |                 |              |                 |              |          |     |
|    |         |   |   |          |    |        |              |                 |              |                 |              |          |     |
|    |         |   |   |  int net |    |        |              |                 |              |                 |              |  int net |     |
|    |   ------+---+---+-------   |    |    ----+--------------|-----------------+--------------|-----------------+--------------|-------   |     |
|    |         |   |   |          |    |                       |                                |                                |          |     |
|    +---------|---|---|----------+    +-----------------------|--------------------------------|--------------------------------|----------+     |
|              |   |   |                                       |                                |                                |                |
|              |   |   |                                       |                                |                                |                |
+--------------|---|---|---------------------------------------|--------------------------------|--------------------------------|----------------+
               |   |   |                                       |                                |                                |
               |   |   |  ext net                              |                                |                                |   ext net
           ----+---+---+---------                     ---------+--------------------------------+--------------------------------+-------

The package and documentation support the following use cases.

1) Use multiple deployment flavours:

The sample has multiple deployment flavours, and each defines different topologies of VNF. As in the diagram above, the deployment flavour of ha and scalable are defined. Users can easily try deploying different type of VNF by using this sample and can learn about the following things.

  • structure of a VNF package supporting multiple deployment flavours.

  • how to write VNF descriptor and Heat template in each deployment flavour.

  • how to designate deployment flavour in a request.

2) Deploy VNF connected to external network:

The sample has VNF that has a connection to an external network and has fixed ip addresses assigned to its CPs. As in the diagram above, the VDU0 in the deployment flavour of scalable has the CP connected to the external network of ext net. Users can easily try deploying VNF connected to an external network by using this sample and can learn about the following things.

  • how to write VNF descriptor and Heat template that have connections to both internal and external networks.

  • how to write VNF descriptor and Heat template that have fixed ip addresses assigned to its CPs.

  • how to pass parameters about an external network in a request.

3) Deploy VNF as HA cluster:

The sample has VNF that has a vip shared by VDUs. As in the diagram above, the deployment flavour of ha defines the vip shared by the VDU0 and VDU1. Users can easily try deploying VNF as HA cluster by using this sample and can learn about the following things.

  • how to write VNF descriptor and Heat template that have a vip shared by multiple VDUs.

  • how to pass parameters about vip in a request.

4) Deploy scalable VNF:

The sample has VNF that has scalable VDUs and each VDU has fixed ip addresses. As in the diagram above, the deployment flavour of scalable defines the VDUs whose number of instances can be 0 or 1. Users can easily try deploying scalable VNF by using this sample and can learn about the following things.

  • how to write VNF descriptor and Heat template that have scalable VDUs and have fixed ip addresses assigned to the VDUs.

  • how to designate the initial number of VDUs.

  • how to designate the number of the VDUs in a scale request.

  • how to designate the information about the CPs binding to the VDU designed not to be created until scale operation is excuted.

5) Configure VNF with an ansible mgmt driver

The sample uses an ansible mgmt driver to configure VNF. Users can learn about the following things.

  • structure of VNF package supporting an ansible mgmt driver.

  • how to write scripts using an ansible mgmt dirver.

Alternatives

None

Data model impact

None

REST API impact

None

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

None

Other deployer impact

None

Developer impact

None

Upgrade impact

None

Implementation

Assignee(s)

Primary assignee:

Masaki Oyama <ma-ooyama@kddi.com>

Work Items

  • Create VNF package

  • Write documentation to explain how to use the sample

Dependencies

None

Testing

None

Documentation Impact

User guide will be modified to explain how to use the sample.

References

None

History

None