3 Designing and Onboarding Network Services, VNFs, and PNFs

This chapter provides information about designing and onboarding network services, Virtual Network Functions (VNFs), and Physical Network Functions (PNFs).

About Design Components

Design components are files that you create in Oracle Communications Design Studio. NFV Orchestration uses different types of files that you create in Design Studio to describe the behavior of your network services, VNFs, and PNFs.

  • Descriptor files. The descriptor files describe the attributes of the VNF, PNF, and Network Service specifications.

    See "About Descriptor Files" for more information about the descriptor files.

  • Technical actions files. The technical actions files describe the actions for the VNFs, PNFs, and network services in the VIM. There is one technical actions file for each network service, VNF, and PNF.

    See "About Technical Actions Files" for more information about the technical actions files.

  • Configuration and template files. The configuration files contain the configuration and post-configuration details for the VNFs.

    See "About VNF Configuration Files" for more information about the descriptor files.

  • Entity Specifications. In Design Studio, you create entity specifications that you use to create instances of VNFs and network services. You package the entity specifications into cartridges. You create one cartridge for each VNF, network service, and PNF. See "Designing Custom Network Services" for more information.

    See Design Studio Help for information about creating entity specifications in Design Studio.

  • Custom extensions. See "Extending UIM NFV Orchestration" for information about implementing custom extensions.

About Descriptor Files

Descriptor files contain metadata about network services, VNFs, and PNFs. NFV Orchestration defines descriptors as Design Studio specifications and uses these specifications to manage the life cycles of network services and VNFs.

Descriptors describe the behavior of virtual network functions that are defined in the NFV Orchestration cartridges. There is one descriptor file for each network service, VNF, and PNF.

The following sections provide information about the network service, VNF, and PNF descriptor files.

About Network Service Descriptor Files

Network Service descriptor files describe the deployment requirements, operational behavior, and policies required by network services based on them. You use one descriptor file for each network service.

When you instantiate, scale, or terminate a network service, NFV Orchestration deploys, scales, and undeploys the constituent VNFs based on the parameters and policies specified in the descriptor file.

You use the network service descriptor file to do the following:

Describing Descriptor Information

In the network service descriptor file, you describe descriptor information, such as descriptor ID, descriptor name, vendor name, and descriptor version.

The following text shows the elements that enable you to provide information about the network service descriptor XML file:

<nsd id="network_service_descriptor_id" name="network_service_descriptor_name">
<vendor>vendor_name</vendor>
<version>descriptor_version</version>

Table 3-1 describes the parameters you specify to provide information about the network service descriptor XML file.

Table 3-1 Descriptor Information Parameters

Parameter Description

network_service_descriptor_id

Specify a unique ID for the network service descriptor.

network_service_descriptor_name

Specify a name for the network service descriptor.

vendor_name

Specify the name of the vendor.

descriptor_version

Specify the version of the network service descriptor.


The following text shows the elements that provide descriptor information in the NPaas.xml sample network service descriptor file:

<nsd id="NPaas" name="NPaas">
<vendor>Oracle</vendor>
<version>1.0</version>

Describing VNF Descriptor References

In the network service descriptor file, you reference the descriptors of all the VNFs that you want to include in the network service.

You reference the VNF descriptors in the network service descriptor file as follows:

<vnfd-reference ref-id="vnf_descriptor_id"/>

where:

  • vnf_descriptor_id is the ID of the VNF descriptor that you want to include in the network service.

The following is an example of the vnfd-reference element in the NPaas.xml sample network service descriptor file:

<!-- Multiple VNFs are supported. -->
<vnfd-reference ref-id="Juniper_vSRX"/>
<vnfd-reference ref-id="Checkpoint_NG_FW"/>

Describing PNF Descriptor References

In the network service descriptor file, you reference the descriptors of all the PNFs that you want to include in the network service.

You reference the PNF descriptors in the network service descriptor file as follows:

<pnfd-reference ref-id="pnf_descriptor_id"/>

where:

  • pnf_descriptor_id is the ID of the PNF descriptor that you want to include in the network service.

The following is an example of the pnfd-reference element in the ResidentialGateway.xml sample network service descriptor file:

<!-- Multiple PNFs are supported. -->
<pnfd-reference ref-id="Cisco_xRV"/>

Describing Networks

In the network service descriptor file, you define networks by creating them or by referencing existing networks and specifying their types. You represent networks as virtual links. You can create or reference any number of networks based on your service requirements.

The following text shows the parameters that you specify for a virtual link in a network service descriptor XML file:

<virtual-link id= "virtual_link_id" name="virtual_link_name" isReferenced="value_reference" isDHCPEnabled="value_DHCP" ipVersion="ip_version">     
  <connection-point-reference ref-id="connection_point_id" 
   vnfd-ref-id="vnf_descriptor_id"/>
  <connection-point-reference ref-id="connection_point_id" 
   vnfd-ref-id="vnf_descriptor_id"/>
   <extension type="extension_type" handler="extension_handler">
       <parameter name="parameter_name" value="parameter_value"/>
   </extension>
</virtual-link>

Table 3-2 describes the parameters you specify for a virtual link in the network service descriptor XML file.

Table 3-2 Virtual Link Parameters

Parameter Description

virtual_link_id

Specify a unique ID for the virtual link that you want to create or reference.

virtual_link_name

Specify a name for the virtual link that you want to create or reference.

value_reference

Specify whether you want to create the network or reference an existing network in run-time. Specify true if you want to reference an existing network. Otherwise, specify false. If you reference an existing network, specify the networks using the following key in your network service descriptor properties file:

vim_Id.network_service_descriptor.network_name

See "Setting Network Service Descriptor Properties" for more information about setting parameters in the network service descriptor properties file.

value_DHCP

Specify whether the network you create or reference should support DHCP or not. Specify true if the network should support DHCP. Otherwise, specify false.

ip_version

The version of the Internet Protocol. For example, IPv4.

connection_point_id

Reference the VNF connection point defined in the VNF descriptor included in the network service.

vnf_descriptor_id

Reference the VNF descriptor that contains the connection point specified in the connection_point_id parameter.

extension_type

Specify the type of the extension.

extension_handler

(Optional) Specify the fully qualified class name of the handler implementation class. For example, handler="com.oracle.impl.extnHandlerImpl." If you do not specify a handler, NFV Orchestration uses the default handler.

parameter_name

The name of the parameter for the extension.

parameter_value

The value of the parameter for the extension.


The following text shows a virtual link element in the NPaaS.xml sample network service descriptor file:

<!-- Multiple virtual links are supported. -->
<!-- isReferenced="true" means that network is not managed by NFV Orchestration e.g. External networks in Provider Network -->
<virtual-link id="ManagementNetwork" name="ManagementNetwork" isReferenced="true" isDHCPEnabled="false" ipVersion="IPv4">
   <connection-point-reference ref-id="CP03" vnfd-ref-id="Juniper_vSRX"/>
   <connection-point-reference ref-id="CP03" vnfd-ref-id="Checkpoint_NG_FW"/>
</virtual-link>

<virtual-link id="Data_IN" name="Data_IN" isReferenced="false" isDHCPEnabled="false" ipVersion="IPv4">
   <connection-point-reference ref-id="CP01" vnfd-ref-id="Juniper_vSRX"/>
   <connection-point-reference ref-id="CP01" vnfd-ref-id="Checkpoint_NG_FW"/>

<!-- If no handler is provided, NFV Orchestration will use its default VirtualLinkAddressHandler. -->
 <!-- Otherwise provide the fully qualified class name of the handler implementation class. e.g., handler="com.oracle.impl.VLHandlerImpl" -->
   <extension type="CreateVirtualLink">
       <parameter name="subnetAddress" value="192.0.2.1/27"/>
   </extension>
</virtual-link>
 
<virtual-link id="Data_OUT" name="Data_OUT" isReferenced="false" isDHCPEnabled="false" ipVersion="IPv4">
   <connection-point-reference ref-id="CP02" vnfd-ref-id="Juniper_vSRX"/>
   <connection-point-reference ref-id="CP02" vnfd-ref-id="Checkpoint_NG_FW"/>
   <extension type="CreateVirtualLink">
       <parameter name="subnetAddress" value="192.0.2.21/30"/>
   </extension>
 </virtual-link>

Describing Service Flavors

In the network service descriptor file, you can describe service flavors wherein you specify constituent VNFs, reference the VNF deployment flavors defined for the constituent VNFs in their respective VNF descriptors, and specify the minimum and maximum VNF instances that must be included in the network service.

The following text shows the pattern in which you describe the service flavors in a network service descriptor file.

<service-flavor id="service_flavor_id" name="service_flavor_name">
   <constituent-vnfd>
       <vnfd-reference ref-id="vnf_descriptor_id"/>
       <deployment-flavor-reference ref-id="vnf_deployment_flavor_id"/>
       <min-instances>min_vnf_instances</min-instances>
       <max-instances>max_vnf_instances</max-instances>
   </constituent-vnfd>
</service-flavor>

Table 3-3 describes the parameters you specify for a service flavor in the network service descriptor XML file.

Table 3-3 Service Flavor Parameters

Parameter Description

service_flavor_id

Specify a unique ID for the network service flavor.

service_flavor_name

Specify a name for the network service flavor.

vnf_descriptor_id

Reference the VNF descriptor that you want to use for this network service flavor.

vnf_deployment_flavor_id

Reference the VNF deployment flavor defined within the VNF descriptor.

min_vnf_instances

Specify the minimum number of VNF instances that the network service flavor must include.

max_vnf_instances

Specify the maximum number of VNF instances that the network service flavor can include.


The following text shows a service flavor element in the NPaaS.xml sample network service descriptor file:

<service-flavor id="Checkpoint" name="Checkpoint">
<!-- Multiple VNFs are supported.>
   <constituent-vnfd>
       <vnfd-reference ref-id="Checkpoint_NG_FW"/>
       <deployment-flavor-reference ref-id="premium"/>
       <min-instances>1</min-instances>
       <max-instances>1</max-instances>
   </constituent-vnfd>
</service-flavor>

<service-flavor id="Juniper" name="Juniper">
   <constituent-vnfd>
       <vnfd-reference ref-id="Juniper_vSRX"/>
       <deployment-flavor-reference ref-id="standard"/>
       <min-instances>1</min-instances>
       <max-instances>1</max-instances>
   </constituent-vnfd>
</service-flavor>

Describing Endpoints

In the network service descriptor file, you can specify the number of endpoints the networks can have.

The following text shows the pattern in which you describe the network service endpoints in a network service descriptor file.

<endpoint id="endpoint_id" name="endpoint_name" <type>endpoint_type</type>
  <vld-reference ref-id="virtual_link_descriptor_id"/>
  <connection-point-reference ref-id="connection_point_id" vnfd-ref-id="vnf_descriptor_id"/>
</endpoint>

Table 3-4 describes the parameters you specify for network service endpoints in the network service descriptor XML file.

Table 3-4 Endpoint Parameters

Parameter Description

endpoint_id

Specify a unique ID of the endpoint within the network service.

endpoint_name

Specify a name for the endpoint within the network service.

endpoint_type

Specify the type of the endpoint. For example, specify FLOATING or EDGE_DEVICE.

virtual_link_descriptor_id

Reference the virtual link (defined within the virtual link element) that connects the endpoint to the VNF connection point.

connection_point_id

Specify the VNF connection point to which the endpoint (specified in the endpoint_id parameter) should be connected.

vnf_descriptor_id

Specify the VNF descriptor that contains the connection point specified in connection_point_id parameter.


The following text shows an endpoint element in the NPaaS.xml sample network service descriptor file:

