diff --git a/example-data/complex-vnfd.xml b/example-data/complex-vnfd.xml
index b10ec9f35eae5c54180a1a66505a10e1408db47b..39bbbaf03bed0b92b9fa98710adcc78be70afd2c 100644
--- a/example-data/complex-vnfd.xml
+++ b/example-data/complex-vnfd.xml
@@ -78,11 +78,11 @@
16
-
+
root
root-storage
10
-
+
CP
CP
@@ -116,17 +116,13 @@
internal-vl
-
- ipv4
-
+ ipv4
mgmt
-
- ipv4
-
+ ipv4
diff --git a/example-data/nfv-nsd.xml b/example-data/nfv-nsd.xml
index ba4ec2d7b634784082a719200016af7c15ecdefa..57f7c7c840327e7396717dfcd1c5b735f36130bd 100644
--- a/example-data/nfv-nsd.xml
+++ b/example-data/nfv-nsd.xml
@@ -49,9 +49,10 @@
bare
qcow2
+ 20
2.0
1
- http://www.cisco.com/asa.qcow2
+ http://www.mycompany.com/asa.qcow2
inside
@@ -132,4 +133,4 @@
-
+
diff --git a/example-data/nfv-vnfd.xml b/example-data/nfv-vnfd.xml
index 7587240efcd281a762527e1b7fa1e6a49049ee9e..f9ffa74826c2b86702e49ae2472ae5f1277239d7 100644
--- a/example-data/nfv-vnfd.xml
+++ b/example-data/nfv-vnfd.xml
@@ -48,9 +48,10 @@
bare
qcow2
+ 20
2.0
1
- http://www.cisco.com/asa.qcow2
+ http://www.mycompany.com/asa.qcow2
inside
diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 92731014a95ae724ed26a40eb703cf7928f157c3..fef928e79c8de820afadfe5e03f5d361336dbe21 100644
--- a/example-data/nfv.xml
+++ b/example-data/nfv.xml
@@ -54,12 +54,23 @@
1
http://mycompany.images.com/asa.qcow2
+
+ inside-vl
+
+ 1g
+
+ 1
+ 1
+ 0.02
+
+
+
+ ethernet
+
+
inside
-
- firewall
- inside
-
+ inside-vl
ethernet
@@ -85,6 +96,26 @@
1
2
+
+ inside-vl
+ 1g
+
+ 10
+
+
+ 1
+
+
+ ipv4
+
+ inside-network
+ ipv4
+ 192.138.0.0/8
+ 192.138.0.1
+ true
+
+
+
double
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index 0a1c361eddba042598317e1bec71d6797a287d03..7077b5c7b1018057b7c02829dc02f44a51e76dd7 100644
--- a/src/yang/etsi-nfv-common.yang
+++ b/src/yang/etsi-nfv-common.yang
@@ -9,6 +9,14 @@ submodule etsi-nfv-common {
description
"Common data types for ETSI data models.";
+ revision 2019-10-01 {
+ description
+ "Version 2.7.1.
+
+ Common data structures to support VNFD and NSD according to:
+ ETSI GS NFV-IFA 014 Ed271v264
+ ETSI GS NFV-IFA 011 Ed271v264";
+ }
revision 2019-04-25 {
description
"Initial revision
@@ -243,6 +251,99 @@ submodule etsi-nfv-common {
"Ephemeral type of storage.";
}
+ identity forwarding-behaviour {
+ description
+ "Base identity for forwarding behaviour.";
+ }
+
+ identity all {
+ base forwarding-behaviour;
+ description
+ "Traffic flows shall be forwarded simultaneously to all CP
+ or SAP instances created from the referenced CP profile(s).";
+ }
+
+ identity lb {
+ base forwarding-behaviour;
+ description
+ "Traffic flows shall be forwarded to one CP or SAP instance
+ created from the referenced CP profile(s) selected based on
+ a load-balancing algorithm.";
+ }
+
+ identity vip-function {
+ description
+ "Indicates the function the virtual IP address is used for.";
+ }
+
+ identity high-availability {
+ base vip-function;
+ description
+ "High availability function.";
+ }
+
+ identity load-balancing {
+ base vip-function;
+ description
+ "Load balancing function.";
+ }
+
+ identity vnic-type {
+ description
+ "Describes the type of the virtual network interface realizing
+ the CPs instantiated from this CPD. This is used to determine
+ which mechanism driver(s) to be used to bind the port. Value:
+ • NORMAL
+ • VIRTIO
+ • DIRECT
+ • BAREMETAL
+ • VIRTIO-FORWARDER
+ • DIRECT-PHYSICAL
+ • SMART-NIC";
+ }
+
+ identity normal {
+ base vnic-type;
+ description
+ "Normal NIC.";
+ }
+
+ identity virtio {
+ base vnic-type;
+ description
+ "VirtIO NIC.";
+ }
+
+ identity direct {
+ base vnic-type;
+ description
+ "Direct NIC type.";
+ }
+
+ identity bare-metal {
+ base vnic-type;
+ description
+ "Bare metal NIC type.";
+ }
+
+ identity virtio-forwarder {
+ base vnic-type;
+ description
+ "VirtIO Forwarder NIC type.";
+ }
+
+ identity direct-physical {
+ base vnic-type;
+ description
+ "Direct physical NIC type.";
+ }
+
+ identity smart-nic {
+ base vnic-type;
+ description
+ "SmartNIC or Smart NIC type.";
+ }
+
/*
* Typedefs
*/
@@ -294,8 +395,8 @@ submodule etsi-nfv-common {
grouping local-affinity-or-anti-affinity-rule {
list local-affinity-or-anti-affinity-rule {
- key "affinity-type affinity-scope";
- leaf affinity-type {
+ key "type scope";
+ leaf type {
type affinity-type;
description
"Specifies whether the rule is an affinity rule or an
@@ -305,7 +406,7 @@ submodule etsi-nfv-common {
LocalAffinityOrAntiAffinityRule information element.";
}
- leaf affinity-scope {
+ leaf scope {
type affinity-scope;
description
"Specifies the scope of the rule, possible values are
diff --git a/src/yang/etsi-nfv-descriptors.yang b/src/yang/etsi-nfv-descriptors.yang
index afedb3b7a4a8daf1178ce22f92df35c9b96188f9..0f2b64c5e221287e18881fc661e6c50ad9f443b1 100644
--- a/src/yang/etsi-nfv-descriptors.yang
+++ b/src/yang/etsi-nfv-descriptors.yang
@@ -14,6 +14,13 @@ module etsi-nfv-descriptors {
description
"Network Function Virtualization Descriptors";
+ revision 2019-10-01 {
+ description
+ "Version 2.7.1.
+
+ NSD and PNFD according to ETSI GS NFV-IFA 014 Ed271v264
+ VNFD according to ETSI GS NFV-IFA 011 Ed271v264.";
+ }
revision 2019-04-25 {
description
"Initial revision.
@@ -24,6 +31,7 @@ module etsi-nfv-descriptors {
container nfv {
list vnfd {
key "id";
+
description
"A VNF Descriptor (VNFD) is a deployment template which
describes a VNF in terms of deployment and operational
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index 1eb49ce02f133723d16093debe9c6aef98d1397a..8aa781a774d201e20b35fc7c62e8c0f393293136 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -11,6 +11,14 @@ submodule etsi-nfv-ns {
description
"Models for NS according to ETSI GS NFV-IFA 014.";
+ revision 2019-10-01 {
+ description
+ "Version 2.7.1.
+
+ Common data structures to support VNFD and NSD according to:
+ ETSI GS NFV-IFA 014 Ed271v264
+ ETSI GS NFV-IFA 011 Ed271v264";
+ }
revision 2019-04-25 {
description
"Initial revision
@@ -97,7 +105,7 @@ submodule etsi-nfv-ns {
leaf-list vnfd-id {
type leafref {
- path "../../vnfd/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:id";
}
description
"References the VNFD of a constituent VNF.";
@@ -108,7 +116,7 @@ submodule etsi-nfv-ns {
leaf-list pnfd-id {
type leafref {
- path "../../pnfd/id";
+ path "/nfv:nfv/nfv:pnfd/nfv:id";
}
description
"References the PNFD of a constituent PNF.";
@@ -164,7 +172,7 @@ submodule etsi-nfv-ns {
leaf vnfd-id {
mandatory true;
type leafref {
- path "../../../../vnfd/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:id";
}
must "boolean(../../../vnfd-id[.=current()])";
}
@@ -172,7 +180,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id {
mandatory true;
type leafref {
- path "deref(../vnfd-id)/../ext-cpd/id";
+ path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
@@ -181,7 +189,7 @@ submodule etsi-nfv-ns {
leaf pnfd-id {
mandatory true;
type leafref {
- path "../../../../pnfd/id";
+ path "/nfv:nfv/nfv:pnfd/nfv:id";
}
must "boolean(../pnfd-id[.=current()])";
}
@@ -189,7 +197,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id {
mandatory true;
type leafref {
- path "deref(../pnfd-id)/../ext-cpd/id";
+ path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
@@ -415,121 +423,136 @@ submodule etsi-nfv-ns {
element";
}
- list cpd-pool {
+ list nfp-position-element {
key "id";
- description
- "Describes a pool of descriptors of connection points
- attached to one of the constituent VNFs and PNFs and/or
- one of the SAPs of the parent NS or of a nested NS.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
- element";
+ min-elements 1;
leaf id {
type string;
+ description
+ "Identifier of this NfpPositionElemen information
+ element. It uniquely identifies an
+ NfpPositionElemen.";
+ reference
+ "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
+ information element";
}
- choice constituent-base-element-id {
- mandatory "true";
- container vnf-profile {
- leaf vnf-profile-id {
- must ". = deref(../../vnfd-profile-id)" {
- }
- type leafref {
- path "../../../../../nsd/df/vnf-profile/id";
+ container desc {
+ choice constituent-base-element-id {
+ mandatory "true";
+ container vnf-profile {
+ leaf vnf-profile-id {
+ must ". = deref(../../vnfd-profile-id)" {
+ }
+ type leafref {
+ path "../../../../../../nsd/df/vnf-profile/id";
+ }
}
}
- }
- container pnf-profile {
- leaf pnf-profile-id {
- must ". = deref(../../pnfd-profile-id)" {
- }
- type leafref {
- path "../../../../../nsd/df/pnf-profile/id";
+
+ container pnf-profile {
+ leaf pnf-profile-id {
+ must ". = deref(../../pnfd-profile-id)" {
+ }
+ type leafref {
+ path "../../../../../../nsd/df/pnf-profile/id";
+ }
}
}
- }
- container ns-profile {
- leaf ns-profile-id {
- must ". = deref(../../ns-profile-id)" {
- }
- type leafref {
- path "../../../../../nsd/df/ns-profile/id";
+
+ container ns-profile {
+ leaf ns-profile-id {
+ must ". = deref(../../ns-profile-id)" {
+ }
+ type leafref {
+ path "../../../../../../nsd/df/ns-profile/id";
+ }
}
}
+ description
+ "Reference to the profile of an NS constituent.";
+ reference
+ "GS NFV IFA014: Section 6.4.8
+ CpdInConstituentElement information element";
}
- description
- "Reference to the profile of an NS constituent.";
- reference
- "GS NFV IFA014: Section 6.4.8 CpdInConstituentElement
- information element";
- }
- choice constituent-cpd-id {
- container vnf {
- leaf vnfd-id {
- must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
- }
- type leafref {
- path "../../../../../vnfd/id";
+ choice constituent-cpd-id {
+ container vnf {
+ leaf vnfd-id {
+ must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
+ }
+ type leafref {
+ path "/nfv:nfv/nfv:vnfd/nfv:id";
+ }
}
- }
- leaf cpd-id {
- type leafref {
- path "deref(../vnfd-id)/../ext-cpd/id";
+ leaf cpd-id {
+ type leafref {
+ path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
+ }
}
}
- }
- container pnf {
- leaf pnfd-id {
- must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
+
+ container pnf {
+ leaf pnfd-id {
+ must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
+ }
+ type leafref {
+ path "/nfv:nfv/nfv:pnfd/nfv:id";
+ }
}
- type leafref {
- path "../../../../../pnfd/id";
+ leaf pnf-cpd-id {
+ type leafref {
+ path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
+ }
}
}
- leaf pnf-cpd-id {
- type leafref {
- path "deref(../pnfd-id)/../ext-cpd/id";
- }
- }
- }
- container ns {
- leaf nsd-id {
- must ". = deref(../../nested-ns-profile-id)/" +
- "../nsd-id" {
- }
- type leafref {
- path "../../../../../nsd/id";
+ container ns {
+ leaf nsd-id {
+ must ". = deref(../../nested-ns-profile-id)/" +
+ "../nsd-id" {
+ }
+
+ type leafref {
+ path "../../../../../../nsd/id";
+ }
}
- }
- leaf sap-cpd-id {
- type leafref {
- path "deref(../nsd-id)/../sapd/id";
+ leaf sap-cpd-id {
+ type leafref {
+ path "deref(../nsd-id)/../sapd/id";
+ }
}
}
+ description
+ "References the VNF external CPD for a given
+ VnfProfile, or the PNF external CPD for a given
+ PnfProfile, or a NS SAPD for a given NsProfile
+ identified by the constituentBaseElementId.";
+ reference
+ "GS NFV IFA014: Section 6.4.8.2
+ CpdInConstituentElement information element";
}
description
- "A reference to the descriptor of a connection point
- attached to one of the constituent VNFs and PNFs or to
- the descriptor of a NS SAP.";
+ "Specifies a CPD or SAPD in the context of a profile
+ of an NS constituent element.";
reference
- "GS NFV IFA014: Section 6.4.4.2 CpdPool information
- element";
+ "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
+ information element";
}
+ description
+ "One or a pair of CPDs or SAPDs. These descriptors
+ shall be members of the CpdPool associated to the
+ parent VNFFG.";
+ reference
+ "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ information element";
}
list nfpd {
key "id";
- description
- "The network forwarding path associated to the VNFFG.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
- element";
-
leaf id {
type string;
description
@@ -544,32 +567,18 @@ submodule etsi-nfv-ns {
type string;
description
"Provides an NFP classification and selection rule.
- The rule may be expressed as a criteria constructed
- out of atomic assertions linked by Boolean operators
- AND, OR and NOT.";
+ The rule may be expressed as a criteria constructed out
+ of atomic assertions linked by Boolean operators AND,
+ OR and NOT.";
reference
"GS NFV IFA014: Section 6.4.3.2 Nfpd information
element";
}
- list position-desc-id {
+ list position-desc {
key "id";
- description
- "Describes a position in the NFP in terms of one or
- more CP profiles and rules for distributing the
- traffic among CP and SAP instances created from the
- CPD or SAPD associated to these profiles. This shall
- be connection point profile, which is either a CPD
- associated with the VnfProfile of a constituent VNF,
- or a CPD associated with the PnfProfile of a
- constituent PNF, or a SAPD associated with the
- NsProfile of a nested NS. The related VnfProfile,
- PnfProfile and NsProfile shall be included in the
- parent VNFFGD.";
- reference
- "GS NFV IFA014: Section 6.4.3.2 Nfpd information
- element";
+ min-elements 1;
leaf id {
type string;
@@ -580,68 +589,69 @@ submodule etsi-nfv-ns {
information element";
}
- list cp-profile-id {
- key "id";
-
+ leaf-list nfp-position-element-id {
+ type leafref {
+ path "../../../nfp-position-element/id";
+ }
description
- "References the profile of a connection point to be
- traversed by the traffic flows matching the criteria.
- This shall be a connection point attached to one of
- the constituent VNFs and PNFs of the parent VNFFG,
- or a SAP of one of the constituent nested NSs of the
- parent VNFFG.";
+ "Reference to one or a pair of CPDs or SAPDs.";
reference
"GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
information element";
+ }
- leaf id {
- type string;
- description
- "Identifier of this CpProfile information element.
- It uniquely identifies a CpProfile.";
- reference
- "GS NFV IFA014: Section 6.4.6.2 CpProfile
- information element";
+ leaf forwarding-behaviour {
+ type identityref {
+ base forwarding-behaviour;
}
+ description
+ "Identifies a rule to apply to forward traffic to CP or
+ SAP instances corresponding to the referenced CPD(s)
+ and SAPD(s). The minimum list of rules to be supported
+ shall include:
+ • ALL = Traffic flows shall be forwarded simultaneously
+ to all CP or SAP instances created from the
+ referenced CP profile(s).
+ • LB = Traffic flows shall be forwarded to one CP or SAP
+ instance created from the referenced CP profile(s)
+ selected based on a load-balancing algorithm.";
+ reference
+ "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ information element";
+ }
- list constituent-profile-elements {
- key "id";
-
- description
- "Specifies the constituents of the CpProfile.";
- reference
- "GS NFV IFA014: Section 6.4.6.2 CpProfile
- information element";
-
- leaf id {
- type string;
- description
- "Specifies the constituents of the CpProfile.";
- reference
- "GS NFV IFA014: Section 6.4.7.2
- ConstituentProfileElements information element";
- }
-
- leaf cpd-id {
- type string;
- description
- "References the VNF external CPD for a given
- VnfProfile, or the PNF external CPD for a given
- PnfProfile, or a NS SAPD for a give NsProfile
- identified by the constituentBasedElementId.";
- reference
- "GS NFV IFA014: Section 6.4.7.2
- ConstituentProfileElements information element";
- }
- }
+ leaf forwarding-behavior-input-parameters {
+ type string;
+ description
+ "Provides input parameters to configure the forwarding
+ behaviour (e.g. identifies a load balancing
+ algorithm).";
+ reference
+ "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ information element";
}
+
+ description
+ "Describes a position in the NFP in terms of one or more
+ CPDs and SAPDs and rules for distributing the traffic
+ among CP and SAP instances created from these CPDs
+ and SAPDs.";
+ reference
+ "GS NFV IFA014: Section 6.4.3.2 Nfpd information
+ element";
}
+ description
+ "The network forwarding path associated to the VNFFG.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ element";
}
}
leaf-list autoscale-rule {
type string;
}
+
list lifecycle-management-script {
key "event";
leaf event {
@@ -721,7 +731,7 @@ submodule etsi-nfv-ns {
leaf vnfd-id {
mandatory true;
type leafref {
- path "../../../../vnfd/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:id";
}
description
"References a VNFD.";
@@ -733,7 +743,7 @@ submodule etsi-nfv-ns {
leaf flavour-id {
mandatory true;
type leafref {
- path "deref(../vnfd-id)/../df/id";
+ path "deref(../vnfd-id)/../nfv:df/nfv:id";
}
description
"Identifies a flavour within the VNFD.";
@@ -745,7 +755,8 @@ submodule etsi-nfv-ns {
leaf instantiation-level {
mandatory true;
type leafref {
- path "deref(../flavour-id)/../instantiation-level/id";
+ path "deref(../flavour-id)/../nfv:instantiation-level/" +
+ "nfv:id";
}
description
"Identifier of the instantiation level of the VNF DF
@@ -845,7 +856,7 @@ submodule etsi-nfv-ns {
leaf constituent-cpd-id {
type leafref {
- path "deref(../../../vnfd-id)/../ext-cpd/id";
+ path "deref(../../../vnfd-id)/../nfv:ext-cpd/nfv:id";
}
description
"A reference to the descriptor of a connection point
@@ -879,7 +890,7 @@ submodule etsi-nfv-ns {
leaf pnfd-id {
type leafref {
- path "../../../../pnfd/id";
+ path "/nfv:nfv/nfv:pnfd/nfv:id";
}
description
"References a PNFD.";
@@ -935,7 +946,7 @@ submodule etsi-nfv-ns {
leaf constituent-cpd-id {
type leafref {
- path "deref(../../../pnfd-id)/../ext-cpd/id";
+ path "deref(../../../pnfd-id)/../nfv:ext-cpd/nfv:id";
}
description
"A reference to the descriptor of a connection point
@@ -1283,6 +1294,71 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.3.2.2 NsDf information element";
}
+ container ns-lcm-additional-params {
+ container instantiate {
+ list params {
+ key "key";
+
+ leaf key {
+ type string;
+ }
+
+ leaf value {
+ type string;
+ }
+ description
+ "Array of KVP requirements for additional parameters
+ of NS to be passed when invoking the Instantiate Ns
+ operation.";
+ reference
+ "GS NFV IFA014: Section 6.2.10.3
+ InstantiateNsAdditionalParams information element";
+ }
+ }
+
+ container scale {
+ list params {
+ key "key";
+
+ leaf key {
+ type string;
+ }
+
+ leaf value {
+ type string;
+ }
+ description
+ "Array of KVP requirements for additional parameters
+ of NS to be passed when invoking the Scale Ns
+ operation.";
+ reference
+ "GS NFV IFA014: Section 6.2.10.4
+ ScaleNsAdditionalParams information element";
+ }
+ }
+
+ container heal {
+ list params {
+ key "key";
+
+ leaf key {
+ type string;
+ }
+
+ leaf value {
+ type string;
+ }
+ description
+ "Array of KVP requirements for additional parameters
+ of NS to be passed when invoking the Heal Ns
+ operation.";
+ reference
+ "GS NFV IFA014: Section 6.2.10.5
+ HealNsAdditionalParams information element";
+ }
+ }
+ }
+
list ns-profile {
must "min-number-of-instances <= max-number-of-instances" {
error-message
@@ -1506,7 +1582,7 @@ submodule etsi-nfv-ns {
container vnf-indicator-info {
leaf vnfd-id {
type leafref {
- path "../../../../../vnfd/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:id";
}
description
"Identifies a VNFD.";
@@ -1518,7 +1594,7 @@ submodule etsi-nfv-ns {
leaf vnf-indicator {
mandatory true;
type leafref {
- path "deref(../vnfd-id)/../indicator/id";
+ path "deref(../vnfd-id)/../nfv:indicator/nfv:id";
}
description
"Identifies a VNF indicator within the VNFD.";
diff --git a/src/yang/etsi-nfv-nsd.yang b/src/yang/etsi-nfv-nsd.yang
index 52cd50858104cbfdf6de45381c30bdd3f4dc4fd6..304fc30e19f93ead8831dc49a57dd6d382b9f85a 100644
--- a/src/yang/etsi-nfv-nsd.yang
+++ b/src/yang/etsi-nfv-nsd.yang
@@ -4,7 +4,7 @@ module etsi-nfv-nsd {
prefix nsd;
import etsi-nfv-descriptors {
- prefix vnf;
+ prefix nfv;
}
organization
@@ -13,6 +13,14 @@ module etsi-nfv-nsd {
description
"Network Services Descriptors";
+ revision 2019-10-01 {
+ description
+ "Version 2.7.1.
+
+ Common data structures to support VNFD and NSD according to:
+ ETSI GS NFV-IFA 014 Ed271v264
+ ETSI GS NFV-IFA 011 Ed271v264";
+ }
revision 2019-04-25 {
description
"Initial revision.
@@ -20,23 +28,10 @@ module etsi-nfv-nsd {
}
container nsd {
- list vnfd {
- key "id";
- description
- "A VNF Descriptor (VNFD) is a deployment template which
- describes a VNF in terms of deployment and operational
- behaviour requirements. It also contains connectivity,
- interface and virtualised resource requirements";
- reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
-
- uses vnf:vnfd;
- }
-
list nsd {
key "id";
max-elements 1;
- uses vnf:nsd;
+ uses nfv:nsd;
description
"The NSD information element is a deployment template whose
instances are used by the NFVO for the lifecycle management
@@ -45,18 +40,5 @@ module etsi-nfv-nsd {
"GS NFV-IFA014: Section 6.2.2, Network Service Descriptor
information element";
}
-
- list pnfd {
- key "id";
-
- description
- "The Pnfd information element is a deployment template
- enabling on-boarding PNFs and referencing them from an
- NSD. It focuses on connectivity aspects only.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element.";
-
- uses vnf:pnfd;
- }
}
}
diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang
index ffe5d064004831f8c62fe68b97f6811f745dfd2a..170e9638b87a37dba4fe7599d1bb97ed0d4c3c2b 100644
--- a/src/yang/etsi-nfv-pnf.yang
+++ b/src/yang/etsi-nfv-pnf.yang
@@ -12,6 +12,14 @@ submodule etsi-nfv-pnf {
description
"Models for PNFD according to GS NFV-IFA 014.";
+ revision 2019-10-01 {
+ description
+ "Version 2.7.1.
+
+ Common data structures to support VNFD and NSD according to:
+ ETSI GS NFV-IFA 014 Ed271v264
+ ETSI GS NFV-IFA 011 Ed271v264";
+ }
revision 2019-04-25 {
description
"Initial revision.
@@ -92,18 +100,6 @@ submodule etsi-nfv-pnf {
"GS NFV-IFA014: Section 6.6.2, Pnfd information element";
}
- list security {
- key "signature";
- uses security-parameters;
- description
- "Provides a signature to prevent tampering.
- Editor's Note: While IFA014 does specify that the PNFD
- includes a security parameter. SOL001 does not have one.
- We need to harmonize SOL001 & SOL006 on this point.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
-
leaf geographical-location-info {
type string;
description
diff --git a/src/yang/etsi-nfv-pnfd.yang b/src/yang/etsi-nfv-pnfd.yang
index a365e0189d31d9342ab067369ec328691cd22563..8b3e46ebd17181c3e4ccd1b2dfd03817479e302a 100644
--- a/src/yang/etsi-nfv-pnfd.yang
+++ b/src/yang/etsi-nfv-pnfd.yang
@@ -13,6 +13,12 @@ module etsi-nfv-pnfd {
description
"Physcial Network Function Descriptor.";
+ revision 2019-10-01 {
+ description
+ "Version 2.7.1.
+
+ NSD according to ETSI GS NFV-IFA 014 Ed271v264.";
+ }
revision 2019-04-25 {
description
"Initial revision.
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index 43c11095fa644be600e48c843e9c5fca838e2be8..283217a50a5da677784713f4b209cef71a3b05fa 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -16,6 +16,14 @@ submodule etsi-nfv-vnf {
description
"Models for VNFD according to GS NFV-IFA 011.";
+ revision 2019-10-01 {
+ description
+ "Version 2.7.1.
+
+ Common data structures to support VNFD and NSD according to:
+ ETSI GS NFV-IFA 014 Ed271v264
+ ETSI GS NFV-IFA 011 Ed271v264";
+ }
revision 2019-03-18 {
description
"Initial revision.
@@ -56,6 +64,7 @@ submodule etsi-nfv-vnf {
}
leaf support-mandatory {
+ status "deprecated";
default "false";
type boolean;
description
@@ -236,7 +245,7 @@ submodule etsi-nfv-vnf {
leaf int-virtual-link-desc {
type leafref {
- path "../../../int-virtual-link-desc/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id";
}
description
"Reference of the internal VLD which this internal CPD
@@ -259,7 +268,7 @@ submodule etsi-nfv-vnf {
leaf nicio-requirements {
type leafref {
- path "../../../virtual-compute-desc/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:virtual-compute-desc/nfv:id";
}
description
"This references (couples) the CPD with any logical node I/O
@@ -273,7 +282,7 @@ submodule etsi-nfv-vnf {
VirtualNetworkInterfaceRequirements information element";
}
- leaf-list order {
+ leaf order {
type uint32;
description
"The order of the NIC to be assigned on the compute
@@ -292,6 +301,27 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.4, VduCpd information
element.";
}
+
+ leaf vnic-type {
+ type identityref {
+ base vnic-type;
+ }
+ description
+ "Describes the type of the virtual network interface
+ realizing the CPs instantiated from this CPD. This is
+ used to determine which mechanism driver(s) to be used
+ to bind the port. Value:
+ • NORMAL
+ • VIRTIO
+ • DIRECT
+ • BAREMETAL
+ • VIRTIO-FORWARDER
+ • DIRECT-PHYSICAL
+ • SMART-NIC";
+ reference
+ "GS NFV IFA011: Section 7.1.6.4, VduCpd information
+ element.";
+ }
uses cpd;
leaf security-group-rule-id {
@@ -871,6 +901,17 @@ submodule etsi-nfv-vnf {
information element.";
}
+ leaf provider {
+ type string;
+ description
+ "The provider of this software image. If not present the
+ provider of the software image is assumed to be same as
+ the VNF provider.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
+ information element.";
+ }
+
container checksum {
leaf algorithm {
@@ -1221,7 +1262,7 @@ submodule etsi-nfv-vnf {
Descriptor (CPD) connect. Either intVirtualLinkDesc or
intCpd shall be present.";
type leafref {
- path "../../int-virtual-link-desc/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id";
}
}
@@ -1238,12 +1279,28 @@ submodule etsi-nfv-vnf {
}
}
}
+
+ leaf vip-cpd {
+ type leafref {
+ path "../../vip-cpd/id";
+ }
+ description
+ "Reference to the VIP CPD which is used to instantiate CPs
+ to hold virtual IP addresses. These CPs are, in turn,
+ exposed as external CPs defined by this external CPD.
+ One and only one of the following attributes shall be
+ present: intVirtualLinkDesc or intCpd or vipCpd .";
+ reference
+ "GS NFV-IFA011: Section 7.1.3.2, VnfExtCpd information
+ element";
+ }
}
+
uses virtual-network-interface-requirements;
leaf nicio-requirements {
type leafref {
- path "../../virtual-compute-desc/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:virtual-compute-desc/nfv:id";
}
description
"This references (couples) the CPD with any logical node I/O
@@ -1270,6 +1327,55 @@ submodule etsi-nfv-vnf {
}
}
+ list vip-cpd {
+ key "id";
+
+ leaf-list int-cpd {
+ type leafref {
+ path "../../vdu/int-cpd/int-virtual-link-desc";
+ }
+ description
+ "Reference to the internal VDU CPD which is used to
+ instantiate internal CPs. These internal CPs share the
+ virtual IP addresses allocated when a VipCp instance
+ is created from the VipCpd.";
+ reference
+ "GS NFV IFA011: Section 7.1.x, VipCpd information element.";
+ }
+
+ leaf-list vnf-ext-cpd {
+ type leafref {
+ path "../../ext-cpd/id";
+ }
+ description
+ "Reference to the VNF external CPD which is used to
+ instantiate external CPs. These external CPs share the
+ virtual IP addresses allocated when a VipCp instance is
+ created from the VipCpd.";
+ reference
+ "GS NFV IFA011: Section 7.1.x, VipCpd information element.";
+ }
+
+ leaf vip-function {
+ type identityref {
+ base vip-function;
+ }
+ description
+ "It indicates the function the virtual IP address is used
+ for. Permitted values: high availability, load balancing.";
+ reference
+ "GS NFV IFA011: Section 7.1.x, VipCpd information element.";
+ }
+
+ uses cpd;
+
+ description
+ "Describes virtual IP addresses to be shared among instances
+ of connection points. See clause 7.1.x.";
+ reference
+ "GS NFV IFA011: Section 7.1.2, VNFD information element.";
+ }
+
list df {
must "default-instantiation-level or " +
"count(instantiation-level) = 1";
@@ -1374,7 +1480,7 @@ submodule etsi-nfv-vnf {
leaf id {
type leafref {
- path "../../../int-virtual-link-desc/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id";
}
description
"Uniquely identifies a Vnf VLD.";
@@ -1386,7 +1492,7 @@ submodule etsi-nfv-vnf {
leaf flavour {
type leafref {
path "deref(../../../ext-cpd/int-virtual-link-desc)" +
- "/../flavour/id";
+ "/../nfv:flavour/nfv:id";
}
description
"Identifies a flavour within the VnfVirtualLinkDesc.";
@@ -1535,6 +1641,19 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.8.14,
L2ProtocolData information element.";
}
+
+ leaf segmentation-id {
+ type string;
+ description
+ "If present, specifies a specific virtualised network
+ segment, which depends on the network type. For e.g.,
+ VLAN ID for VLAN network type and tunnel ID for
+ GRE/VXLAN network types.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.14,
+ L2ProtocolData information element.";
+ }
+
description
"Specifies the L2 protocol data for this virtual link.
Shall be present when the associatedLayerProtocol
@@ -2510,6 +2629,143 @@ submodule etsi-nfv-vnf {
information element";
}
+ container vnfm-interface-info {
+ leaf interface-name {
+ type string {
+ pattern 'vnf-[lcm|pm|fm]';
+ }
+ description
+ "Identifies an interface produced by the VNFM.";
+ }
+
+ container details {
+ container uri-components {
+ leaf scheme {
+ type inet:uri;
+ description
+ "Corresponds to the scheme component of a URI, as
+ per IETF RFC 3986.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+
+ container authority {
+ leaf userinfo {
+ type string;
+ description
+ "Corresponds to the userinfo field of the authority
+ component of a URI, as per IETF RFC 3986.
+
+ For HTTP and HTTPS URIs, the provisions in
+ sections 2.7.1 and 2.7.2 of IETF RFC 7230 apply,
+ respectively.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+
+ leaf host {
+ type inet:host;
+ description
+ "Corresponds to the host field of the authority
+ component of a URI, as per IETF RFC 3986.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+
+ leaf port {
+ type inet:port-number;
+ description
+ "Corresponds to the port field of the authority
+ component of a URI, as per IETF RFC 3986.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+ description
+ "Corresponds to the authority component of a URI,
+ as per IETF RFC 3986.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+
+ leaf path {
+ type string;
+ description
+ "Corresponds to the path component of a URI, as per
+ IETF RFC 3986.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+
+ leaf query {
+ type string;
+ description
+ "Corresponds to the query component of a URI, as per
+ IETF RFC 3986.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+
+ leaf fragment {
+ type string;
+ description
+ "Corresponds to the fragment component of a URI, as per
+ IETF RFC 3986.";
+ reference
+ "RFC 3986: URI Generic Syntax.";
+ }
+ description
+ "Provides components to build a Uniform Resource
+ Identifier (URI) where to access the interface end
+ point.";
+ }
+
+ leaf-list interface-specific-data {
+ type string;
+ description
+ "Provides additional details that are specific to the
+ type of interface considered.";
+ }
+ description
+ "Provide additional data to access the interface
+ endpoint (e.g. API URI prefix).";
+ }
+
+ leaf credentials {
+ type string;
+ description
+ "Provides credential enabling access to the interface.";
+ }
+ description
+ "Contains information enabling access to the NFV-MANO
+ interfaces produced by the VNFM (e.g. URIs and
+ credentials).";
+ reference
+ "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
+ information element";
+ }
+
+ container vnfm-oauth-server-info {
+ description
+ "Contains information to enable discovery of the
+ authorization server protecting access to
+ VNFM interfaces.";
+ reference
+ "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
+ information element";
+ }
+
+ container vnf-oauth-server-info {
+ description
+ "Contains information to enable discovery of the
+ authorization server to validate the access tokens
+ provided by the VNFM when the VNFM accesses the VNF
+ interfaces, if that functionality (token introspection) is
+ supported by the authorization server.";
+ reference
+ "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
+ information element";
+ }
+
list additional-configurable-property {
key "key";
@@ -2713,7 +2969,7 @@ submodule etsi-nfv-vnf {
leaf-list virtual-link-desc {
type leafref {
- path "../../int-virtual-link-desc/id";
+ path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id";
}
description
"References to VnfVirtualLinkDesc that are part of this
diff --git a/src/yang/etsi-nfv-vnfd.yang b/src/yang/etsi-nfv-vnfd.yang
index 5ded801b6d367dece55ad824c3fbef16c1c53f0a..f5fcc6282c69ff9dbc8054d2af0bea71bbc4fd58 100644
--- a/src/yang/etsi-nfv-vnfd.yang
+++ b/src/yang/etsi-nfv-vnfd.yang
@@ -12,7 +12,13 @@ module etsi-nfv-vnfd {
description
"Virtual Network Function Descriptor.";
-
+
+ revision 2019-10-01 {
+ description
+ "Revision 2.7.1.
+
+ VNFD according to ETSI GS NFV-IFA 011 Ed271v264.";
+ }
revision 2019-03-18 {
description
"Initial revision.