Add document and scripts for testing NS features

1. This patch update document nsd_usage_guide.rst about
supporting VNFFG in NSD template.
2. Add some scripts for users to create network service
automatically.

Partially-implements: blueprint vnffg-ns

Change-Id: I87f4879c5c2ab781e3d8234bf6ab368c526934e4
This commit is contained in:
Cong Phuoc Hoang 2018-07-04 18:09:34 +09:00 committed by dharmendra kushwaha
parent 422055b9ba
commit a272adc5bc
3 changed files with 538 additions and 199 deletions

View File

@ -0,0 +1,51 @@
#!/bin/bash
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
echo "Deleting network service NS1"
network_service_id=$(openstack ns list | grep NS1 | awk '{print $2}')
if [ -n "$network_service_id" ]; then
openstack ns delete $network_service_id
fi
sleep 5
echo "Deleting network service descriptor NSD-template"
nsd_id=$(openstack ns descriptor list | grep NSD-template | awk '{print $2}')
if [ -n "$nsd_id" ]; then
openstack ns descriptor delete $nsd_id
fi
echo "Deleting vnf descriptors"
for vnfd_name in sample-tosca-vnfd1 sample-tosca-vnfd2 sample-vnfd1 sample-vnfd2; do
vnfd_id=$(openstack vnf descriptor list | grep $vnfd_name | awk '{print $2}')
if [ -n "$vnfd_id" ]; then
openstack vnf descriptor delete $vnfd_id
fi
done
echo "Deleting http_client and http_server"
for server_name in http_client http_server; do
server_id=$(openstack server list | grep $server_name | awk '{print $2}')
if [ -n "$server_id" ]; then
openstack server delete $server_id
fi
done
sleep 10
echo "Deleting VIM0"
vim_id=$(openstack vim list | grep VIM0 | awk '{print $2}')
if [ -n "$vim_id" ]; then
openstack vim delete $vim_id
fi

View File

