From e243c1f9c40c5acee4fb89d99fae05f7a46768be Mon Sep 17 00:00:00 2001 From: zhipengh Date: Mon, 27 Feb 2017 04:26:21 -0500 Subject: Release D doc update Change-Id: I6b2749e5692cf6af2615ff5aff81ff060a1a25d3 Signed-off-by: zhipengh --- .../design/examples/TOSCA_nfv_definition_1_0.yaml | 627 +++++++++++++++++++++ 1 file changed, 627 insertions(+) create mode 100644 docs/developer/design/examples/TOSCA_nfv_definition_1_0.yaml (limited to 'docs/developer/design/examples/TOSCA_nfv_definition_1_0.yaml') diff --git a/docs/developer/design/examples/TOSCA_nfv_definition_1_0.yaml b/docs/developer/design/examples/TOSCA_nfv_definition_1_0.yaml new file mode 100644 index 0000000..c535144 --- /dev/null +++ b/docs/developer/design/examples/TOSCA_nfv_definition_1_0.yaml @@ -0,0 +1,627 @@ +# 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. + +########################################################################## +# The content of this file reflects TOSCA NFV Profile in YAML version +# 1.0.0, which is derived from TOSCA Simple Profile. It describes the +# definition for nfv TOSCA types including Node Type, +# Relationship Type, Capability Type and Interfaces. +########################################################################## +tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 + +########################################################################## +# Node Type. +# A Node Type is a reusable entity that defines the type of one or more +# Node Templates. +########################################################################## + +tosca.nodes.nfv.VNF: + derived_from: tosca.nodes.Root + properties: + id: + type: string + description: ID of this VNF + vendor: + type: string + description: name of the vendor who generate this VNF + version: + type: version + description: version of the software for this VNF + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + node: tosca.nodes.nfv.VL + +tosca.nodes.nfv.VDU: + derived_from: tosca.nodes.Compute + properties: + id: + type: string + required: true + description: > + A unique identifier of this VDU within the scope + of the VNFD, including version functional + description and other identification information. + This will be used to refer to VDU when defining + relationships between them. + capabilities: + high_availability: + type: tosca.capabilities.nfv.HA + virtualbinding: + type: tosca.capabilities.nfv.VirtualBindable + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + requirements: + - high_availability: + capability: tosca.capabilities.nfv.HA + relationship: tosca.relationships.nfv.HA + node: tosca.nodes.nfv.VDU + occurrences: [ 0, 1 ] + +tosca.nodes.nfv.CP: + derived_from: tosca.nodes.network.Port + description: > + The NFV CP node represents a logical connection point + entity as defined by ETSI GS NFV-MAN + properties: + type: + type: string + required: false + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + relationship: tosca.relationships.nfv.VirtualLinksTo + node: tosca.nodes.nfv.VL + - virtualBinding: + capability: tosca.capabilities.nfv.VirtualBindable + relationship: tosca.relationships.nfv.VirtualBindsTo + node: tosca.nodes.nfv.VDU + +tosca.nodes.nfv.VL: + derived_from: tosca.nodes.network.Network + properties: + vendor: + type: string + required: true + description: name of the vendor who generate this VL + capabilities: + virtual_linkable: + type: tosca.capabilities.nfv.VirtualLinkable + +tosca.nodes.nfv.VL.ELine: + derived_from: tosca.nodes.nfv.VL + capabilities: + virtual_linkable: + occurrences: 2 + +tosca.nodes.nfv.VL.ELAN: + derived_from: tosca.nodes.nfv.VL + +tosca.nodes.nfv.VL.ETree: + derived_from: tosca.nodes.nfv.VL + +tosca.nodes.nfv.FP: + derived_from: tosca.nodes.Root + properties: + policy: + type: string + required: false + description: name of the vendor who generate this VL + requirements: + - forwarder: + capability: tosca.capabilities.nfv.Forwarder + relationship: tosca.relationships.nfv.ForwardsTo + +########################################################################## +# Relationship Type. +# A Relationship Type is a reusable entity that defines the type of one +# or more relationships between Node Types or Node Templates. +########################################################################## + +tosca.relationships.nfv.VirtualLinksTo: + derived_from: tosca.relationships.network.LinksTo + valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ] + +tosca.relationships.nfv.VirtualBindsTo: + derived_from: tosca.relationships.network.BindsTo + valid_target_types: [ tosca.capabilities.nfv.VirtualBindable ] + +tosca.relationships.nfv.HA: + derived_from: tosca.relationships.Root + valid_target_types: [ tosca.capabilities.nfv.HA ] + +tosca.relationships.nfv.Monitor: + derived_from: tosca.relationships.ConnectsTo + valid_target_types: [ tosca.capabilities.nfv.Metric ] + +tosca.relationships.nfv.ForwardsTo: + derived_from: tosca.relationships.root + valid_target_types: [ tosca.capabilities.nfv.Forwarder] + +########################################################################## +# Capability Type. +# A Capability Type is a reusable entity that describes a kind of +# capability that a Node Type can declare to expose. +########################################################################## + +tosca.capabilities.nfv.VirtualLinkable: + derived_from: tosca.capabilities.network.Linkable + +tosca.capabilities.nfv.VirtualBindable: + derived_from: tosca.capabilities.network.Bindable + +tosca.capabilities.nfv.HA: + derived_from: tosca.capabilities.Root + valid_source_types: [ tosca.nodes.nfv.VDU ] + +tosca.capabilities.nfv.HA.ActiveActive: + derived_from: tosca.capabilities.nfv.HA + +tosca.capabilities.nfv.HA.ActivePassive: + derived_from: tosca.capabilities.nfv.HA + +tosca.capabilities.nfv.Metric: + derived_from: tosca.capabilities.Root + +tosca.capabilities.nfv.Forwarder: + derived_from: tosca.capabilities.Root + + + +tosca.capabilities.nfv.CPU_extension: + derived_from: tosca.capabilities.Root + properties: + cpu_instruction_set_extension: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + Instruction sets are often enhanced with + instruction set extensions. This element + represents instruction set extensions that the + VDU has been developed, optimized or tested with + cpu_model: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The CPU model for which the VDU has been + developed, compiled with CPU model specific + optimisations, optimized or validated on. + cpu_model_specification_binding: + type: string + required: false + description: > + VDUs may be developed, compiled, optimized + or validated on particular CPU models. Some + deployments may wish to permit the VDU to + be deployed on a platform with the specified + CPU only, or with an alternative CPU with the + same architecture, instruction set, and if + specified, instruction set extensions, or with a + CPU of equivalent or greater capability. + cpu_min_clock_speed: + type: string + required: false + description: > + The minimum CPU clock speed may be one of + the elements that the development and + validation of the VDU has been considered + with. This may be in conjunction with some of + the other CPU elements such as CPU Model. + Requiring a minimum clock speed may be part + of a deployment requirement necessary to + help ensure particular performance or timing + related characteristics are met in the + deployment. + cpu_core_reservation: + type: string + required: false + description: > + The number of CPU cores allocated to the + VDU. This may be necessary to help ensure + particular performance or timing related + characteristics are met in the deployment. + cpu_simultaneous_multi_threading_hw_thread_specification: + type: string + required: false + description: > + The use of Simultaneous Multi-Threading HW + is an efficient way to increase the compute + capacity of a platform. SMT HW threads share + some CPU core resources. In some VDU + implementations, it may be necessary to very + explicitly control the HW thread allocation on a + platform. This could be to help ensure locality + in data caches or as a mechanism to enhance + determinism. + cpu_core_oversubscription_policy: + type: string + required: false + description: > + The VDU may co-exist on a platform with + multiple VDUs or VMs and as such will be + sharing CPU core resources available in the + platform. It may be necessary to specify the + CPU core oversubscription policy in terms of + virtual cores to physical cores/threads on the + platform. This policy could be based on + required VDU deployment characteristics such + as high performance, low latency, and /or + deterministic behaviour. + cpu_core_and_hw_thread_allocation_topology_policy: + type: string + required: false + description: > + The VDU may be designed to use a specific + mapping of virtual CPUs to HW threads or + cores with a specific allocation topology in + order to ensure locality in data caches and + maximize performance. The VDU will not + specify which physical resources to use, but + may specify if virtual CPUs shall be coupled + together as HW threads belonging to the same + core, or as belonging to the same processor. + cpu_last_level_cache_size: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 KB + description: > + The size of the last level cache may impact the + performance of the VDU, particularly for cache + intensive workloads. + cpu_direct_io_access_to_cache: + type: string + required: false + description: > + The ability of an I/O device to have direct + access to the CPU cache enables + considerable memory access savings and for + I/O intensive workloads can offer significant + performance benefits. + cpu_translation_look_aside_buffer_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The Translation Look-aside Buffer (TLB) is a + cache for address translation typically used by + a hardware based memory management units. + The Input/Output TLB (IOTLB) is a cache for + address translation related to remapping + hardware. The availability of a TLB and an + IOTLB can significantly improve the + performance of a virtual machine. + A number of parameters of the TLBs impact + the performance potential. These include: + 1 TLB Size. + 2 TLB Large Page Support. + 3 IOTLB Size. + 4 IOTLB Large Page Support. + cpu_hot_add: + type: boolean + required: false + description: > + Hot add CPU is the ability to dynamically add + CPUs to a running system. The new CPU can + immediately replace a failing CPU via + migration or be brought on-line later. + cpu_support_accelerator: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + This capability refers to support by the CPU + and associated chipsets of a data processing + accelerator framework, together with its + libraries and drivers. + +tosca.capabilities.nfv.Memory_extension: + derived_from: tosca.capabilities.Root + properties: + memory_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of memory related parameters that can have a + significant impact on the performance and/or reliability of the VDU. + These include: + • Memory Type. + • Memory Speed + • Number of memory channels. + • Size of available memory. + • Reliability characteristics such as Memory Error Correction + codes. + • Memory oversubscription policy. + • Memory bandwidth required per VDU. + • Number of large pages required per VDU + • Non-Uniform Memory Architecture (NUMA) Allocation Policy, + i.e. in NUMA architecture how you specify memory allocation + that is cognisant of the relevant process/core allocation. This + applies also to allocation of huge pages. + memory_hot_add: + type: boolean + required: false + description: > + Hot add memory is the ability to add physical memory while the system + is running. Added memory can immediately replace failing memory via + migration or be brought on-line later. + +tosca.capabilities.nfv.Hypervisors: + derived_from: tosca.capabilities.Root + properties: + hypervisors: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of hypervisor related parameters that can have a + significant impact on the deployment and performance of the VDU. + These include: + • Hypervisor type + • Hypervisor version as a VDU may be validated with a particular + version. + • Hypervisor Address Translation support parameters including: + o Second Level Address Translation. + o Second Level Address Translation with Large page + support. + o Second Level Address Translation for I/O. + o Second Level Address Translation for I/O with Large page. + support. Where "Large" is considered to be 1 GB or + greater. + o Support for interrupt remapping, i.e. supporting the IOMMU + in the hypervisor. + o Support of data processing acceleration libraries in the + hypervisor, i.e. for acceleration libraries which require + hypervisor support for high performance. + +tosca.capabilities.nfv.PCIe: + derived_from: tosca.capabilities.Root + properties: + platform_pcie_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of PCIe related parameters that can + have a significant impact on the deployment and + performance of the VDU. These include: + • PCIe generational capabilities. + • PCIe bandwidth. + • PCIe Device Pass-through. + • PCIe SR-IOV as the VDU may require that an SR- + IOV virtual vunction from the specified PCIe + device can be allocated to the VM. + • PCIe Device Assignment Affinity. The VDU may + require for performance reasons the ability to + allocate a partitionable PCIe Device capability + such as a NIC port, an entire NIC or a NIC virtual + function to the VDU while also ensuring that the + selected device is locally connected to the same + processor. + platform_pcie_parameter: + type: string + required: false + description: > + Detecting and reporting correctable and un-correctable + (fatal and non-fatal) PCIe errors to software for error + handling and remediation. + platform_acceleration_device: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or + tested with an acceleration device such as a crypto + accelerator that may typically be accessed over a PCIe + bus. + +tosca.capabilities.nfv.network.Interfaces: + derived_from: tosca.capabilities.Root + properties: + network_interface_card_capability: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or + tested with certain NIC capabilities to benefit items + such as performance or scalability. These include: + • TCP Large Segmentation Offload (LSO) for + offload the segmentation of large TCP + messages into MTU sized packets from the + CPU to the NIC. + • Large Receive Offload (LRO), i.e. the + inverse of LSO by coalescing incoming + TCP/IP packets into larger segments for + processing in the CPU. + • Checksum Offload. + • Receive Side Scaling (RSS), for packet + distribution between cores. + • Flow Director, for more fine grained (than + RSS) packet distribution between cores. + • Mirroring of packets between interfaces. + • Availability of Independent Rx/Tx queues for + VM so that queue pairs in the NIC can be + allocated to the VMs. + • Jumbo Frame support. + • VLAN tag stripping. + • RDMA support. + • SR-IOV support. + • Data processing acceleration software + library support, e.g. DPDK ® - see note. + network_interface_bandwidth: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The network speed/bandwidth to be guaranteed + per requested NIC. + data_processing_acceleration_library: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + Name and version of the data processing + acceleration library used. Orchestration can match + any NIC that is known to be compatible with the + specified library + +tosca.capabilities.nfv.network.Virtual_switches: + derived_from: tosca.capabilities.Root + properties: + vswitch_capability: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or tested with a + particular vSwitch and may require specifying the vSwitch type, version + and key features such as overlay tunnel termination support. + +tosca.capabilities.nfv.Storage: + derived_from: tosca.capabilities.Root + properties: + storage_requirement: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 MB + description: > + Required storage characteristics (e.g. size), including Key Quality + Indicators (KQIs) for performance and reliability/availability. + rdma_support_bandwitdh: + type: integer + required: false + constraints: + - greater_or_equal: 0 + description: > + The VDU may have been developed, optimized or tested with a + storage supporting RDMA over a given bandwidth. + + + +########################################################################## +# Group Type. +# Defined within the TOSCA nfv Simple Profile specification. +########################################################################## +tosca.groups.nfv.VNFFG: + derived_from: tosca.groups.Root + properties: + vendor: + type: string + required: true + description: name of the vendor who generate this VNFFG + version: + type: string + required: true + description: version of this VNFFG + number_of_endpoints: + type: integer + required: true + description: count of the external endpoints included in this VNFFG + dependent_virtual_link: + type: list + description: Reference to a VLD used in this Forwarding Graph + required: true + entry_schema: + type: string + connection_point: + type: list + description: Reference to Connection Points forming the VNFFG + required: true + entry_schema: + type: string + constituent_vnfs: + type: list + description: Reference to a list of VNFD used in this VNF Forwarding Graph + required: true + entry_schema: + type: string + targets: + type: list + required: false + description: list of Network Forwarding Path within the VNFFG + entry_schema: + type: string + requirements: + - forwarder: + capability: tosca.capabilities.nfv.Forwarder + relationship: tosca.relationships.nfv.ForwardsTo + +#data_types: +########################################################################## +# Data Type. To be continue +# A Datatype is a complex data type declaration which contains other +# complex or simple data types. +# BWT: will be added future. +########################################################################## +#tosca.datatypes.network.XX: +# properties: +# network_name: +# type: string +# network_id: +# type: string +# addresses: +# type: list +# entry_schema: +# type: string + +#artifact_types: +########################################################################## +# Artifact Type.To be continue +# An Artifact Type is a reusable entity that defines the type of one or more +# files which Node Types or Node Templates can have dependent relationships +# and used during operations such as during installation or deployment. +# BWT: will be added future. +########################################################################## +#tosca.artifacts.File.XXX: +# derived_from: tosca.artifacts.Root -- cgit 1.2.3-korg