vCPE Blueprint in ONAP

This blog explains deployment details (using TOSCA/HEAT templates) of some of the important services of the vCPE blueprint in ONAP. It assumes that the reader is familiar with vCPE use case (for which there are several blogs/video available, including a free book from Aarna Networks -- ONAP Demystified, or the ONAP Confluence page).

The following block diagram provides an overview of the end to end service of vCPE, and how various constituent services are linked together.

vCPE end to end use case comprises of several services (some of which are optional, and will be replaced by equivalent services already existing in CSP’s environment), each of which contains one or more VNF’s and/or VL’s.

  1. vCPE General Infra Service
  2. vG MUX Infra ServicevBNG Service
  3. vBNG MUX Service
  4. vBRG Emulation
  5. vCPE Customer Service

This blog shows details of some of these services, and their associated model templates.

vCPE General Infra

This service consists of vDHCP, vAAA and vDNS VNF’s connected by 2 virtual links (VLs) - cpe_signal and cpe_public, both of which are Openstack Neutron networks. The cpe_public link is also connected to a Web Server.

Now, let us examine the Infra Service in SDC Catalog for its constituent components and their details.

The composition of this service is as follows, which shows the virtual links (VLs) and the VF that makes up all the VNF’s:

The CSAR file for this service contains the following details:

The service is modeled (in TOSCA and HEAT templates) as follows:

Notice that the 2 networks (CPE_PUBLIC and CPE_SIGNAL) are modeled in HEAT, and so is the VF module that contains VM’s for all the VNF’s (vDHCP, vAAA and vDNS + vDHCP). The TOSCA template includes node_templates for all the HEAT templates. The TOSCA model definition file for this service can be found here.

Let us take a closer look at the Environment file (base_vcpe_infra.env) of this service.


cloud_env: "openstack"

cpe_public_net_cidr: ""

cpe_public_net_id: "zdfw1cpe01_public"

cpe_public_subnet_id: "zdfw1cpe01_sub_public"

cpe_signal_net_cidr: ""

cpe_signal_net_id: "zdfw1cpe01_private"

cpe_signal_subnet_id: "zdfw1cpe01_sub_private"

dcae_collector_ip: ""

dcae_collector_port: "8081"

demo_artifacts_version: "1.2.0"

install_script_version: "1.2.0-SNAPSHOT"

key_name: "vaaa_key"

mr_ip_addr: ""

onap_private_net_cidr: ""

onap_private_net_id: "ext-net"

onap_private_subnet_id: "ext-net"

pub_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQXYJYYi3/OUZXUiCYWdtc7K0m5C0dJKVxPG0eI8EWZrEHYdfYe6WoTSDJCww+1qlBSpA5ac/Ba4Wn9vh+lR1vtUKkyIC/nrYb90ReUd385Glkgzrfh5HdR5y5S2cL/Frh86lAn9r6b3iWTJD8wBwXFyoe1S2nMTOIuG4RPNvfmyCTYVh8XTCCE8HPvh3xv2r4egawG1P4Q4UDwk+hDBXThY2KS8M5/8EMyxHV0ImpLbpYCTBA6KYDIRtqmgS6iKyy8v2D1aSY5mc9J0T5t9S2Gv+VZQNWQDDKNFnxqYaAo1uEoq/i1q63XC5AD3ckXb2VT6dp23BQMdDfbHyUWfJN"

public_net_id: "2da53890-5b54-4d29-81f7-3185110636ed"

repo_url_artifacts: ""

repo_url_blob: ""

vaaa_name_0: "zdcpe1cpe01aaa01"

vaaa_private_ip_0: ""

vaaa_private_ip_1: ""

vcpe_flavor_name: "onap.medium"

vcpe_image_name: "ubuntu-16.04-daily"

vdhcp_name_0: "zdcpe1cpe01dhcp01"

vdhcp_private_ip_0: ""

vdhcp_private_ip_1: ""

vdns_name_0: "zdcpe1cpe01dns01"

vdns_private_ip_0: ""

vdns_private_ip_1: ""

vf_module_id: "vCPE_Intrastructure"

vnf_id: "vCPE_Infrastructure_demo_app"

vweb_name_0: "zdcpe1cpe01web01"

vweb_private_ip_0: ""

vweb_private_ip_1: ""

Note the details about the constituent VNF’s (vAAA, vDHCP, vDNS and vWEB_Server), including their IP addresses, and the network addresses of the VL’s that these VNF’s are connected to (cpe_signal and cpe_public). For eg., vDHCP & vAAA are connected to cpe_signal network (10.4.x.x), and vDNS and vWebServer are connected to cpe_public network (10.2.x.x). Also, DCAE Collector service is connected at 10.0.4.x IP address.

Now, let us look at some of the interesting fields of HEAT template (base_vcpe_infra.yaml) of this service. This contains details about all the VNF’s that are part of this service, and how they will be instantiated using HEAT. Complete copy of the HEAT template can be found here.

heat_template_version: 2013-05-23

description: Heat template to deploy vCPE Infrastructure elements (vAAA, vDHCP, vDNS_DHCP, webServer)


# #


# #




type: string

label: Image name or ID

description: Image to be used for compute instance


type: string

label: vAAA private network name or ID

description: Private network that connects vAAA with vDNSs



type: string

label: vCPE Public network (emulates internet) name or ID

description: Private network that connects vGW to emulated internet



type: string

label: vAAA private IP address towards the CPE_SIGNAL private network

description: Private IP address that is assigned to the vAAA to communicate with the vCPE components



type: string

label: vDNS private IP address towards the CPE_PUBLIC private network



type: string

label: vDHCP private IP address towards the CPE_SIGNAL private network

description: Private IP address that is assigned to the vDHCP to communicate with the vCPE components



type: string

label: vWEB private IP address towards the CPE_PUBLIC private network

description: Private IP address that is assigned to the vWEB to communicate with the vGWs




type: string

label: DCAE collector IP address

description: IP address of the DCAE collector


# #


# #




# Virtual AAA server Instantiation


type: OS::Neutron::Port


network: { get_param: cpe_signal_net_id }

fixed_ips: [{"subnet": { get_param: cpe_signal_subnet_id }, "ip_address": { get_param: vaaa_private_ip_0 }}]


type: OS::Nova::Server



template: |


# Create configuration files

mkdir /opt/config

echo "__dcae_collector_ip__" > /opt/config/dcae_collector_ip.txt


# Download and run install script

curl -k __repo_url_blob__/org.onap.demo/vnfs/vcpe/__install_script_version__/ -o /opt/

cd /opt

chmod +x



Note the details about various VNF’s (vAAA, vDHCP, vDNS and vWebServer) and the VL’s (Neutron networks - cpe_signal which connects vAAA with vDNS VNF’s and cpe_public, which connects vGW service to Emulate Internet) that are part of the Infrastructure service. Also note the vAAA instantiation, and details of DCAE Collector IP address, and the installation script ( in vAAA VNF. Other VNFs (vDNS, vDHCP & vWebserver) have been left out but you can refer to the link above for these details in the HEAT template file.

In the next blog, we will examine other Services and their details.

In the meantime check out our latest webinar on "What's new in ONAP Beijing" or request ONAP training if you/your team needs to learn more.

We use cookies to enhance site navigation, analyze site usage, and assist in our marketing efforts. For more information, please see the Aarna Networks Cookie Policy.
Accept cookies