<endpoint id="SERVICE_EP1" name="SERVICE_EP1" type="FLOATING">
  <vld-reference ref-id="Data"/>
  <connection-point-reference ref-id="CP01" vnfd-ref-id="Juniper_vSRX"/>
</endpoint>
<endpoint id="SERVICE_EP2" name="SERVICE_EP2" type="FLOATING">
  <vld-reference ref-id="Data"/>
  <connection-point-reference ref-id="CP02" vnfd-ref-id="Juniper_vSRX"/>
</endpoint>

Describing Rules

In the network service descriptor file, you can define rules that enable you to specify specific conditions as name-value pairs to control the type of the network traffic in a network service.

The following text shows the pattern in which you describe the rules in a network service descriptor file.

<rule id="rule_id" name="rule_name" type="rule_type">
  <parameter name="name" value="value"/>
  <parameter name="name" value="value"/>
</rule>

Table 3-5 describes the parameters you specify for rules in the network service descriptor XML file.

Table 3-5 Rule Parameters

Parameter Description

rule_id

Specify a unique ID for the rule.

rule_name

Specify a name for the rule.

type

Specify the type of the rule. For example, traffic-classification.

name

The name of the parameter for the rule. For example, protocol or QoS.

value

The value of the parameter for the rule. For example, HTTP or TCP.


The following text shows a rule element in the NPaaS.xml sample network service descriptor file:

<!-- Multiple rules are supported. -->
<!-- Rules define the conditions or constraints.  -->
<rule id="rule1" name="rule1" type="traffic-classification>
  <parameter name="type" value="video"/>
  <parameter name="protocol" value="UDP"/>
 </rule>
<rule id="rule2" name="rule2" type="traffic-classification>
  <parameter  name="QOS" value="5">
  <parameter  name="protocol" value="TCP">
</rule>

Describing Policies

In the network service descriptor file, you can define traffic classification policies that enable you to specify the type of network traffic to be carried on the forwarding paths.

The following text shows the pattern in which you describe the policies for a network service in a network service descriptor file.

<policy id="policy_id" name="policy_name" type="policy_type" default="default">
  <rule-reference ref-id="rule_id" action="nfp_id" vnffg-ref-id="vnffg_id"/>
  <rule-reference ref-id="rule_id" action="nfp_id" vnffg-ref-id="vnffg_id"/>
</policy>

Table 3-6 describes the parameters you specify for policies in the network service descriptor XML file.

Table 3-6 Policy Parameters

Parameter Description

policy_id

Specify a unique ID for the policy.

policy_name

Specify a name for the policy. For example, Premium or Standard.

policy_type

Specify the type of the policy. For example, traffic-classification.

default

Specify true if you want to create this policy by default during network service instantiation. Otherwise, specify false.

rule_id

Reference the unique ID for the defined rule.

nfp_id

Reference the unique ID for the network forwarding path to which the network traffic should be routed.

vnffg_id

Reference the unique ID for the virtual network function forwarding graph that contains the network forwarding path you specified in the nfp_id parameter.


The following text shows a policy element in the NPaaS.xml sample network service descriptor file:

<!-- Multiple policies are supported. -->
<!-- Policies define the rules and the corresponding action to be taken.  -->
<policy id="premium" name="premium" type="traffic-classification default="true">
<rule-reference ref-id="rule1" action="nfp-ref-id:nfp1" vnffg-ref-id="vnffg1"/>
<rule-reference ref-id="rule2" action="nfp-ref-id:nfp2" vnffg-ref-id="vnffg1"/>
</policy>
<policy id="standard" name="standard" type="traffic-classification>
<rule-reference ref-id="rule1" action="nfp1" vnffg-ref-id="vnffg1"/>
</policy>

Describing VNF Forwarding Graphs

In the network service descriptor file, you can describe VNF forwarding graphs (VNFFGs) that include one or more network forwarding paths (NFPs) that define how the network traffic should be routed through the VNF connection points in a network service.

The following text shows the pattern in which you describe a VNF forwarding graph in a network service descriptor file:

<vnffg id="vnffg_id" name="vnffg_name" default="default">
   <vnfd-reference ref-id="vnf_descriptor_id"/>

   <vld-reference ref-id="virtual_link_descriptor_id"/>

   <endpoint-reference ref-id="endpoint_id"/>
   <endpoint-reference ref-id="endpoint_id"/>

   <network-forwarding-path id="nfp_id" name="nfp_name">
       <forwarding-policy>forwarding_policy_type</forwarding-policy>
       <source-endpoint-reference ref-id="source_endpoint_id"/>
       <connection-point-reference ref-id="connection_point_id" vnfd-ref-id="vnf_descriptor_id" order="connection_point_order"/>
       <connection-point-reference ref-id="connection_point_id" vnfd-ref-id="vnf_descriptor_id" order="connection_point_order"/>
       <destination-endpoint-reference ref-id="destination_endpoint_id"/>
   </network-forwarding-path>
</vnffg>

Table 3-7 describes the parameters you specify for a VNF forwarding graph (VNFFG) in the network service descriptor XML file.

Table 3-7 VNF Forwarding Graph Parameters

Parameter Description

vnffg_id

Specify a unique ID for the VNFFG.

vnffg_name

Specify a name for the VNFFG.

default

Specify true if you want to create this VNFFG by default during network service instantiation. Otherwise, specify false.

vnf_descriptor_id

Reference the VNF descriptor that you want to include in the VNFFG.

virtual_link_descriptor_id

Reference the virtual link (defined within the virtual link element) that you want to include in the VNFFG.

endpoint_id

Reference the endpoint for the network service.

nfp_id

Specify a unique ID for the network forwarding path (NFP) that you want to include in the VNFFG.

nfp_name

Specify a name for the NFP that you want to include in the VNFFG.

forwarding_policy_type

Specify the type of the forwarding policy for the network traffic in the network forwarding path. For example, SYMMETRIC or ASYMMETRIC.

source_endpoint_id

Reference the endpoint you specified in the endpoint_id parameter that you want to designate as the source endpoint for the network service.

connection_point_id

Reference the VNF connection point that you want to include in the NFP.

Typically, in a VNF, one connection point is connected to the DATA_IN network and another connection point is connected to the DATA_OUT network. In situations where a single connection point is connected to both DATA_IN and DATA_OUT networks, you must specify the VNF connection point twice, which indicates that the same connection point is used for both incoming and outgoing network traffic.

In the following example, the connection point CP11 is specified twice, which indicates that CP11 is connected to both DATA_IN and DATA_OUT networks:

<network-forwarding-path id="nfp1" name="nfp1">
  <forwarding-policy>SYMMETRIC</forwarding-policy>
  <source-endpoint-reference ref-id="CP01"/>
  <connection-point-reference ref-id="CP11" vnfd-ref-id="VNFD1" order="1"/>
  <connection-point-reference ref-id="CP11" vnfd-ref-id="VNFD1" order="2"/>
  <connection-point-reference ref-id="CP21" vnfd-ref-id="VNFD2" order="3"/>
  <connection-point-reference ref-id="CP24" vnfd-ref-id="VNFD2" order="4"/>
  <connection-point-reference ref-id="CP31" vnfd-ref-id="VNFD3" order="5"/>
  <connection-point-reference ref-id="CP32" vnfd-ref-id="VNFD3" order="6"/>
  <destination-endpoint-reference ref-id="CP41"/>
</network-forwarding-path>

vnf_descriptor_id

Reference the VNF descriptor that contains the connection point you specified in the connection_point_id parameter.

connection_point_order

Specify the order of the connection point for the NFP.

destination_endpoint_id

Reference the endpoint you specified in the endpoint_id parameter that you want to designate as the destination endpoint for the network service.


The following text shows a VNFFG element in the NPaaS.xml sample network service descriptor file:

<vnffg id="data-vnffg1" name="data-vnffg1" default="true">
   <vnfd-reference ref-id="Juniper_vSRX"/>

   <vld-reference ref-id="Data"/>

   <endpoint-reference ref-id="Service_EP1"/>
   <endpoint-reference ref-id="Service_EP2"/>

<!-- Multiple network forwarding paths are supported. -->
   <network-forwarding-path id="nfp1" name="nfp1">
       <forwarding-policy>SYMMETRIC</forwarding-policy>
       <source-endpoint-reference ref-id="Service_EP1"/>
       <connection-point-reference ref-id="CP01" vnfd-ref-id="VNFD1" order="1"/>
       <connection-point-reference ref-id="CP02" vnfd-ref-id="VNFD1" order="2"/>
       <destination-endpoint-reference ref-id="Service_EP2"/>
   </network-forwarding-path>
</vnffg>

About VNF Descriptor Files

VNF descriptor files describe the deployment requirements, operational behavior, and policies required by VNFs that are based on them.

NFV Orchestration includes the following sample VNF descriptor files:

  • Juniper_vSRX.xml. This is the descriptor file for the Juniper vSRX firewall VNF.

  • Checkpoint_NG_FW.xml. This is the descriptor file for the Checkpoint NG firewall VNF.

You use virtual network function descriptor file to do the following:

Describing VNF Descriptor Information

In the VNF descriptor file, you provide the VNF descriptor information, such as descriptor ID, descriptor name, vendor name, VNF descriptor version, and VNF version.

The following text shows the elements that enable you to provide information about the VNF descriptor XML file:

<nsd id="network_service_descriptor_id" name="network_service_descriptor_name">
<vendor>vendor_name</vendor>
<version>descriptor_version</version>
<vnf-version>vnf_version</vnf-version>

Table 3-8 describes the parameters you specify to provide information about the VNF descriptor XML file.

Table 3-8 VNF Descriptor Information Parameters

Parameter Description

vnf_descriptor_id

Specify a unique ID for the VNF descriptor that you want to include in the network service.

vnf_descriptor_name

Specify a name for the VNF descriptor that you want to include in the network service.

vendor_name

Specify the name of the VNF vendor.

descriptor_version

Specify the version of the VNF descriptor.

vnf_version

Specify the software version number for the VNF image.


The following text shows the elements that provide descriptor information in the Juniper_vSRX.xml sample VNF descriptor file:

<vnfd id="Juniper_vSRX" name="Juniper_vSRX">
<vendor>Oracle</vendor>
<version>1.0</version>
<vnf-version>1.0</vnf-version>

Describing the EMS and Heat Interface Details

In the VNF descriptor file, you can specify the EMS that manages the configuration of a VNF. You can also specify whether you want to use Heat templates to orchestrate the VNF. If an EMS manages a VNF's configuration, you must register that EMS before performing any lifecycle actions on the VNF.

The following text shows the pattern in which you describe the EMS and VIM interface details in a VNF descriptor file.

<integration>
    <ems>ems_name</ems>
    <hasheattemplate>value_heat_template</hasheattemplate>
</integration>

Table 3-9 describes the parameters you specify for the EMS and VIM details in the VNF descriptor XML file.

Table 3-9 EMS and VIM Parameters

Parameter Description

ems_name

Specify a unique ID for the EMS that manages the configuration of a VNF.

value_heat_template

Specify true if you are using Heat templates to manage the life-cycle of a VNF; otherwise, specify false.


The following text shows an integration element in the Juniper_vSRX.xml sample VNF descriptor file:

<integration>
    <ems>IPSA</ems>
    <hasheattemplate>true</hasheattemplate>
</integration>

Describing VNF Connection Points

In the VNF descriptor file, you can specify the internal, external, and management connection points for the VNF.

The following text shows the pattern in which you describe the internal, external, and management connection points in a VNF descriptor file.

