5.2.5.9. Contrail Resource Parameters

ONAP requires the parameter names of certain Contrail Resources to follow specific naming conventions. This section provides these requirements.

5.2.5.9.1. Contrail Network Parameters

Contrail based resources may require references to a Contrail network using the network FQDN.

5.2.5.9.1.1. ONAP External Networks

Requirement: R-02164 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
updated: frankfurt
validation_mode: static

When a VNF’s Heat Orchestration Template’s Contrail resource OS::ContrailV2::InstanceIp and/or OS::ContrailV2::VirtualMachineInterface contains the property virtual_network_refs that references an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), the property value MUST be obtained by a get_param and the property parameter

  • MUST follow the format {network-role}_net_fqdn
  • MUST be declared as type string
Requirement: R-92193 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
updated: frankfurt
validation_mode: static
A VNF’s Heat Orchestration Template’s Contrail resource OS::ContrailV2::InstanceIp and/or OS::ContrailV2::VirtualMachineInterface property virtual_network_refs parameter {network-role}_net_fqdn MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

Example: Parameter declaration

parameters:
  {network-role}_net_fqdn:
    type: string
    description: Contrail FQDN for the {network-role} network

Example: Contrail Resource OS::ContrailV2::VirtualMachineInterface Reference to a Network FQDN.

In this example, the {network-role} has been defined as oam to represent an oam network and the {vm-type} has been defined as fw for firewall. The Contrail resource OS::ContrailV2::VirtualMachineInterface property virtual_network_refs references a contrail network FQDN.

fw_0_oam_vmi_0:
  type: OS::ContrailV2::VirtualMachineInterface
  properties:
    name:
      str_replace:
        template: VM_NAME_virtual_machine_interface_1
        params:
          VM_NAME: { get_param: fw_name_0 }
    virtual_machine_interface_properties:
      virtual_machine_interface_properties_service_interface_type: {
      get_param: oam_protected_interface_type }
    virtual_network_refs:
      - get_param: oam_net_fqdn
    security_group_refs:
      - get_param: fw_sec_grp_id

5.2.5.9.2. Interface Route Table Prefixes for Contrail InterfaceRoute Table

Requirement: R-28222 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
updated: casablanca
validation_mode: static

If a VNF’s Heat Orchestration Template OS::ContrailV2::InterfaceRouteTable resource interface_route_table_routes property interface_route_table_routes_route map property parameter name MUST follow the format

  • {vm-type}_{network-role}_route_prefixes
Requirement: R-19756 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
updated: casablanca
validation_mode: static
If a VNF’s Heat Orchestration Template OS::ContrailV2::InterfaceRouteTable resource interface_route_table_routes property interface_route_table_routes_route map property parameter {vm-type}_{network-role}_route_prefixes MUST be defined as type json.
Requirement: R-76682 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
updated: casablanca
validation_mode: static
If a VNF’s Heat Orchestration Template OS::ContrailV2::InterfaceRouteTable resource interface_route_table_routes property interface_route_table_routes_route map property parameter {vm-type}_{network-role}_route_prefixes MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

The parameter {vm-type}_{network-role}_route_prefixes supports IP addresses in the format:

  1. Host IP Address (e.g., 10.10.10.10)
  2. CIDR Notation format (e.g., 10.0.0.0/28)

Example Parameter Definition

parameters:
  {vm-type}_{network-role}_route_prefixes:
    type: json
    description: JSON list of Contrail Interface Route Table route prefixes

Example:

parameters:
  vnf_name:
    type: string
    description: Unique name for this VF instance
  fw_oam_route_prefixes:
    type: json
    description: prefix for the ServiceInstance InterfaceRouteTable
  int_fw_dns_trusted_interface_type:
    type: string
    description: service_interface_type for ServiceInstance

resources:
  <resource name>:
    type: OS::ContrailV2::InterfaceRouteTable
    depends_on: [resource name of OS::ContrailV2::ServiceInstance]
    properties:
      name:
        str_replace:
          template: VNF_NAME_interface_route_table
          params:
            VNF_NAME: { get_param: vnf_name }
      interface_route_table_routes:
        interface_route_table_routes_route: { get_param: fw_oam_route_prefixes }
      service_instance_refs:
        - get_resource: <resource name of OS::ContrailV2::ServiceInstance>
      service_instance_refs_data:
        - service_instance_refs_data_interface_type: { get_param: oam_interface_type }

