vCPE Blueprint in ONAP Part II


This blog is a continuation of the previous blog that explains deployment details (using TOSCA/HEAT templates) of various services that are part of vCPE blueprint in ONAP.


BTW, our ONAP Demystified book downloads and Amazon sales have crossed 400 as of today! Thanks for the tremendous interest. However, we haven't been doing so well on our ONAP merchandise. The merchandise, 100% pure-play ONAP without any Aarna branding, includes t-shirts, sweatshirts, hoodies, mugs, water bottles and much more. Feel free to buy & hopefully expense some of these items! There's minimal profit on each item and all proceeds go to the artist.

In this blog, we will cover 2 other services that are part of vCPE use case -- namely, vG MUX Infra service and vBNG service.

vG MUX Infra Service

vG_MUX provides the MUX functionality across all the links that are terminating at the Virtual Gateway.

The composition of this service is as shown below.


This service is modeled as a combination of TOSCA and HEAT templates, and the relationship is as shown:


The TOSCA model definitions file for this service can be found here.

The Environment file (base_vcpe_vgmux.env) for this service looks as follows:

parameters:

bng_gmux_private_ip: "10.1.0.10"

bng_gmux_private_net_cidr: "10.1.0.0/24"

bng_gmux_private_net_id: "zdfw1bngmux01_private"

bng_gmux_private_subnet_id: "zdfw1bngmux01_sub_private"

brgemu_bng_private_net_cidr: "10.3.0.0/24"

cloud_env: "openstack"

dcae_collector_ip: "10.0.4.1"

dcae_collector_port: "8081"

demo_artifacts_version: "1.2.0"

hc2vpp_patch_url: "https://git.onap.org/demo/plain/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/Hc2vpp-Add-VES-agent-for-vG-MUX.patch"

hc2vpp_source_repo_branch: "stable/1704"

hc2vpp_source_repo_url: "https://gerrit.fd.io/r/hc2vpp"

install_script_version: "1.2.0-SNAPSHOT"

key_name: "vgmux_key"

libevel_patch_url: "https://git.onap.org/demo/plain/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/vCPE-vG-MUX-libevel-fixup.patch"

mux_gw_private_net_cidr: "10.5.0.0/24"

mux_gw_private_net_id: "zdfw1muxgw01_private"

mux_gw_private_subnet_id: "zdfw1muxgw01_sub_private"

onap_private_net_cidr: "10.0.0.0/16"

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: "https://nexus.onap.org/content/groups/staging"

repo_url_blob: "https://nexus.onap.org/content/sites/raw"

vcpe_flavor_name: "onap.medium"

vcpe_image_name: "ubuntu-16.04-daily"

vf_module_id: "vCPE_Intrastructure_Metro_vGMUX"

vgmux_name_0: "zdcpe1cpe01mux01"

vgmux_private_ip_0: "10.1.0.20"

vgmux_private_ip_1: "10.0.101.20"

vgmux_private_ip_2: "10.5.0.20"

vnf_id: "vCPE_Infrastructure_vGMUX_demo_app"

vpp_patch_url: "https://git.onap.org/demo/plain/vnfs/vCPE/vpp-ves-agent-for-vgmux/src/patches/Vpp-Add-VES-agent-for-vG-MUX.patch"

vpp_source_repo_branch: "stable/1704"

vpp_source_repo_url: "https://gerrit.fd.io/r/vpp"

Note the details about the networks for this service, such as private IP of bng_gmux link (10.1.x.x) and private IP networks of mux_gw (10.1.x.x, 10.0.x.x and 10.5.x.x) as well as the VNF details, including the pointer to the VPP source repo, since this VNF is based on VPP open source initiative.

Let us examine some of the interesting parts of HEAT template file (base_vcpe_vgmux.yaml) for this service. Complete copy of the HEAT template file can be found here.

heat_template_version: 2013-05-23

description: Heat template to deploy vCPE Infrastructure Metro vGMUX

##############

# #

# PARAMETERS #

# #

##############

parameters:

vcpe_image_name:

type: string

label: Image name or ID

description: Image to be used for compute instance

...

bng_gmux_private_net_id:

type: string

label: vBNG vGMUX private network name or ID

description: Private network that connects vBNG to vGMUX

...

mux_gw_private_net_id:

type: string

label: vGMUX vGWs network name or ID

description: Private network that connects vGMUX to vGWs

