This chapter provides information about designing and onboarding network services, Virtual Network Functions (VNFs), and Physical Network Functions (PNFs).
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.
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.
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:
Describe the descriptor information. See "Describing Descriptor Information" for more information.
Describe the VNF descriptor references. See "Describing VNF Descriptor References" for more information.
Describe the PNF descriptor references. See "Describing PNF Descriptor References" for more information.
Describe the networks by either creating them or by referencing existing networks and specifying network types. For each network, specify the VNF connection points that terminate on the network. See "Describing Networks" for more information.
Describe the service flavors for the network service. See "Describing Service Flavors" for more information.
Describe the endpoints that the network service can have. See "Describing Endpoints" for more information.
Describe the rules to determine how the network traffic is routed in the network service. See "Describing Rules" for more information.
Describe the policies and their mappings to the network forwarding paths (NFPs). See "Describing Policies" for more information.
Describe the VNF forwarding graphs (VNFFGs) that include one or more network forwarding paths (NFPs) that determine how network traffic is routed in a network service. See "Describing VNF Forwarding Graphs" for more information.
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"/>
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>
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>
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.
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>
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.
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>
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.
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>
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:
Describe the VNF descriptor information. See "Describing VNF Descriptor Information" for more information.
Describe the EMS and Heat interface details. See "Describing the EMS and Heat Interface Details" for more information.
Describe the connection points for the VNF. See "Describing VNF Connection Points" for more information.
Describe the internal virtual links for the internal connection points of the Virtual Network Function Components (VNFCs). See "Describing Internal Virtual Links" for more information.
Describe the Virtual Deployment Unit (VDU) flavors. See "Describing Virtual Deployment Unit Flavors" for more information.
Describe the VDU images. See "Describing VDU Images" for more information.
Describe the VDUs on which you want to install the VNFCs. See "Describing Virtual Deployment Units" for more information.
Describe the VNF deployment flavors. See "Describing VNF Deployment Flavors" for more information.
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>
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>
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>
In Design Studio, you create a descriptor file for each Network Service specification and VNF Service specification.
To create a descriptor file:
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.
Switch to the Navigator view.
In the root directory of the cartridge project, create the following folder structure:
model/content/product_home/config
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.
Copy the sample content from the sample cartridge project to the XML file and modify it according to your service requirements.
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>
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:
In Design Studio, switch to the Navigator view.
In the root directory of the cartridge project, create the following folder structure:
model/content/product_home/config
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.
Copy the sample content from the sample cartridge project to the XML file and modify it according to your service requirements.
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>
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.
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.
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.
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:
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.
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.
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.
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]}
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]}
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:
Install Python 3.6.3. See "Installing Python" for instructions.
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.
Download the UIM_SDK.zip file and extract its contents.
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.
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.If your Design Studio workspace is already open, close and reopen the workspace.
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.
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.
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.
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.
To install python:
Download and extract the UIM_SDK.zip file.
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.
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.
To import the TOSCA VNF template into Design Studio:
In Design Studio, from the Studio menu, select Show Design Perspective.
Click the Studio Projects tab.
The Studio Projects view appears.
In the Studio Projects view, right-click and select Import, and then select Import TOSCA Template.
The Import TOSCA Template dialog box appears.
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.
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 |
|
Tags a Service specification as a PNF Service specification. Tags a Logical Device specification as a PNF specification. |
VNF |
|
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. |
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:
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.
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.
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.
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.
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 |
|
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 |
|
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
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:
Create the following UIM entity specifications:
A Logical Device specification that represents the PNF. See "Logical Device Specification".
A Service specification that represents the PNF service. See "Service Specification".
A Service Configuration specification for the PNF service. See "Service Configuration Specification".
Create a technical actions file for the PNF Service specification. See "Creating a Technical Actions File" for more information.
Create a network service descriptor file for the Network Service specification. See "Creating a Descriptor File" for more information.
Create custom code for extension. See "Extending UIM NFV Orchestration" for more information.
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.
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.
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.
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
For each network service, create a cartridge project in Design Studio. In the cartridge project for the network service, do the following:
Create the following UIM entity specifications:
A Service specification to represent the network service. Ensure that the name of the Service Specification is same as the ID that you specified in the <nsd> element of the network service descriptor XML file. See "Network Service Specification".
A Service Configuration specification to accompany the network service specification. See "Network Service Configuration Specification".
Create a technical actions file for the Network Service specification. See "Creating a Technical Actions File" for more information.
Create a network service descriptor file for the Network Service specification. See "Creating a Descriptor File" for more information.
Create a custom properties file for the Network Service specification. See "Setting Network Service Descriptor Properties" for more information.
Create custom code for extension. See "Extending UIM NFV Orchestration" for more information.
Create a Network Service specification to represent the network service.
Figure 3-4 illustrates the network service model.
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.
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 |
|
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