1 # Licensed under the Apache License, Version 2.0 (the "License"); you may
2 # not use this file except in compliance with the License. You may obtain
3 # a copy of the License at
5 # http://www.apache.org/licenses/LICENSE-2.0
7 # Unless required by applicable law or agreed to in writing, software
8 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10 # License for the specific language governing permissions and limitations
13 ##########################################################################
14 # The content of this file reflects TOSCA NFV Profile in YAML version
15 # 1.0.0, which is derived from TOSCA Simple Profile. It describes the
16 # definition for nfv TOSCA types including Node Type,
17 # Relationship Type, Capability Type and Interfaces.
18 ##########################################################################
19 tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
21 ##########################################################################
23 # A Node Type is a reusable entity that defines the type of one or more
25 ##########################################################################
28 derived_from: tosca.nodes.Root
32 description: ID of this VNF
35 description: name of the vendor who generate this VNF
38 description: version of the software for this VNF
41 capability: tosca.capabilities.nfv.VirtualLinkable
42 relationship: tosca.relationships.nfv.VirtualLinksTo
43 node: tosca.nodes.nfv.VL
46 derived_from: tosca.nodes.Compute
52 A unique identifier of this VDU within the scope
53 of the VNFD, including version functional
54 description and other identification information.
55 This will be used to refer to VDU when defining
56 relationships between them.
59 type: tosca.capabilities.nfv.HA
61 type: tosca.capabilities.nfv.VirtualBindable
63 type: tosca.capabilities.nfv.Metric
66 capability: tosca.capabilities.nfv.HA
67 relationship: tosca.relationships.nfv.HA
68 node: tosca.nodes.nfv.VDU
72 derived_from: tosca.nodes.network.Port
74 The NFV CP node represents a logical connection point
75 entity as defined by ETSI GS NFV-MAN
82 capability: tosca.capabilities.nfv.VirtualLinkable
83 relationship: tosca.relationships.nfv.VirtualLinksTo
84 node: tosca.nodes.nfv.VL
86 capability: tosca.capabilities.nfv.VirtualBindable
87 relationship: tosca.relationships.nfv.VirtualBindsTo
88 node: tosca.nodes.nfv.VDU
91 derived_from: tosca.nodes.network.Network
96 description: name of the vendor who generate this VL
99 type: tosca.capabilities.nfv.VirtualLinkable
101 tosca.nodes.nfv.VL.ELine:
102 derived_from: tosca.nodes.nfv.VL
107 tosca.nodes.nfv.VL.ELAN:
108 derived_from: tosca.nodes.nfv.VL
110 tosca.nodes.nfv.VL.ETree:
111 derived_from: tosca.nodes.nfv.VL
114 derived_from: tosca.nodes.Root
119 description: name of the vendor who generate this VL
122 capability: tosca.capabilities.nfv.Forwarder
123 relationship: tosca.relationships.nfv.ForwardsTo
125 ##########################################################################
127 # A Relationship Type is a reusable entity that defines the type of one
128 # or more relationships between Node Types or Node Templates.
129 ##########################################################################
131 tosca.relationships.nfv.VirtualLinksTo:
132 derived_from: tosca.relationships.network.LinksTo
133 valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
135 tosca.relationships.nfv.VirtualBindsTo:
136 derived_from: tosca.relationships.network.BindsTo
137 valid_target_types: [ tosca.capabilities.nfv.VirtualBindable ]
139 tosca.relationships.nfv.HA:
140 derived_from: tosca.relationships.Root
141 valid_target_types: [ tosca.capabilities.nfv.HA ]
143 tosca.relationships.nfv.Monitor:
144 derived_from: tosca.relationships.ConnectsTo
145 valid_target_types: [ tosca.capabilities.nfv.Metric ]
147 tosca.relationships.nfv.ForwardsTo:
148 derived_from: tosca.relationships.root
149 valid_target_types: [ tosca.capabilities.nfv.Forwarder]
151 ##########################################################################
153 # A Capability Type is a reusable entity that describes a kind of
154 # capability that a Node Type can declare to expose.
155 ##########################################################################
157 tosca.capabilities.nfv.VirtualLinkable:
158 derived_from: tosca.capabilities.network.Linkable
160 tosca.capabilities.nfv.VirtualBindable:
161 derived_from: tosca.capabilities.network.Bindable
163 tosca.capabilities.nfv.HA:
164 derived_from: tosca.capabilities.Root
165 valid_source_types: [ tosca.nodes.nfv.VDU ]
167 tosca.capabilities.nfv.HA.ActiveActive:
168 derived_from: tosca.capabilities.nfv.HA
170 tosca.capabilities.nfv.HA.ActivePassive:
171 derived_from: tosca.capabilities.nfv.HA
173 tosca.capabilities.nfv.Metric:
174 derived_from: tosca.capabilities.Root
176 tosca.capabilities.nfv.Forwarder:
177 derived_from: tosca.capabilities.Root
181 tosca.capabilities.nfv.CPU_extension:
182 derived_from: tosca.capabilities.Root
184 cpu_instruction_set_extension:
192 Instruction sets are often enhanced with
193 instruction set extensions. This element
194 represents instruction set extensions that the
195 VDU has been developed, optimized or tested with
204 The CPU model for which the VDU has been
205 developed, compiled with CPU model specific
206 optimisations, optimized or validated on.
207 cpu_model_specification_binding:
211 VDUs may be developed, compiled, optimized
212 or validated on particular CPU models. Some
213 deployments may wish to permit the VDU to
214 be deployed on a platform with the specified
215 CPU only, or with an alternative CPU with the
216 same architecture, instruction set, and if
217 specified, instruction set extensions, or with a
218 CPU of equivalent or greater capability.
223 The minimum CPU clock speed may be one of
224 the elements that the development and
225 validation of the VDU has been considered
226 with. This may be in conjunction with some of
227 the other CPU elements such as CPU Model.
228 Requiring a minimum clock speed may be part
229 of a deployment requirement necessary to
230 help ensure particular performance or timing
231 related characteristics are met in the
233 cpu_core_reservation:
237 The number of CPU cores allocated to the
238 VDU. This may be necessary to help ensure
239 particular performance or timing related
240 characteristics are met in the deployment.
241 cpu_simultaneous_multi_threading_hw_thread_specification:
245 The use of Simultaneous Multi-Threading HW
246 is an efficient way to increase the compute
247 capacity of a platform. SMT HW threads share
248 some CPU core resources. In some VDU
249 implementations, it may be necessary to very
250 explicitly control the HW thread allocation on a
251 platform. This could be to help ensure locality
252 in data caches or as a mechanism to enhance
254 cpu_core_oversubscription_policy:
258 The VDU may co-exist on a platform with
259 multiple VDUs or VMs and as such will be
260 sharing CPU core resources available in the
261 platform. It may be necessary to specify the
262 CPU core oversubscription policy in terms of
263 virtual cores to physical cores/threads on the
264 platform. This policy could be based on
265 required VDU deployment characteristics such
266 as high performance, low latency, and /or
267 deterministic behaviour.
268 cpu_core_and_hw_thread_allocation_topology_policy:
272 The VDU may be designed to use a specific
273 mapping of virtual CPUs to HW threads or
274 cores with a specific allocation topology in
275 order to ensure locality in data caches and
276 maximize performance. The VDU will not
277 specify which physical resources to use, but
278 may specify if virtual CPUs shall be coupled
279 together as HW threads belonging to the same
280 core, or as belonging to the same processor.
281 cpu_last_level_cache_size:
282 type: scalar-unit.size
285 - greater_or_equal: 0 KB
287 The size of the last level cache may impact the
288 performance of the VDU, particularly for cache
290 cpu_direct_io_access_to_cache:
294 The ability of an I/O device to have direct
295 access to the CPU cache enables
296 considerable memory access savings and for
297 I/O intensive workloads can offer significant
298 performance benefits.
299 cpu_translation_look_aside_buffer_parameter:
307 The Translation Look-aside Buffer (TLB) is a
308 cache for address translation typically used by
309 a hardware based memory management units.
310 The Input/Output TLB (IOTLB) is a cache for
311 address translation related to remapping
312 hardware. The availability of a TLB and an
313 IOTLB can significantly improve the
314 performance of a virtual machine.
315 A number of parameters of the TLBs impact
316 the performance potential. These include:
318 2 TLB Large Page Support.
320 4 IOTLB Large Page Support.
325 Hot add CPU is the ability to dynamically add
326 CPUs to a running system. The new CPU can
327 immediately replace a failing CPU via
328 migration or be brought on-line later.
329 cpu_support_accelerator:
337 This capability refers to support by the CPU
338 and associated chipsets of a data processing
339 accelerator framework, together with its
340 libraries and drivers.
342 tosca.capabilities.nfv.Memory_extension:
343 derived_from: tosca.capabilities.Root
353 There are a number of memory related parameters that can have a
354 significant impact on the performance and/or reliability of the VDU.
358 • Number of memory channels.
359 • Size of available memory.
360 • Reliability characteristics such as Memory Error Correction
362 • Memory oversubscription policy.
363 • Memory bandwidth required per VDU.
364 • Number of large pages required per VDU
365 • Non-Uniform Memory Architecture (NUMA) Allocation Policy,
366 i.e. in NUMA architecture how you specify memory allocation
367 that is cognisant of the relevant process/core allocation. This
368 applies also to allocation of huge pages.
373 Hot add memory is the ability to add physical memory while the system
374 is running. Added memory can immediately replace failing memory via
375 migration or be brought on-line later.
377 tosca.capabilities.nfv.Hypervisors:
378 derived_from: tosca.capabilities.Root
388 There are a number of hypervisor related parameters that can have a
389 significant impact on the deployment and performance of the VDU.
392 • Hypervisor version as a VDU may be validated with a particular
394 • Hypervisor Address Translation support parameters including:
395 o Second Level Address Translation.
396 o Second Level Address Translation with Large page
398 o Second Level Address Translation for I/O.
399 o Second Level Address Translation for I/O with Large page.
400 support. Where "Large" is considered to be 1 GB or
402 o Support for interrupt remapping, i.e. supporting the IOMMU
404 o Support of data processing acceleration libraries in the
405 hypervisor, i.e. for acceleration libraries which require
406 hypervisor support for high performance.
408 tosca.capabilities.nfv.PCIe:
409 derived_from: tosca.capabilities.Root
411 platform_pcie_parameter:
419 There are a number of PCIe related parameters that can
420 have a significant impact on the deployment and
421 performance of the VDU. These include:
422 • PCIe generational capabilities.
424 • PCIe Device Pass-through.
425 • PCIe SR-IOV as the VDU may require that an SR-
426 IOV virtual vunction from the specified PCIe
427 device can be allocated to the VM.
428 • PCIe Device Assignment Affinity. The VDU may
429 require for performance reasons the ability to
430 allocate a partitionable PCIe Device capability
431 such as a NIC port, an entire NIC or a NIC virtual
432 function to the VDU while also ensuring that the
433 selected device is locally connected to the same
435 platform_pcie_parameter:
439 Detecting and reporting correctable and un-correctable
440 (fatal and non-fatal) PCIe errors to software for error
441 handling and remediation.
442 platform_acceleration_device:
450 The VDU may have been developed, optimized or
451 tested with an acceleration device such as a crypto
452 accelerator that may typically be accessed over a PCIe
455 tosca.capabilities.nfv.network.Interfaces:
456 derived_from: tosca.capabilities.Root
458 network_interface_card_capability:
466 The VDU may have been developed, optimized or
467 tested with certain NIC capabilities to benefit items
468 such as performance or scalability. These include:
469 • TCP Large Segmentation Offload (LSO) for
470 offload the segmentation of large TCP
471 messages into MTU sized packets from the
473 • Large Receive Offload (LRO), i.e. the
474 inverse of LSO by coalescing incoming
475 TCP/IP packets into larger segments for
476 processing in the CPU.
478 • Receive Side Scaling (RSS), for packet
479 distribution between cores.
480 • Flow Director, for more fine grained (than
481 RSS) packet distribution between cores.
482 • Mirroring of packets between interfaces.
483 • Availability of Independent Rx/Tx queues for
484 VM so that queue pairs in the NIC can be
485 allocated to the VMs.
486 • Jumbo Frame support.
487 • VLAN tag stripping.
490 • Data processing acceleration software
491 library support, e.g. DPDK ® - see note.
492 network_interface_bandwidth:
500 The network speed/bandwidth to be guaranteed
502 data_processing_acceleration_library:
510 Name and version of the data processing
511 acceleration library used. Orchestration can match
512 any NIC that is known to be compatible with the
515 tosca.capabilities.nfv.network.Virtual_switches:
516 derived_from: tosca.capabilities.Root
526 The VDU may have been developed, optimized or tested with a
527 particular vSwitch and may require specifying the vSwitch type, version
528 and key features such as overlay tunnel termination support.
530 tosca.capabilities.nfv.Storage:
531 derived_from: tosca.capabilities.Root
534 type: scalar-unit.size
537 - greater_or_equal: 0 MB
539 Required storage characteristics (e.g. size), including Key Quality
540 Indicators (KQIs) for performance and reliability/availability.
541 rdma_support_bandwitdh:
545 - greater_or_equal: 0
547 The VDU may have been developed, optimized or tested with a
548 storage supporting RDMA over a given bandwidth.
552 ##########################################################################
554 # Defined within the TOSCA nfv Simple Profile specification.
555 ##########################################################################
556 tosca.groups.nfv.VNFFG:
557 derived_from: tosca.groups.Root
562 description: name of the vendor who generate this VNFFG
566 description: version of this VNFFG
570 description: count of the external endpoints included in this VNFFG
571 dependent_virtual_link:
573 description: Reference to a VLD used in this Forwarding Graph
579 description: Reference to Connection Points forming the VNFFG
585 description: Reference to a list of VNFD used in this VNF Forwarding Graph
592 description: list of Network Forwarding Path within the VNFFG
597 capability: tosca.capabilities.nfv.Forwarder
598 relationship: tosca.relationships.nfv.ForwardsTo
601 ##########################################################################
602 # Data Type. To be continue
603 # A Datatype is a complex data type declaration which contains other
604 # complex or simple data types.
605 # BWT: will be added future.
606 ##########################################################################
607 #tosca.datatypes.network.XX:
619 ##########################################################################
620 # Artifact Type.To be continue
621 # An Artifact Type is a reusable entity that defines the type of one or more
622 # files which Node Types or Node Templates can have dependent relationships
623 # and used during operations such as during installation or deployment.
624 # BWT: will be added future.
625 ##########################################################################
626 #tosca.artifacts.File.XXX:
627 # derived_from: tosca.artifacts.Root