...

brgemu_bng_private_net_cidr:

type: string

label: vBRG vBNG private network CIDR

description: The CIDR of the vBRG-vBNG private network

onap_private_net_id:

type: string

label: ONAP management network name or ID

description: Private network that connects ONAP components and the VNF

...

vgmux_private_ip_0:

type: string

label: vGMUX private IP address towards the vBNG-vGMUX private network

description: Private IP address that is assigned to the vGMUX to communicate with the vBNG

...

vnf_id:

type: string

label: VNF ID

description: The VNF ID is provided by ONAP

...

dcae_collector_port:

type: string

label: DCAE collector port

description: Port of the DCAE collector

...

cloud_env:

type: string

label: Cloud environment

description: Cloud environment (e.g., openstack, rackspace)

vpp_source_repo_url:

type: string

label: VPP Source Git Repo

description: URL for VPP source codes

...

#############

# #

# RESOURCES #

# #

#############

resources:

...

# Virtual GMUX Instantiation

vgmux_private_0_port:

type: OS::Neutron::Port

properties:

network: { get_param: bng_gmux_private_net_id }

fixed_ips: [{"subnet": { get_param: bng_gmux_private_subnet_id }, "ip_address": { get_param: vgmux_private_ip_0 }}]

...

vgmux_0:

type: OS::Nova::Server

properties:

image: { get_param: vcpe_image_name }

flavor: { get_param: vcpe_flavor_name }

name: { get_param: vgmux_name_0 }

key_name: { get_resource: my_keypair }

networks:

- network: { get_param: public_net_id }

- port: { get_resource: vgmux_private_0_port }

- port: { get_resource: vgmux_private_1_port }

- port: { get_resource: vgmux_private_2_port }

...

# Download and run install script

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

cd /opt

chmod +x v_gmux_install.sh

./v_gmux_install.sh

Note the details of the vG_MUX VNF (vgmux), and its ports/networks. Also note the installation details of this service and the script to install on a VM (v_gmux_install.sh).

vBNG MUX Service

This service consists of 2 VL’s connecting the associated VNF’s, as shown below.


This service is modelled as follows using TOSCA (Green) and HEAT (Orange) templates:


The TOSCA model definitions file for this service can be found here.

The Environment file (base_vcpe_vbng.env) for this service is as shown:

parameters:

bng_gmux_private_net_cidr: "10.1.0.0/24"

bng_gmux_private_net_id: "zdfw1bngmux01_private"

bng_gmux_private_subnet_id: "zdfw1bngmux01_sub_private"

brgemu_bng_private_net_cidr: "10.3.0.0/24"

brgemu_bng_private_net_id: "zdfw1bngin01_private"

brgemu_bng_private_subnet_id: "zdfw1bngin01_sub_private"

cloud_env: "openstack"

cpe_signal_net_id: "zdfw1cpe01_private"

cpe_signal_private_net_cidr: "10.4.0.0/24"

cpe_signal_subnet_id: "zdfw1cpe01_sub_private"

dcae_collector_ip: "10.0.4.1"

dcae_collector_port: "8081"

demo_artifacts_version: "1.2.0"

install_script_version: "1.2.0-SNAPSHOT"

key_name: "vbng_key"

onap_private_net_cidr: "10.0.0.0/16"

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: "https://nexus.onap.org/content/groups/staging"

repo_url_blob: "https://nexus.onap.org/content/sites/raw"

sdnc_ip_addr: "10.0.7.1"

vbng_name_0: "zdcpe1cpe01bng01"

vbng_private_ip_0: "10.3.0.1"

vbng_private_ip_1: "10.0.101.10"

vbng_private_ip_2: "10.4.0.3"

vbng_private_ip_3: "10.1.0.10"

vcpe_flavor_name: "onap.medium"

vcpe_image_name: "ubuntu-16.04-daily"

vf_module_id: "vCPE_Intrastructure_Metro_vBNG"

vnf_id: "vCPE_Infrastructure_Metro_vBNG_demo_app"

vpp_patch_url: "https://git.onap.org/demo/plain/vnfs/vCPE/vpp-radius-client-for-vbng/src/patches/Vpp-Integrate-FreeRADIUS-Client-for-vBNG.patch"

vpp_source_repo_branch: "stable/1704"

vpp_source_repo_url: "https://gerrit.fd.io/r/vpp"