5.2.5.9.3. Resource OS::ContrailV2::InstanceIp

The Contrail resource OS::ContrailV2::InstanceIp has two properties that parameters MUST follow an explicit naming convention. The properties are instance_ip_address and subnet_uuid.

Example OS::ContrailV2::InstanceIp Resource

<resource ID>:
  type: OS::ContrailV2::InstanceIp
  properties:
    name: { get_param: name }
    fq_name: { get_param: fq_name }
    display_name: { get_param: display_name }
    secondary_ip_tracking_ip:
      {
        secondary_ip_tracking_ip_ip_prefix: { get_param: secondary_ip_tracking_ip_ip_prefix },
        secondary_ip_tracking_ip_ip_prefix_len: { get_param: secondary_ip_tracking_ip_ip_prefix_len },
      }
    instance_ip_address: { get_param: instance_ip_address }
    instance_ip_mode: { get_param: instance_ip_mode }
    subnet_uuid: { get_param: subnet_uuid }
    instance_ip_family: { get_param: instance_ip_family }
    annotations:
      {
        annotations_key_value_pair:
          [{
            annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
            annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
          }],
      }
    instance_ip_local_ip: { get_param: instance_ip_local_ip }
    instance_ip_secondary: { get_param: instance_ip_secondary }
    physical_router_refs: [{ get_param: physical_router_refs }]
    virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
    virtual_network_refs: [{ get_param: virtual_network_refs }]

5.2.5.9.3.1. Resource OS::ContrailV2::InstanceIp Property instance_ip_address

A VNF’s Heat Orchestration Templates resource OS::ContrailV2::InstanceIp property instance_ip_address parameter MUST follow the same requirements that apply to the resource OS::Neutron property fixed_ips map property ip_address parameter.

Requirement: R-100000 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s resource OS::ContrailV2::InstanceIp property instance_ip_address parameter MUST be declared as either type string or type comma_delimited_list.
Requirement: R-100010 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv4 address is assigned using the property instance_ip_address and the parameter type is defined as a string, the parameter name MUST follow the naming convention

  • {vm-type}_{network-role}_ip_{index}

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP external network
  • {index} is a numeric value that MUST start at zero in a VNF’s Heat Orchestration Template and MUST increment by one
Requirement: R-100020 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter {vm-type}_{network-role}_ip_{index} MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

ONAP’s SDN-Controller assigns the IP Address and ONAP provides the value at orchestration to the Heat Orchestration Template.

Example ONAP External Network IPv4 Address string Parameter Definition

parameters:

  {vm-type}_{network-role}_ip_{index}:
    type: string
    description: Fixed IPv4 assignment for {vm-type} VM {index} on the {network-role} network
Requirement: R-100030 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv4 address is assigned using the property instance_ip_address and the parameter type is defined as a comma_delimited_list, the parameter name MUST follow the naming convention

  • {vm-type}_{network-role}_ips

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP external network
Requirement: R-100040 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter {vm-type}_{network-role}_ips MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

ONAP’s SDN-Controller assigns the IP Address and ONAP provides the value at orchestration to the Heat Orchestration Template.

Example External Network IPv4 Address comma_delimited_list Parameter Definition

parameters:

  {vm-type}_{network-role}_ips:
    type: comma_delimited_list
    description: Fixed IPv4 assignments for {vm-type} VMs on the {network-role} network
Requirement: R-100050 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv6 address is assigned using the property instance_ip_address and the parameter type is defined as a string, the parameter name MUST follow the naming convention

  • {vm-type}_{network-role}_v6_ip_{index}

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP external network
  • {index} is a numeric value that MUST start at zero in a VNF’s Heat Orchestration Template and MUST increment by one
Requirement: R-100060 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter {vm-type}_{network-role}_v6_ip_{index} MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

ONAP’s SDN-Controller assigns the IP Address and ONAP provides the value at orchestration to the Heat Orchestration Template.

Example ONAP External Network IPv6 Address string Parameter Definition

parameters:

  {vm-type}_{network-role}_v6_ip_{index}:
    type: string
    description: Fixed IPv6 assignment for {vm-type} VM {index} on the {network-role} network
Requirement: R-100070 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv6 address is assigned using the property instance_ip_address and the parameter type is defined as a comma_delimited_list, the parameter name MUST follow the naming convention

  • {vm-type}_{network-role}_v6_ips

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP external network
Requirement: R-100080 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter {vm-type}_{network-role}_v6_ips MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

