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.