<connection-point id="connection_point_id" name="connection_point_name" type="connection_point_type"/>

Table 3-10 describes the parameters you specify for internal and external connection points in the VNF descriptor XML file.

Table 3-10 Connection Point Parameters

Parameter Description

connection_point_id

Specify a unique ID for the VNF connection point.

connection_point_name

Specify a name for the VNF connection point.

connection_point_type

Specify the type of the VNF connection point. For example, MANAGEMENT, EXTERNAL, or INTERNAL.


The following text shows a connection point element in the Juniper_vSRX.xml sample VNF descriptor file:

<!-- Multiple connection points are supported. -->
<connection-point id="CP03" name="CP03" type="MANAGEMENT"/>
<connection-point id="CP01" name="CP01" type="EXTERNAL"/>
<connection-point id="CP02" name="CP02" type="EXTERNAL"/>

Describing Internal Virtual Links

In the VNF descriptor file, you can define the connectivity between the components within a VNF as internal virtual links. For each internal virtual link, specify the internal connection points that connect the internal virtual link to different components within a VNF.

Note:

NFV Orchestration does not use the VNF's internal virtual link information; instead, it passes this information to the VNF manager for processing.

The following text shows the pattern in which you describe the internal virtual links in a VNF descriptor file.

<virtual-link id="virtual_link_id" name="virtual_link_name">
    <connection-point-reference ref-id="connection_point_id"/>
    <connection-point-reference ref-id="connection_point_id">
        <extension type="extension_type" handler="extension_handler">
          <parameter name="parameter_name" value="parameter_value" />
          <parameter name="parameter_name" value="parameter_value" />
        </extension>
</virtual-link>

Table 3-11 describes the parameters you specify for internal virtual links in the VNF descriptor XML file.

Table 3-11 Internal Virtual Link Parameters

Parameter Description

virtual_link_id

Specify a unique ID for the internal virtual link.

virtual_link_name

Specify a name for the virtual link.

connection_point_id

Reference the internal connection point of the VNF.

security_value

Specify whether internal virtual links should be created with security enabled or disabled. Specify true to enable security for the internal virtual links. Otherwise, specify false.

extension_type

Specify the type of the extension.

extension_handler

Specify the fully qualified class name of the handler implementation class.

parameter_name

The name of the parameter for the extension.

parameter_value

The value of the parameter for the extension.


The following text shows a virtual link element that you specify for an internal virtual link of a VNF in a sample VNF descriptor file:

<!-- Multiple Internal Virtual Links are supported. -->
<!-- Specifying Internal Virtual Links is Optional -->
<virtual-link id="InternalVL" name="InternalVL">
    <connection-point-reference ref-id="CP04"/>
    <connection-point-reference ref-id="CP05"/>
       <security enabled="true">
           <extension type="SecurityGroups" handler="com.oracle.impl.ExtnImpl">
          <!-- Multiple security groups are supported. -->
          <parameter name="security_groups" value="open, default"/>
       </security>
</virtual-link>

Describing Virtual Deployment Unit Flavors

In the VNF descriptor file, you can define VDU deployment flavors that represent specific deployment of a VDU supporting specific key performance indicators (KPIs), such as compute, memory, and storage capacity.

The following text shows the pattern in which you describe the VDU flavor in a VNF descriptor file.

<vdu-flavor id="vdu_flavor_id" name="vdu_flavor_name">
   <cpu>cpu</cpu>
   <memory>memory</memory>
   <storage>disk_space</storage>
</vdu-flavor>

Table 3-12 describes the parameters you specify for a VDU flavor in the VNF descriptor XML file.

Table 3-12 Virtual Deployment Unit Flavor Parameters

Parameter Description

vdu_flavor_id

Specify a unique ID for the VDU flavor.

vdu_flavor_name

Specify a name for the VDU flavor.

cpu

Specify the number of virtual CPUs that you want to allocate for the VDU.

memory

Specify the memory you want to allocate for the VDU. Specify the memory in GB.

disk_space

Specify the disk space that you want to allocate for the VDU. Specify the disk space in GB.


The following text shows a vdu-flavor element in the Juniper_vSRX.xml sample VNF descriptor file:

<vdu-flavor id="vsrx.small" name="vsrx.small">
   <cpu>2</cpu>
   <memory>2GB</memory>
   <storage>20GB</storage>
</vdu-flavor>
<vdu-flavor id="vsrx.medium" name="vsrx.medium">
   <cpu>2</cpu>
   <memory>4GB</memory>
   <storage>20GB</storage>
</vdu-flavor>
<vdu-flavor id="m1.medium" name="m1.medium">
   <cpu>2</cpu>
   <memory>4GB</memory>
   <storage>40GB</storage>
</vdu-flavor>

Describing VDU Images

In the VNF descriptor file, you can specify the VDU images that you want to instantiate for a VNF.

The following text shows the pattern in which you describe the VDU images in a VNF descriptor file.

<image id="image_id">
    <software-image name="image_name" version="image_version">
        <extension type="extension_type" handler="extension_handler">
            <parameter name="parameter_name" value="parameter_value"/>
            <parameter name="parameter_name" value="parameter_value"/>
        </extension>
    </software-image>
</image>

Table 3-13 describes the parameters you specify for a VDU image in the VNF descriptor XML file.

Table 3-13 VNF Image Parameters

Parameter Description

image_id

Specify a unique ID for the VDU image.

image_name

Specify a name for the VDU image.

image_version

Specify the software version number for the VDU image.

extension_type

Specify the type of the extension.

extension_handler

(Optional) Specify the handler for the extension.

parameter_name

The name of the parameter for the extension.

parameter_value

The value of the parameter for the extension.


The following text shows an image element in the Juniper_vSRX.xml sample VNF descriptor file:

<image id="vsrx-v1.0" >
        <software-image name="vsrx-12.1X47-D20.7-npaas-v0.3" version="1.0" >
                <extension type="ImageCredentials" handler="oracle.communications.inventory.nso.extensions.impl.ImageCredentialsHandlerImpl">
                    <parameter name="username" value="root" />
                    <parameter name="password" value="labms01" />
                </extension>
        </software-image>
    </image>

Describing Virtual Deployment Units

In the VNF descriptor file, you can describe Virtual Deployment Units, which represent the virtual machines on which VNF components (VNFCs) can be deployed.

The following text shows the pattern in which you describe the rules in a VNF descriptor file.

<vdu id="vdu_id" name="vdu_name"> 
   <image-reference ref-id="image_id"/>
   <vnfc id="vnfc_id" name="vnfc_name"> 
      <connection-point-reference ref-id="connection_point_id" order="connection_point_order"/>
      <connection-point-reference ref-id="connection_point_id" order="connection_point_order">  
      <connection-point-reference ref-id="connection_point_id" order="connection_point_order">  
   </vnfc>
   <security enabled="security_value">
   <!-- Security group values can be provided dynamically during instantiation -->
         <extension type="extension_type" handler="extension_handler">
             <!-- Multiple security groups are supported. -->
             <parameter name="parameter_name" value="parameter_value">
             <parameter name="parameter_name" value="parameter_value">
         </extension>
   </security>
</vdu>

Table 3-14 describes the parameters you specify for a VDU in the VNF descriptor XML file.

Table 3-14 Virtual Deployment Unit Parameters

Parameter Description

vdu_id

Specify a unique ID for the VDU.

vdu_name

Specify a name for the VDU.

image_id

Reference the VDU image that should be used to instantiate the VDU.

vnfc_id

Specify a unique ID for the VNF component in the VDU.

vnfc_name

Specify a name for the VNF component in the VDU.

connection_point_id

Reference a VNF connection point.

connection_point_order

Specify the order of the connection point.

security_value

Specify whether the VDU should be created with security enabled or disabled. Specify true to enable security; otherwise, specify false.

extension_type

Specify the type of the extension.

extension_handler

(Optional) Specify the fully qualified class name of the handler implementation class.

parameter_name

The name of the parameter for the extension.

parameter_value

The value of the parameter for the extension.


The following text shows a vdu element in the Juniper_vSRX.xml sample VNF descriptor file:

<!-- Multiple VDUs are supported. -->
<vdu id="Juniper_vSRX_VDU" name="Juniper_vSRX_VDU"> 
   <image-reference ref-id="vsrx-v1.0"/>
   <vnfc id="vsrxc" name="vsrxc"> 
     <connection-point-reference ref-id="CP03" order="1"/> <!-- Management port will not have VL reference -->
     <connection-point-reference ref-id="CP01" order="2"/> <!-- External CP does not have VL reference -->
     <connection-point-reference ref-id="CP01" order="3"/> <!-- External CP does not have VL reference -->
   </vnfc>
   <security enabled="true">
   <!-- Security group values can be provided dynamically during instantiation -->
   <!-- If no handler is provided, NFV Orchestration will use its default SecurityGroupHandler. -->
   <!-- Otherwise provide the fully qualified class name of the handler implementation class. e.g., handler="com.oracle.impl.SecurityGroupHandlerImpl" -->
         <extension type="SecurityGroups">
             <!-- Multiple security groups are supported. -->
             <parameter name="type" type="VDU">
             <parameter name="security_groups" type="open, default">
         </extension>
         <extension type="SecurityGroups">
             <!-- Multiple security groups are supported. -->
             <parameter name="type" type="CP">
             <parameter name="security_groups" type="all">
             <parameter name="connection_points" type="CP01, CP02">
         </extension>
     </extensions>
   </security>
</vdu>

Describing VNF Deployment Flavors

Deployment flavors give you the flexibility to choose which VDUs should be deployed for the VNF and, in turn, which VNF components should be deployed on those VDUs.

In the VNF descriptor file, you can describe deployment flavors wherein you specify constituent VDUs of the VNF. For each VDU, specify the constituent VNF components, including the minimum and maximum number of VNF component instances that the VDU can have. You can also specify the VDU flavors, including the minimum and maximum VDU instances that the deployment flavor can have.

In addition, you can also define the assurance parameters for various factors. For example, you can define assurance parameters to heal a VNF or scale a VNF in the network service, depending on the CPU utilization of the virtual machine on which the VDUs of a VNF are deployed.

The following text shows the pattern in which you describe the deployment flavor in a VNF descriptor file.

<deployment-flavor id="deployment_flavor_id" name="deployment_falvor_name" default="default">
   <constituent-vdu>
      <vdu-reference ref-id="vdu_id"/>
      <constituent-vnfc>
         <vnfc-reference ref-id="vnfc_id"/>
         <min-instances>min_vnfc_instances</min-instances>
         <max-instances>max_vnfc_instances</max-instances>
      </constituent-vnfc>
      <vdu-flavor-reference ref-id="vdu_flavor_id"/>
      <min-instances>min_vdu_instances</min-instances>
      <max-instances>max_vdu_instances</max-instances>
      <scale-quantity>scale_quantity</scale_quantity>

      <assurance-parameter id="assurance_parameter_id" description="assurance_parameter_description">
          <parameter name="parameter_name" value="parameter_value"/>
          <parameter name="parameter_name" value="parameter_value"/>
          <parameter name="parameter_name" value="parameter_value"/>
      </assurance-parameter>
   </constituent-vdu>
</deployment-flavor>

Table 3-15 describes the parameters you specify for deployment flavors in the VNF descriptor XML file.

Table 3-15 Deployment Flavor Parameters

Parameter Description

deployment_flavor_id

Specify a unique ID for the deployment flavor.

deployment_flavor_name

Specify a name for the deployment flavor.

default

Indicates if the VNF should use this deployment flavor by default or not. Specify true if you want NFV Orchestration to use this deployment flavor for the VNF. Otherwise, specify false.

