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_yaml_1_0
metadata:
template_name: tosca_simple_profile_for_nfv
template_author: opnfv_parser_project
template_version: tosca_simple_profile_for_nfv_1_0
###########################################################################
# Node Type.
# A Node Type is a reusable entity that defines the type of one or more
# Node Templates.
###########################################################################
node_types:
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 which provides this VNF
version:
type: version
description: version of the software for this VNF
requirements:
- virtualLink:
capability: tosca.capabilities.nfv.VirtualLinkable
tosca.nodes.nfv.VDU:
derived_from: tosca.nodes.SoftwareComponent
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
occurrences: [ 0, 1 ]
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.Compute
relationship: tosca.relationships.HostedOn
tosca.nodes.nfv.CP:
derived_from: tosca.nodes.Root
properties:
type:
type: string
required: false
attributes:
IP_address:
type: string
required: false
requirements:
- virtualLink:
capability: tosca.capabilities.nfv.VirtualLinkable
- virtualbinding:
capability: tosca.capabilities.nfv.Virtualbindable
tosca.nodes.nfv.VL:
derived_from: tosca.nodes.Root
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
##########################################################################
# Capability Type.
# A Capability Type is a reusable entity that describes a kind of
# capability that a Node Type can declare to expose.
##########################################################################
capability_types:
tosca.capabilities.nfv.VirtualBindable:
derived_from: tosca.capabilities.Root
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.VirtualLinkable:
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.
##########################################################################
# Relationship Type.
# A Relationship Type is a reusable entity that defines the type of one
# or more relationships between Node Types or Node Templates.
##########################################################################
relationship_types:
tosca.relationships.nfv.VirtualBindsTo:
derived_from: tosca.relationships.ConnectsTo
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 ]
tosca.relationships.nfv.VirtualLinksTo:
derived_from: tosca.relationships.ConnectsTo
valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
##########################################################################
# groups Type.
# as defined within the TOSCA nfv Simple Profile specification.
# BWT:Not supported by tosca-parser currently, and will be added future.
##########################################################################
#group_types:
# 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.Forwarder
#datatype_definitions:
##########################################################################
# 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
|