ONAP’s SDN-Controller assigns the IP Address and ONAP provides the value at orchestration to the Heat Orchestration Template.

Example ONAP External Network IPv6 Address comma_delimited_list Parameter Definition

parameters:

  {vm-type}_{network-role}_v6_ips:
    type: comma_delimited_list
    description: Fixed IPv6 assignments for {vm-type} VMs on the {network-role} network
Requirement: R-100090 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666), and an IPv4 address is assigned using the property instance_ip_address and the parameter type is defined as a string, the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_ip_{index}

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network
  • {index} is a numeric value that MUST start at zero in a VNF’s Heat Orchestration Template and MUST increment by one
Requirement: R-100100 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter {vm-type}_int_{network-role}_ip_{index} MUST be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

The IP address is local to the VNF’s ONAP internal network and is (re)used in every VNF spin up, thus the constant value is declared in the VNF’s Heat Orchestration Template’s Environment File.

Example ONAP Internal Network IPv4 Address string Parameter Definition

parameters:

  {vm-type}_int_{network-role}_ip_{index}:
    type: string
    description: Fixed IPv4 assignment for {vm-type} VM {index} on the int_{network-role} network
Requirement: R-100110 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666), and an IPv4 address is assigned using the property instance_ip_address and the parameter type is defined as a comma_delimited_list, the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_ips

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network
Requirement: R-100120 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter {vm-type}_int_{network-role}_int_ips MUST be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

The IP address is local to the VNF’s ONAP internal network and is (re)used in every VNF spin up, thus the constant value is declared in the VNF’s Heat Orchestration Template’s Environment File.

Example ONAP Internal Network IPv4 Address comma_delimited_list Parameter Definition

parameters:

  {vm-type}_int_{network-role}_ips:
    type: comma_delimited_list
    description: Fixed IPv4 assignments for {vm-type} VMs on the int_{network-role} network
Requirement: R-100130 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666), and an IPv6 address is assigned using the property instance_ip_address and the parameter type is defined as a string, the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_v6_ip_{index}

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network
  • {index} is a numeric value that MUST start at zero in a VNF’s Heat Orchestration Template and MUST increment by one
Requirement: R-100140 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter {vm-type}_int_{network-role}_v6_ip_{index} MUST be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

The IP address is local to the VNF’s ONAP internal network and is (re)used in every VNF spin up, thus the constant value is declared in the VNF’s Heat Orchestration Template’s Environment File.

Example ONAP Internal Network IPv6 Address string Parameter Definition

parameters:

  {vm-type}_int_{network-role}_v6_ip_{index}:
    type: string
    description: Fixed IPv6 assignment for {vm-type} VM {index} on the int_{network-role} network
Requirement: R-100150 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666), and an IPv6 address is assigned using the property instance_ip_address and the parameter type is defined as a comma_delimited_list, the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_v6_ips

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network
Requirement: R-100160 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address map property ip_address parameter {vm-type}_int_{network-role}_v6_ips MUST be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

The IP address is local to the VNF’s ONAP internal network and is (re)used in every VNF spin up, thus the constant value is declared in the VNF’s Heat Orchestration Template’s Environment File.

Example ONAP Internal Network IPv6 Address comma_delimited_list Parameter Definition

parameters:

  {vm-type}_int_{network-role}_v6_ips:
    type: comma_delimited_list
    description: Fixed IPv6 assignments for {vm-type} VMs on the int_{network-role} network
Requirement: R-100170 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
updated: frankfurt
validation_mode: static

The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter associated with an ONAP external network, i.e.,

  • {vm-type}_{network-role}_ip_{index}
  • {vm-type}_{network-role}_v6_ip_{index}
  • {vm-type}_{network-role}_ips
  • {vm-type}_{network-role}_v6_ips

MUST NOT be enumerated in the Heat Orchestration Template’s Environment File. ONAP provides the IP address assignments at orchestration time.

Requirement: R-100180 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property instance_ip_address parameter associated with an ONAP internal network, i.e.,

  • {vm-type}_int_{network-role}_ip_{index}
  • {vm-type}_int_{network-role}_v6_ip_{index}
  • {vm-type}_int_{network-role}_ips
  • {vm-type}_int_{network-role}_v6_ips

MUST be enumerated in the Heat Orchestration Template’s Environment File and IP addresses MUST be assigned.