vdu_id

Reference the VDU on which the constituent VNF components can be deployed.

vnfc_id

Reference the constituent VNF components that you want deployed on the VDU.

min_vnfc_instances

Specify the minimum number of VNF component instances that the deployment flavor must include.

max_vnfc_instances

Specify the maximum number of VNF component instances that the deployment flavor can include.

vdu_flavor_id

Reference the VDU flavor ID.

min_vdu_instances

Specify the minimum number of VDU instances that the deployment flavor must include.

max_vdu_instances

Specify the maximum number of VDU instances that the deployment flavor can include.

scale_quantity

Specify the number of VDU instances that should be added when you scale-out a VNF. Similarly, this parameter determines the number of VDU instances that should be removed when you scale-in a VNF.

assurance_parameter_id

Specify a unique ID for the assurance parameter.

assurance_parameter_description

Provide a description to identify the purpose of the assurance parameter. For example, specify Low CPU Utilization or High CPU Utilization.

parameter_name

Specify the parameter name for the assurance parameter.

parameter_value

Specify the parameter value for the assurance parameter.


The following text shows the deployment flavor element in the Juniper_vSRX.xml sample VNF descriptor file:

<!-- Multiple deployment flavors are supported. -->
<deployment-flavor id="standard" name="standard" default="true">
<!-- Each deployment flavor can further choose which VDU, and which VNFC in the VDU to deploy. -->
<!-- For example: depFlavor1 only selects VDUTypeA, VNFCTypeX to deploy, but not VNFCTypeY. -->

   <constituent-vdu>
      <vdu-reference ref-id="Juniper_vSRX_VDU"/>
      <constituent-vnfc>
         <vnfc-reference ref-id="vsrxc"/>
         <min-instances>1</min-instances>
         <max-instances>1</max-instances>
      </constituent-vnfc>
      <vdu-flavor-reference ref-id="vsrxc"/>
      <min-instances>1</min-instances>
      <max-instances>1</max-instances>
      <scale-quantity>2</scale-quantity>

      <assurance-parameter id="ap1" description="Low CPU Utilization">
          <parameter name="meter_name" value="cpu_util"/>
          <parameter name="value" value="0.0"/>
          <parameter name="condition" value="eq"/>
          <parameter name="action" value="heal"/>
      </assurance-parameter>

      <assurance-parameter id="ap2" description="High CPU Utilization">
          <parameter name="meter_name" value="cpu_util"/>
          <parameter name="value" value="80.0"/>
          <parameter name="condition" value="gt"/>
          <parameter name="action" value="scale"/>
      </assurance-parameter>
   </constituent-vdu>
</deployment-flavor>

About PNF Descriptor Files

PNF descriptor files describe the deployment requirements, operational behavior, and policies required by PNFs that are based on them.

In the PNF descriptor file, you specify:

  • Vendor details

  • The version of the PNF descriptor

  • The software version of the PNF

  • Connection points for the PNF

The following text shows the pattern in which you describe a PNF in the PNF descriptor file:

<pnfd id="pnf_descriptor_id" name="pnf_descriptor_name">

   <vendor>vendor_name</vendor>
   <version>descriptor_version</version>
   <pnf-version>pnf_version</pnf-version>

   <!-- Multiple connection points are supported. -->
   <connection-point id="connection_point_id" name="connection_point_name"/> 
   <connection-point id="connection_point_id" name="connection_point_name"/>  
   <connection-point id="connection_point_id" name="connection_point_name"/> 

</pnfd>

Table 3-16 describes the parameters you specify to provide information about the PNF descriptor XML file.

Table 3-16 PNF Descriptor Parameters

Parameter Description

pnf_descriptor_id

Specify a unique ID for the PNF descriptor that you want to include in the network service.

pnf_descriptor_name

Specify a name for the PNF descriptor that you want to include in the network service.

vendor_name

Specify the name of the PNF vendor.

descriptor_version

Specify the version of the PNF descriptor.

pnf_version

Specify the software version number for the PNF image.

connection_point_id

Specify a unique ID for the PNF connection point.

connection_point_name

Specify a name for the PNF connection point.


NFV Orchestration includes the following sample PNF descriptor file:

  • Cisco_xRV.xml. This descriptor file can be used for the Cisco xRV router PNF.

The following text shows the elements in the Cisco_xRV.xml sample PNF descriptor file:

<pnfd id="Cisco_xRV" name="Cisco_xRV">

   <vendor>CISCO</vendor>
   <version>1.0</version>
   <pnf-version>1.0</pnf-version>

   <!-- Multiple connection points are supported. -->
   <connection-point id="CP01" name="CP01"/> 
   <connection-point id="CP02" name="CP02"/>  
   <connection-point id="CP03" name="CP03"/> 

</pnfd>

Creating a Descriptor File

In Design Studio, you create a descriptor file for each Network Service specification and VNF Service specification.

To create a descriptor file:

  1. In Design Studio, import all the NFV Orchestration cartridges. See "Setting Up Design Studio for Extending NFV Orchestration" for more information about importing the cartridges into Design Studio.

  2. Switch to the Navigator view.

  3. In the root directory of the cartridge project, create the following folder structure:

    model/content/product_home/config

  4. Right-click on the config folder and create an XML file with the name ServiceSpecificationName.xml for a network service, LogicalDeviceSpecificationName.xml for a VNF, and LogicalDeviceSpecificationName.xml for a PNF.

    where:

    • ServiceSpecificationName is the name of the service specification

    • LogicalDeviceSpecificationName is the name of the logical device specification, which represents a VNF or a PNF.

  5. Copy the sample content from the sample cartridge project to the XML file and modify it according to your service requirements.

About Technical Actions Files

Technical actions files describe the actions for the VNFs, PNFs, and network services in a VIM. There is one technical actions file for each network service, VNF, and PNF.

In the technical actions file, for each technical action, you define the following elements:

  • action: This element declares a technical action, its signature (which contains the name and type of each parameter), and the type of its subject and target.

  • match: This element declares configuration differences that match an XPath expression.

  • generator: This element defines all the bindings of the configuration to the parameters, subject, and target of the action to be generated.

The following example shows the elements in the Juniper_vSRX_Service_TechnicalActions.xml file:

<technicalActionCalculator
    xmlns="http://xmlns.oracle.com/communications/inventory/actioncalculator"
    xmlns:invactcalc="http://xmlns.oracle.com/communications/inventory/actioncalculator"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.oracle.com/communications/inventory/actioncalculator
    ../../../../../../calc_tech_actions_uim_workspace/ora_uim_calculate_technical_order_metadata/schemas/TechnicalActionCalculator.xsd">
 
    <invactcalc:action>
        <name>DEPLOY_VNF</name>
        <actionCode>DEPLOY_VNF</actionCode>
        <subject>
            <class>LogicalDevice</class>
        </subject>
        <target>
            <class>LogicalDevice</class>
        </target>
        <parameter>
            <name>serviceID</name>
            <type>string</type>
        </parameter>
        <parameter>
            <name>vnfID</name>
            <type>string</type>
        </parameter>
        <parameter>
            <name>vnfName</name>
            <type>string</type>
        </parameter>
        <parameter>
            <name>vnfdName</name>
            <type>string</type>
        </parameter> 
        <parameter>
            <name>flavor</name>
            <type>string</type>
        </parameter>
        <parameter>
            <name>vimId</name>
            <type>string</type>
        </parameter>
        <parameter>
            <name>vdus</name>
            <type>string</type>
        </parameter>
        <parameter>
            <name>vnfcs</name>
            <type>string</type>
        </parameter>
        <parameter>
            <name>ports</name>
            <type>string</type>
        </parameter>
    </invactcalc:action>
 
    <invactcalc:match>
        <invactcalc:diff>
            <invactcalc:path>/root/after/vnf/Assignment[@State='PENDING_ASSIGN' and /root/service[state!='PENDING_DISCONNECT']]/..</invactcalc:path>
        </invactcalc:diff>
        <invactcalc:action>DEPLOY_VNF</invactcalc:action>
        <invactcalc:anchor>.</invactcalc:anchor>
    </invactcalc:match>
 
    <invactcalc:generator>
        <invactcalc:action>DEPLOY_VNF</invactcalc:action>
        <invactcalc:condition>/root/after/vnf/Assignment[@State='PENDING_ASSIGN']</invactcalc:condition>
        <subject>.</subject>
        <target>.</target>
        <binding>
            <parameter>serviceID</parameter>
            <path>/root/service/id</path>
        </binding>
        <binding>
            <parameter>vnfID</parameter>
            <path>Assignment/id</path>
        </binding>
        <binding>
            <parameter>vnfName</parameter>
            <path>Assignment/name</path>
        </binding>
        <binding>
            <parameter>vnfdName</parameter>
            <path>Assignment/specification</path>
        </binding>   
        <binding>
            <parameter>flavor</parameter>
            <path>Assignment/flavorName</path>
        </binding>
        <binding>
            <parameter>vimId</parameter>
            <path>Assignment/vimId</path>
        </binding>
        <binding>
            <parameter>vdus</parameter>
            <path>string-join(vdus/vdu/(
                concat(
                    'id:', @id, '_VDUAttrDlm_',
                    'name:', Assignment/name, '_VDUAttrDlm_',
                    'imageName:', Assignment/imageName, '_VDUAttrDlm_',
                    'imageId:', Assignment/imageId, '_VDUAttrDlm_',
                    'imageVersion:', Assignment/imageVersion, '_VDUAttrDlm_',
                    'availabilityZone:', Assignment/availabilityZoneName, '_VDUAttrDlm_',
                    'flavorName:', Assignment/flavorName, '_VDUAttrDlm_',
                    'securityGroups:', Assignment/securityGroups, '_VDUAttrDlm_'
                )), '_VDUDlm_')
            </path>
        </binding>
        <binding>
            <parameter>vnfcs</parameter>
            <path>string-join(vdus/vdu/vnfcs/vnfc/(
                concat(
                    'vduItemId:', ../../@id, '_VNFCAttrDlm_', 
                    'id:', @id, '_VNFCAttrDlm_'
                )), '_VNFCDlm_')
            </path>
        </binding>
 
        <binding>
            <parameter>ports</parameter>
            <path>string-join(vdus/vdu/vnfcs/vnfc/connectionPoints/connectionPoint/(
                concat(
                    'vnfcItemId:', ../../@id, '_PortAttrDlm_',
                    'id:', port/Reference/id, '_PortAttrDlm_',
                    'cpName:',Reference/name, '_PortAttrDlm_',
                    'extNetId:', network/Reference/extNetId, '_PortAttrDlm_',
                    'extSubnetId:', network/Reference/externalID, '_PortAttrDlm_',
                    'isDhcpEnabled:', network/isDhcpEnabled, '_PortAttrDlm_',
                    'isPortSecurityEnabled:',isPortSecurityEnabled,'_PortAttrDlm_',
                    'securityGroups:',securityGroups, '_PortAttrDlm_',
                    'order:',order, '_PortAttrDlm_'
                )), '_PortDlm_')
            </path>
        </binding>
    </invactcalc:generator>
</technicalActionCalculator>

Creating a Technical Actions File

In Design Studio, you create a technical actions file for each Network Service specification, a VNF Service specification, and a PNF specification.

To create a technical actions file:

  1. In Design Studio, switch to the Navigator view.

  2. In the root directory of the cartridge project, create the following folder structure:

    model/content/product_home/config

  3. Right-click on the config folder and create an XML file with the name ServiceSpecificationName_TechnicalActions.xml, where ServiceSpecificationName is the name of the service specification.

  4. Copy the sample content from the sample cartridge project to the XML file and modify it according to your service requirements.

