summaryrefslogtreecommitdiffstats
path: root/docs/developer/design/examples/TOSCA_nfv_definition_1_0.yaml
blob: c5351441fb7a4d9c5daba1f71e0da234b2698d98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
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