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