About VNF Configuration Files

Depending on the functionality that they deliver, some VNFs in a network service may require configuration after they are deployed. After a VNF is deployed, you can configure the VNF based on its configuration requirements.

Note:

Post-deployment configuration of VNFs is not always required.

To configure a VNF, NFV Orchestration requires the following configuration files to be created:

  • VNFD_NameTemplate.conf

    This is a VNF-specific configuration template in which you specify the placeholder fields for instance-specific parameters.

  • VNFD_NameConfig.xml

    This is a configuration file in which you specify the VNF instance-specific configuration parameter values as name-value pairs.

NFV Orchestration generates the VNFD_Name.conf configuration file based on the VNFD_NameTemplate.conf file and the VNFD_NameConfig.xml file.

NFV Orchestration reads all the name-value pairs in the VNFD_NameConfig.xml file and replaces the placeholder fields in the VNFD_NameTemplate.conf file and generates the VNFD_Name.conf file.

The following text shows a sample configuration template for the Juniper vSRX VNF in the Juniper_vSRX_Template.conf configuration file:

   <rpc>
    <edit-config>
        <target>
            <candidate/>
        </target>
        <config>
            <configuration>
                <security>
                    <utm>
                        <custom-objects>
                            <url-pattern>
                                <name>bad-sites</name>
                                <value>{{site-name}}</value>
                            </url-pattern>
                        </custom-objects>
                    </utm>    
                </security>
            </configuration> 
        </config>
    </edit-config>
    </rpc>

The following example shows a sample configuration for the Juniper vSRX VNF in the Juniper_vSRX_Config.xml configuration file:

<vnfConfiguration>
    <config>
        <param>
            <name>site-name</name>
            <value>www.example.com</value>
        </param>
        <sbiToPushConfiguration>
            <interface>netconf</interface>
            <interface-script></interface-script>
        </sbiToPushConfiguration>
        <action>null</action>
    </config>
    </vnfConfiguration>

Setting Network Service Descriptor Properties

You define and specify properties for your network service in the UIM_Home/config/network_service_descriptor.properties file, where network_service_descriptor is the name of your network service descriptor. You create one properties file for each network service that you want to create and implement.

Table 3-17 describes the parameters that you specify for a network service.

Table 3-17 Network Service Descriptor Parameters

Parameter Description

network_service_descriptor.default.dataCenter

Used to specify the default data center if you use multiple VIMs. Otherwise, leave blank.

network_service_descriptor indicates the name of the network service descriptor. For example, NPaaS.

VIM_Id.network_service_descriptor.VLD_Name

Used to specify the name of the management network. In the properties files of the samples, by default, the VIM ID is OpenStack. The management network is the VLD Name that is specified in the NPaaS.xml file.

If you use multiple VIMs, add another entry of the same parameter and specify the VIM ID and the management network.

Add multiple instances of this parameter for specifying more VLDs.

VIM_Id.network_service_descriptor.Data_IN

Used to specify the VIM ID and the name of the data-in network. By default, the VIM ID is OpenStack.

If you use multiple VIMs, add another entry of the same parameter and specify the VIM ID and the data-in network.

VIM_Id.network_service_descriptor.Data_OUT

Used to specify the VIM ID and the name of the data-out network. By default, the VIM ID is OpenStack.

If you use multiple VIMs, add another entry of the same parameter and specify the VIM ID and the data-out network.

(Optional) sdnController.network_service_descriptor

Used to specify an implementation class for the SDN controller interface. The default implementation class is com.oracle.communications.inventory.nso.nfvi.sdn.ODLManager.

(Optional) network_service.ovs.pktInToOVSPort

Used to specify the Open vSwitch port number of the packet-in network.

(Optional) network_service.ovs.pktOutToOVSPort

Used to specify the Open vSwitch port number of the packet-out network.

(Optional) network_service.ovs.custNetToOVSPort

Used to specify the Open vSwitch port number of the customer-side network.

(Optional) network_service.ovs.internetToOVSPort

Used to specify the Open vSwitch port number of the internet-side network.

(Optional) npaas.ovs.bridge_id

Specify the bridge ID for the Open VSwitch and prefix it with openflow. For example, openflow:OpenFlow_ID, where OpenFlow_ID is the OpenFlow ID.

To retrieve the OpenFlow ID, in OpenDaylight call the following OpenDaylight REST API:

http://odlIPaddress:port/restconf/operational/opendaylight-inventory:nodes/

where odlIPaddress is the IP address and port is the port number of the OpenDaylight virtual machine.


NFV Orchestration provides properties files for the following sample network services:

  • UIM_Home/config/NPaas.properties. This properties file defines the properties for the NPaaS sample network service.

  • UIM_Home/config/ResidentialGateway.properties. This properties file defines the properties for the Residential Gateway sample network service.

Orchestrating VNFs Using Heat Templates

UIM NFV Orchestration supports orchestration of VNFs using Heat templates. Heat is a part of the OpenStack orchestration service that enables you to automate the orchestration of VNFs. Heat enables you to describe deployment requirements and operational behavior of complex VNFs in structured YAML text files called Heat Orchestration Templates (HOT), which are parsed and executed by the Heat engine. See "Sample Heat Template" for more information.

The VNF descriptor XML file, which is used for onboarding the VNF, contains the integration tag that determines whether the VNF should be orchestrated using Heat templates or not. See "Describing the EMS and Heat Interface Details" for more information.

To orchestrate a VNF successfully using Heat templates, ensure that the predefined Heat templates for that VNF are already stored in UIM NFV Orchestration.

Sample Heat Template

The information that you provide in the Heat template enables the Heat engine to call the required OpenStack-native REST APIs to create the required virtual network infrastructure and manage the life cycle of the VNF. Heat templates are defined in structured YAML format.

When specifying a name for your Heat template, ensure that the name conforms to the following naming convention:

VNF_name_hot.yaml

where VNF_name is the name of the VNF that you want to orchestrate using the Heat template.

When specifying deployment requirements and operational behavior of a VNF in Heat templates, you must follow a predefined naming convention for the VNF-specific information to ensure that the information is presented in a manner that NSO understands.

NFV Orchestration provides only the DHCP sample Heat template, Juniper_vSRX_hot.yaml, which contains networks in a DHCP-enabled configuration. The Juniper_vSRX_hot.yaml file is located at Domain_Home/UIM/config, where Domain_Home is the directory containing the configuration for the domain into which UIM is installed. See "DHCP Sample Heat Template" for more information.

However, you can also use the sample heat template in a mixed DHCP configuration or in a non-DHCP configuration. See "Mixed DHCP Sample Heat Template" and "Non-DHCP Sample Heat Template" for more information.

DHCP Sample Heat Template

Example 3-1 shows a sample heat template that contains networks in a DHCP-enabled configuration.

Example 3-1 DHCP Sample Heat Template

heat_template_version: 2014-10-16
 
description: Hot Template to deploy a Juniper_vSRX server
 
parameters:
  Juniper_vSRX_ManagementNetwork:
    type: string
    description: management Network Name
    default: nfvo-poc3-mgmt
  Juniper_vSRX_Data_IN:
    type: string
    description: data Network Name
  Juniper_vSRX_Data_OUT:
    type: string
    description: data Network Name
  Juniper_vSRX_ManagementNetwork_Cidr:
    type: string
    description: Management Network cidr
  Juniper_vSRX_ManagementNetwork_gatewayip:
    type: string
    description: Management Network Gateway IP address
  Juniper_vSRX_ManagementNetwork_Startip:
    type: string
    description: Management Network Start Ip address
  Juniper_vSRX_ManagementNetwork_endip:
    type: string
    description: Management Network end ip address
  Juniper_vSRX_Data_IN_Cidr:
    type: string
    description: Data Network cidr
  Juniper_vSRX_Data_IN_gatewayip:
    type: string
    description: Data Network Gateway IP address
  Juniper_vSRX_Data_IN_Startip:
    type: string
    description: Data Network Start Ip address
  Juniper_vSRX_Data_IN_endip:
    type: string
    description: Data Network end ip address
  Juniper_vSRX_Data_OUT_Cidr:
    type: string
    description: Data Network Name  cidr
  Juniper_vSRX_Data_OUT_gatewayip:
    type: string
    description: Data Network Gateway IP address
  Juniper_vSRX_Data_OUT_Startip:
    type: string
    description: Data Network Start Ip address
  Juniper_vSRX_Data_OUT_endip:
    type: string
    description: Data Network end ip address
  Juniper_vSRX_VDU_image:
    type: string
    constraints:
      - custom_constraint: glance.image
    default: ufw-v0.1
  Juniper_vSRX_VDU_instName:
    type: string
    default: vsrxHeatInst
  Juniper_vSRX_VDU_security_group:
    type: comma_delimited_list
  Juniper_vSRX_VDU_zone:
    type: string
    default: nova
  Juniper_vSRX_VDU_flavor:
    type: string
    constraints:
      - custom_constraint: nova.flavor
    default: m1.major
 
resources: 
  ufw:
    type: OS::Nova::Server
    properties:
      name: { get_param: Juniper_vSRX_VDU_instName}
      image: { get_param: Juniper_vSRX_VDU_image}
      flavor: { get_param: Juniper_vSRX_VDU_flavor}
      availability_zone: { get_param: Juniper_vSRX_VDU_zone}
      networks:
       - port: {get_resource: CP03_port}
       - port: {get_resource: CP01_port}
       - port: {get_resource: CP02_port}
  CP03_port:
    properties: 
      network: {get_param: Juniper_vSRX_ManagementNetwork}
      name: CP03
      security_groups: { get_param: Juniper_vSRX_VDU_security_group }
    type: OS::Neutron::Port
  CP01_port:
    properties: 
      network: {get_param: Juniper_vSRX_Data_IN}
      name: CP01
      security_groups: { get_param: Juniper_vSRX_VDU_security_group }
    type: OS::Neutron::Port
  CP02_port:
    properties: 
      network: {get_param: Juniper_vSRX_Data_OUT}
      name: CP02
      security_groups: { get_param: Juniper_vSRX_VDU_security_group }
    type: OS::Neutron::Port
 
outputs:
  server_ipaddress: 
    description: Name of the instance
    value: { get_attr: [ufw, first_address]}

A Heat template contains the following three major sections:

Parameters

This section defines input parameters that are required for deploying a VNF. For each parameter, you specify a data type, an optional description, and a default value, which is used if you do not specify a value for the parameter.

When specifying input parameters for the VNF in the Heat template, you are required to follow a specific naming convention. See "Naming Convention for Parameters and Resources in Heat Templates" for more information.

Resources

This section defines the resources that must be created and allocated when deploying a VNF. The resources may include servers, ports, and so on.

When specifying resources for the VNF in the Heat template, you are required to follow a specific naming convention. See "Naming Convention for Parameters and Resources in Heat Templates" for more information.

Outputs

This section defines the parameters that NFV Orchestration gets from the OpenStack and subsequently passes them on to the EMS that manages the configuration of the VNF.

Naming Convention for Parameters and Resources in Heat Templates

Table 3-18 lists the naming convention that you must follow when specifying the input parameters and resources for the VNF in the DHCP-enabled Heat template.

Table 3-18 Heat Template Parameters and Resources Naming Convention

Heat Template Section Parameter/Resource Name Format

Parameters

Network Name or Network ID

networkName_name or networkName_Id

Parameters

Security Group

vduName_portName_security_group

Parameters

Network CIDR

networkName_cidr

Parameters

Network Gateway IP Address

networkName_gatewayip