Example: Contrail Resource OS::ContrailV2::InstanceIp, Property instance_ip_address

The property instance_ip_address uses the same parameter naming convention as the property fixed_ips and Map Property ip_address in OS::Neutron::Port. The resource is assigning an ONAP SDN-C Assigned IP Address. The {network-role} has been defined as oam_protected to represent an oam protected network and the {vm-type} has been defined as fw for firewall.

fw_0_oam_protected_vmi_0_IP_0:
  type: OS::ContrailV2::InstanceIp
  depends_on:
    - fw_0_oam_protected_vmi_0
  properties:
    virtual_machine_interface_refs:
      - get_resource: fw_0_oam_protected_vmi_0
    virtual_network_refs:
      - get_param: oam_protected_net_fqdn
    instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] }

5.2.5.9.3.2. Resource OS::ContrailV2::InstanceIp Property subnet_uuid

A VNF’s Heat Orchestration Templates resource OS::ContrailV2::InstanceIp property subnet_uuid parameter MUST follow the same requirements that apply to the resource OS::Neutron property fixed_ips map property subnet parameter.

The resource OS::ContrailV2::InstanceIp property subnet_uuid parameter is used when a port is requesting an IP assignment via OpenStack’s DHCP Service (i.e., cloud assigned).

The IP address assignment will be made from the specified subnet.

Specifying the subnet is not required; it is optional.

If the network (external or internal) that the port is attaching to only contains one subnet, specifying the subnet is superfluous. The IP address will be assigned from the one existing subnet.

If the network (external or internal) that the port is attaching to contains two or more subnets, specifying the subnet in the instance_ip_address property determines which subnet the IP address will be assigned from.

If the network (external or internal) that the port is attaching to contains two or more subnets, and the subnet is not is not specified, OpenStack will randomly determine which subnet the IP address will be assigned from.

The property instance_ip_address is used to assign IPs to a port. The property subnet_uuid specifies the subnet the IP is assigned from.

Requirement: R-100190 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s resource OS::ContrailV2::InstanceIp property subnet_uuid parameter MUST be declared type string.
Requirement: R-100200 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv4 address is being cloud assigned by OpenStack’s DHCP Service and the ONAP external network IPv4 subnet is to be specified using the property subnet_uuid, the parameter MUST follow the naming convention

  • {network-role}_subnet_id

where

  • {network-role} is the network role of the ONAP external network.

Note that ONAP only supports cloud assigned IP addresses from one IPv4 subnet of a given network.

Requirement: R-100210 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property subnet_uuid parameter {network-role}_subnet_id MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

ONAP’s SDN-Controller provides the network’s subnet’s UUID value at orchestration to the Heat Orchestration Template.

Example Parameter Definition

parameters:

  {network-role}_subnet_id:
    type: string
    description: Neutron IPv4 subnet UUID for the {network-role} network
Requirement: R-100220 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s resource OS::ContrailV2::InstanceIp is assigning an IP address to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv6 address is being cloud assigned by OpenStack’s DHCP Service and the ONAP external network IPv6 subnet is to be specified using the property subnet_uuid, the parameter MUST follow the naming convention

  • {network-role}_v6_subnet_id

where

  • {network-role} is the network role of the ONAP external network.

Note that ONAP only supports cloud assigned IP addresses from one IPv6 subnet of a given network.

Requirement: R-100230 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property subnet_uuid parameter {network-role}_v6_subnet_id MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

ONAP’s SDN-Controller provides the network’s subnet’s UUID value at orchestration to the Heat Orchestration Template.

Example Parameter Definition

parameters:

  {network-role}_v6_subnet_id:
    type: string
    description: Neutron IPv6 subnet UUID for the {network-role} network
Requirement: R-100240 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When

  • the VNF’s Heat Orchestration Template’s resource OS::ContrailV2::InstanceIp in an Incremental Module is assigning an IP address to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666) that is created in the Base Module, AND
  • an IPv4 address is being cloud assigned by OpenStack’s DHCP Service AND
  • the ONAP internal network IPv4 subnet is to be specified using the property subnet_uuid,

the parameter MUST follow the naming convention

  • int_{network-role}_subnet_id

where

  • {network-role} is the network role of the ONAP internal network

Note that the parameter MUST be defined as an output parameter in the base module.

Requirement: R-100250 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property subnet_uuid parameter int_{network-role}_subnet_id MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

