Fenix plugin for rolling upgrades in Tacker

https://blueprints.launchpad.net/tacker/+spec/vnf-rolling-upgrade https://storyboard.openstack.org/#!/story/2005220

This spec describes a Fenix plugin for rolling upgrades in Tacker

Problem description

For Host upgrade or maintenance, administrator needs to migrate the services running on the host, or provides services through a redundancy model such as ACT-STB. In order to do this, interworking with MANO such as Tacker, which manages the life cycle of VNF, is essential. Fenix project suggested the procedure to work with MANO for maintenance/upgrade [1]. With Fenix, tacker can support maintenance procedure without a service stop. In addition, if VNF provider supports VNF upgrade/maintenance, it also supported in this feature. Therefore, this feature helps the maintenance/upgrade procedure for Host maintenance/upgrade with Fenix. This blueprint is proposed Host maintenance/upgrade mode by leveraging Fenix(rolling infrastructure maintenance, upgrade and scaling).

Proposed change

The scope of this spec focuses on:

  • Designing a Fenix Plugin for VNF Maintenance. Whereby, an VNF Maintenance driver is designed to collect events triggered by the Ceilometer/aodh. In this spec, the VNF Maintenance driver subscribes event from ceilometer /AODH with ‘maintenance.planned’ [2].

  • Defining maintenance policies using the TOSCA Policy format [3].

The VNF maintenance framework:
        +-----------------------------------+
        |                                   |
        |                                   |
        |      +-----------------+          |
        |      | VNFM / TOSCA    |          |
        |      |                 |          |
        |      +--------^--------+          |
        |               |                   |
        |      +--------v--------+          |
        |      |                 |          |    +----------------+
        |      |   Fenix Plugin  |          |    |  fenix client  |
        |      |                 |          |    +----------------+
        |      +-^-^-------^-^---+          |            |
        |        | |       | |              |            |
        |      +-v-v-------v-v---+          |            |
        |      | Ceilometer/AODH |          |    +-------v--------+
        |      |                 |<--------------|  Fenix-Engine  |
        |      +-----------------+          |    +----------------+
        +-----------------------------------+

The TOSCA scheme could be defined as the following:

tosca.policies.tacker.Maintenance

tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Maintenance VNF with Fenix

metadata:
  template_name: tosca-vnfd-maintenance

topology_template:
  node_templates:
    VDU1:
      type: tosca.nodes.nfv.VDU.Tacker
      capabilities:
        nfv_compute:
          properties:
            num_cpus: 2
            mem_size: 2048 MB
            disk_size: 15 GB
      properties:
        name: VDU1
        image: ubuntu18.04
        availability_zone: nova
        mgmt_driver: noop
        maintenance: true

    CP11:
      type: tosca.nodes.nfv.CP.Tacker
      properties:
        management: true
        order: 0
        anti_spoofing_protection: false
      requirements:
        - virtualLink:
            node: VL1
        - virtualBinding:
            node: VDU1

    VL1:
      type: tosca.nodes.nfv.VL
      properties:
        network_name: net_mgmt
        vendor: Tacker

maintenance_url will be created by webhook in Tacker as the following:

v1.0/vnfs/<vnf-uuid>/maintenance/<project_id>

vnf-uuid represents identity of the VNF. maintenance means that this URL is used for maintenance. project_id represent the project to which the generated VNF belongs.

Maintenance Procedure

When VNF is created using VNFD, VNF generates ‘Maintenance URL’ to register event to AODH. Then, when the user requests maintenance, the Notification message generated by Fenix Engine is delivered to ADOH and the event occurs. When an event occurs, Tacker performes the action (e.g., VNF reinstantiation) requested from the Fenix engine to the Tacker via Tacker-plugin.

Maintenance procedure can be divided into two cases.

  1. VNF is impacted due to the infrastructure (host) maintenance or upgrade and might need to scale down VNF during the operation. Upgrading the VNF is also possible at the same.

  2. VNF is impacted due to the infrastructure (host) maintenance or upgrade. Upgrading the VNF is also possible at the same.