Parameters

Network Start IP Address

networkName_Startip

Parameters

Network End IP Address

networkName_endip

Parameters

VDU Image

vduName_image

Parameters

VDU Instance

vduName_instName

Parameters

VDU Availability Zone

vduName_zone

Parameters

VDU Flavor

vduName_flavor

Resources

Port

connection_point_id_port


where:

  • networkName is the name of the network, which can be Data_IN, Data_OUT, or management network.

  • vduName is the name of the constituent VDU of the VNF.

  • portName is the name of the VNF connection point for which you are defining a security group.

  • connection_point_id is the ID of the VNF connection point for which you are defining a security group.

Naming Convention for Parameters and Resources for Internal Virtual Links in Heat Templates

If your VNF contains internal virtual links, you must follow the naming convention listed in Table 3-19 for specifying the information about the internal virtual links in the Heat template.

Table 3-19 Heat Template Parameters and Resource Naming Convention for Internal Virtual Links

Heat Template Section Parameter/Resource Name Format

Resources

Network Name

vnfName_internal_virtual_linkName_network

Parameters

Network CIDR

vnfName_internal_virtual_linkName_cidr

Parameters

Network Gateway IP Address

vnfName_internal_virtual_linkName_gatewayip

Parameters

Network Start IP Address

vnfName_internal_virtual_linkName_startip

Parameters

Network End IP Address

vnfName_internal_virtual_linkName_endip

Resources

Port

vnfName_virtual_linkName_connection_point_id


where:

  • vnfName is the name of the VNF.

  • internal_virtual_linkName is the name of the internal virtual link of the VNF.

  • connection_point_id is the name of the internal connection point of the VNF.

Mixed DHCP Sample Heat Template

Example 3-2 shows a sample heat template that contains networks in a mixed DHCP configuration in which some networks are DHCP-enabled and some are DHCP-disabled.

In the sample Heat template, the management network and the Data_OUT network are DHCP-enabled; therefore, in the parameters section, the information about these two networks has been specified. However, the Data_IN network is DHCP-disabled, so details about the Data_IN network are not mentioned in the parameters section. Instead, the Heat template retrieves the information about the Data_IN network from NFV Orchestration by using the get_param function for the Data_IN network's CP01_port in the resources section.

Example 3-2 Mixed DHCP Sample Heat Template

heat_template_version: 2014-10-16
 
description: Hot Template to deploy a Juniper_vSRX server
 
parameters:
  Juniper_vSRX_ManagementNetwork:
    type: string
    description: management Network Name
    default: nfvo-poc3-mgmt
  Juniper_vSRX_Data_OUT:
    type: string
    description: data Network Name
  Juniper_vSRX_ManagementNetwork_Cidr:
    type: string
    description: Management Network cidr
  Juniper_vSRX_ManagementNetwork_gatewayip:
    type: string
    description: Management Network Gateway IP address
  Juniper_vSRX_ManagementNetwork_Startip:
    type: string
    description: Management Network Start Ip address
  Juniper_vSRX_ManagementNetwork_endip:
    type: string
    description: Management Network end ip address
  Juniper_vSRX_Data_OUT_Cidr:
    type: string
    description: Data Network cidr
  Juniper_vSRX_Data_OUT_gatewayip:
    type: string
    description: Data Network Gateway IP address
  Juniper_vSRX_Data_OUT_Startip:
    type: string
    description: Data Network Start Ip address
  Juniper_vSRX_Data_OUT_endip:
    type: string
    description: Data Network end ip address
  Juniper_vSRX_VDU_image:
    type: string
    constraints:
      - custom_constraint: glance.image
    default: ufw-v0.1
  Juniper_vSRX_VDU_instName:
    type: string
    default: vsrxHeatInst
  Juniper_vSRX_VDU_security_group:
    type: comma_delimited_list
  Juniper_vSRX_VDU_zone:
    type: string
    default: nova
  Juniper_vSRX_VDU_flavor:
    type: string
    constraints:
      - custom_constraint: nova.flavor
    default: m1.major
  CP01_port:
    type: string
 
resources: 
  ufw:
    type: OS::Nova::Server
    properties:
      name: { get_param: Juniper_vSRX_VDU_instName}
      image: { get_param: Juniper_vSRX_VDU_image}
      flavor: { get_param: Juniper_vSRX_VDU_flavor}
      availability_zone: { get_param: Juniper_vSRX_VDU_zone}
      networks:
       - port: {get_resource: CP03_port}
       - port: {get_param: CP01_port}
       - port: {get_resource: CP02_port}
  CP03_port:
    properties: 
      network: {get_param: Juniper_vSRX_ManagementNetwork} 
      name: CP03
      security_groups: { get_param: Juniper_vSRX_VDU_security_group }
    type: OS::Neutron::Port
  CP02_port:
    properties: 
      network: {get_param: Juniper_vSRX_Data_OUT}
      name: CP02
      security_groups: { get_param: Juniper_vSRX_VDU_security_group }
    type: OS::Neutron::Port
 
outputs:
  server_ipaddress: 
    description: Name of the instance
    value: { get_attr: [ufw, first_address]}

Non-DHCP Sample Heat Template

Example 3-3 shows a sample heat template that contains networks in a DHCP-disabled configuration.

Example 3-3 Non-DHCP Sample Heat Template

heat_template_version: 2014-10-16
 
description: Hot Template to deploy a Juniper_vSRX server
 
parameters:
  Juniper_vSRX_VDU_image:
    type: string
    constraints:
      - custom_constraint: glance.image
    default: ufw-v0.1
  Juniper_vSRX_VDU_instName:
    type: string
    default: vsrxHeatInst
  Juniper_vSRX_VDU_zone:
    type: string
    default: nova
  Juniper_vSRX_VDU_flavor:
    type: string
    constraints:
      - custom_constraint: nova.flavor
    default: m1.major
  Juniper_vSRX_VDU_security_group:
    type: comma_delimited_list
  CP01_port:
    type: string
  CP02_port:
    type: string
  CP03_port:
    type: string
 
resources: 
  ufw:
    type: OS::Nova::Server
    properties:
      name: { get_param: Juniper_vSRX_VDU_instName}
      image: { get_param: Juniper_vSRX_VDU_image}
      flavor: { get_param: Juniper_vSRX_VDU_flavor}
      availability_zone: { get_param: Juniper_vSRX_VDU_zone}
      networks:
       - port: {get_param: CP03_port}
       - port: {get_param: CP01_port}
       - port: {get_param: CP02_port}
 
outputs:
  server_ipaddress: 
    description: Name of the instance
    value: { get_attr: [ufw, first_address]}

Onboarding Network Services and VNFs Using TOSCA Descriptor Templates

Topology and Orchestration Specification for Cloud Applications (TOSCA) is an OASIS standard language to describe the topology of cloud-based services. TOSCA provides specifications for defining NFV descriptors. UIM NFV Orchestration supports tosca_simple_profile_for_nfv_1_0_0 and OpenStack Tacker NFV Profiles for NFV properties.

For more information about TOSCA, see the standards section on the OASIS web site: https://www.oasis-open.org/standards#toscav1.0

NFV Orchestration supports onboarding of network services and VNFs using TOSCA descriptor templates that are in YAML format. NFV Orchestration requires OpenStack TOSCA Parser 6.0 (or later) to parse the descriptors.

To onboard Network Services and VNFs you import the TOSCA descriptor templates into Design Studio. When you import a TOSCA descriptor template, NFV Orchestration processes the YAML file that contains the structural and topology details (connection points and connectivity requirements) and creates a network service cartridge project or a VNF cartridge project with the required UIM entity specifications (such as Logical Device, Service, and Service Configuration specifications), assigned or referenced resource specifications, and characteristic specifications.

Before you import the TOSCA descriptor templates into Design Studio, do the following:

  1. Install Python 3.6.3. See "Installing Python" for instructions.

  2. Create a new environment variable PYTHON_EXECUTABLE and add the full path to the python executable file. For example, C:\Program Files\Python36\python.exe.

  3. Download the UIM_SDK.zip file and extract its contents.

  4. The UIM_SDK\NSO-tools\ToscaTranslator\ directory contains the following files:

    • OracleCommsToscaTranslator.zip

    • OracleCommsToscaTranslatorEnvSetup.zip

    WARNING:

    You must install the TOSCA Parser into a directory that does not contain any spaces in its absolute path.

  5. Define an environment variable called TOSCA_TRANSLATOR_HOME, and set it to the path of the directory in which you extracted the OracleCommsToscaTranslator.zip file. For example, UIM_SDK\NSO-tools\ToscaTranslator. The OracleCommsToscaTranslator.zip contains the lib directory and the OracleCommsToscaTranslator.pyz file.

    Note:

    If your operating system does not consider an environment variable defined with a blank space in the directory names, you can extract the OracleCommsToscaTranslator.zip file and move its contents to any location, and then provide the path of this location in the TOSCA_TRANSLATOR_HOME environment variable. Ensure that the lib directory and the OracleCommsToscaTranslator.pyz file are located in the same directory.
  6. If your Design Studio workspace is already open, close and reopen the workspace.

  7. Import the required UIM base cartridges into Design Studio.

    See "Setting Up Design Studio for Extending NFV Orchestration" for information about the required UIM base cartridges.

Sample TOSCA VNF Descriptor Template

The following text shows the TOSCA VNF descriptor template in YAML format for the sample Juniper_vSRX.yaml file, which is located at Domain_Home/UIM/config, where Domain_Home is the directory containing the configuration for the domain into which UIM is installed. This sample shows the supported properties.

tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
 
description: juniper vSRX firewall
 
metadata:
  template_name: Juniper_vSRX_tosca
  template_type: VNF
  ID: Juniper_vSRX_tosca
  vendor: Juniper
  version: 1.0
 
topology_template:
  node_templates:
    Juniper_vSRX_VDU:
      type: tosca.nodes.nfv.VDU.Tacker
      capabilities:
        nfv_compute:
          properties:
            num_cpus: 2
            mem_size: 4GB
            disk_size: 20GB
      properties:
        image: vsrx-12.1X47-D20.7-npaas-v0.3
      
    CP03:
      type: tosca.nodes.nfv.CP.Tacker
      properties:
        management: true
        order: 0
      requirements:
        - virtualBinding:
            node: Juniper_vSRX_VDU
CP01:
      type: tosca.nodes.nfv.CP.Tacker
      properties:
        order: 2
      requirements:
        - virtualBinding:
            node: Juniper_vSRX_VDU
 
policies:
    - ScalingPolicy:
        type: tosca.policies.tacker.Scaling
        properties:
          increment: 1
          min_instances: 1
          max_instances: 3
          default_instances: 1
          targets: [Juniper_vSRX_VDU]    
    - vdu1_cpu_usage_monitoring_policy:
       type: tosca.policies.tacker.Alarming
       triggers:
       resize_compute:
       event_type:
       type: tosca.events.resource.utilization
       implementation: ceilometer
       metrics: cpu_util
       condition:
       threshold: 50
       constraint: utilization greater_than 50%
       period: 600
       evaluations: 1
       method: avg
       comparison_operator: gt
       action:
       resize_compute:
       action_name: respawn
       targets: [Juniper_vSRX_VDU]

Figure 3-1 depicts the TOSCA VNF Template to the VNF virtual machine mapping.

Figure 3-1 TOSCA VNF Template to VNF Virtual Machine Mapping

Surrounding text describes Figure 3-1 .