The assumption is that ONAP internal networks are created in the base module. The subnet network ID will be passed as an output parameter (e.g., ONAP Base Module Output Parameter) to the incremental modules. In the incremental modules, the output parameter name will be defined as input parameter.

Example Parameter Definition

parameters:

  int_{network-role}_subnet_id:
    type: string
    description: Neutron IPv4 subnet UUID for the int_{network-role} network
Requirement: R-100260 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When

  • the VNF’s Heat Orchestration Template’s resource OS::ContrailV2::InstanceIp in an Incremental Module is attaching to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666) that is created in the Base Module, AND
  • an IPv6 address is being cloud assigned by OpenStack’s DHCP Service AND
  • the ONAP internal network IPv6 subnet is to be specified using the property subnet_uuid,

the parameter MUST follow the naming convention

  • int_{network-role}_v6_subnet_id

where {network-role} is the network role of the ONAP internal network.

Note that the parameter MUST be defined as an output parameter in the base module.

Requirement: R-100270 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
validation_mode: static
The VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::InstanceIp property subnet_uuid parameter int_{network-role}_v6_subnet_id MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

Example Parameter Definition

parameters:

  int_{network-role}_v6_subnet_id:
    type: string
    description: Neutron subnet UUID for the int_{network-role} network

Example: Contrail Resource OS::ContrailV2::InstanceIp, Property subnet_uuid

The property instance_ip_address uses the same parameter naming convention as the property fixed_ips and Map Property subnet in OS::Neutron::Port. The resource is assigning a cloud assigned IP Address. The {network-role} has been defined as “oam_protected” to represent an oam protected network and the {vm-type} has been defined as “fw” for firewall.

fw_0_oam_protected_vmi_0_IP_0:
  type: OS::ContrailV2::InstanceIp
  depends_on:
  - fw_0_oam_protected_vmi_0
  properties:
    virtual_machine_interface_refs:
      - get_resource: fw_0_oam_protected_vmi_0
    virtual_network_refs:
      - get_param: oam_protected_net_fqdn
    subnet_uuid: { get_param: oam_protected_subnet_id }

5.2.5.9.4. OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs

A VNF’s Heat Orchestration Templates resource OS::ContrailV2::VirtualMachineInterface map property,

virtual_machine_interface_allowed_address_pairs,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix

parameter MUST follow the same requirements that apply to the resource OS::Neutron::Port property allowed_address_pairs, map property ip_address parameter.

5.2.5.9.4.1. ONAP External Networks

Requirement: R-100280 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
updated: frankfurt
validation_mode: static

If a VNF’s Heat Orchestration Template’s resource OS::ContrailV2::VirtualMachineInterface is attaching to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), the map property

virtual_machine_interface_allowed_address_pairs,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix

parameter MUST NOT be enumerated in the VNF’s Heat Orchestration Template’s Environment File.

Requirement: R-100310 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s resource OS::ContrailV2::VirtualMachineInterface is attaching to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv4 Virtual IP (VIP) is required to be supported by the ONAP data model, the map property

virtual_machine_interface_allowed_address_pairs,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix

parameter name MUST follow the naming convention

  • {vm-type}_{network-role}_floating_ip

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP external network

And the parameter MUST be declared as type string.

The ONAP data model can only support one IPv4 VIP address.

Example Parameter Definition

parameters:

  {vm-type}_{network-role}_floating_ip:
    type: string
    description: IPv4 VIP for {vm-type} VMs on the {network-role} network
Requirement: R-100330 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s resource OS::ContrailV2::VirtualMachineInterface is attaching to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and an IPv6 Virtual IP (VIP) is required to be supported by the ONAP data model, the map property

virtual_machine_interface_allowed_address_pairs,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix

parameter name MUST follow the naming convention

  • {vm-type}_{network-role}_floating_v6_ip

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP external network

And the parameter MUST be declared as type string.

The ONAP data model can only support one IPv6 VIP address.

Example Parameter Definition

parameters:

  {vm-type}_{network-role}_floating_v6_ip:
    type: string
    description: IPv6 VIP for {vm-type} VMs on the {network-role} network
Requirement: R-100350 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST NOT
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s resource OS::ContrailV2::VirtualMachineInterface is attaching to an ONAP external network (per the ONAP definition, see Requirement R-57424 and R-16968), and the IPv4 VIP address and/or IPv6 VIP address is not supported by the ONAP data model, the map property

