Update VNFRQTS-572
[vnfrqts/requirements.git] / docs / Chapter5 / Tosca.rst
1 .. Modifications Copyright © 2017-2018 AT&T Intellectual Property.
2
3 .. Licensed under the Creative Commons License, Attribution 4.0 Intl.
4    (the "License"); you may not use this documentation except in compliance
5    with the License. You may obtain a copy of the License at
6
7 .. https://creativecommons.org/licenses/by/4.0/
8
9 .. Unless required by applicable law or agreed to in writing, software
10    distributed under the License is distributed on an "AS IS" BASIS,
11    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12    See the License for the specific language governing permissions and
13    limitations under the License.
14
15
16 ONAP TOSCA VNFD or PNFD Requirements
17 ------------------------------------
18
19
20 Introduction
21 ^^^^^^^^^^^^
22
23 The following sub-clauses describe the numbered requirements for VNF
24 Descriptor (VNFD) and PNF Descriptor (PNFD) or in other words the VNF/PNF
25 Service Template based on the most updated draft of ETSI NFV-SOL001 standard
26 for VNF/PNF Descriptor. The ETSI standard specifies a NFV specific data
27 model using TOSCA/YAML data model constructs specified in TOSCA Simple
28 Profile in YAML v.1.2.
29
30 The requirements for TOSCA/CSAR based VNF/PNF package are described as well
31 and they are based on ETSI NFV-SOL004 standard.
32
33 References
34 ^^^^^^^^^^^^^^^^^^
35
36   1. ETSI GS NFV-SOL001 v.2.5.1
37   2. TOSCA SIMPLE Profile in YAML v.1.2
38   3. ETSI GS NFV-SOL004 v.2.6.1 + NFV CR NFVSOL(18)000746r3.
39
40 Intended Audience
41 ^^^^^^^^^^^^^^^^^^
42
43 This document is intended for developers of VNF TOSCA templates that
44 will be orchestrated by ONAP. The document is also applicable for
45 creating RFP’s with the list of required TOSCA/YAML features
46 supported by VNF provider.
47
48 Scope
49 ^^^^^^^^^^^^^^^^
50
51 ONAP implementations of Network Cloud supports TOSCA Templates, also
52 referred to as TOSCA in this document.
53
54 ONAP requires the TOSCA Templates to follow a specific format. This
55 document provides the mandatory, recommended, and optional requirements
56 associated with this format.
57
58 Overview
59 ^^^^^^^^^^^^^^^^
60
61 The document includes three charters to help the VNF or PNF providers to
62 use the VNF or PNF model design tools and understand the VNF or PNF package
63 structure and VNF or PNF TOSCA templates.
64
65 In the ONAP, VNF or PNF Package and VNFD or PNFD template can be designed by
66 manually or via model designer tools. VNF or PNF model designer tools can
67 provide the GUI and CLI tools for the VNF or PNF provider to develop the
68 VNF or PNF Package and VNFD or PNFD template.
69
70 The VNF or PNF package structure is align to the NFV TOSCA protocol,
71 and supports CSAR
72
73 The VNFD or PNFD and VNF or PNF package are all align to the NFV TOSCA
74 protocol, which supports multiple TOSCA template yaml files, and also
75 supports self-defined node or other extensions.
76
77 VNF or PNF CSAR Package
78 ^^^^^^^^^^^^^^^^^^^^^^
79
80 CSAR Overview
81 ~~~~~~~~~~~~~~~~
82
83 TOSCA YAML CSAR file is an archive file using the ZIP file format whose
84 structure complies with the TOSCA Simple Profile YAML v1.2 Specification.
85 The CSAR file may have one of the two following structures:
86
87   - CSAR containing a TOSCA-Metadata directory, which includes the TOSCA.meta
88     metadata file providing an entry information for processing a CSAR file.
89
90   - CSAR containing a single yaml (.yml or .yaml) file at the root of the
91     archive. The yaml file is a TOSCA definition template that contains a
92     metadata section with template_name and template_version metadata. This
93     file is the CSAR Entry-Definitions file.
94
95 VNF Package Structure and Format
96 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97
98 .. req::
99     :id: R-51347
100     :target: VNF or PNF
101     :keyword: MUST
102     :introduced: casablanca
103     :updated: dublin
104
105     The VNF or PNF CSAR package **MUST** be arranged as a CSAR archive as
106     specified in TOSCA Simple Profile in YAML 1.2.
107
108
109 .. req::
110     :id: R-87234
111     :target: VNF or PNF
112     :keyword: MUST
113     :introduced: casablanca
114     :updated: dublin
115
116     The VNF or PNF package provided by a VNF or PNF vendor **MUST** be with
117     TOSCA-Metadata directory (CSAR Option 1) as specified in
118     ETSI GS NFV-SOL004.
119
120     **Note:** SDC supports only the CSAR Option 1 in Dublin. The Option 2
121     will be considered in future ONAP releases.
122
123 .. req::
124     :id: R-506221
125     :target: VNF or PNF CSAR PACKAGE
126     :keyword: MUST
127     :introduced: dublin
128
129     The VNF or PNF TOSCA CSAR file **MUST** be a zip file with .csar extension.
130
131
132 VNF Package Contents
133 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
134
135 .. req::
136     :id: R-10087
137     :target: VNF or PNF CSAR PACKAGE
138     :keyword: MUST
139     :introduced: casablanca
140     :updated: dublin
141
142     The VNF or PNF CSAR package **MUST** include all artifacts required by
143     ETSI GS NFV-SOL004 including Manifest file, VNFD or PNFD (or Main
144     TOSCA/YAML based Service Template) and other optional artifacts. CSAR
145     Manifest file as per SOL004 - for example ROOT\\ **MainServiceTemplate.mf**
146
147 .. req::
148     :id: R-01123
149     :target: VNF or PNF
150     :keyword: MUST
151     :introduced: casablanca
152     :updated: dublin
153
154     The VNF or PNF package Manifest file **MUST** contain: VNF or PNF package
155     meta-data, a list of all artifacts (both internal and external) entry's
156     including their respected URI's, an algorithm to calculate a digest and
157     a digest result calculated on the content of each artifacts, as specified
158     in ETSI GS NFV-SOL004.
159
160 .. req::
161     :id: R-21322
162     :target: VNF
163     :keyword: MUST
164     :introduced: casablanca
165
166     The VNF provider **MUST** provide their testing scripts to support
167     testing as specified in ETSI NFV-SOL004 - Testing directory in CSAR
168
169 .. req::
170     :id: R-26885
171     :target: VNF
172     :keyword: MUST
173     :introduced: casablanca
174
175     The VNF provider **MUST** provide the binaries and images needed to
176     instantiate the VNF (VNF and VNFC images) either as:
177
178       - Local artifact in CSAR: ROOT\\Artifacts\\ **VNF_Image.bin**
179
180       - externally referred (by URI) artifact in Manifest file (also may be
181         referred by VNF Descriptor)
182
183     Note: Currently, ONAP doesn't have the capability of Image management,
184     we upload the image into VIM/VNFM manually.
185
186 .. req::
187     :id: R-40820
188     :target: VNF
189     :keyword: MUST
190     :introduced: casablanca
191
192     The VNF provider **MUST** enumerate all of the open source licenses
193     their VNF(s) incorporate. CSAR License directory as per ETSI SOL004.
194
195     for example ROOT\\Licenses\\ **License_term.txt**
196
197 .. req::
198     :id: R-293901
199     :target: VNF or PNF CSAR PACKAGE
200     :keyword: MUST
201     :introduced: dublin
202
203     The VNF or PNF CSAR PACKAGE with TOSCA-Metadata **MUST** include following
204     additional keywords pointing to TOSCA files:
205     
206       - ETSI-Entry-Manifest
207
208       - ETSI-Entry-Change-Log
209
210     Note: For a CSAR containing a TOSCA-Metadata directory, which includes
211     the TOSCA.meta metadata file. The TOSCA.meta metadata file includes block_0
212     with the Entry-Definitions keyword pointing to a TOSCA definitions YAML
213     file used as entry for parsing the contents of the overall CSAR archive.
214
215 .. req::
216     :id: R-146092
217     :target: VNF or PNF TOSCA PACKAGE
218     :keyword: MUST
219     :introduced: dublin
220
221     The VNF or PNF TOSCA CSAR package Manifest file **MUST** contain: non-mano
222     artifact set with following ONAP public tag
223
224       - onap_ves_events: contains VES registration files
225
226       - onap_pm_dictionary: contains the PM dictionary files
227
228       - onap_yang_modules: contains Yang module files for configurations
229
230       - onap_ansible_playbooks: contains any ansible_playbooks
231
232       - onap_others: contains any other non_MANO artifacts, e.g. informational
233         documents
234
235 .. req::
236     :id: R-221914
237     :target: VNF or PNF
238     :keyword: MUST
239     :introduced: dublin
240
241     The VNF or PNF package **MUST** contain a a human-readable change log text
242     file. The Change Log file keeps a history describing any changes in the VNF
243     or PNF package. The Change Log file is kept up to date continuously from
244     the creation of the CSAR package.
245
246 .. req::
247     :id: R-57019
248     :target: PNF CSAR PACKAGE
249     :keyword: MUST
250     :introduced: dublin
251
252     The PNF TOSCA CSAR PACKAGE Manifest file **MUST** start with the PNF
253     package metadata in the form of a name-value pairs. Each pair shall appear
254     on a different line. The name is specified as following:
255
256       - pnfd_provider
257
258       - pnfd_name
259
260       - pnfd_release_date_time
261
262       - pnfd_archive_version
263
264 .. req::
265     :id: R-795126
266     :target: VNF CSAR PACKAGE
267     :keyword: MUST
268     :introduced: dublin
269
270     The VNF TOSCA CSAR package Manifest file **MUST** start with the VNF
271     package metadata in the form of a name-value pairs. Each pair shall appear
272     on a different line. The name is specified as following:
273
274       - vnf_provider_id
275
276       - vnf_product_name
277
278       - vnf_release_date_time
279
280       - vnf_package_version
281
282
283 VNF or PNF Package Authenticity and Integrity
284 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
285
286 VNF or PNF CSAR package shall support a method for authenticity and integrity
287 assurance. According to ETSI SOL004 the onboarding package shall be secured.
288 ETSI SOL004 provides two options:
289
290 Option 1 - One Digest for each components of the VNF or PNF package. The table
291 of hashes is included in the manifest file, which is signed with the VNF or PNF
292 provider private key. A signing certificate including the provider’s public key
293 shall be included in the package.
294
295 Option 2 - The complete CSAR file shall be digitally signed with the provider
296 private key. The provider delivers one zip file consisting of the CSAR file, a
297 signature file and a certificate file that includes the VNF provider public
298 key.
299
300 *Dublin release note*
301
302     - VNFSDK pre-onboarding validation procedure:
303
304       - Option 1: specified in ETSI SOL004 is supported.
305
306       - Option 2: Will be supported in the future releases.
307
308     - SDC onboarding procedure:
309
310       - Option 1: specified in ETSI SOL004 is supported.
311
312       - Option 2: Will be supported in the future releases.
313
314 .. req::
315     :id: R-787965
316     :target: VNF or PNF CSAR PACKAGE
317     :keyword: MUST
318     :introduced: dublin
319
320     If the VNF or PNF CSAR Package utilizes Option 2 for package security, then
321     the complete CSAR file **MUST** be digitally signed with the VNF or PNF
322     provider private key. The VNF or PNF provider delivers one zip file
323     consisting of the CSAR file, a signature file and a certificate file that
324     includes the VNF or PNF provider public key. The certificate may also be
325     included in the signature container, if the signature format allows that.
326     The VNF or PNF provider creates a zip file consisting of the CSAR file with
327     .csar extension, signature and certificate files. The signature and
328     certificate files must be siblings of the CSAR file with extensions .cms
329     and .cert respectively.
330
331
332 .. req::
333     :id: R-130206
334     :target: VNF or PNF CSAR PACKAGE
335     :keyword: MUST
336     :introduced: dublin
337
338     If the VNF or PNF CSAR Package utilizes Option 2 for package security, then
339     the complete CSAR file **MUST** contain a Digest (a.k.a. hash) for each of
340     the components of the VNF or PNF package. The table of hashes is included
341     in the package manifest file, which is signed with the VNF or PNF provider
342     private key. In addition, the VNF or PNF provider MUST include a signing
343     certificate that includes the VNF or PNF provider public key, following a
344     TOSCA pre-defined naming convention and located either at the root of the
345     archive or in a predefined location specified by the TOSCA.meta file with
346     the corresponding entry named "ETSI-Entry-Certificate".
347
348
349 VNF Package ONAP Extensions
350 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
351
352 1. TOACA data type extension tosca.datatypes.nfv.injectFile is used for vCPE
353    use case.
354 2. ONAP extensions for VNF package that is currently proposed for Dublin
355    release is VES extension described below.
356
357 TOSCA Introduction
358 ^^^^^^^^^^^^^^^^^^^
359
360 TOSCA defines a Meta model for defining IT services. This Meta model
361 defines both the structure of a service as well as how to manage it. A
362 Topology Template (also referred to as the topology model of a service)
363 defines the structure of a service. Plans define the process models that
364 are used to create and terminate a service as well as to manage a
365 service during its whole lifetime.
366
367 A Topology Template consists of a set of Node Templates and Relationship
368 Templates that together define the topology model of a service as a (not
369 necessarily connected) directed graph. A node in this graph is
370 represented by a *Node Template*. A Node Template specifies the
371 occurrence of a Node Type as a component of a service. A *Node Type*
372 defines the properties of such a component (via *Node Type Properties*)
373 and the operations (via *Interfaces*) available to manipulate the
374 component. Node Types are defined separately for reuse purposes and a
375 Node Template references a Node Type and adds usage constraints, such as
376 how many times the component can occur.
377
378 |image1|
379
380 Figure 1: Structural Elements of Service Template and their Relations
381
382 TOSCA Modeling Principles & Data Model
383 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
384
385 This section describing TOSCA modeling principles and data model for
386 NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML
387 V1.0], or new type based on ETSI NFV requirements, etc.
388
389 TOSCA VNF Descriptor
390 ^^^^^^^^^^^^^^^^^^^^^^^^^
391
392 General
393 ~~~~~~~~~~
394
395 .. req::
396     :id: R-35854
397     :target: VNF
398     :keyword: MUST
399     :introduced: casablanca
400
401     The VNF Descriptor (VNFD) provided by VNF vendor **MUST** comply with
402     TOSCA/YAML based Service template for VNF descriptor specified in
403     ETSI NFV-SOL001.
404
405     **Note**: As the ETSI NFV-SOL001 is work in progress the below tables
406     summarizes the TOSCA definitions agreed to be part of current version
407     of NFV profile and that VNFD MUST comply with in ONAP Release 2+
408     Requirements.
409
410
411 .. req::
412     :id: R-65486
413     :target: VNF
414     :keyword: MUST
415     :introduced: casablanca
416
417     The VNFD **MUST** comply with ETSI GS NFV-SOL001 document endorsing
418     the above mentioned NFV Profile and maintaining the gaps with the
419     requirements specified in ETSI GS NFV-IFA011 standard.
420
421
422 .. req::
423     :id: R-17852
424     :target: VNF
425     :keyword: MAY
426     :introduced: casablanca
427
428     The VNFD **MAY** include TOSCA/YAML definitions that are not part of
429     NFV Profile. If provided, these definitions MUST comply with TOSCA
430     Simple Profile in YAML v.1.2.
431
432 .. req::
433     :id: R-46527
434     :target: VNF
435     :keyword: MUST
436     :introduced: casablanca
437
438     A VNFD is a deployment template which describes a VNF in terms of
439     deployment and operational behavior requirements. It contains
440     virtualized resources (nodes) requirements as well as connectivity
441     and interfaces requirements and **MUST** comply with info elements
442     specified in ETSI GS NFV-IFA 011. The main parts of the VNFD are
443     the following:
444
445       - VNF topology: it is modeled in a cloud agnostic way using virtualized
446         containers and their connectivity. Virtual Deployment Units (VDU)
447         describe the capabilities of the virtualized containers, such as
448         virtual CPU, RAM, disks; their connectivity is modeled with VDU
449         Connection Point Descriptors (VduCpd), Virtual Link Descriptors
450         (VnfVld) and VNF External Connection Point Descriptors
451         (VnfExternalCpd);
452
453       - VNF deployment aspects: they are described in one or more
454         deployment flavours, including configurable parameters, instantiation
455         levels, placement constraints (affinity / antiaffinity), minimum and
456         maximum VDU instance numbers. Horizontal scaling is modeled with
457         scaling aspects and the respective scaling levels in the deployment
458         flavours;
459
460     **Note**: The deployment aspects (deployment flavour etc.) are postponed
461     for future ONAP releases.
462
463       - VNF lifecycle management (LCM) operations: describes the LCM operations
464         supported per deployment flavour, and their input parameters;
465         Note, thatthe actual LCM implementation resides in a different layer,
466         namely referring to additional template artifacts.
467
468 .. req::
469     :id: R-15837
470     :target: VNF
471     :keyword: MUST
472     :introduced: casablanca
473
474     The following table defines the major TOSCA  Types specified in
475     ETSI NFV-SOL001 standard draft. The VNFD provided by a VNF vendor
476     **MUST** comply with the below definitions:
477
478
479 .. csv-table:: **TOSCA Definition**
480    :file: TOSCA_descriptor.csv
481    :header-rows: 1
482    :align: center
483    :widths: auto
484
485 Data Types
486 ~~~~~~~~~~~~
487
488 .. req::
489     :id: R-54356
490     :target: VNF
491     :keyword: MUST
492     :introduced: casablanca
493
494     The below table includes the data types used by NFV node and is based
495     on TOSCA/YAML constructs specified in draft GS NFV-SOL 001. The node
496     data definitions/attributes used in VNFD **MUST** comply with the below
497     table.
498
499 .. csv-table:: **NFV Data Types**
500    :file: NFV_data_type.csv
501    :header-rows: 1
502    :align: center
503    :widths: auto
504
505 .. req::
506     :id: R-54876
507     :target: VNF
508     :keyword: MUST
509     :introduced: casablanca
510
511     The below table describes the data types used for LCM configuration
512     and is based on TOSCA constructs specified in draft GS NFV-SOL 001.
513     The LCM configuration data elements used in VNFD **MUST** comply
514     with the below table.
515
516 .. csv-table:: **LCM Configuration**
517    :file: LCM_config.csv
518    :header-rows: 1
519    :align: center
520    :widths: auto
521
522 Artifact Types
523 ~~~~~~~~~~~~~~~~~~~~~~~~
524
525 No artifact type is currently supported in ONAP.
526
527 Capability Types
528 ~~~~~~~~~~~~~~~~~~~~~~~~
529
530 .. req::
531     :id: R-67895
532     :target: VNF
533     :keyword: MUST
534     :introduced: casablanca
535
536     The VNFD provided by VNF vendor may use the below described TOSCA
537     capabilities. An on-boarding entity (ONAP SDC) **MUST** support them.
538
539       **tosca.capabilities.nfv.VirtualBindable**
540
541         A node type that includes the VirtualBindable capability indicates
542         that it can be pointed by **tosca.relationships.nfv.VirtualBindsTo**
543         relationship type.
544
545       **tosca.capabilities.nfv.VirtualLinkable**
546
547         A node type that includes the VirtualLinkable capability indicates
548         that it can be pointed by **tosca.relationships.nfv.VirtualLinksTo**
549         relationship.
550
551       **tosca.capabilities.nfv.ExtVirtualLinkable**
552
553         A node type that includes the ExtVirtualLinkable capability
554         indicates that it can be pointed by
555         **tosca.relationships.nfv.VirtualLinksTo** relationship.
556
557       **Note**: This capability type is used in Casablanca how it does
558       not exist in the last SOL001 draft
559
560       **tosca.capabilities.nfv.VirtualCompute** and
561       **tosca.capabilities.nfv.VirtualStorage** includes flavours of VDU
562
563
564 Relationship Types
565 ~~~~~~~~~~~~~~~~~~~~~~~~
566
567 .. req::
568     :id: R-95321
569     :target: VNF
570     :keyword: MUST
571     :introduced: casablanca
572
573     The VNFD provided by VNF vendor may use the below described TOSCA
574     relationships. An on-boarding entity (ONAP SDC) **MUST** support them.
575
576       **tosca.relationships.nfv.VirtualBindsTo**
577
578         This relationship type represents an association relationship between
579         VDU and CP node types.
580
581       **tosca.relationships.nfv.VirtualLinksTo**
582
583         This relationship type represents an association relationship between
584         the VduCpd's and VirtualLinkDesc node types.
585
586
587 Interface Types
588 ~~~~~~~~~~~~~~~~~~~~~~~~
589
590 .. req::
591     :id: R-32155
592     :target: VNF
593     :keyword: MUST
594     :introduced: casablanca
595
596     The VNFD provided by VNF vendor may use the below described TOSCA
597     interface types. An on-boarding entity (ONAP SDC) **MUST** support them.
598
599       **tosca.interfaces.nfv.vnf.lifecycle.Nfv** supports LCM operations
600
601
602 TOSCA PNF Descriptor
603 ^^^^^^^^^^^^^^^^^^^^^^^^^
604
605
606 General
607 ~~~~~~~~~~
608
609 .. req::
610     :id: R-24632
611     :target: PNF
612     :keyword: MUST
613     :introduced: dublin
614
615     The PNF Descriptor (PNFD) provided by PNF vendor **MUST** comply with
616     TOSCA/YAML based Service template for PNF descriptor specified in ETSI
617     NFV-SOL001.
618
619
620 .. req::
621     :id: R-998862
622     :target: PNF
623     :keyword: MUST
624     :introduced: dublin
625
626     The PNFD provided by a PNF vendor **MUST** comply with the following TOSCA
627     Types as specified in ETSI NFV-SOL001 standard:
628
629       - tosca.nodes.nfv.PNF
630
631       - tosca.nodes.nfv.PnfExtCp
632
633
634 Data Types
635 ~~~~~~~~~~~~~~
636
637 .. req::
638     :id: R-484843
639     :target: PNF
640     :keyword: MUST
641     :introduced: dublin
642
643     The PNFD provided by a PNF vendor **MUST** comply with the following Data
644     Types as specified in ETSI NFV-SOL001 standard:
645
646       - tosca.datatypes.nfv.CpProtocolData
647
648       - tosca.datatypes.nfv.AddressData
649
650       - tosca.datatypes.nfv.L2AddressData
651
652       - tosca.datatypes.nfv.L3AddressData
653
654       - tosca.datatypes.nfv.LocationInfo
655
656       - tosca.datatypes.nfv.CivicAddressElement
657
658
659 Artifact Types
660 ~~~~~~~~~~~~~~~~~~~~~~~~
661
662 No artifact type is currently supported in ONAP.
663
664
665 Capability Types
666 ~~~~~~~~~~~~~~~~~~~~~~~~
667
668 .. req::
669     :id: R-177937
670     :target: PNF
671     :keyword: MUST
672     :introduced: dublin
673
674     The PNFD provided by a PNF vendor **MUST** comply with the following
675     Capabilities Types as specified in ETSI NFV-SOL001 standard:
676
677       - tosca.datatypes.nfv.VirtualLinkable
678
679
680 Requirements Types
681 ~~~~~~~~~~~~~~~~~~~~~~~~
682
683
684 Relationship Types
685 ~~~~~~~~~~~~~~~~~~~~~~~~
686
687 .. req::
688     :id: R-64064
689     :target: PNF
690     :keyword: MUST
691     :introduced: dublin
692
693     The PNFD provided by a PNF vendor **MUST** comply with the following
694     Relationship Types as specified in ETSI NFV-SOL001 standard:
695     
696       - tosca.datatypes.nfv.VirtualLinksTo
697
698
699 Interface Types
700 ~~~~~~~~~~~~~~~~~~~~~~~~
701
702 No interface type is currently supported in ONAP.
703
704
705 Node Types
706 ~~~~~~~~~~~~~~
707
708 .. req::
709     :id: R-535009
710     :target: PNF
711     :keyword: MUST
712     :introduced: dublin
713
714     The PNFD provided by a PNF vendor **MUST** comply with the following Node
715     Types as specified in ETSI NFV-SOL001 standard:
716
717       - tosca.nodes.nfv.PNF
718
719       - tosca.nodes.nfv.PnfExtCp
720
721       - tosca.nodes.nfv.Cp
722
723
724
725 Group Types
726 ~~~~~~~~~~~~~~
727
728 No group type is currently supported in ONAP.
729
730
731 Policy Types
732 ~~~~~~~~~~~~~~
733
734 .. req::
735     :id: R-596064
736     :target: PNF
737     :keyword: MUST
738     :introduced: dublin
739
740     The PNFD provided by a PNF vendor **MUST** comply with the following Policy
741     Types as specified in ETSI NFV-SOL001 standard:
742
743       - tosca.datatypes.nfv.SecurityGroupRule
744
745
746 +--------------------------------------------------------------------+
747 | +--------------------------------------------------------------+   |
748 | | tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0       |   |
749 | |                                                              |   |
750 | | description: VNFD TOSCA file demo                            |   |
751 | |                                                              |   |
752 | | imports:                                                     |   |
753 | |                                                              |   |
754 | | - TOSCA\_definition\_nfv\_1\_0.yaml                          |   |
755 | |                                                              |   |
756 | | - TOSCA\_definition\_nfv\_ext\_1\_0.yaml                     |   |
757 | |                                                              |   |
758 | | | **node\_types:                                             |   |
759 | |   tosca.nodes.nfv.VNF.vOpenNAT:                              |   |
760 | |   derived\_from:** tosca.nodes.nfv.VNF                       |   |
761 | | | **requirements:                                            |   |
762 | |   **- **sriov\_plane:                                        |   |
763 | |   capability:** tosca.capabilities.nfv.VirtualLinkable       |   |
764 | | | **node:** tosca.nodes.nfv.VnfVirtualLinkDesc               |   |
765 | | | **relationship:** tosca.relationships.nfv.VirtualLinksTo   |   |
766 | +--------------------------------------------------------------+   |
767 +====================================================================+
768 +--------------------------------------------------------------------+
769
770
771 HPA Requirements
772 ^^^^^^^^^^^^^^^^^^
773
774 1. SR-IOV Passthrought
775
776 Definitions of SRIOV\_Port are necessary if VDU supports SR-IOV. Here is
777 an example.
778
779 .. code-block:: yaml
780
781   node\_templates:
782
783   vdu\_vNat:
784
785   SRIOV\_Port:
786
787   attributes:
788
789   tosca\_name: SRIOV\_Port
790
791   properties:
792
793   virtual\_network\_interface\_requirements:
794
795   - name: sriov
796
797   support\_mandatory: false
798
799   description: sriov
800
801   requirement:
802
803   SRIOV: true
804
805   role: root
806
807   description: sriov port
808
809   layer\_protocol: ipv4
810
811   requirements:
812
813   - virtual\_binding:
814
815   capability: virtual\_binding
816
817   node: vdu\_vNat
818
819   relationship:
820
821   type: tosca.relationships.nfv.VirtualBindsTo
822
823   - virtual\_link:
824
825   node: tosca.nodes.Root
826
827   type: tosca.nodes.nfv.VduCpd
828
829   substitution\_mappings:
830
831   requirements:
832
833   sriov\_plane:
834
835   - SRIOV\_Port
836
837   - virtual\_link
838
839   node\_type: tosca.nodes.nfv.VNF.vOpenNAT
840
841
842 2. Hugepages
843
844 Definitions of mem\_page\_size as one property shall be added to
845 Properties and set the value to large if one VDU node supports
846 huagepages. Here is an example.
847
848 .. code-block:: yaml
849
850   node\_templates:
851
852   vdu\_vNat:
853
854   Hugepages:
855
856   attributes:
857
858   tosca\_name: Huge\_pages\_demo
859
860   properties:
861
862   mem\_page\_size:large
863
864
865 3. NUMA (CPU/Mem)
866
867 Likewise, we shall add definitions of numa to
868 requested\_additional\_capabilities if we wand VUD nodes to support
869 NUMA. Here is an example.
870
871 .. code-block:: yaml
872
873   topology\_template:
874
875   node\_templates:
876
877   vdu\_vNat:
878
879   capabilities:
880
881   virtual\_compute:
882
883   properties:
884
885   virtual\_memory:
886
887   numa\_enabled: true
888
889   virtual\_mem\_size: 2 GB
890
891   requested\_additional\_capabilities:
892
893   numa:
894
895   support\_mandatory: true
896
897   requested\_additional\_capability\_name: numa
898
899   target\_performance\_parameters:
900
901   hw:numa\_nodes: "2"
902
903   hw:numa\_cpus.0: "0,1"
904
905   hw:numa\_mem.0: "1024"
906
907   hw:numa\_cpus.1: "2,3,4,5"
908
909   hw:numa\_mem.1: "1024"
910
911
912 4. Hyper-Theading
913
914 Definitions of Hyper-Theading are necessary as one of
915 requested\_additional\_capabilities of one VUD node if that node
916 supports Hyper-Theading. Here is an example.
917
918 .. code-block:: yaml
919
920   topology\_template:
921
922   node\_templates:
923
924   vdu\_vNat:
925
926   capabilities:
927
928   virtual\_compute:
929
930   properties:
931
932   virtual\_memory:
933
934   numa\_enabled: true
935
936   virtual\_mem\_size: 2 GB
937
938   requested\_additional\_capabilities:
939
940   hyper\_threading:
941
942   support\_mandatory: true
943
944   requested\_additional\_capability\_name: hyper\_threading
945
946   target\_performance\_parameters:
947
948   hw:cpu\_sockets : "2"
949
950   hw:cpu\_threads : "2"
951
952   hw:cpu\_cores : "2"
953
954   hw:cpu\_threads\_policy: "isolate"
955
956
957 5. OVS+DPDK
958
959 Definitions of ovs\_dpdk are necessary as one of
960 requested\_additional\_capabilities of one VUD node if that node
961 supports dpdk. Here is an example.
962
963 .. code-block:: yaml
964
965   topology\_template:
966
967   node\_templates:
968
969   vdu\_vNat:
970
971   capabilities:
972
973   virtual\_compute:
974
975   properties:
976
977   virtual\_memory:
978
979   numa\_enabled: true
980
981   virtual\_mem\_size: 2 GB
982
983   requested\_additional\_capabilities:
984
985   ovs\_dpdk:
986
987   support\_mandatory: true
988
989   requested\_additional\_capability\_name: ovs\_dpdk
990
991   target\_performance\_parameters:
992
993   sw:ovs\_dpdk: "true"
994
995
996 VES Requirements
997 ^^^^^^^^^^^^^^^^^^^^^^^^^
998
999 **Note: ONAP proprietary extensions in ETSI SOL004 standards for VES support
1000 in CSAR package need to be manually loaded in R3 (Casablanca) for VNF and
1001 PNFs. Platform support will be developed for this in upcoming releases.**
1002
1003
1004 NFV TOSCA Type Definition
1005 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1006
1007 tosca.capabilites.nfv.VirtualCompute
1008 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1009
1010 This capability is used with the properties specified in ETSI SOL001 draft.
1011
1012 tosca.nodes.nfv.VDU.Compute
1013 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1014
1015 The NFV Virtualization Deployment Unit (VDU) compute node type
1016 represents a VDU entity which it describes the deployment and
1017 operational behavior of a VNF component (VNFC), as defined by **[ETSI
1018 NFV IFA011].**
1019
1020 +-----------------------+-------------------------------+
1021 | Shorthand Name        | VDU.Compute                   |
1022 +=======================+===============================+
1023 | Type Qualified Name   | tosca:VDU.Compute             |
1024 +-----------------------+-------------------------------+
1025 | Type URI              | tosca.nodes.nfv.VDU.Compute   |
1026 +-----------------------+-------------------------------+
1027 | derived\_from         | tosca.nodes.Compute           |
1028 +-----------------------+-------------------------------+
1029
1030
1031
1032 Attributes
1033 ++++++++++++
1034
1035 None
1036
1037
1038 Capabilities
1039 ++++++++++++++
1040
1041 +------------+--------------------+------------+------------------------------+
1042 | Name       | Type               | Constraints| Description                  |
1043 +============+====================+============+==============================+
1044 | virtual\   | tosca.\            |            | Describes virtual compute    |
1045 | _compute   | capabilities.nfv.\ |            | resources capabilities.      |
1046 |            | VirtualCompute     |            |                              |
1047 +------------+--------------------+------------+------------------------------+
1048 | monitoring\| tosca.\            | None       | Monitoring parameter, which  |
1049 | _parameter | capabilities.nfv.\ |            | can be tracked for a VNFC    |
1050 |            | Metric             |            | based on this VDU            |
1051 |            |                    |            |                              |
1052 |            |                    |            | Examples include:            |
1053 |            |                    |            | memory-consumption,          |
1054 |            |                    |            | CPU-utilisation,             |
1055 |            |                    |            | bandwidth-consumption, VNFC  |
1056 |            |                    |            | downtime, etc.               |
1057 +------------+--------------------+------------+------------------------------+
1058 | Virtual\   | tosca.\            |            | Defines ability of           |
1059 | _binding   | capabilities.nfv.\ |            | VirtualBindable              |
1060 |            | VirtualBindable    |            |                              |
1061 |            |                    |            |                              |
1062 |            | editor note: need  |            |                              |
1063 |            | to create a        |            |                              |
1064 |            | capability type    |            |                              |
1065 +------------+--------------------+------------+------------------------------+
1066
1067
1068
1069 Definition
1070 ++++++++++++
1071
1072 .. code-block:: yaml
1073
1074   tosca.nodes.nfv.VDU.Compute:
1075
1076   derived\_from: tosca.nodes.Compute
1077
1078   properties:
1079
1080   name:
1081
1082   type: string
1083
1084   required: true
1085
1086   description:
1087
1088   type: string
1089
1090   required: true
1091
1092   boot\_order:
1093
1094   type: list # explicit index (boot index) not necessary, contrary to IFA011
1095
1096   entry\_schema:
1097
1098   type: string
1099
1100   required: false
1101
1102   nfvi\_constraints:
1103
1104   type: list
1105
1106   entry\_schema:
1107
1108   type: string
1109
1110   required: false
1111
1112   configurable\_properties:
1113
1114   type: map
1115
1116   entry\_schema:
1117
1118   type: tosca.datatypes.nfv.VnfcConfigurableProperties
1119
1120   required: true
1121
1122   attributes:
1123
1124   private\_address:
1125
1126   status: deprecated
1127
1128   public\_address:
1129
1130   status: deprecated
1131
1132   networks:
1133
1134   status: deprecated
1135
1136   ports:
1137
1138   status: deprecated
1139
1140   capabilities:
1141
1142   virtual\_compute:
1143
1144   type: tosca.capabilities.nfv.VirtualCompute
1145
1146   virtual\_binding:
1147
1148   type: tosca.capabilities.nfv.VirtualBindable
1149
1150   #monitoring\_parameter:
1151
1152   # modeled as ad hoc (named) capabilities in VDU node template
1153
1154   # for example:
1155
1156   #capabilities:
1157
1158   # cpu\_load: tosca.capabilities.nfv.Metric
1159
1160   # memory\_usage: tosca.capabilities.nfv.Metric
1161
1162   host: #Editor note: FFS. How this capabilities should be used in NFV Profile|
1163
1164   type: *tosca.capabilities.Container*
1165
1166   valid\_source\_types:
1167   [*tosca.nodes.SoftwareComponent*]
1168
1169   occurrences: [0,UNBOUNDED]
1170
1171   endpoint:
1172
1173   occurrences: [0,0]
1174
1175   os:
1176
1177   occurrences: [0,0]
1178
1179   scalable:
1180   #Editor note: FFS. How this capabilities should be used in NFV Profile
1181
1182   type: *tosca.capabilities.Scalable*
1183
1184   binding:
1185
1186   occurrences: [0,UNBOUND]
1187
1188   requirements:
1189
1190   - virtual\_storage:
1191
1192   capability: tosca.capabilities.nfv.VirtualStorage
1193
1194   relationship: tosca.relationships.nfv.VDU.AttachedTo
1195
1196   node: tosca.nodes.nfv.VDU.VirtualStorage
1197
1198   occurences: [ 0, UNBOUNDED ]
1199
1200   - local\_storage: #For NFV Profile, this requirement is deprecated.
1201
1202   occurrences: [0,0]
1203
1204   artifacts:
1205
1206   - sw\_image:
1207
1208   file:
1209
1210   type: tosca.artifacts.nfv.SwImage
1211
1212
1213 Artifact
1214 ++++++++++
1215
1216 Note: currently not supported.
1217
1218 +--------+---------+----------------+------------+------------------------+
1219 | Name   | Required| Type           | Constraints| Description            |
1220 +========+=========+================+============+========================+
1221 | SwImage| Yes     | tosca.\        |            | Describes the software |
1222 |        |         | artifacts.nfv.\|            | image which is directly|
1223 |        |         | SwImage        |            | realizing this virtual |
1224 |        |         |                |            | storage                |
1225 +--------+---------+----------------+------------+------------------------+
1226
1227
1228 |image2|
1229
1230
1231
1232 tosca.nodes.nfv.VDU.VirtualStorage
1233 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1234
1235 The NFV VirtualStorage node type represents a virtual storage entity
1236 which it describes the deployment and operational behavior of a virtual
1237 storage resources, as defined by **[ETSI NFV IFA011].**
1238
1239 **[editor note]** open issue: should NFV profile use the current storage
1240 model as described in YAML 1.1. Pending on Shitao proposal (see
1241 NFVIFA(17)000110 discussion paper)
1242
1243 **[editor note]** new relationship type as suggested in Matt
1244 presentation. Slide 8. With specific rules of "valid\_target\_type"
1245
1246 +---------------------------+--------------------------------------+
1247 | **Shorthand Name**        | VirtualStorage                       |
1248 +===========================+======================================+
1249 | **Type Qualified Name**   | tosca: VirtualStorage                |
1250 +---------------------------+--------------------------------------+
1251 | **Type URI**              | tosca.nodes.nfv.VDU.VirtualStorage   |
1252 +---------------------------+--------------------------------------+
1253 | **derived\_from**         | tosca.nodes.Root                     |
1254 +---------------------------+--------------------------------------+
1255
1256 tosca.artifacts.nfv.SwImage
1257 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1258
1259 +---------------------------+------------------------------------+
1260 | **Shorthand Name**        | SwImage                            |
1261 +===========================+====================================+
1262 | **Type Qualified Name**   | tosca:SwImage                      |
1263 +---------------------------+------------------------------------+
1264 | **Type URI**              | tosca.artifacts.nfv.SwImage        |
1265 +---------------------------+------------------------------------+
1266 | **derived\_from**         | tosca.artifacts.Deployment.Image   |
1267 +---------------------------+------------------------------------+
1268
1269 Properties
1270 ++++++++++++
1271
1272 +-----------------+---------+----------+------------+-------------------------+
1273 | Name            | Required| Type     | Constraints| Description             |
1274 +=================+=========+==========+============+=========================+
1275 | name            | yes     | string   |            | Name of this software   |
1276 |                 |         |          |            | image                   |
1277 +-----------------+---------+----------+------------+-------------------------+
1278 | version         | yes     | string   |            | Version of this software|
1279 |                 |         |          |            | image                   |
1280 +-----------------+---------+----------+------------+-------------------------+
1281 | checksum        | yes     | string   |            | Checksum of the software|
1282 |                 |         |          |            | image file              |
1283 +-----------------+---------+----------+------------+-------------------------+
1284 | container\      | yes     | string   |            | The container format    |
1285 | _format         |         |          |            | describes the container |
1286 |                 |         |          |            | file format in which    |
1287 |                 |         |          |            | software image is       |
1288 |                 |         |          |            | provided.               |
1289 +-----------------+---------+----------+------------+-------------------------+
1290 | disk\_format    | yes     | string   |            | The disk format of a    |
1291 |                 |         |          |            | software image is the   |
1292 |                 |         |          |            | format of the underlying|
1293 |                 |         |          |            | disk image              |
1294 +-----------------+---------+----------+------------+-------------------------+
1295 | min\_disk       | yes     | scalar-\ |            | The minimal disk size   |
1296 |                 |         | unit.size|            | requirement for this    |
1297 |                 |         |          |            | software image.         |
1298 +-----------------+---------+----------+------------+-------------------------+
1299 | min\_ram        | no      | scalar-\ |            | The minimal RAM         |
1300 |                 |         | unit.size|            | requirement for this    |
1301 |                 |         |          |            | software image.         |
1302 +-----------------+---------+----------+------------+-------------------------+
1303 | Size            | yes     | scalar-\ |            | The size of this        |
1304 |                 |         | unit.size|            | software image          |
1305 +-----------------+---------+----------+------------+-------------------------+
1306 | sw\_image       | yes     | string   |            | A reference to the      |
1307 |                 |         |          |            | actual software image   |
1308 |                 |         |          |            | within VNF Package, or  |
1309 |                 |         |          |            | url.                    |
1310 +-----------------+---------+----------+------------+-------------------------+
1311 | operating\      | no      | string   |            | Identifies the operating|
1312 | _system         |         |          |            | system used in the      |
1313 |                 |         |          |            | software image.         |
1314 +-----------------+---------+----------+------------+-------------------------+
1315 | supported\      | no      | list     |            | Identifies the          |
1316 | _virtualization\|         |          |            | virtualization          |
1317 | _enviroment     |         |          |            | environments (e.g.      |
1318 |                 |         |          |            | hypervisor) compatible  |
1319 |                 |         |          |            | with this software image|
1320 +-----------------+---------+----------+------------+-------------------------+
1321
1322
1323 Definition
1324 +++++++++++
1325
1326 .. code-block:: yaml
1327
1328   tosca.artifacts.nfv.SwImage:
1329
1330     derived\_from: tosca.artifacts.Deployment.Image
1331
1332     properties or metadata:
1333
1334       #id:
1335
1336         # node name
1337
1338       name:
1339
1340         type: string
1341
1342   required: true
1343
1344       version:
1345
1346         type: string
1347
1348   required: true
1349
1350       checksum:
1351
1352         type: string
1353
1354   required: true
1355
1356       container\_format:
1357
1358         type: string
1359
1360   required: true
1361
1362       disk\_format:
1363
1364         type: string
1365
1366   required: true
1367
1368       min\_disk:
1369
1370         type: scalar-unit.size # Number
1371
1372   required: true
1373
1374       min\_ram:
1375
1376         type: scalar-unit.size # Number
1377
1378   required: false
1379
1380       size:
1381
1382         type: scalar-unit.size # Number
1383
1384   required: true
1385
1386       sw\_image:
1387
1388         type: string
1389
1390   required: true
1391
1392       operating\_system:
1393
1394         type: string
1395
1396   required: false
1397
1398       supported\_virtualisation\_environments:
1399
1400         type: list
1401
1402         entry\_schema:
1403
1404           type: string
1405
1406   required: false
1407
1408
1409 .. |image1| image:: ../Image1.png
1410    :width: 5.76806in
1411    :height: 4.67161in
1412
1413 .. |image2| image:: ../Image2.png
1414    :width: 5.40486in
1415    :height: 2.46042in