In the illustration, the Firewall_VNF VNF comprises one Virtual Deployment Unit (VDU) that is connected to three virtual links. The VDU has three connection points: CP1 (connection point 1) is connected to Mgmt-net (management network), CP2 (connection point 2) is connected to Pkt-in (packet-in network), and CP3 (connection point 3) is connected to Pkt-out (packet-out network). The networks are defined in the network service descriptor.

Sample TOSCA Network Service Descriptor Template

The following text shows the TOSCA network service descriptor template in YAML format for the sample NPaaS.yaml file, which is located at Domain_Home/UIM/config, where Domain_Home is the directory containing the configuration for the domain into which UIM is installed. This sample shows the supported properties.

tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
 
description: NPaaS Network Service
 
description: NPaaS Network Service
metadata:
  template_name: NPaaS_tosca
  template_type: NS
  ID: NPaaS_tosca
  vendor: Oracle
  version: 1.0
imports:
  - juniper_vSRX_definition.yaml
  - Juniper_vSRX.yaml
 
topology_template:
  node_templates:     
    Juniper_vSRX_tosca:
      type: tosca.nodes.nfv.VNF.Juniper
      requirements:
        - virtualLink1: data
        - virtualLink2: mgmt
 
    data:
      type: tosca.nodes.nfv.VL
      properties:
        network_name: data
        vendor: Oracle
 
    mgmt:
      type: tosca.nodes.nfv.VL
      properties:
        network_name: mgmt
        vendor: Oracle
 
            
  policies:
    - ScalingPolicy:
        type: tosca.policies.tacker.Scaling
        properties:
          increment: 1
          min_instances: 1
          max_instances: 3
          default_instances: 1
          targets: [Juniper_vSRX_tosca]

To make the VNFs a part of the network service, do the following:

  • Define the substitution_mappings in each VNF YAML file, as follows:

    topology_template:
      substitution_mappings:
         node_type: 
         requirements:
            virtualLink1:
            virtualLink2:
      node_templates:
    

    The following example shows the substitution mappings that you must define when you import the Juniper_vSRX.yaml file into the NPaas.yaml file:

    tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
     
    description: juniper vSRX firewall
     
    imports:
      - <Full directory Path of this file>\Juniper_vSRX_definition.yaml # Replace <Full directory Path of this file> with full path of directory containing Juniper_vSRX_definition.yaml file
      
    topology_template:
      substitution_mappings:
         node_type: tosca.nodes.nfv.VNF.Juniper
         requirements:
            virtualLink1: [CP01, CP02, virtualLink]
            virtualLink2: [CP03, virtualLink]   
      node_templates:
        Juniper_vSRX_VDU:
          type: tosca.nodes.nfv.VDU.Tacker
          capabilities:
            nfv_compute:
              properties:
                num_cpus: 2
                mem_size: 4GB
                disk_size: 20GB
          properties:
            image: vsrx-12.1X47-D20.7-npaas-v0.3
          
        CP03:
          type: tosca.nodes.nfv.CP.Tacker
          properties:
            management: true
            order: 0
          requirements:
            - virtualBinding:
                node: Juniper_vSRX_VDU
     
        CP02:
          type: tosca.nodes.nfv.CP.Tacker
          properties:
            order: 1
          requirements:
            - virtualBinding:
                node: Juniper_vSRX_VDU
     
        CP01:
          type: tosca.nodes.nfv.CP.Tacker
          properties:
            order: 2
          requirements:
            - virtualBinding:
                node: Juniper_vSRX_VDU
    
  • For each node type representing a VNF node, you must define a corresponding definition file.

    The following is the sample definition file for the node type tosca.nodes.nfv.VNF.Juniper.

    tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
     
    node_types:
      tosca.nodes.nfv.VNF.Juniper:
        derived_from: tosca.nodes.nfv.VNF
        requirements:
          - virtualLink1:
              capability: tosca.capabilities.nfv.VirtualLinkable
              relationship: tosca.relationships.nfv.VirtualLinksTo
              node: tosca.nodes.nfv.VL    
          - virtualLink2:
              capability: tosca.capabilities.nfv.VirtualLinkable
              relationship: tosca.relationships.nfv.VirtualLinksTo
              node: tosca.nodes.nfv.VL      
    

The following are some points that you should keep in mind when importing the TOSCA descriptor files:

  • NFV Orchestration supports multiple VNF components (VNFCs) within a single VDU; however, the TOSCA definitions support only VDUs. To define a TOSCA YAML descriptor for a VNF that has multiple VNFCs, you must define a separate VDU for each VNFC.

  • Under ScalingPolicy, the default_instances field maps to the <min_instances> element in the network service descriptor and the VNF descriptor.

  • NFV Orchestration looks for the following fields under the metadata section in the TOSCA VNF descriptor and TOSCA Network Service descriptor templates:

    • template_type: Specify VNF in the TOSCA VNF descriptor template and specify NS in the TOSCA Network Service descriptor template.

    • ID: Specify an ID for the TOSCA VNF descriptor template and the TOSCA Network Service descriptor template.

Installing Python

To install python:

  1. Download and extract the UIM_SDK.zip file.

  2. Navigate to the UIM_SDK\NSO-tools\ToscaTranslator directory and extract the OracleCommsToscaTranslatorEnvSetup.zip file.

    The extracted OracleCommsToscaTranslatorEnvSetup directory contains different directories for Windows and Linux operating systems.

  3. Run the following command:

    Note:

    Before you run the commands, ensure that you have a working internet connection.
    • For Windows machine, launch command prompt and run the following command as administrator:

      install.bat
      

      If you use proxy and a target directory, run the following command:

      install.bat -proxy="www-proxy.example.com:port" -targetdir="C:\python36"
      

      where:

      • www-proxy.example.com:port is the proxy

      • C:\python36 is the target directory of Python

      See Table 3-20 for details about the command line argument options.

    • For Linux machine, from terminal, run the following command as a pseudo user or with root permission:

      install.sh -targetdir=/UIM_Home/python
      

      where UIM_Home/python is the target directory of python

    The installation script installs python and the required libraries on the machine.

    Table 3-20 describes the command line arguments.

    Table 3-20 Command Line Arguments

    For Windows For Linux Usage

    -proxy

    -p or --proxy

    To connect to the internet through proxy.

    -targetdir

    -targetDir

    Specify the Python installation directory.

    -internet

    -i or --internet

    Set Y if you have a working internet connection.


Importing TOSCA Descriptor Templates into Design Studio

To import the TOSCA VNF template into Design Studio:

  1. In Design Studio, from the Studio menu, select Show Design Perspective.

  2. Click the Studio Projects tab.

    The Studio Projects view appears.

  3. In the Studio Projects view, right-click and select Import, and then select Import TOSCA Template.

    The Import TOSCA Template dialog box appears.

  4. Do one of the following:

    • Click Browse and select the TOSCA VNF descriptor template or the TOSCA network service descriptor template in YAML format.

    • To import the TOSCA descriptor templates from an external repository, enter the URL of the external repository where the TOSCA VNF descriptor templates and TOSCA network service descriptor templates in YAML format are located, and click OK.

    Design Studio creates the VNF cartridge project or the network service cartridge project with the required specifications.

    After the VNF cartridge project is created, to use this cartridge with a network service, make appropriate changes in your network service cartridge project. For more information about working with network service cartridges, see "Designing Custom Network Services".

    After the network service cartridge project is created, but before you deploy this cartridge, you must import or create any dependent VNF cartridge projects, and then make appropriate changes in your network service cartridge project. For more information about working with network service cartridges, see "Designing Custom Network Services".

Note:

Before deploying the Design Studio-created VNF cartridge to orchestrate VNFs using Heat templates, manually copy the Juniper_vSRX_hot.yaml file to the Juniper_vSRX\model\content\product_home\config directory.

Before deploying the Design Studio-created network service cartridge, in the imported network service descriptor XML file, ensure that the isDHCPEnabled parameter is set to true (isDHCPEnabled="true") for all the networks.

Tagging NFV Orchestration Specifications

UIM uses tags to identify entities used by NFV Orchestration. You apply these tags to NFV Orchestration specifications in Design Studio.

When you tag specifications with NFV Orchestration tags, UIM filters the entities based on the tags and displays only the relevant entities in the NFV Orchestration pages.

The tags for NFV Orchestration specifications are included in the OracleComms_NSO_BaseTags cartridge. See the section on ”NFV Orchestration Base Tags Cartridge” in the chapter, ”UIM NFV Orchestration Base Cartridges” in UIM Cartridge Guide for more information.

For instructions about tagging specifications, see Design Studio Help.

Table 3-21 lists and describes the tags for the NFV Orchestration specifications.

Table 3-21 NFV Orchestration Specifications and Tags

Tag Specification Type Description

EMS

Custom Object

Tags a Custom Object specification as an EMS specification.

Endpoint

Custom Object

Tags a Custom Object specification as an Endpoint specification.

Network Service

Service

Tags a Service specification as a NFV Orchestration Network Service specification.

Orchestration Request

Business Interaction

Tags a Business Interaction specification as an Orchestration Request specification.

PNF

  • Service

  • Logical Device

Tags a Service specification as a PNF Service specification.

Tags a Logical Device specification as a PNF specification.

VNF

  • Service

  • Logical Device

Tags a Service specification as a VNF Service specification.

Tags a Logical Device specification as a VNF device specification.

VDU

Logical Device

Tags a Logical Device specification as a VDU device specification.


Designing Custom Network Services

You can use Design Studio to design and implement custom network services based on your business requirements. Designing a network service requires designing the service itself as well as the VNFs and PNFs it uses.

In Design Studio, you create a cartridge project for each network service, VNF, and PNF that you design. These cartridge projects include specifications and other artifacts. You compile the cartridge projects into cartridges for deployment into UIM.

To work properly with NFV Orchestration, the specifications must include certain characteristics, relationships, and rulesets. See the following sections for more information:

Creating Cartridges for VNFs

For each VNF that you want to use with a network service, create a cartridge project in Design Studio. In each VNF cartridge project, do the following:

  • Create the following UIM entity specifications:

    • A Logical Device specification that represents the VNF. Ensure that the name of the Logical Device Specification is same as the ID that you specified in the <vnfd> element of the VNF descriptor XML file. See "Logical Device Specification" for more information about the logical device specification for the VNF.

    • A Service specification that represents the VNF. See "Service Specification" for more information.

    • A Service Configuration specification for the VNF. See "Service Configuration Specification" for more information.

    • A Logical Device specification that represents the VDU. Ensure that the name of the Logical Device Specification is same as the ID that you specified in the <vdu> element of the VNF descriptor XML file. See "Logical Device Specification" for more information about the logical device specification for the VDU.

  • Create a technical actions file for the VNF Service specification. See "Creating a Technical Actions File" for more information.

  • Create a VNF descriptor file for the VNF Service specification. See "Creating a Descriptor File" for more information.

  • Create a configuration file for the VNF, if the VNF requires configuration. See "About VNF Configuration Files" for more information.

  • Create a post-configuration template configuration file for the VNF. See "About VNF Configuration Files" for more information.

  • Create a template file for the VNF. See "About VNF Configuration Files" for more information.

  • Create custom code for extension. See "Extending UIM NFV Orchestration" for more information.

Logical Device Specification

Create a Logical Device specification to represent the VNF. This specification must include the characteristics listed in Table 3-22. These characteristics are provided in the OracleComms_NSO_BaseCartridge cartridge. You can optionally define and include additional characteristics.

Table 3-22 VNF Logical Device Specification Characteristics

Characteristic Type Description

externalID

String

If you use Heat to orchestrate the VNF, the external ID contains the stack ID.

flavorName

String

The deployment flavor used to create the VNF.

version

String

The version of the VNF.