Note the virtual link details of bng_gmux (10.1.x.x) and brgemu_bng (10.3.x.x), which are the 2 virtual links connecting BRG_Emulator to BNG_MUX and BNG_MUX to VG_MUX, and also two other network interfaces of BNG_MUX to connect to CPE_SIGNAL network (10.4.x.x), and lastly to ONAP OAM network (10.0.x.x).

Let us look at some of the interesting parts of HEAT template (base_vcpe_vbng.yaml) for this service. A full copy of the HEAT template file can be found here.

heat_template_version: 2013-05-23

description: Heat template to deploy vCPE virtual Broadband Network Gateway (vBNG)

##############

# #

# PARAMETERS #

# #

##############

parameters:

...

brgemu_bng_private_net_id:

type: string

label: vBNG IN private network name or ID

description: Private network that connects vBRG to vBNG

...

bng_gmux_private_net_id:

type: string

label: vBNG vGMUX private network name or ID

description: Private network that connects vBNG to vGMUX

...

cpe_signal_net_id:

type: string

label: vCPE private network name or ID

description: Private network that connects vCPE elements with vCPE infrastructure elements

...

vbng_private_ip_0:

type: string

label: vBNG IN private IP address

description: Private IP address that is assigned to the vBNG IN

..

vnf_id:

type: string

label: VNF ID

description: The VNF ID is provided by ONAP

vf_module_id:

type: string

label: vCPE module ID

description: The vCPE Module ID is provided by ONAP

dcae_collector_ip:

type: string

label: DCAE collector IP address

description: IP address of the DCAE collector

..

vpp_source_repo_url:

type: string

label: VPP Source Git Repo

description: URL for VPP source codes

..

#############

# #

# RESOURCES #

# #

#############

resources:

...

# Virtual BNG Instantiation

vbng_private_0_port:

type: OS::Neutron::Port

properties:

network: { get_param: brgemu_bng_private_net_id }

fixed_ips: [{"subnet": { get_param: brgemu_bng_private_subnet_id }, "ip_address": { get_param: vbng_private_ip_0 }}]

...

vbng_0:

type: OS::Nova::Server

properties:

image: { get_param: vcpe_image_name }

flavor: { get_param: vcpe_flavor_name }

name: { get_param: vbng_name_0 }

key_name: { get_resource: my_keypair }

networks:

- network: { get_param: public_net_id }

- port: { get_resource: vbng_private_0_port }

- port: { get_resource: vbng_private_1_port }

- port: { get_resource: vbng_private_2_port }

- port: { get_resource: vbng_private_3_port }

metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}

user_data_format: RAW

user_data:

str_replace:

params:

...

# Download and run install script

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

cd /opt

chmod +x v_bng_install.sh

./v_bng_install.sh

Note the BNG download and instantiation details above, including the script for installation of BNG MUX software (v_bng_install.sh).

Another interesting artifact is the VF Modules metadata, which is shown below. Note a couple of interesting observations:

The min and max vf_module_in stances is 1, which means this service will not be scaled out.

[

{

"vfModuleModelName": "VcpevspVbng230518a..base_vcpe_vbng..module-0",

"vfModuleModelInvariantUUID": "98476290-c537-4a7e-9bc0-92a7c116b1aa",

"vfModuleModelVersion": "1",

"vfModuleModelUUID": "dc431db4-54f5-4caa-af83-a28176de614a",

"vfModuleModelCustomizationUUID": "ab440315-998b-4229-99ab-942ce519dbda",

"isBase": true,

"artifacts": [

"0beb8864-d9b1-4650-a3c5-151bc35038ac",

"81e24e47-fbc5-4367-85ad-86c5a169b31f"

],

"properties": {

"min_vf_module_instances": "1",

"vf_module_label": "base_vcpe_vbng",

"max_vf_module_instances": "1",

"vfc_list": "",

"vf_module_description": "",

"vf_module_type": "Base",

"availability_zone_count": "",

"volume_group": "false",

"initial_count": "1"

}

}

]

Interested in learning more about ONAP? Consider our ONAP training courses. Or want to try out vCPE or some other blueprint in your lab? Contact us for ONAP professional services.

#ONAP #vCPE #TOSCA #Heat

0 views

MAIN LINKS

CONTACT US

(408) 372-6277

 Aarna Networks, Inc. © 2017-20