Feature Design for: VNF Appliance Integration

Project Introduction

Virtualized Network Functions commonly refers to the software form of network appliances such as a router, firewall, load balancer, etc.

VNFs are mostly deployed as virtual machines (VMs) on Linux KVM or VMware vSphere hypervisors on commercial off-the-shelf hardware (COTS).


There are following user cases

  • Users want to be able to deploy Virtual Network Function (VNF) VM appliances in a seamless manner

  • Users also want to be able to access the management portal of their VNFs directly “from” ACS

  • Service providers want integration of VNFs with ACS, this FR provides for basic integration in a vendor neutral manner


Currently in order to deploy a VNF appliances end-users need to create at least 3 networks (north, south and management) and then attach the relevant networks to the VM.

This feature provides for a new Appliance deployment wizard where end-users can select 3 networks when deploying the VNF VM appliance.

Functional Description

1. Register a VNF template

Adding an appliance template or ISO will be almost identical to adding a compute template or ISO. They will be denoted as being for appliances in the database, and additional metadata stored for them; including:

· Informational text relating to NICs that will be expected and their order

· Default username and password

· Default web url path and port of the http mgmt interface (if there is one).

· Any other helpful 'getting started' information

· Custom (Vendor) Icon for representation in the UI

· Appliance image versio

2. Create a VNF appliance from VNF template

We will need an "Add Appliance" wizard - this will effectively creates a VM, based on "Appliance" templates or ISOs Users be asked to

1. select the Appliance template or ISO.

2. Select the service offering

3. The user would not get options for data disks

4. When adding Networks the user would be informed of the minimum number of NICs required by the template (this is to be implemented as part of multi-disk OVAs) AND the informational text that was supplied when adding the template.

5. The user would be prompted assign any affinity groups

6. The user would be prompted for name and final confirmation.


VNF appliance integration by the cloud operator, for a new VNF the operator must:

- Assign interfaces for North, South and management. On registration of a template they select:

o Interface1 = (North, South, mgmt.)

o Interface2 = (North, South, mgmt.)

o Interface3 = (North, South, mgmt.)

o Management URL for the VNF

- When deploying a VNF appliance the end-user must select

o Network for North interface

o Network for South interface

o Network for management

- After deployment of the VNF, ACS must present to end-user:

o Management URL in the format https(s)://IPMGMTInterface/managementURLspecifiedbyoperator:portSpecifiedByOperato

Non-Functional Requirements

ISOs, templates and VM instances which are Appliances, are essentially no different from existing VM templates, ISOs and instances. They need not have separate tables in the DB. Largely existing attributes such as 'type' can be extended to denote that the element is an appliance in nature.

Instantiating an appliance is actually simply provisioning a VM. However, these 'Appliances' should not be presented alongside "normal" VMs - they are a distinct object type from the users' perspective and will be displayed within the networking tab.

User Interface


Milestones


MilestonePlanned dateActual date
1Start development2023-09-012023-09-1
2main Development is done2023-09-152023-09-22
3dev testing is done2023-09-222023-09-28. PR is created https://github.com/apache/cloudstack/pull/8022
4add marvin/unit test2023-09-22
5Final dev review2023-09-27
6pass over to QA2023-09-29
7QA testing is done2023-10-27

Glossary

VNF - Virtual Network Functions

NFV - Network Functions Virtualization


Database Changes

1. vm_template (existing table) Replaced by new template type: VNF

ColumnTypeComment
is_vnftinyint(1) NOT NULL DEFAULT '0'True if the template is used to deploy VNF appliances 

2. vnf_template_nics (new table)

ColumnTypeComment

id

bigint unsigned NOT NULL AUTO_INCREMENT

id of the NIC

template_id

bigint unsigned NOT NULL

id of the VNF template

device_id

bigint unsigned NOT NULL

Device id of the NIC when plugged into the VNF appliances

device_name

varchar(255) NOT NULL

Name of the NIC

required

tinyint NOT NULL DEFAULT '1'

True if the NIC is required. False if optional

description

varchar(255)

Description of the NIC

3. vnf_template_details (new table)


ColumnTypeComment

id

bigint unsigned NOT NULL AUTO_INCREMENT


template_id

bigint unsigned NOT NULL

id of the VNF template

name

varchar(255) NOT NULL


value

varchar(255) NOT NULL


display

tinyint(1) NOT NULL DEFAULT '1'

'True if the detail can be displayed to the end user'


Each VNF template can have the following details

  • access_methods (separated by comma)

  • username
  • password
  • ssh_port
  • http_port
  • http_path
  • https_port
  • https_port
  • resource icon
  • version
  • vendor
  • maintainer

Available Access methods are

  • ssh-with-password (username is required, password is required if template is not password-enabled)

  • ssh-with-keypair (username is required, keypair is required when deploy VNF appliances)

  • http (http_path is required. http_port is optional)

  • https (https_path is required. https_port is optional)

  • console


References