vimId

String

The ID of the VIM.


Create a Logical Device specification to represent the VDU. This specification must include the characteristics listed in Table 3-23. These characteristics are provided in the OracleComms_NSO_BaseCartridge cartridge. You can optionally define and include additional characteristics.

Table 3-23 VDU Logical Device Specification Characteristics

Characteristic Type Description

availabilityZoneName

String

The name of the availability zone where the VDU gets instantiated.

externalID

String

The external ID of the VDU.

flavorName

String

The deployment flavor used to create the VDU.

host

String

The host ID where VDU is instantiated.

imageId

String

The ID of the VDU Image.

imageName

String

The name of the VDU image.

imageVersion

String

The software version of the VDU image.

securityGroups

String

The security groups for the VDU.


See the Design Studio Help and the section on ”Working with Characteristics” in the chapter, ”Design Studio Overview” in UIM Concepts for more information about characteristics.

There are no rulesets required for the VNF and VDU Logical Device specifications. You can create custom rulesets to extend the default capabilities, however.

A VNF Logical Device specification must include the specification relationships listed in Table 3-24.

Table 3-24 Logical Device Specification Relationships

Specification Name Description

DeviceInterface

CPD

Multiplicity is from 0 to 100.

This specification is available in the OracleComms_NSO_BaseCartridge cartridge.

ServiceSpecification

user created

Set this to the name of the VNF Service specification that you design.


Associate the VNF tag to the VNF Logical Device specification to ensure that UIM correctly handles entities based on this specification. The VNF tag is provided in the OracleComms_NSO_BaseTags cartridge. See "Tagging NFV Orchestration Specifications" for more information.

Associate the VDU tag to the VDU Logical Device specification to ensure that UIM correctly handles entities based on this specification. The VDU tag is provided in the OracleComms_NSO_BaseTags cartridge. See "Tagging NFV Orchestration Specifications" for more information.

Service Specification

Create a Service specification to represent the VNF service. No characteristics or rulesets are required, but you can optionally add them to extend the default capabilities.

Figure 3-2 illustrates the VNF service model.

Figure 3-2 VNF Service Model

Surrounding text describes Figure 3-2 .

A VNF Service specification must include the specification relationships listed in Table 3-25.

Table 3-25 VNF Service Specification Relationships

Specification Name Description

ServiceSpecification

user created

The associated capability service specification, used to configure capabilities.

ServiceConfigurationSpecification

user created

The associated service configuration specification.


Apply the VNF tag to the VNF Service specification to ensure that UIM correctly handles entities based on this specification. The VNF tag is provided in the OracleComms_NSO_BaseTags cartridge. See "Tagging NFV Orchestration Specifications" for more information.

Service Configuration Specification

Create a Service Configuration specification to accompany the VNF Service specification. The Service Configuration specification must include the configuration items listed in Table 3-26.

Table 3-26 VNF Service Configuration Items

Name Parent Item Multiplicity Characteristics

vnf

null

Required

None

connectionPoints

vnf

Required

None

connectionPoint

connectionPoints

0 to unbounded

  • isPortSecurityEnabled

  • securityGroups

vdus

vnf

Required

None

vdu

vdus

0 to unbounded

None

vnfcs

vdu

Required

None

vnfc

vnfcs

0 to unbounded

None

connectionPoints

vnfc

Required

None

connectionPoint

connectionPoints

0 to unbounded

  • isPortSecurityEnabled

  • securityGroups

  • order

port

connectionPoint

Required

None

network

connectionPoint

Required

isDhcpEnabled


Define the specification options for the configuration items as shown in Table 3-27.

Table 3-27 VNF Service Configuration Specification Options

Item Item Option Type Specification Specification Type

vnf

Assignment

VNF

Logical Device specification

connectionPoint

Reference

CPD

Device Interface specification

vdu

Assignment

VDU

Logical Device specification

vnfc

None

None

None

port

Reference

IPv4Address

IPv4Address specification

network

Reference

IPv4Subnet

IPv4Subnet specification


Associate the following rulesets with the Service Configuration specification. These rulesets are included in the OracleComms_NSO_BaseCartridge cartridge:

  • IssueVNFServiceConfig_NSOBaseRulesetExtPt

  • AutomateVNFServiceConfig_NSOBaseRulesetExtPt

  • Cancel_VNFServiceConfigRulesetExtPt

  • CompleteVNFServiceConfig_NSOBaseRulesetExtPt

Creating Cartridges for PNFs

For each PNF that you want to use with a network service, create a cartridge project in Design Studio. In each PNF cartridge project, do the following:

Logical Device Specification

Create a Logical Device specification to represent the PNF. This specification must include the characteristics listed in Table 3-28. These characteristics are provided in the OracleComms_NSO_BaseCartridge cartridge. You can optionally define and include additional characteristics. See the Design Studio Help and the section on ”Working with Characteristics” in the chapter, ”Design Studio Overview” in UIM Concepts for more information about characteristics.

Table 3-28 PNF Logical Device Specification Characteristics

Characteristic Type Description

ipAddress

String

The IP address of the PNF.

password

String

The password of the PNF.

username

String

The username of the PNF.

sshkey

String

The ssh key for the PNF.

This characteristic is available in the PNF sample cartridge.

sslEnabled

Boolean

Indicates whether SSL is enabled for the PNF or not.


Associate the following rulesets with the PNF Logical Device specification. These rulesets are included in the OracleComms_NSO_BaseCartridge cartridge.

  • CreatePNF_Ruleset. This ruleset validates the create PNF request.

  • UpdatePNF_Ruleset. This ruleset validates the update PNF request.

  • CreateEMS_Ruleset . This ruleset validates the create EMS request.

  • UpdateEMS_Ruleset . This ruleset validates the update EMS request.

A PNF Logical Device specification must include the specification relationships listed in Table 3-29.

Table 3-29 PNF Logical Device Specification Relationships

Specification Name Description

DeviceInterfaceSpecification

CPD

Multiplicity is from 0 to 100.

This specification is available in the OracleComms_NSO_BaseCartridge cartridge.

ServiceSpecification

user created

Set this to the name of the PNF Service specification that you design.


Apply the following tags to the PNF Logical Device specification to ensure that UIM correctly handles entities based on this specification. These tags are provided in the OracleComms_NSO_BaseTags cartridge.

  • PNF

  • EMS

See "Tagging NFV Orchestration Specifications" for more information.

Service Specification

Create a Service specification to represent the PNF service. No characteristics or rulesets are required, but you can optionally add them to extend the default capabilities.

Figure 3-3 shows how a PNF service is modeled.

Figure 3-3 PNF Service Model

Surrounding text describes Figure 3-3 .

A PNF Service specification must include the specification relationships listed in Table 3-30.

Table 3-30 PNF Service Specification Relationships

Specification Name Description

ServiceConfigurationSpecification

Cisco_xRV_Service_Config

The associated service configuration specification.


Apply the PNF tag to the PNF Service specification to ensure that UIM correctly handles entities based on this specification. The PNF tag is provided in the OracleComms_NSO_BaseTags cartridge. See "Tagging NFV Orchestration Specifications" for more information.

Service Configuration Specification

Create a Service Configuration specification to accompany the PNF Service specification. The Service Configuration specification must include the configuration items listed in Table 3-31.

Table 3-31 PNF Service Configuration Items

Item Parent Item Multiplicity Characteristics

pnf

null

Required

None

ConnectionPoint

pnf

1 to 100

None

port

ConnectionPoint

Required

None


Define the specification options for the configuration items as shown in Table 3-32.

Table 3-32 PNF Service Configuration Specification Options

Item Item Option Type Specification

pnf

Assignment

Logical Device

ConnectionPoint

Reference

DeviceInterface

port

Reference

IPv4Address


Associate the following rulesets with the Service Configuration Version specification. These rulesets are included in the OracleComms_NSO_BaseCartridge cartridge.

  • IssuePNFServiceConfig_NSOBaseRulesetExtPt

  • AutomatePNFServiceConfig_NSOBaseRulesetExtPt

  • Cancel_PNFServiceConfigRulesetExtPt

  • CompletePNFServiceConfig_NSOBaseRulesetExtPt

Creating Cartridges for Network Services

For each network service, create a cartridge project in Design Studio. In the cartridge project for the network service, do the following:

Network Service Specification

Create a Network Service specification to represent the network service.

Figure 3-4 illustrates the network service model.

Figure 3-4 Network Service Model

Surrounding text describes Figure 3-4 .

The Network Service specification must include the characteristics listed in Table 3-33. These characteristics are provided in the OracleComms_NSO_BaseCartridge cartridge.

Table 3-33 Network Service Specification Characteristics

Characteristic Type Description

dataCenterName

String

The name of the data center.

flavorName

String

The name of the service flavor.

serverGroup

String

The name of the server group.

vimId

String

The unique identifier of VIM.


The Network Service specification does not require any rulesets, but you can create custom rulesets to extend the default capabilities.

The Network Service specification must include the specification relationships listed in Table 3-34.

Table 3-34 Network Service Specification Relationships

Specification Name Description

ServiceConfigurationSpecification

user created

This is the associated service configuration specification.


Apply the NetworkService tag to the Network Service specification to ensure that UIM correctly handles entities based on this specification. This tag is provided in the OracleComms_NSO_BaseTags cartridge. See "Tagging NFV Orchestration Specifications" for more information.

Network Service Configuration Specification

Create a Service Configuration specification to accompany the Network Service specification.

The Service Configuration specification must include the configuration items listed in Table 3-35.

Table 3-35 Network Service Configuration Items

Item Parent Item Multiplicity Characteristics

virtualLinks

null

Required

None

virtualLink

virtualLinks

0-unbounded

isReferedByNSO

vnfs

null

Required

None

vnf

vnfs

0 to unbounded

None

vnfService

vnf

Required

action

pnfs

null

Optional

None

pnf

pnfs

0 to unbounded

None

pnfService

pnf

Required

None

endPoints

null

Required

None

endPoint

endPoints

1 to unbounded

None

vnffgs

null

Required

None

vnffg

vnffgs

0 to unbounded

name

nfp

vnffg

0 to unbounded

  • name

  • externalID

sourceEndPoint

nfp

Optional. 0 to 1.

None

targetEndPoint

nfp

Optional. 0 to 1.

None


Define the specification options for the configuration items as shown in Table 3-36.

Table 3-36 Network Service Configuration Specification Options

Item Item Option Type Specification Specification Type

virtualLinks

None

None

None

virtualLink

Reference

IPv4Subnet

IPv4Subnet specification

vnfs

None

None

None

vnf

Reference

VNF Logical Device

Logical Device specification

vnfService

Assignment

VNF Service

Service specification

pnfs

None

None

None

pnf

Reference

PNF Logical Device

Logical Device specification

pnfService

Assignment

PNF Service

Service specification

endPoints

None

None

None

endPoint

Reference

NetworkServiceEndPoint

Custom Object specification

vnffgs

None

None

None

vnffg

None

None

None

nfp

None

None

None

sourceEndPoint

Reference

NetworkServiceEndPoint

Custom Object specification

targetEndPoint

Reference

NetworkServiceEndPoint

Custom Object specification


Associate the following rulesets with the Service Configuration Version specification. These rulesets are provided in the OracleComms_NSO_BaseCartridge cartridge.

  • AutomateNetworkServiceConfig_NSOBaseRulesetExtPt

  • IssueNetworkServiceConfig_NSOBaseRulesetExtPt

  • CompleteNetworkServiceConfig_NSOBaseRulesetExtPt

  • CancelNetworkServiceConfig_NSOBaseRulesetExtPt