Support python3 uploaded to pypi websit
[parser.git] / docs / developer / design / examples / TOSCA_nfv_definition_1_0.yaml
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
4 #
5 #      http://www.apache.org/licenses/LICENSE-2.0
6 #
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
11 # under the License.
12
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
20
21 ##########################################################################
22 # Node Type.
23 # A Node Type is a reusable entity that defines the type of one or more
24 # Node Templates.
25 ##########################################################################
26
27 tosca.nodes.nfv.VNF:
28   derived_from: tosca.nodes.Root
29   properties:
30     id:
31       type: string
32       description: ID of this VNF
33     vendor:
34       type: string
35       description: name of the vendor who generate this VNF
36     version:
37       type: version
38       description: version of the software for this VNF
39   requirements:
40     - virtualLink:
41         capability: tosca.capabilities.nfv.VirtualLinkable
42         relationship: tosca.relationships.nfv.VirtualLinksTo
43         node: tosca.nodes.nfv.VL
44
45 tosca.nodes.nfv.VDU:
46   derived_from: tosca.nodes.Compute
47   properties:
48     id:
49       type: string
50       required: true
51       description: >
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.
57   capabilities:
58     high_availability:
59       type: tosca.capabilities.nfv.HA
60     virtualbinding:
61       type: tosca.capabilities.nfv.VirtualBindable
62     monitoring_parameter:
63       type: tosca.capabilities.nfv.Metric
64   requirements:
65     - high_availability:
66         capability: tosca.capabilities.nfv.HA
67         relationship: tosca.relationships.nfv.HA
68         node: tosca.nodes.nfv.VDU
69         occurrences: [ 0, 1 ]
70
71 tosca.nodes.nfv.CP:
72   derived_from: tosca.nodes.network.Port
73   description: >
74     The NFV CP node represents a logical connection point
75     entity as defined by ETSI GS NFV-MAN
76   properties:
77     type:
78       type: string
79       required: false
80   requirements:
81     - virtualLink:
82         capability: tosca.capabilities.nfv.VirtualLinkable
83         relationship: tosca.relationships.nfv.VirtualLinksTo
84         node: tosca.nodes.nfv.VL
85     - virtualBinding:
86         capability: tosca.capabilities.nfv.VirtualBindable
87         relationship: tosca.relationships.nfv.VirtualBindsTo
88         node: tosca.nodes.nfv.VDU
89
90 tosca.nodes.nfv.VL:
91   derived_from: tosca.nodes.network.Network
92   properties:
93     vendor:
94       type: string
95       required: true
96       description: name of the vendor who generate this VL
97   capabilities:
98     virtual_linkable:
99       type: tosca.capabilities.nfv.VirtualLinkable
100
101 tosca.nodes.nfv.VL.ELine:
102   derived_from: tosca.nodes.nfv.VL
103   capabilities:
104     virtual_linkable:
105       occurrences: 2
106
107 tosca.nodes.nfv.VL.ELAN:
108   derived_from: tosca.nodes.nfv.VL
109
110 tosca.nodes.nfv.VL.ETree:
111   derived_from: tosca.nodes.nfv.VL
112
113 tosca.nodes.nfv.FP:
114   derived_from: tosca.nodes.Root
115   properties:
116     policy:
117       type: string
118       required: false
119       description: name of the vendor who generate this VL
120   requirements:
121     - forwarder:
122         capability: tosca.capabilities.nfv.Forwarder
123         relationship: tosca.relationships.nfv.ForwardsTo
124
125 ##########################################################################
126 # Relationship Type.
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 ##########################################################################
130
131 tosca.relationships.nfv.VirtualLinksTo:
132   derived_from: tosca.relationships.network.LinksTo
133   valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
134
135 tosca.relationships.nfv.VirtualBindsTo:
136   derived_from: tosca.relationships.network.BindsTo
137   valid_target_types: [ tosca.capabilities.nfv.VirtualBindable ]
138
139 tosca.relationships.nfv.HA:
140   derived_from: tosca.relationships.Root
141   valid_target_types: [ tosca.capabilities.nfv.HA ]
142
143 tosca.relationships.nfv.Monitor:
144   derived_from: tosca.relationships.ConnectsTo
145   valid_target_types: [ tosca.capabilities.nfv.Metric ]
146
147 tosca.relationships.nfv.ForwardsTo:
148   derived_from: tosca.relationships.root
149   valid_target_types: [ tosca.capabilities.nfv.Forwarder]
150
151 ##########################################################################
152 # Capability Type.
153 # A Capability Type is a reusable entity that describes a kind of
154 # capability that a Node Type can declare to expose.
155 ##########################################################################
156
157 tosca.capabilities.nfv.VirtualLinkable:
158   derived_from: tosca.capabilities.network.Linkable
159
160 tosca.capabilities.nfv.VirtualBindable:
161   derived_from: tosca.capabilities.network.Bindable
162
163 tosca.capabilities.nfv.HA:
164   derived_from: tosca.capabilities.Root
165   valid_source_types: [ tosca.nodes.nfv.VDU ]
166
167 tosca.capabilities.nfv.HA.ActiveActive:
168   derived_from: tosca.capabilities.nfv.HA
169
170 tosca.capabilities.nfv.HA.ActivePassive:
171   derived_from: tosca.capabilities.nfv.HA
172
173 tosca.capabilities.nfv.Metric:
174   derived_from: tosca.capabilities.Root
175
176 tosca.capabilities.nfv.Forwarder:
177   derived_from: tosca.capabilities.Root
178
179
180
181 tosca.capabilities.nfv.CPU_extension:
182   derived_from: tosca.capabilities.Root
183   properties:
184     cpu_instruction_set_extension:
185       type: list
186       required: false
187       entry_schema:
188         type: string
189       constraints:
190         - min_length: 1
191       description: >
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
196     cpu_model:
197       type: list
198       required: false
199       entry_schema:
200         type: string
201       constraints:
202         - min_length: 1
203       description: >
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:
208       type: string
209       required: false
210       description: >
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.
219     cpu_min_clock_speed:
220       type: string
221       required: false
222       description: >
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
232         deployment.
233     cpu_core_reservation:
234       type: string
235       required: false
236       description: >
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:
242       type: string
243       required: false
244       description: >
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
253         determinism.
254     cpu_core_oversubscription_policy:
255       type: string
256       required: false
257       description: >
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:
269       type: string
270       required: false
271       description: >
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
283       required: false
284       constraints:
285         - greater_or_equal: 0 KB
286       description: >
287         The size of the last level cache may impact the
288         performance of the VDU, particularly for cache
289         intensive workloads.
290     cpu_direct_io_access_to_cache:
291       type: string
292       required: false
293       description: >
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:
300       type: list
301       required: false
302       entry_schema:
303         type: string
304       constraints:
305         - min_length: 1
306       description: >
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:
317         1  TLB Size.
318         2  TLB Large Page Support.
319         3  IOTLB Size.
320         4  IOTLB Large Page Support.
321     cpu_hot_add:
322       type: boolean
323       required: false
324       description: >
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:
330       type: list
331       required: false
332       entry_schema:
333         type: string
334       constraints:
335         - min_length: 1
336       description: >
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.
341
342 tosca.capabilities.nfv.Memory_extension:
343   derived_from: tosca.capabilities.Root
344   properties:
345     memory_parameter:
346       type: list
347       required: false
348       entry_schema:
349         type: string
350       constraints:
351         - min_length: 1
352       description: >
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.
355         These include:
356         •  Memory Type.
357         •  Memory Speed
358         •  Number of memory channels.
359         •  Size of available memory.
360         •  Reliability characteristics such as Memory Error Correction
361         codes.
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.
369     memory_hot_add:
370       type: boolean
371       required: false
372       description: >
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.
376
377 tosca.capabilities.nfv.Hypervisors:
378   derived_from: tosca.capabilities.Root
379   properties:
380     hypervisors:
381       type: list
382       required: false
383       entry_schema:
384         type: string
385       constraints:
386         - min_length: 1
387       description: >
388         There are a number of hypervisor related parameters that can have a
389         significant impact on the deployment and performance of the VDU.
390         These include:
391         •  Hypervisor type
392         •  Hypervisor version as a VDU may be validated with a particular
393         version.
394         •  Hypervisor Address Translation support parameters including:
395         o  Second Level Address Translation.
396         o  Second Level Address Translation with Large page
397         support.
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
401         greater.
402         o  Support for interrupt remapping, i.e. supporting the IOMMU
403         in the hypervisor.
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.
407
408 tosca.capabilities.nfv.PCIe:
409   derived_from: tosca.capabilities.Root
410   properties:
411     platform_pcie_parameter:
412       type: list
413       required: false
414       entry_schema:
415         type: string
416       constraints:
417         - min_length: 1
418       description: >
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.
423         •  PCIe bandwidth.
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
434         processor.
435     platform_pcie_parameter:
436       type: string
437       required: false
438       description: >
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:
443       type: list
444       required: false
445       entry_schema:
446         type: string
447       constraints:
448         - min_length: 1
449       description: >
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
453         bus.
454
455 tosca.capabilities.nfv.network.Interfaces:
456   derived_from: tosca.capabilities.Root
457   properties:
458     network_interface_card_capability:
459       type: list
460       required: false
461       entry_schema:
462         type: string
463       constraints:
464         - min_length: 1
465       description: >
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
472         CPU to the NIC.
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.
477         •  Checksum Offload.
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.
488         •  RDMA support.
489         •  SR-IOV support.
490         •  Data processing acceleration software
491         library support, e.g. DPDK ® - see note.
492     network_interface_bandwidth:
493       type: list
494       required: false
495       entry_schema:
496         type: string
497       constraints:
498         - min_length: 1
499       description: >
500         The network speed/bandwidth to be guaranteed
501         per requested NIC.
502     data_processing_acceleration_library:
503       type: list
504       required: false
505       entry_schema:
506         type: string
507       constraints:
508         - min_length: 1
509       description: >
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
513         specified library
514
515 tosca.capabilities.nfv.network.Virtual_switches:
516   derived_from: tosca.capabilities.Root
517   properties:
518     vswitch_capability:
519       type: list
520       required: false
521       entry_schema:
522         type: string
523       constraints:
524         - min_length: 1
525       description: >
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.
529
530 tosca.capabilities.nfv.Storage:
531   derived_from: tosca.capabilities.Root
532   properties:
533     storage_requirement:
534       type: scalar-unit.size
535       required: false
536       constraints:
537         - greater_or_equal: 0 MB
538       description: >
539         Required storage characteristics (e.g. size), including Key Quality
540         Indicators (KQIs) for performance and reliability/availability.
541     rdma_support_bandwitdh:
542       type: integer
543       required: false
544       constraints:
545         - greater_or_equal: 0
546       description: >
547         The VDU may have been developed, optimized or tested with a
548         storage supporting RDMA over a given bandwidth.
549
550
551
552 ##########################################################################
553 # Group Type.
554 # Defined within the TOSCA nfv Simple Profile specification.
555 ##########################################################################
556 tosca.groups.nfv.VNFFG:
557   derived_from: tosca.groups.Root
558   properties:
559     vendor:
560       type: string
561       required: true
562       description: name of the vendor who generate this VNFFG
563     version:
564       type: string
565       required: true
566       description: version of this VNFFG
567     number_of_endpoints:
568       type: integer
569       required: true
570       description: count of the external endpoints included in this VNFFG
571     dependent_virtual_link:
572       type: list
573       description: Reference to a VLD  used in this Forwarding Graph
574       required: true
575       entry_schema:
576         type: string
577     connection_point:
578       type: list
579       description: Reference to Connection Points forming the VNFFG
580       required: true
581       entry_schema:
582         type: string
583     constituent_vnfs:
584       type: list
585       description: Reference to a list of  VNFD used in this VNF Forwarding Graph
586       required: true
587       entry_schema:
588         type: string
589     targets:
590       type: list
591       required: false
592       description: list of  Network Forwarding Path within the VNFFG
593       entry_schema:
594         type: string
595   requirements:
596     - forwarder:
597         capability: tosca.capabilities.nfv.Forwarder
598         relationship: tosca.relationships.nfv.ForwardsTo
599
600 #data_types:
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:
608 #  properties:
609 #    network_name:
610 #      type: string
611 #    network_id:
612 #      type: string
613 #    addresses:
614 #      type: list
615 #      entry_schema:
616 #       type: string
617
618 #artifact_types:
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