In the case of first, Tacker follows default procedure of Fenix and supports preparation procedure for Host Maintenance such as scaling down VNF and migrating instances to another host to have an empty host for infrastructure rolling maintenance or upgrade.

The procedure is below:

+--------+           +--------+            +-------+      +-------+
| Tacker |           |  AODH  |            | Fenix |      | admin |
+--------+           +--------+            +-------+      +-------+
    |                    |                     |              |
VNF Creation             |                     |              |
    |                    |                     |              |
    |--Register Alarm -->|                     |              |
    |              maintenance.planned         |              |
    |           Event_type : maintenance.*     |<-MAINTENANCE-|
    |                    |<----MAINTENANCE-----|              |
    |                    |                     |              |
    |                  event                   |              |
    |<----MAINTENANCE----|                     |              |
    |                    |                     |              |
    |----------------ACK_MAINTENANCE---------->|              |
    |                    |                     |              |
    |<---------------IN_SCALE------------------|              |
    |                    |                     |              |
Scaling                  |                     |              |
    |--------------ACK_IN_SCALE--------------->|              |
    |                    |                     |              |
    |<-----------PREPARE_MAINTENANCE-----------|              |
    |                    |                     |              |
    |----------ACK_PREPARE_MAINTENANCE-------->|              |
    |                    |                     |              |
    |<-----------ADMIN_ACTION_DONE-------------|              |
    |                    |                     |              |
    |<---------PLANNED_MAINTENANCE-------------|              |
    |                    |                     |              |
    |-------ACK_PLANNED_MAINTENANCE----------->|              |
    |                    |                     |              |
    |<--------MAINTENANCE_COMPLETE-------------|              |
    |                    |                     |              |
    |-------ACK_MAINTENANCE_COMPLETE---------->|              |

In the case of second, Tacker doesn’t need to follow all of the default procedure. It is only performing VNF maintenance action such as changing the path from STB to ACT, instance re-instantiation or migrating existing instance to already maintained host.

+--------+           +--------+            +-------+      +-------+
| Tacker |           |  AODH  |            | Fenix |      | admin |
+--------+           +--------+            +-------+      +-------+
    |                    |                     |              |
VNF Creation             |                     |              |
    |                    |                     |              |
    |--Register Alarm -->|                     |              |
    |              maintenance.planned         |              |
    |           Event_type : maintenance.*     |<-MAINTENANCE-|
    |                    |<----MAINTENANCE-----|              |
    |                    |                     |              |
    |                  event                   |              |
    |<----MAINTENANCE----|                     |              |
    |                    |                     |              |
    |----------------ACK_MAINTENANCE---------->|              |
    |                    |                     |              |
    |<-----------ADMIN_ACTION_DONE-------------|              |
    |                    |                     |              |
    |<---------PLANNED_MAINTENANCE-------------|              |
    |                    |                     |              |
    |-------ACK_PLANNED_MAINTENANCE----------->|              |
    |                    |                     |              |
    |<--------MAINTENANCE_COMPLETE-------------|              |
    |                    |                     |              |
    |-------ACK_MAINTENANCE_COMPLETE---------->|              |

Alternatives

None

Data model impact

None

REST API impact

POST on v1.0/vnfs/<vnf-uuid>/maintenance/<project_id>

Security

None

Notifications impact

User triggers maintenance session and Tacker performs the action for maintenance.

Other end user impact

None

Performance impact

None

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

Hyunsik Yang <yangun@dcn.ssu.ac.kr>

Other contributors:

Jangwon Lee <jangwon.lee@dcn.ssu.ac.kr>

Work Items

  1. TOSCA Template definition for Maintenance

  2. URL Creation for Maintenance Alarm Registration

  3. Fenix Plug-in Implementation for Fenix API

  4. Unit and functional tests

  5. Documentations

Dependencies

Tacker defines all Maintenance APIs according to APIs defined in Fenix. Tacker supports down scaling of VNFs.

Testing

  • Maintenance VNF testing

  • AODH Registration with Maintenance

  • Maintenance event Alarm

Reference