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..03423e679e4915da8a7be7fccd2b929935b0e3cf 100644
--- a/example-data/nfv-nsd.xml
+++ b/example-data/nfv-nsd.xml
@@ -49,6 +49,7 @@
bare
qcow2
+ 1
2.0
1
http://www.cisco.com/asa.qcow2
diff --git a/example-data/nfv-vnfd.xml b/example-data/nfv-vnfd.xml
index 7587240efcd281a762527e1b7fa1e6a49049ee9e..6b76c43495c7e6490901dfaeaa4cdc59733d4a26 100644
--- a/example-data/nfv-vnfd.xml
+++ b/example-data/nfv-vnfd.xml
@@ -48,6 +48,7 @@
bare
qcow2
+ 1
2.0
1
http://www.cisco.com/asa.qcow2
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index 0a1c361eddba042598317e1bec71d6797a287d03..78df6cdea966b0c74ece9a650a06f24e708e04b6 100644
--- a/src/yang/etsi-nfv-common.yang
+++ b/src/yang/etsi-nfv-common.yang
@@ -243,6 +243,43 @@ 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.";
+ }
+
/*
* Typedefs
*/
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index 1eb49ce02f133723d16093debe9c6aef98d1397a..dfa488ded14b87f9a3d25bea1c8f9f1f59fb20b9 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -415,121 +415,22 @@ submodule etsi-nfv-ns {
element";
}
- list cpd-pool {
- key "id";
-
+ leaf-list nfp-position-element-id {
+ type leafref {
+ path "../nfpd/position-desc/element/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.";
+ "References NfpPositionElement associated with one of the
+ constituent VNF Profile, PNF Profile or NS Profile of a
+ nested NS.";
reference
"GS NFV IFA014: Section 6.4.2.2 Vnffgd information
element";
-
- leaf id {
- type string;
- }
-
- 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 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";
- }
-
- choice constituent-cpd-id {
- container vnf {
- leaf vnfd-id {
- must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
- }
- type leafref {
- path "../../../../../vnfd/id";
- }
- }
- leaf cpd-id {
- type leafref {
- path "deref(../vnfd-id)/../ext-cpd/id";
- }
- }
- }
- container pnf {
- leaf pnfd-id {
- must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
- }
- type leafref {
- path "../../../../../pnfd/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";
- }
- }
- leaf sap-cpd-id {
- type leafref {
- path "deref(../nsd-id)/../sapd/id";
- }
- }
- }
- 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.";
- reference
- "GS NFV IFA014: Section 6.4.4.2 CpdPool 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,33 +445,17 @@ 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";
-
leaf id {
type string;
description
@@ -580,62 +465,172 @@ submodule etsi-nfv-ns {
information element";
}
- list cp-profile-id {
+ list element {
key "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
- "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.";
+ "Identifier of this NfpPositionElemen information
+ element. It uniquely identifies an
+ NfpPositionElemen.";
reference
- "GS NFV IFA014: Section 6.4.6.2 CpProfile
+ "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
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;
+ 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 ns-profile {
+ leaf ns-profile-id {
+ must ". = deref(../../ns-profile-id)" {
+ }
+ type leafref {
+ path "../../../../../../../../nsd/df/ns-profile/id";
+ }
+ }
+ }
description
- "Specifies the constituents of the CpProfile.";
+ "Reference to the profile of an NS constituent.";
reference
- "GS NFV IFA014: Section 6.4.7.2
- ConstituentProfileElements information element";
+ "GS NFV IFA014: Section 6.4.8
+ CpdInConstituentElement information element";
}
- leaf cpd-id {
- type string;
+ choice constituent-cpd-id {
+ container vnf {
+ leaf vnfd-id {
+ must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
+ }
+ type leafref {
+ path "../../../../../../../../vnfd/id";
+ }
+ }
+ leaf cpd-id {
+ type leafref {
+ path "deref(../vnfd-id)/../ext-cpd/id";
+ }
+ }
+ }
+ container pnf {
+ leaf pnfd-id {
+ must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
+ }
+ type leafref {
+ path "../../../../../../../../pnfd/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";
+ }
+ }
+ 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 give NsProfile
- identified by the constituentBasedElementId.";
+ PnfProfile, or a NS SAPD for a given NsProfile
+ identified by the constituentBaseElementId.";
reference
- "GS NFV IFA014: Section 6.4.7.2
- ConstituentProfileElements information element";
+ "GS NFV IFA014: Section 6.4.8.2
+ CpdInConstituentElement information element";
}
+ description
+ "Identifies a CPD or SAPD in the context of a profile
+ of an NS constituent element.";
+ reference
+ "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";
+ }
+
+ 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";
+ }
+
+ 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";
}
}
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index 43c11095fa644be600e48c843e9c5fca838e2be8..732bb8648e4fae4f361e777170bada11e0dd52e6 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -56,6 +56,7 @@ submodule etsi-nfv-vnf {
}
leaf support-mandatory {
+ status "deprecated";
default "false";
type boolean;
description
@@ -871,6 +872,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 {
@@ -1270,6 +1282,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";