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.
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
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
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.
Milestone | Planned date | Actual date | |
---|---|---|---|
1 | Start development | 2023-09-01 | 2023-09-1 |
2 | main Development is done | 2023-09-15 | 2023-09-22 |
3 | dev testing is done | 2023-09-22 | 2023-09-28. PR is created https://github.com/apache/cloudstack/pull/8022 |
4 | add marvin/unit test | 2023-09-22 | |
5 | Final dev review | 2023-09-27 | |
6 | pass over to QA | 2023-09-29 | |
7 | QA testing is done | 2023-10-27 |
VNF - Virtual Network Functions
NFV - Network Functions Virtualization
Column | Type | Comment |
---|---|---|
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 |
Column | Type | Comment |
---|---|---|
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)
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