virtual_machine_interface_allowed_address_pairs,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix

  • Parameter name MAY use any naming convention. That is, there is no ONAP mandatory parameter naming convention.
  • Parameter MAY be declared as type string or type comma_delimited_list.

And the OS::ContrailV2::VirtualMachineInterface resource MUST contain resource-level metadata (not property-level).

And the metadata format MUST must contain the key value aap_exempt with a list of all map property

virtual_machine_interface_allowed_address_pairs,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,

virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix

parameters not supported by the ONAP data model.

5.2.5.9.4.2. ONAP Internal Networks

Requirement: R-100360 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::VirtualMachineInterface is attaching to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666), and an IPv4 Virtual IP (VIP) address is assigned using the map property, virtual_machine_interface_allowed_address_pairs, virtual_machine_interface_allowed_address_pairs_allowed_address_pair, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix , the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_floating_ip

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network

And the parameter MUST be declared as type: string and MUST be enumerated in the environment file.

OR

the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_floating_ips

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network

And the parameter MUST be declared as type: comma_delimited_list and MUST be enumerated in the environment file.

Requirement: R-100370 ../../../../../../../_images/arrow-right-circle.svg
target: VNF
keyword: MUST
introduced: dublin
updated: frankfurt
validation_mode: static

When the VNF’s Heat Orchestration Template’s Resource OS::ContrailV2::VirtualMachineInterface is attaching to an ONAP internal network (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666), and an IPv6 Virtual IP (VIP) address is assigned using the map property, virtual_machine_interface_allowed_address_pairs, virtual_machine_interface_allowed_address_pairs_allowed_address_pair, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix , the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_floating_v6_ip

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network

And the parameter MUST be declared as type: string and MUST be enumerated in the environment file

OR

the parameter name MUST follow the naming convention

  • {vm-type}_int_{network-role}_floating_v6_ips

where

  • {vm-type} is the {vm-type} associated with the OS::Nova::Server
  • {network-role} is the {network-role} of the ONAP internal network

And the parameter MUST be declared as type: comma_delimited_list and MUST be enumerated in the environment file.

5.2.5.9.4.3. Example

Example OS::ContrailV2::VirtualMachineInterface