@ -0,0 +1,58 @@
#!/bin/bash
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
network_name='net0'
network_id=$(openstack network list | grep $network_name | awk '{print $2}')
if [ -z "$network_id" ]; then
echo "Creating network net0"
openstack network create $network_name --provider-network-type=vxlan --provider-segment 1005
openstack subnet create --network $network_name --subnet-range 10.0.10.0/24 subnet-test
network_id=$(openstack network list | grep $network_name | awk '{print $2}')
fi
echo "Creating HTTP client"
openstack server create --flavor m1.tiny --image cirros-0.3.5-x86_64-disk --nic net-id=$network_id http_client
echo "Creating HTTP server"
openstack server create --flavor m1.tiny --image cirros-0.3.5-x86_64-disk --nic net-id=$network_id http_server
sleep 15
client_ip=$(openstack server list | grep http_client | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
network_source_port_id=$(openstack port list | grep $client_ip | awk '{print $2}')
ip_dst=$(openstack server list | grep http_server | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
echo "Creating/ Updating ns_param.yaml file"
cat > ../../samples/tosca-templates/vnffg-nsd/ns_param.yaml << EOL
nsd:
vl1_name: net_mgmt
vl2_name: net0
net_src_port_id: ${network_source_port_id}
ip_dest_prefix: ${ip_dst}/24
EOL
vim_default=$(openstack vim list | grep openstack | awk '{print $10}')
if [ "$vim_default" != "True" ]; then
echo "Creating default VIM"
cat > ./vim_config.yaml << EOL
auth_url: $OS_AUTH_URL
username: $OS_USERNAME
password: $OS_PASSWORD
project_name: $OS_PROJECT_NAME
project_domain_name: $OS_PROJECT_DOMAIN_ID
user_domain_name: $OS_USER_DOMAIN_ID
EOL
openstack vim register --config-file vim_config.yaml --is-default VIM0
rm ./vim_config.yaml
fi

View File

@ -11,246 +11,476 @@
License for the specific language governing permissions and limitations
under the License.
.. _ref-nsd:
==========================================================
Orchestrating VNFs using Network Services Descriptor (NSD)
==========================================================
====================================================================
Orchestrating VNFs and VNFFG using Network Services Descriptor (NSD)
====================================================================
To enable dynamic composition of network services, NFV introduces Network
Service Descriptors (NSDs) that specify the network service to be created.
In Network Function Virtualization (NFV), Network Service (NS) is a set of
network functions, that includes virtual network functions (VNFs), physical
network functions (PNFs), and VNF forwarding graph (VNFFG) that defines
connection between NFs [#f1]_, [#f2]_.
.. code-block:: console
TOSCA NFV
+------------------------------------------+ +--------------------+
| | | |
| Service Template <------------------------+ Network Service |
| | | Descriptor (NSD) |
| +-------------------+ | | |
| | Topology template | +-------------+ | | +----------+ |
| | +---------+ | | Node types <------------------+ VNFD | |
| | | Node <----------+substitutable| | | +----------+ |
| | | Template| | +-------------+ | | |
| | +---------+ | | | +----------+ |
| | +---------+ | +-------------+ | +--------+ VLD | |
| | | Node <----------+ Node types <---------+ | +----------+ |
| | | Template| | +-------------+ | | |
| | +---------+ | | | +----------+ |
| | +---------+ | +-------------+ | +--------+ VNFFGD | |
| | | Node <----------+ Group types <---------+ | +----------+ |
| | | Template| | +-------------+ | | |
| | +---------+ | | | +----------+ |
| | +---------+ | | +--------+ PNFD | |
| | | Node | | +-------------+ | | | +----------+ |
| | | Template<----------+ Node types <---------+ | |
| | +---------+ | +-------------+ | +--------------------+
| | | |
| +-------------------+ |
| |
+------------------------------------------+
NSD in Ocata can be used for creating multiple (related) VNFs in one shot
using a single TOSCA template.
In Rocky version, Tacker add VNFFG support in NSD. That lets users can use
NSD to create VNFs and VNFFGs.
.. note::
For current implementation, Tacker does not support creating VLs/neutron
networks using NSD (to support inter-VNF private VL).
This usage guide describes lifecycle of Network service descriptors and
services.
NSD in Ocata can be used for creating multiple (related) VNFs in one shot
using a single TOSCA template. This is a first (big) step into NSD, few
follow-on enhancements like:
1) Creating VLs / neutron networks using NSD (to support inter-VNF private VL)
2) VNFFGD support in NSD.
Network Service creation procedure
==================================
Creating the NSD
~~~~~~~~~~~~~~~~
Tacker uses Mistral to call actions to create Network Service. Firstly, Tacker
extracts VNFDs from NSD template to create VNFs. When creating VNF tasks is
on-success state (VNFs are in **RUNNING** state), nested VNFFGD template in
NSD template is extracted and **create_vnffg** task is called to create VNFFGs.
Once OpenStack along with Tacker has been successfully installed,
deploy a sample VNFD templates using vnf1.yaml and vnf2.yaml as mentioned in
reference section.
When NSD does not have nested VNFFG template, Tacker does not invoke creating
VNFFGs, only VNFs are created. Users can find detail implementation in [#f3]_
::
.. code-block:: console
tacker vnfd-create --vnfd-file vnfd1.yaml VNFD1
+------------------------+
| |
| NSD template |
| |
| |
+------------------------+
| extract templates
+-------------------v---------------+
| |
+----v------------+ +---------v------+
| | | |
| VNFFGD templates| | VNFDs |
| | | |
+----+------------+ +---------+------+
| | create VNFs
| +-----------+------+-----------------+
| | | |
| | | |
| +----v---+ +---v----+ +----v---+
| | VNF1 | | VNF2 | | VNFn |
| +----+---+ +---+----+ +----+---+
| | | |
| | +---------+ |
| | | +--------------------------------+
| | | |
| | | |on-success
| | | |
| +---v-v-v---------+
| | VNFFGs |
+------------> (optional) |
create VNFFGs | |
+-----------------+
tacker vnfd-create --vnfd-file vnfd2.yaml VNFD2
Network Service examples
========================
The following code represents sample NSD which instantiates the above VNFs
With NS, Tacker can use NSD template to create VNFs and VNFFGs to make a chain
between VNFs. In this document, we provide two NS examples:
::
1. Deploy VNFs
In this scenario, users can use NSD template to create VNFs. There are no
VNFFGs created. Templates are located in tacker/samples/tosca-templates/nsd.
2. Deploy VNFs and VNFFG between 2 HTTP servers
In the second scenario, users can use NSD template to create 2 VNFs and
2 VNFFGs. Templates are located in tacker/samples/tosca-templates/vnffg-nsd.
The below diagram describes the second scenario, NSD is used to create VNF1,
VNF2, VNFFG1 and VNFFG2. VNFFG1 will chain traffic from http_client to
http_server go through VNF1 and VNF2, while VNFFG2 only route traffic go
through VNF1.
.. code-block:: console
+------------+ +------------+
| VNF1 | | VNF2 |
| | | |
| CP12 | | CP22 |
+--^-+---^-+-+ +----^--+----+
| | | | | |
| | | | | |
+-------------+ VNFFG1 | | | | | | +-------------+
| +-----------+ +---------------------+ +---------------> |
| http_client | | | | http_server |
| +-----------------+ +----------------------------------> |
+-------------+ VNFFG2 +-------------+
.. note::
VNF1 and VNF2 are just a name, that can be changed.
Users can look at document about VNF [#f4]_ and VNFFG [#f5]_ [#f6]_ usage guide
to know more detail about this scenarios.
Setup experiment environment
============================
To support users easily create testing environment, Tacker provides some bash
scripts to create **http_client**, **http_server** servers and default VIM0.
Tacker also update information in **ns_param.yaml** file.
Users can go to **contrib/tacker-config/**, then run **ns-config.sh** script:
.. code-block:: console
$ cd ~/tacker/contrib/tacker-config
$ ./ns-config.sh
After ns-config.sh is deployed, if there are no error, 2 new servers and
a new default VIM will be launched and **ns_param.yaml** will be updated.
.. code-block:: console
$ openstack server list
$ openstack vim list
$ cat ../../samples/tosca-templates/nsd/ns_param.yaml
$ cat ../../samples/tosca-templates/vnffg-nsd/ns_param.yaml
1. Using NSD to create VNFs
===========================
Once OpenStack along with Tacker has been successfully installed, deploying
sample VNFD templates using **sample-tosca-vnfd1.yaml** [#f7]_ and
**sample-tosca-vnfd2.yaml** [#f8]_.
.. code-block:: console
$ cd ~/tacker/samples/tosca-templates/nsd
$ openstack vnf descriptor create --vnfd-file sample-tosca-vnfd1.yaml sample-tosca-vnfd1
$ openstack vnf descriptor create --vnfd-file sample-tosca-vnfd2.yaml sample-tosca-vnfd2
The following code represents sample NSD which instantiates the above VNFs.
.. note::
VNF descriptor names must be same as values in **imports** part in NSD
template.
.. code-block:: console
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Import VNFDs(already on-boarded) with input parameters
imports:
- VNFD1
- VNFD2
- sample-tosca-vnfd1
- sample-tosca-vnfd2
topology_template:
inputs:
vl1_name:
type: string
description: name of VL1 virtuallink
default: net_mgmt
vl2_name:
type: string
description: name of VL2 virtuallink
default: net0
node_templates:
VNF1:
type: tosca.nodes.nfv.VNF1
requirements:
- virtualLink1: VL1
- virtualLink2: VL2
VNF2:
type: tosca.nodes.nfv.VNF2
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: {get_input: vl1_name}
vendor: tacker
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: {get_input: vl2_name}
vendor: tacker
In above NSD template VL1 and VL2 are substituting the virtual links of VNF1.
To create Network Service, users can use two ways:
1. Onboard the above NSD, then create NS from NSD.
.. code-block:: console
$ openstack ns descriptor create --nsd-file sample-tosca-nsd.yaml NSD-template
$ openstack ns create --nsd-name NSD-template --param-file ns_param.yaml NS1
2. Create NS directly from NSD
.. code-block:: console
$ openstack ns create --nsd-template sample-tosca-nsd.yaml --param-file ns_param.yaml NS1
2. Using NSD to create VNFs and VNFFG
=====================================
In this scenario, in the same way with above scenario, firstly, users need to
create vnf descriptors, which is defined in NSD template.
.. code-block:: console
$ cd ~/tacker/samples/tosca-templates/vnffg-nsd
$ openstack vnf descriptor create --vnfd-file tosca-vnfd1-sample.yaml sample-vnfd1
$ openstack vnf descriptor create --vnfd-file tosca-vnfd2-sample.yaml sample-vnfd2
The following code represents sample NSD which instantiates the above VNFs and
VNFFG.
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Import VNFDs(already on-boarded) with input parameters
imports:
- sample-vnfd1
- sample-vnfd2
topology_template:
inputs:
vl1_name:
type: string
description: name of VL1 virtuallink
default: net_mgmt
vl2_name:
type: string
description: name of VL2 virtuallink
default: net0
net_src_port_id:
type: string
description: neutron port id of source port
ip_dest_prefix:
type: string
description: IP prefix of destination port
node_templates:
VNF1:
type: tosca.nodes.nfv.VNF1
requirements:
- virtualLink1: VL1
- virtualLink2: VL2
VNF2:
type: tosca.nodes.nfv.VNF2
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net0
vendor: tacker
network_name: {get_input: vl1_name}
vendor: tacker
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: tacker
network_name: {get_input: vl2_name}
vendor: tacker
In above NSD template VL1 and VL2 are substituting the virtuallinks of VNF1.
To onboard the above NSD:
Forwarding_path1:
type: tosca.nodes.nfv.FP.TackerV2
description: creates path inside ns (src_port->CP12->CP22->dst_port)
properties:
id: 51
policy:
type: ACL
criteria:
- name: block_tcp
classifier:
network_src_port_id: {get_input: net_src_port_id}
destination_port_range: 80-1024
ip_proto: 6
ip_dst_prefix: {get_input: ip_dest_prefix}
path:
- forwarder: sample-vnfd1
capability: CP12
- forwarder: sample-vnfd2
capability: CP22
::
Forwarding_path2:
type: tosca.nodes.nfv.FP.TackerV2
description: creates path inside ns (src_port->CP12->CP22->dst_port)
properties:
id: 52
policy:
type: ACL
criteria:
- name: block_tcp
classifier:
network_src_port_id: {get_input: net_src_port_id}
destination_port_range: 8080-8080
ip_proto: 6
ip_dst_prefix: {get_input: ip_dest_prefix}
path:
- forwarder: sample-vnfd1
capability: CP12
tacker nsd-create --nsd-file <nsd-file> <nsd-name>
groups:
Creating the NS
~~~~~~~~~~~~~~~~
VNFFG1:
type: tosca.groups.nfv.VNFFG
description: HTTP to Corporate Net
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 2
dependent_virtual_link: [VL1, VL2]
connection_point: [CP12, CP22]
constituent_vnfs: [sample-vnfd1, sample-vnfd2]
members: [Forwarding_path1]
To create a NS, you must have onboarded corresponding NSD and
VNFDS(which NS is substituting)
VNFFG2:
type: tosca.groups.nfv.VNFFG
description: HTTP to Corporate Net
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 1
dependent_virtual_link: [VL1]
connection_point: [CP12]
constituent_vnfs: [sample-vnfd1]
members: [Forwarding_path2]
Tacker provides the following CLI to create NS:
To create Network Service, users can use two ways:
::
1. Onboard the above NSD, then create NS from NSD.
tacker ns-create --nsd-id <nsd-id> <ns-name>
.. code-block:: console
Or you can create directly a NS without creating onboarded NSD before by
following CLI command:
$ openstack ns descriptor create --nsd-file tosca-multiple-vnffg-nsd.yaml NSD-VNFFG-template
$ openstack ns create --nsd-name NSD-VNFFG-template --param-file ns_param.yaml NS2
::
2. Create NS directly from NSD
tacker ns-create --nsd-template <nsd-file> <ns-name>
.. code-block:: console
$ openstack ns create --nsd-template tosca-multiple-vnffg-nsd.yaml --param-file ns_param.yaml NS2
Result
======
The following commands shows the result of launching NS in second scenario. If
users run the first scenario, some information about VNFFG is not listed, such
as VNFFG ID and can not see any VNFFG is created.
.. code-block:: console
$ openstack ns list --fit-width
+------------------+------+------------------+------------------+------------------+--------------------+----------------+
| ID | Name | NSD ID | VNF IDs | VNFFG IDs | Mgmt Urls | Status |
+------------------+------+------------------+------------------+------------------+--------------------+----------------+
| 23380f92-3e0a-45 | NS2 | 7ff1c49a-4e89-4b | {'VNF2': 'f92aad | {'VNFFG2': | {'VNF2': {'VDU1': | ACTIVE |
| 39-877c- | | 66-9413-810715b8 | a2-c194-4906-b58 | '24f03f01-7a6d- | '192.168.120.12'}, | |
| b421dc8960b6 | | 470e | 5-e6c8201f0010', | 44ba-b8b8-086ab7 | 'VNF1': {'VDU1': | |
| | | | 'VNF1': | bd2f21', | '192.168.120.3'}} | |
| | | | '25686357-ebdf- | 'VNFFG1': '3ccad | | |
| | | | 4b8e-ab04-7b34a5 | c6e-5702-4516 | | |
| | | | 66e21f'} | -babd- | | |
| | | | | 1013e9afffbf'} | | |
+------------------+------+------------------+------------------+------------------+--------------------+----------------+
$ openstack vnf graph list --fit-width
+------------------------------------+------------------------------------+-------------------------------------+--------+
| ID | Name | VNFFGD ID | Status |
+------------------------------------+------------------------------------+-------------------------------------+--------+
| 24f03f01-7a6d-44ba- | NS2_VNFFG2_a7f77e11-d847-4090-aa79 | 1f2bdd92-c313-4f1d-a423-51e66bc6f1d | ACTIVE |
| b8b8-086ab7bd2f21 | -496610c522bf | 1 | |
| 3ccadc6e-5702-4516-babd- | NS2_VNFFG1_a7f77e11-d847-4090-aa79 | 9923e4ab-19d4-4ff5-b07b- | ACTIVE |
| 1013e9afffbf | -496610c522bf | 0e82a61e2268 | |
+------------------------------------+------------------------------------+-------------------------------------+--------+
$ openstack vnf list --fit-width
+---------------------+---------------------+---------------------+--------+---------------------+-----------------------+
| ID | Name | Mgmt Url | Status | VIM ID | VNFD ID |
+---------------------+---------------------+---------------------+--------+---------------------+-----------------------+
| 25686357-ebdf-4b8e- | NS2_VNF_183c3dba-70 | {"VDU1": | ACTIVE | 3ec1a3f0-058a-40e7- | 183c3dba-7090-4984-bb |
| ab04-7b34a566e21f | 90-4984-bb57-e0dd11 | "192.168.120.3"} | | 83d2-cc8dd24af0ca | 57-e0dd11045563 |
| | 045563_a7f77e11-d84 | | | | |
| | 7-4090-aa79-496610c | | | | |
| | 522bf | | | | |
| f92aada2-c194-4906- | NS2_VNF_3762c695-08 | {"VDU1": | ACTIVE | 3ec1a3f0-058a-40e7- | 3762c695-08f1-4247 |
| b585-e6c8201f0010 | f1-4247-bfda-56d2f5 | "192.168.120.12"} | | 83d2-cc8dd24af0ca | -bfda-56d2f565e8b7 |
| | 65e8b7_a7f77e11-d84 | | | | |
| | 7-4090-aa79-496610c | | | | |
| | 522bf | | | | |
+---------------------+---------------------+---------------------+--------+---------------------+-----------------------+
$ openstack sfc port chain list --fit-width
+---------------------+---------------------+---------------------+---------------------+---------------------+----------+
| ID | Name | Port Pair Groups | Flow Classifiers | Chain Parameters | Chain ID |
+---------------------+---------------------+---------------------+---------------------+---------------------+----------+
| 2950fa88-d98f-4812 | NS2_VNFFG2_a7f77e11 | [u'e92feb43-4906-45 | [u'3eff5973-c612-43 | {u'symmetric': | 1 |
| -830a-ae15452a8c08 | -d847-4090-aa79 | 21-852f- | 83-aee2-d1eb05c832e | False, | |
| | -496610c522bf-port- | 1940c2f344a6'] | e'] | u'correlation': | |
| | chain | | | u'mpls'} | |
| 61c938f9-15a1-4ec8 | NS2_VNFFG1_a7f77e11 | [u'e92feb43-4906-45 | [u'b4cb5575-cb3c-41 | {u'symmetric': | 2 |
| -8dec-44e5f8af70ff | -d847-4090-aa79 | 21-852f- | a3-8649-c69e0cd48db | False, | |
| | -496610c522bf-port- | 1940c2f344a6', u'82 | e'] | u'correlation': | |
| | chain | dab526-540e-4047 | | u'mpls'} | |
| | | -ba8a- | | | |
| | | c97c4cdbaef1'] | | | |
+---------------------+---------------------+---------------------+---------------------+---------------------+----------+
After deployment is finished, users can clean resources (NS, VNFD, http client
and server) with **ns-clean.sh** script.
.. code-block:: console
$ cd ~/tacker/contrib/tacker-config
$ ./ns-clean.sh
Reference
~~~~~~~~~
VNF1 sample template for nsd named vnfd1.yaml:
::
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Demo example
node_types:
tosca.nodes.nfv.VNF1:
requirements:
- virtualLink1:
type: tosca.nodes.nfv.VL
required: true
- virtualLink2:
type: tosca.nodes.nfv.VL
required: true
capabilities:
forwarder1:
type: tosca.capabilities.nfv.Forwarder
forwarder2:
type: tosca.capabilities.nfv.Forwarder
topology_template:
substitution_mappings:
node_type: tosca.nodes.nfv.VNF1
requirements:
virtualLink1: [CP11, virtualLink]
virtualLink2: [CP14, virtualLink]
capabilities:
forwarder1: [CP11, forwarder]
forwarder2: [CP14, forwarder]
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.3.5-x86_64-disk
flavor: m1.tiny
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
CP11:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
anti_spoofing_protection: false
requirements:
- virtualBinding:
node: VDU1
VDU2:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.3.5-x86_64-disk
flavor: m1.medium
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
CP13:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU2
CP14:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
anti_spoofing_protection: false
requirements:
- virtualBinding:
node: VDU2
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: net0
vendor: Tacker
VNF2 sample template for nsd named vnfd2.yaml:
::
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Demo example
node_types:
tosca.nodes.nfv.VNF2:
capabilities:
forwarder1:
type: tosca.capabilities.nfv.Forwarder
topology_template:
substitution_mappings:
node_type: tosca.nodes.nfv.VNF2
capabilities:
forwarder1: [CP21, forwarder]
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.3.5-x86_64-disk
flavor: m1.tiny
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
CP21:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VDU2:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.3.5-x86_64-disk
flavor: m1.medium
availability_zone: nova
mgmt_driver: noop
CP22:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL2
- virtualBinding:
node: VDU2
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: net0
vendor: Tacker
=========
.. [#f1] https://www.etsi.org/deliver/etsi_gs/NFV-IFA/001_099/014/02.01.01_60/gs_NFV-IFA014v020101p.pdf
.. [#f2] https://wiki.onap.org/display/DW/ONAP+Release+1+modeling+specification?preview=%2F13599755%2F13599839%2FNSD+Specification.pdf
.. [#f3] https://github.com/openstack/tacker/blob/master/tacker/nfvo/drivers/workflow/workflow_generator.py
.. [#f4] https://docs.openstack.org/tacker/latest/install/deploy_openwrt.html
.. [#f5] https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide.html
.. [#f6] https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide_advanced.html
.. [#f7] https://github.com/openstack/tacker/blob/master/samples/tosca-templates/nsd/sample-tosca-vnfd1.yaml
.. [#f8] https://github.com/openstack/tacker/blob/master/samples/tosca-templates/nsd/sample-tosca-vnfd2.yaml