Add PNF Descriptor Capability requirements
[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
101     :keyword: MUST
102     :introduced: casablanca
103
104     The VNF package **MUST** be arranged as a CSAR archive as specified in
105     TOSCA Simple Profile in YAML 1.2.
106
107
108 .. req::
109     :id: R-87234
110     :target: VNF
111     :keyword: MAY
112     :introduced: casablanca
113
114     The VNF package provided by a VNF vendor **MAY** be either with
115     TOSCA-Metadata directory (CSAR Option 1) or without TOSCA-Metadata
116     directory (CSAR Option 2) as specified in ETSI GS NFV-SOL004. On-boarding
117     entity (ONAP SDC) must support both options.
118
119     **Note:** SDC supports only the CSAR Option 1 in Casablanca. The Option 2
120     will be considered in future ONAP releases,
121
122
123 VNF Package Contents
124 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125
126 .. req::
127     :id: R-10087
128     :target: VNF
129     :keyword: MUST
130     :introduced: casablanca
131
132     The VNF package **MUST** contain all standard artifacts as specified in
133     ETSI GS NFV-SOL004 including Manifest file, VNFD (or Main TOSCA/YAML
134     based Service Template) and other optional artifacts. CSAR Manifest
135     file as per SOL004 - for example ROOT\\ **MainServiceTemplate.mf**
136
137 .. req::
138     :id: R-01123
139     :target: VNF or PNF
140     :keyword: MUST
141     :introduced: casablanca
142     :updated: dublin
143
144     The VNF or PNF package Manifest file **MUST** contain: VNF or PNF package
145     meta-data, a list of all artifacts (both internal and external) entry's
146     including their respected URI's, an algorithm to calculate a digest and
147     a digest result calculated on the content of each artifacts, as specified
148     in ETSI GS NFV-SOL004.
149
150 .. req::
151     :id: R-21322
152     :target: VNF
153     :keyword: MUST
154     :introduced: casablanca
155
156     The VNF provider **MUST** provide their testing scripts to support
157     testing as specified in ETSI NFV-SOL004 - Testing directory in CSAR
158
159 .. req::
160     :id: R-26885
161     :target: VNF
162     :keyword: MUST
163     :introduced: casablanca
164
165     The VNF provider **MUST** provide the binaries and images needed to
166     instantiate the VNF (VNF and VNFC images) either as:
167
168       - Local artifact in CSAR: ROOT\\Artifacts\\ **VNF_Image.bin**
169
170       - externally referred (by URI) artifact in Manifest file (also may be
171         referred by VNF Descriptor)
172
173     Note: Currently, ONAP doesn't have the capability of Image management,
174     we upload the image into VIM/VNFM manually.
175
176 .. req::
177     :id: R-40820
178     :target: VNF
179     :keyword: MUST
180     :introduced: casablanca
181
182     The VNF provider MUST enumerate all of the open source licenses
183     their VNF(s) incorporate. CSAR License directory as per ETSI SOL004.
184
185     for example ROOT\\Licenses\\ **License_term.txt**
186
187 .. req::
188     :id: R-146092
189     :target: VNF or PNF
190     :keyword: MUST
191     :introduced: dublin
192     
193     The VNF or PNF package Manifest file **MUST** contain: non-mano artifact
194     set with following ONAP public tag:
195
196       - onap_ves_events
197
198       - onap_pm_dictionary
199
200       - onap_yang_module
201
202       - onap_others
203
204 VNF or PNF Package Authenticity
205 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
206
207 VNF or PNF package shall support a method for authenticity and integrity
208 assurance. Note, Option 2 specified in SOL004 is supported in Dublin release.
209
210 .. req::
211     :id: R-444945
212     :target: VNF or PNF
213     :keyword: MUST
214     :introduced: dublin
215
216     The complete CSAR file **MUST** be digitally signed with the VNF or PNF
217     provider private key. The VNF or PNF provider delivers one zip file
218     consisting of the CSAR file, a signature file and a certificate file that
219     includes the VNF or PNF provider public key. The certificate may also be
220     included in the signaturecontainer, if the signature format allows that.
221
222 VNF Package ONAP Extensions
223 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
224
225 1. TOACA data type extension tosca.datatypes.nfv.injectFile is used for vCPE
226    use case.
227 2. ONAP extensions for VNF package that is currently proposed for Dublin
228    release is VES extension described below.
229
230 TOSCA Introduction
231 ^^^^^^^^^^^^^^^^^^^
232
233 TOSCA defines a Meta model for defining IT services. This Meta model
234 defines both the structure of a service as well as how to manage it. A
235 Topology Template (also referred to as the topology model of a service)
236 defines the structure of a service. Plans define the process models that
237 are used to create and terminate a service as well as to manage a
238 service during its whole lifetime.
239
240 A Topology Template consists of a set of Node Templates and Relationship
241 Templates that together define the topology model of a service as a (not
242 necessarily connected) directed graph. A node in this graph is
243 represented by a *Node Template*. A Node Template specifies the
244 occurrence of a Node Type as a component of a service. A *Node Type*
245 defines the properties of such a component (via *Node Type Properties*)
246 and the operations (via *Interfaces*) available to manipulate the
247 component. Node Types are defined separately for reuse purposes and a
248 Node Template references a Node Type and adds usage constraints, such as
249 how many times the component can occur.
250
251 |image1|
252
253 Figure 1: Structural Elements of Service Template and their Relations
254
255 TOSCA Modeling Principles & Data Model
256 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
257
258 This section describing TOSCA modeling principles and data model for
259 NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML
260 V1.0], or new type based on ETSI NFV requirements, etc.
261
262 TOSCA VNF Descriptor
263 ^^^^^^^^^^^^^^^^^^^^^^^^^
264
265 General
266 ~~~~~~~~~~
267
268 .. req::
269     :id: R-35854
270     :target: VNF
271     :keyword: MUST
272     :introduced: casablanca
273
274     The VNF Descriptor (VNFD) provided by VNF vendor **MUST** comply with
275     TOSCA/YAML based Service template for VNF descriptor specified in
276     ETSI NFV-SOL001.
277
278     **Note**: As the ETSI NFV-SOL001 is work in progress the below tables
279     summarizes the TOSCA definitions agreed to be part of current version
280     of NFV profile and that VNFD MUST comply with in ONAP Release 2+
281     Requirements.
282
283
284 .. req::
285     :id: R-65486
286     :target: VNF
287     :keyword: MUST
288     :introduced: casablanca
289
290     The VNFD **MUST** comply with ETSI GS NFV-SOL001 document endorsing
291     the above mentioned NFV Profile and maintaining the gaps with the
292     requirements specified in ETSI GS NFV-IFA011 standard.
293
294
295 .. req::
296     :id: R-17852
297     :target: VNF
298     :keyword: MAY
299     :introduced: casablanca
300
301     The VNFD **MAY** include TOSCA/YAML definitions that are not part of
302     NFV Profile. If provided, these definitions MUST comply with TOSCA
303     Simple Profile in YAML v.1.2.
304
305 .. req::
306     :id: R-46527
307     :target: VNF
308     :keyword: MUST
309     :introduced: casablanca
310
311     A VNFD is a deployment template which describes a VNF in terms of
312     deployment and operational behavior requirements. It contains
313     virtualized resources (nodes) requirements as well as connectivity
314     and interfaces requirements and **MUST** comply with info elements
315     specified in ETSI GS NFV-IFA 011. The main parts of the VNFD are
316     the following:
317
318       - VNF topology: it is modeled in a cloud agnostic way using virtualized
319         containers and their connectivity. Virtual Deployment Units (VDU)
320         describe the capabilities of the virtualized containers, such as
321         virtual CPU, RAM, disks; their connectivity is modeled with VDU
322         Connection Point Descriptors (VduCpd), Virtual Link Descriptors
323         (VnfVld) and VNF External Connection Point Descriptors
324         (VnfExternalCpd);
325
326       - VNF deployment aspects: they are described in one or more
327         deployment flavours, including configurable parameters, instantiation
328         levels, placement constraints (affinity / antiaffinity), minimum and
329         maximum VDU instance numbers. Horizontal scaling is modeled with
330         scaling aspects and the respective scaling levels in the deployment
331         flavours;
332
333     **Note**: The deployment aspects (deployment flavour etc.) are postponed
334     for future ONAP releases.
335
336       - VNF lifecycle management (LCM) operations: describes the LCM operations
337         supported per deployment flavour, and their input parameters;
338         Note, thatthe actual LCM implementation resides in a different layer,
339         namely referring to additional template artifacts.
340
341 .. req::
342     :id: R-15837
343     :target: VNF
344     :keyword: MUST
345     :introduced: casablanca
346
347     The following table defines the major TOSCA  Types specified in
348     ETSI NFV-SOL001 standard draft. The VNFD provided by a VNF vendor
349     **MUST** comply with the below definitions:
350
351
352 .. csv-table:: **TOSCA Definition**
353    :file: TOSCA_descriptor.csv
354    :header-rows: 1
355    :align: center
356    :widths: auto
357
358 Data Types
359 ~~~~~~~~~~~~
360
361 .. req::
362     :id: R-54356
363     :target: VNF
364     :keyword: MUST
365     :introduced: casablanca
366
367     The below table includes the data types used by NFV node and is based
368     on TOSCA/YAML constructs specified in draft GS NFV-SOL 001. The node
369     data definitions/attributes used in VNFD **MUST** comply with the below
370     table.
371
372 .. csv-table:: **NFV Data Types**
373    :file: NFV_data_type.csv
374    :header-rows: 1
375    :align: center
376    :widths: auto
377
378 .. req::
379     :id: R-54876
380     :target: VNF
381     :keyword: MUST
382     :introduced: casablanca
383
384     The below table describes the data types used for LCM configuration
385     and is based on TOSCA constructs specified in draft GS NFV-SOL 001.
386     The LCM configuration data elements used in VNFD **MUST** comply
387     with the below table.
388
389 .. csv-table:: **LCM Configuration**
390    :file: LCM_config.csv
391    :header-rows: 1
392    :align: center
393    :widths: auto
394
395 Artifact Types
396 ~~~~~~~~~~~~~~~~~~~~~~~~
397
398 No artifact type is currently supported in ONAP.
399
400 Capability Types
401 ~~~~~~~~~~~~~~~~~~~~~~~~
402
403 .. req::
404     :id: R-67895
405     :target: VNF
406     :keyword: MUST
407     :introduced: casablanca
408
409     The VNFD provided by VNF vendor may use the below described TOSCA
410     capabilities. An on-boarding entity (ONAP SDC) **MUST** support them.
411
412       **tosca.capabilities.nfv.VirtualBindable**
413
414         A node type that includes the VirtualBindable capability indicates
415         that it can be pointed by **tosca.relationships.nfv.VirtualBindsTo**
416         relationship type.
417
418       **tosca.capabilities.nfv.VirtualLinkable**
419
420         A node type that includes the VirtualLinkable capability indicates
421         that it can be pointed by **tosca.relationships.nfv.VirtualLinksTo**
422         relationship.
423
424       **tosca.capabilities.nfv.ExtVirtualLinkable**
425
426         A node type that includes the ExtVirtualLinkable capability
427         indicates that it can be pointed by
428         **tosca.relationships.nfv.VirtualLinksTo** relationship.
429
430       **Note**: This capability type is used in Casablanca how it does
431       not exist in the last SOL001 draft
432
433       **tosca.capabilities.nfv.VirtualCompute** and
434       **tosca.capabilities.nfv.VirtualStorage** includes flavours of VDU
435
436
437 Relationship Types
438 ~~~~~~~~~~~~~~~~~~~~~~~~
439
440 .. req::
441     :id: R-95321
442     :target: VNF
443     :keyword: MUST
444     :introduced: casablanca
445
446     The VNFD provided by VNF vendor may use the below described TOSCA
447     relationships. An on-boarding entity (ONAP SDC) **MUST** support them.
448
449       **tosca.relationships.nfv.VirtualBindsTo**
450
451         This relationship type represents an association relationship between
452         VDU and CP node types.
453
454       **tosca.relationships.nfv.VirtualLinksTo**
455
456         This relationship type represents an association relationship between
457         the VduCpd's and VirtualLinkDesc node types.
458
459
460 Interface Types
461 ~~~~~~~~~~~~~~~~~~~~~~~~
462
463 .. req::
464     :id: R-32155
465     :target: VNF
466     :keyword: MUST
467     :introduced: casablanca
468
469     The VNFD provided by VNF vendor may use the below described TOSCA
470     interface types. An on-boarding entity (ONAP SDC) **MUST** support them.
471
472       **tosca.interfaces.nfv.vnf.lifecycle.Nfv** supports LCM operations
473
474
475 TOSCA PNF Descriptor
476 ^^^^^^^^^^^^^^^^^^^^^^^^^
477
478
479 General
480 ~~~~~~~~~~
481
482 .. req::
483     :id: R-24632
484     :target: PNF
485     :keyword: MUST
486     :introduced: dublin
487
488     The PNF Descriptor (PNFD) provided by PNF vendor **MUST** comply with
489     TOSCA/YAML based Service template for PNF descriptor specified in ETSI
490     NFV-SOL001.
491
492
493 .. req::
494     :id: R-998862
495     :target: PNF
496     :keyword: MUST
497     :introduced: dublin
498
499     The PNFD provided by a PNF vendor **MUST** comply with the following TOSCA
500     Types as specified in ETSI NFV-SOL001 standard:
501
502       - tosca.nodes.nfv.PNF
503
504       - tosca.nodes.nfv.PnfExtCp
505
506
507 Data Types
508 ~~~~~~~~~~~~~~
509
510 .. req::
511     :id: R-484843
512     :target: PNF
513     :keyword: MUST
514     :introduced: dublin
515
516     The PNFD provided by a PNF vendor **MUST** comply with the following Data
517     Types as specified in ETSI NFV-SOL001 standard:
518
519       - tosca.datatypes.nfv.CpProtocolData
520
521       - tosca.datatypes.nfv.AddressData
522
523       - tosca.datatypes.nfv.L2AddressData
524
525       - tosca.datatypes.nfv.L3AddressData
526
527       - tosca.datatypes.nfv.LocationInfo
528
529       - tosca.datatypes.nfv.CivicAddressElement
530
531
532 Artifact Types
533 ~~~~~~~~~~~~~~~~~~~~~~~~
534
535 No artifact type is currently supported in ONAP.
536
537
538 Capability Types
539 ~~~~~~~~~~~~~~~~~~~~~~~~
540
541 .. req::
542     :id: R-177937
543     :target: PNF
544     :keyword: MUST
545     :introduced: dublin
546
547     The PNFD provided by a PNF vendor **MUST** comply with the following
548     Capabilities Types as specified in ETSI NFV-SOL001 standard:
549
550       - tosca.datatypes.nfv.VirtualLinkable
551
552
553 Requirements Types
554 ~~~~~~~~~~~~~~~~~~~~~~~~
555
556
557 Relationship Types
558 ~~~~~~~~~~~~~~~~~~~~~~~~
559
560 No requirements type is currently supported in ONAP.
561
562
563 Interface Types
564 ~~~~~~~~~~~~~~~~~~~~~~~~
565
566 No interface type is currently supported in ONAP.
567
568
569 Node Types
570 ~~~~~~~~~~~~~~
571
572
573 Group Types
574 ~~~~~~~~~~~~~~
575
576 No group type is currently supported in ONAP.
577
578
579 Policy Types
580 ~~~~~~~~~~~~~~
581
582
583
584 +--------------------------------------------------------------------+
585 | +--------------------------------------------------------------+   |
586 | | tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0       |   |
587 | |                                                              |   |
588 | | description: VNFD TOSCA file demo                            |   |
589 | |                                                              |   |
590 | | imports:                                                     |   |
591 | |                                                              |   |
592 | | - TOSCA\_definition\_nfv\_1\_0.yaml                          |   |
593 | |                                                              |   |
594 | | - TOSCA\_definition\_nfv\_ext\_1\_0.yaml                     |   |
595 | |                                                              |   |
596 | | | **node\_types:                                             |   |
597 | |   tosca.nodes.nfv.VNF.vOpenNAT:                              |   |
598 | |   derived\_from:** tosca.nodes.nfv.VNF                       |   |
599 | | | **requirements:                                            |   |
600 | |   **- **sriov\_plane:                                        |   |
601 | |   capability:** tosca.capabilities.nfv.VirtualLinkable       |   |
602 | | | **node:** tosca.nodes.nfv.VnfVirtualLinkDesc               |   |
603 | | | **relationship:** tosca.relationships.nfv.VirtualLinksTo   |   |
604 | +--------------------------------------------------------------+   |
605 +====================================================================+
606 +--------------------------------------------------------------------+
607
608
609 HPA Requirements
610 ^^^^^^^^^^^^^^^^^^
611
612 1. SR-IOV Passthrought
613
614 Definitions of SRIOV\_Port are necessary if VDU supports SR-IOV. Here is
615 an example.
616
617 .. code-block:: yaml
618
619   node\_templates:
620
621   vdu\_vNat:
622
623   SRIOV\_Port:
624
625   attributes:
626
627   tosca\_name: SRIOV\_Port
628
629   properties:
630
631   virtual\_network\_interface\_requirements:
632
633   - name: sriov
634
635   support\_mandatory: false
636
637   description: sriov
638
639   requirement:
640
641   SRIOV: true
642
643   role: root
644
645   description: sriov port
646
647   layer\_protocol: ipv4
648
649   requirements:
650
651   - virtual\_binding:
652
653   capability: virtual\_binding
654
655   node: vdu\_vNat
656
657   relationship:
658
659   type: tosca.relationships.nfv.VirtualBindsTo
660
661   - virtual\_link:
662
663   node: tosca.nodes.Root
664
665   type: tosca.nodes.nfv.VduCpd
666
667   substitution\_mappings:
668
669   requirements:
670
671   sriov\_plane:
672
673   - SRIOV\_Port
674
675   - virtual\_link
676
677   node\_type: tosca.nodes.nfv.VNF.vOpenNAT
678
679
680 2. Hugepages
681
682 Definitions of mem\_page\_size as one property shall be added to
683 Properties and set the value to large if one VDU node supports
684 huagepages. Here is an example.
685
686 .. code-block:: yaml
687
688   node\_templates:
689
690   vdu\_vNat:
691
692   Hugepages:
693
694   attributes:
695
696   tosca\_name: Huge\_pages\_demo
697
698   properties:
699
700   mem\_page\_size:large
701
702
703 3. NUMA (CPU/Mem)
704
705 Likewise, we shall add definitions of numa to
706 requested\_additional\_capabilities if we wand VUD nodes to support
707 NUMA. Here is an example.
708
709 .. code-block:: yaml
710
711   topology\_template:
712
713   node\_templates:
714
715   vdu\_vNat:
716
717   capabilities:
718
719   virtual\_compute:
720
721   properties:
722
723   virtual\_memory:
724
725   numa\_enabled: true
726
727   virtual\_mem\_size: 2 GB
728
729   requested\_additional\_capabilities:
730
731   numa:
732
733   support\_mandatory: true
734
735   requested\_additional\_capability\_name: numa
736
737   target\_performance\_parameters:
738
739   hw:numa\_nodes: "2"
740
741   hw:numa\_cpus.0: "0,1"
742
743   hw:numa\_mem.0: "1024"
744
745   hw:numa\_cpus.1: "2,3,4,5"
746
747   hw:numa\_mem.1: "1024"
748
749
750 4. Hyper-Theading
751
752 Definitions of Hyper-Theading are necessary as one of
753 requested\_additional\_capabilities of one VUD node if that node
754 supports Hyper-Theading. Here is an example.
755
756 .. code-block:: yaml
757
758   topology\_template:
759
760   node\_templates:
761
762   vdu\_vNat:
763
764   capabilities:
765
766   virtual\_compute:
767
768   properties:
769
770   virtual\_memory:
771
772   numa\_enabled: true
773
774   virtual\_mem\_size: 2 GB
775
776   requested\_additional\_capabilities:
777
778   hyper\_threading:
779
780   support\_mandatory: true
781
782   requested\_additional\_capability\_name: hyper\_threading
783
784   target\_performance\_parameters:
785
786   hw:cpu\_sockets : "2"
787
788   hw:cpu\_threads : "2"
789
790   hw:cpu\_cores : "2"
791
792   hw:cpu\_threads\_policy: "isolate"
793
794
795 5. OVS+DPDK
796
797 Definitions of ovs\_dpdk are necessary as one of
798 requested\_additional\_capabilities of one VUD node if that node
799 supports dpdk. Here is an example.
800
801 .. code-block:: yaml
802
803   topology\_template:
804
805   node\_templates:
806
807   vdu\_vNat:
808
809   capabilities:
810
811   virtual\_compute:
812
813   properties:
814
815   virtual\_memory:
816
817   numa\_enabled: true
818
819   virtual\_mem\_size: 2 GB
820
821   requested\_additional\_capabilities:
822
823   ovs\_dpdk:
824
825   support\_mandatory: true
826
827   requested\_additional\_capability\_name: ovs\_dpdk
828
829   target\_performance\_parameters:
830
831   sw:ovs\_dpdk: "true"
832
833
834 VES Requirements
835 ^^^^^^^^^^^^^^^^^^^^^^^^^
836
837 **Note: ONAP proprietary extensions in ETSI SOL004 standards for VES support
838 in CSAR package need to be manually loaded in R3 (Casablanca) for VNF and
839 PNFs. Platform support will be developed for this in upcoming releases.**
840
841
842 NFV TOSCA Type Definition
843 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
844
845 tosca.capabilites.nfv.VirtualCompute
846 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
847
848 This capability is used with the properties specified in ETSI SOL001 draft.
849
850 tosca.nodes.nfv.VDU.Compute
851 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
852
853 The NFV Virtualization Deployment Unit (VDU) compute node type
854 represents a VDU entity which it describes the deployment and
855 operational behavior of a VNF component (VNFC), as defined by **[ETSI
856 NFV IFA011].**
857
858 +-----------------------+-------------------------------+
859 | Shorthand Name        | VDU.Compute                   |
860 +=======================+===============================+
861 | Type Qualified Name   | tosca:VDU.Compute             |
862 +-----------------------+-------------------------------+
863 | Type URI              | tosca.nodes.nfv.VDU.Compute   |
864 +-----------------------+-------------------------------+
865 | derived\_from         | tosca.nodes.Compute           |
866 +-----------------------+-------------------------------+
867
868
869
870 Attributes
871 ++++++++++++
872
873 None
874
875
876 Capabilities
877 ++++++++++++++
878
879 +------------+--------------------+------------+------------------------------+
880 | Name       | Type               | Constraints| Description                  |
881 +============+====================+============+==============================+
882 | virtual\   | tosca.\            |            | Describes virtual compute    |
883 | _compute   | capabilities.nfv.\ |            | resources capabilities.      |
884 |            | VirtualCompute     |            |                              |
885 +------------+--------------------+------------+------------------------------+
886 | monitoring\| tosca.\            | None       | Monitoring parameter, which  |
887 | _parameter | capabilities.nfv.\ |            | can be tracked for a VNFC    |
888 |            | Metric             |            | based on this VDU            |
889 |            |                    |            |                              |
890 |            |                    |            | Examples include:            |
891 |            |                    |            | memory-consumption,          |
892 |            |                    |            | CPU-utilisation,             |
893 |            |                    |            | bandwidth-consumption, VNFC  |
894 |            |                    |            | downtime, etc.               |
895 +------------+--------------------+------------+------------------------------+
896 | Virtual\   | tosca.\            |            | Defines ability of           |
897 | _binding   | capabilities.nfv.\ |            | VirtualBindable              |
898 |            | VirtualBindable    |            |                              |
899 |            |                    |            |                              |
900 |            | editor note: need  |            |                              |
901 |            | to create a        |            |                              |
902 |            | capability type    |            |                              |
903 +------------+--------------------+------------+------------------------------+
904
905
906
907 Definition
908 ++++++++++++
909
910 .. code-block:: yaml
911
912   tosca.nodes.nfv.VDU.Compute:
913
914   derived\_from: tosca.nodes.Compute
915
916   properties:
917
918   name:
919
920   type: string
921
922   required: true
923
924   description:
925
926   type: string
927
928   required: true
929
930   boot\_order:
931
932   type: list # explicit index (boot index) not necessary, contrary to IFA011
933
934   entry\_schema:
935
936   type: string
937
938   required: false
939
940   nfvi\_constraints:
941
942   type: list
943
944   entry\_schema:
945
946   type: string
947
948   required: false
949
950   configurable\_properties:
951
952   type: map
953
954   entry\_schema:
955
956   type: tosca.datatypes.nfv.VnfcConfigurableProperties
957
958   required: true
959
960   attributes:
961
962   private\_address:
963
964   status: deprecated
965
966   public\_address:
967
968   status: deprecated
969
970   networks:
971
972   status: deprecated
973
974   ports:
975
976   status: deprecated
977
978   capabilities:
979
980   virtual\_compute:
981
982   type: tosca.capabilities.nfv.VirtualCompute
983
984   virtual\_binding:
985
986   type: tosca.capabilities.nfv.VirtualBindable
987
988   #monitoring\_parameter:
989
990   # modeled as ad hoc (named) capabilities in VDU node template
991
992   # for example:
993
994   #capabilities:
995
996   # cpu\_load: tosca.capabilities.nfv.Metric
997
998   # memory\_usage: tosca.capabilities.nfv.Metric
999
1000   host: #Editor note: FFS. How this capabilities should be used in NFV Profile|
1001
1002   type: *tosca.capabilities.Container*
1003
1004   valid\_source\_types:
1005   [*tosca.nodes.SoftwareComponent*]
1006
1007   occurrences: [0,UNBOUNDED]
1008
1009   endpoint:
1010
1011   occurrences: [0,0]
1012
1013   os:
1014
1015   occurrences: [0,0]
1016
1017   scalable:
1018   #Editor note: FFS. How this capabilities should be used in NFV Profile
1019
1020   type: *tosca.capabilities.Scalable*
1021
1022   binding:
1023
1024   occurrences: [0,UNBOUND]
1025
1026   requirements:
1027
1028   - virtual\_storage:
1029
1030   capability: tosca.capabilities.nfv.VirtualStorage
1031
1032   relationship: tosca.relationships.nfv.VDU.AttachedTo
1033
1034   node: tosca.nodes.nfv.VDU.VirtualStorage
1035
1036   occurences: [ 0, UNBOUNDED ]
1037
1038   - local\_storage: #For NFV Profile, this requirement is deprecated.
1039
1040   occurrences: [0,0]
1041
1042   artifacts:
1043
1044   - sw\_image:
1045
1046   file:
1047
1048   type: tosca.artifacts.nfv.SwImage
1049
1050
1051 Artifact
1052 ++++++++++
1053
1054 Note: currently not supported.
1055
1056 +--------+---------+----------------+------------+------------------------+
1057 | Name   | Required| Type           | Constraints| Description            |
1058 +========+=========+================+============+========================+
1059 | SwImage| Yes     | tosca.\        |            | Describes the software |
1060 |        |         | artifacts.nfv.\|            | image which is directly|
1061 |        |         | SwImage        |            | realizing this virtual |
1062 |        |         |                |            | storage                |
1063 +--------+---------+----------------+------------+------------------------+
1064
1065
1066 |image2|
1067
1068
1069
1070 tosca.nodes.nfv.VDU.VirtualStorage
1071 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1072
1073 The NFV VirtualStorage node type represents a virtual storage entity
1074 which it describes the deployment and operational behavior of a virtual
1075 storage resources, as defined by **[ETSI NFV IFA011].**
1076
1077 **[editor note]** open issue: should NFV profile use the current storage
1078 model as described in YAML 1.1. Pending on Shitao proposal (see
1079 NFVIFA(17)000110 discussion paper)
1080
1081 **[editor note]** new relationship type as suggested in Matt
1082 presentation. Slide 8. With specific rules of "valid\_target\_type"
1083
1084 +---------------------------+--------------------------------------+
1085 | **Shorthand Name**        | VirtualStorage                       |
1086 +===========================+======================================+
1087 | **Type Qualified Name**   | tosca: VirtualStorage                |
1088 +---------------------------+--------------------------------------+
1089 | **Type URI**              | tosca.nodes.nfv.VDU.VirtualStorage   |
1090 +---------------------------+--------------------------------------+
1091 | **derived\_from**         | tosca.nodes.Root                     |
1092 +---------------------------+--------------------------------------+
1093
1094 tosca.artifacts.nfv.SwImage
1095 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1096
1097 +---------------------------+------------------------------------+
1098 | **Shorthand Name**        | SwImage                            |
1099 +===========================+====================================+
1100 | **Type Qualified Name**   | tosca:SwImage                      |
1101 +---------------------------+------------------------------------+
1102 | **Type URI**              | tosca.artifacts.nfv.SwImage        |
1103 +---------------------------+------------------------------------+
1104 | **derived\_from**         | tosca.artifacts.Deployment.Image   |
1105 +---------------------------+------------------------------------+
1106
1107 Properties
1108 ++++++++++++
1109
1110 +-----------------+---------+----------+------------+-------------------------+
1111 | Name            | Required| Type     | Constraints| Description             |
1112 +=================+=========+==========+============+=========================+
1113 | name            | yes     | string   |            | Name of this software   |
1114 |                 |         |          |            | image                   |
1115 +-----------------+---------+----------+------------+-------------------------+
1116 | version         | yes     | string   |            | Version of this software|
1117 |                 |         |          |            | image                   |
1118 +-----------------+---------+----------+------------+-------------------------+
1119 | checksum        | yes     | string   |            | Checksum of the software|
1120 |                 |         |          |            | image file              |
1121 +-----------------+---------+----------+------------+-------------------------+
1122 | container\      | yes     | string   |            | The container format    |
1123 | _format         |         |          |            | describes the container |
1124 |                 |         |          |            | file format in which    |
1125 |                 |         |          |            | software image is       |
1126 |                 |         |          |            | provided.               |
1127 +-----------------+---------+----------+------------+-------------------------+
1128 | disk\_format    | yes     | string   |            | The disk format of a    |
1129 |                 |         |          |            | software image is the   |
1130 |                 |         |          |            | format of the underlying|
1131 |                 |         |          |            | disk image              |
1132 +-----------------+---------+----------+------------+-------------------------+
1133 | min\_disk       | yes     | scalar-\ |            | The minimal disk size   |
1134 |                 |         | unit.size|            | requirement for this    |
1135 |                 |         |          |            | software image.         |
1136 +-----------------+---------+----------+------------+-------------------------+
1137 | min\_ram        | no      | scalar-\ |            | The minimal RAM         |
1138 |                 |         | unit.size|            | requirement for this    |
1139 |                 |         |          |            | software image.         |
1140 +-----------------+---------+----------+------------+-------------------------+
1141 | Size            | yes     | scalar-\ |            | The size of this        |
1142 |                 |         | unit.size|            | software image          |
1143 +-----------------+---------+----------+------------+-------------------------+
1144 | sw\_image       | yes     | string   |            | A reference to the      |
1145 |                 |         |          |            | actual software image   |
1146 |                 |         |          |            | within VNF Package, or  |
1147 |                 |         |          |            | url.                    |
1148 +-----------------+---------+----------+------------+-------------------------+
1149 | operating\      | no      | string   |            | Identifies the operating|
1150 | _system         |         |          |            | system used in the      |
1151 |                 |         |          |            | software image.         |
1152 +-----------------+---------+----------+------------+-------------------------+
1153 | supported\      | no      | list     |            | Identifies the          |
1154 | _virtualization\|         |          |            | virtualization          |
1155 | _enviroment     |         |          |            | environments (e.g.      |
1156 |                 |         |          |            | hypervisor) compatible  |
1157 |                 |         |          |            | with this software image|
1158 +-----------------+---------+----------+------------+-------------------------+
1159
1160
1161 Definition
1162 +++++++++++
1163
1164 .. code-block:: yaml
1165
1166   tosca.artifacts.nfv.SwImage:
1167
1168     derived\_from: tosca.artifacts.Deployment.Image
1169
1170     properties or metadata:
1171
1172       #id:
1173
1174         # node name
1175
1176       name:
1177
1178         type: string
1179
1180   required: true
1181
1182       version:
1183
1184         type: string
1185
1186   required: true
1187
1188       checksum:
1189
1190         type: string
1191
1192   required: true
1193
1194       container\_format:
1195
1196         type: string
1197
1198   required: true
1199
1200       disk\_format:
1201
1202         type: string
1203
1204   required: true
1205
1206       min\_disk:
1207
1208         type: scalar-unit.size # Number
1209
1210   required: true
1211
1212       min\_ram:
1213
1214         type: scalar-unit.size # Number
1215
1216   required: false
1217
1218       size:
1219
1220         type: scalar-unit.size # Number
1221
1222   required: true
1223
1224       sw\_image:
1225
1226         type: string
1227
1228   required: true
1229
1230       operating\_system:
1231
1232         type: string
1233
1234   required: false
1235
1236       supported\_virtualisation\_environments:
1237
1238         type: list
1239
1240         entry\_schema:
1241
1242           type: string
1243
1244   required: false
1245
1246
1247 .. |image1| image:: ../Image1.png
1248    :width: 5.76806in
1249    :height: 4.67161in
1250
1251 .. |image2| image:: ../Image2.png
1252    :width: 5.40486in
1253    :height: 2.46042in