<resource ID>:
  type: OS::ContrailV2::VirtualMachineInterface
  properties:
    name: { get_param: name }
    fq_name: { get_param: fq_name }
    ecmp_hashing_include_fields:
      {
        ecmp_hashing_include_fields_hashing_configured: { get_param: ecmp_hashing_include_fields_hashing_configured },
        ecmp_hashing_include_fields_source_ip: { get_param: ecmp_hashing_include_fields_source_ip },
        ecmp_hashing_include_fields_destination_ip: { get_param: ecmp_hashing_include_fields_destination_ip },
        ecmp_hashing_include_fields_ip_protocol: { get_param: ecmp_hashing_include_fields_ip_protocol },
        ecmp_hashing_include_fields_source_port: { get_param: ecmp_hashing_include_fields_source_port },
        ecmp_hashing_include_fields_destination_port: { get_param: ecmp_hashing_include_fields_destination_port },
      }
    virtual_machine_interface_host_routes:
      {
        virtual_machine_interface_host_routes_route:
          [{
            virtual_machine_interface_host_routes_route_prefix: { get_param: virtual_machine_interface_host_routes_route_prefix },
            virtual_machine_interface_host_routes_route_next_hop: { get_param: virtual_machine_interface_host_routes_route_next_hop },
            virtual_machine_interface_host_routes_route_next_hop_type: { get_param: virtual_machine_interface_host_routes_route_next_hop_type },
            virtual_machine_interface_host_routes_route_community_attributes:
              {
                virtual_machine_interface_host_routes_route_community_attributes_community_attribute: [{ get_param: virtual_machine_interface_host_routes_route_community_attributes_community_attribute }],
              },
          }],
      }
    virtual_machine_interface_mac_addresses:
      {
        virtual_machine_interface_mac_addresses_mac_address: [{ get_param: virtual_machine_interface_mac_addresses_mac_address }],
      }
    virtual_machine_interface_dhcp_option_list:
      {
        virtual_machine_interface_dhcp_option_list_dhcp_option:
          [{
            virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_name },
            virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value },
            virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value_bytes: { get_param: virtual_machine_interface_dhcp_option_list_dhcp_option_dhcp_option_value_bytes },
          }],
      }
    virtual_machine_interface_bindings:
      {
        virtual_machine_interface_bindings_key_value_pair:
          [{
            virtual_machine_interface_bindings_key_value_pair_key: { get_param: virtual_machine_interface_bindings_key_value_pair_key },
            virtual_machine_interface_bindings_key_value_pair_value: { get_param: virtual_machine_interface_bindings_key_value_pair_value },
          }],
      }
    virtual_machine_interface_disable_policy: { get_param: virtual_machine_interface_disable_policy }
    virtual_machine_interface_allowed_address_pairs:
      {
        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
          [{
            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
              {
                virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix },
                virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len },
              },
            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac },
            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode },
          }],
      }
    annotations:
      {
        annotations_key_value_pair:
          [{
            annotations_key_value_pair_key: { get_param: annotations_key_value_pair_key },
            annotations_key_value_pair_value: { get_param: annotations_key_value_pair_value },
          }],
      }
    virtual_machine_interface_fat_flow_protocols:
      {
        virtual_machine_interface_fat_flow_protocols_fat_flow_protocol:
          [{
            virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_protocol },
            virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port: { get_param: virtual_machine_interface_fat_flow_protocols_fat_flow_protocol_port },
          }],
      }
    virtual_machine_interface_device_owner: { get_param: virtual_machine_interface_device_owner }
    port_security_enabled: { get_param: port_security_enabled }
    virtual_machine_interface_properties:
      {
        virtual_machine_interface_properties_service_interface_type: { get_param: virtual_machine_interface_properties_service_interface_type },
        virtual_machine_interface_properties_interface_mirror:
          {
            virtual_machine_interface_properties_interface_mirror_traffic_direction: { get_param: virtual_machine_interface_properties_interface_mirror_traffic_direction },
            virtual_machine_interface_properties_interface_mirror_mirror_to:
              {
                virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_name },
                virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_encapsulation },
                virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_ip_address },
                virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_analyzer_mac_address },
                virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_routing_instance },
                virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_udp_port },
                virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_juniper_header },
                virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_nh_mode },
                virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header:
                  {
                    virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_ip_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_ip_address },
                    virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_mac_address: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vtep_dst_mac_address },
                    virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vni: { get_param: virtual_machine_interface_properties_interface_mirror_mirror_to_static_nh_header_vni },
                  },
              },
          },
        virtual_machine_interface_properties_local_preference: { get_param: virtual_machine_interface_properties_local_preference },
        virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: virtual_machine_interface_properties_sub_interface_vlan_tag },
      }
    display_name: { get_param: display_name }
    service_health_check_refs: [{ get_param: service_health_check_refs }]
    routing_instance_refs: [{ get_param: routing_instance_refs }]
    routing_instance_refs_data:
      [{
        routing_instance_refs_data_direction: { get_param: routing_instance_refs_data_direction },
        routing_instance_refs_data_vlan_tag: { get_param: routing_instance_refs_data_vlan_tag },
        routing_instance_refs_data_src_mac: { get_param: routing_instance_refs_data_src_mac },
        routing_instance_refs_data_dst_mac: { get_param: routing_instance_refs_data_dst_mac },
        routing_instance_refs_data_mpls_label: { get_param: routing_instance_refs_data_mpls_label },
        routing_instance_refs_data_service_chain_address: { get_param: routing_instance_refs_data_service_chain_address },
        routing_instance_refs_data_ipv6_service_chain_address: { get_param: routing_instance_refs_data_ipv6_service_chain_address },
        routing_instance_refs_data_protocol: { get_param: routing_instance_refs_data_protocol },
      }]
    security_group_refs: [{ get_param: security_group_refs }]
    physical_interface_refs: [{ get_param: physical_interface_refs }]
    port_tuple_refs: [{ get_param: port_tuple_refs }]
    interface_route_table_refs: [{ get_param: interface_route_table_refs }]
    virtual_machine_interface_refs: [{ get_param: virtual_machine_interface_refs }]
    virtual_network_refs: [{ get_param: virtual_network_refs }]
    virtual_machine_refs: [{ get_param: virtual_machine_refs }]
    qos_config_refs: [{ get_param: qos_config_refs }]
    virtual_machine: { get_param: virtual_machine }
    project: { get_param: project }