Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
NFV - Network Functions Virtualisation
SOL006
Commits
3587cb0e
Commit
3587cb0e
authored
Nov 25, 2019
by
Mahesh Jethanandani
Browse files
Merge branch 'v2.7.1'
Merging v2.7.1 branch into master.
parents
98b67160
4a9daa50
Pipeline
#2084
passed with stage
in 0 seconds
Changes
12
Pipelines
5
Hide whitespace changes
Inline
Side-by-side
example-data/complex-vnfd.xml
View file @
3587cb0e
...
...
@@ -78,11 +78,11 @@
<num-virtual-cpu>
16
</num-virtual-cpu>
</virtual-cpu>
</virtual-compute-desc>
<virtual-storage-desc
riptor
>
<virtual-storage-desc>
<id>
root
</id>
<type-of-storage>
root-storage
</type-of-storage>
<size-of-storage>
10
</size-of-storage>
</virtual-storage-desc
riptor
>
</virtual-storage-desc>
<sw-image-desc>
<id>
CP
</id>
<name>
CP
</name>
...
...
@@ -116,17 +116,13 @@
<int-virtual-link-desc>
<id>
internal-vl
</id>
<connectivity-type>
<layer-protocol>
<protocol>
ipv4
</protocol>
</layer-protocol>
<layer-protocol>
ipv4
</layer-protocol>
</connectivity-type>
</int-virtual-link-desc>
<int-virtual-link-desc>
<id>
mgmt
</id>
<connectivity-type>
<layer-protocol>
<protocol>
ipv4
</protocol>
</layer-protocol>
<layer-protocol>
ipv4
</layer-protocol>
</connectivity-type>
</int-virtual-link-desc>
<ext-cpd>
...
...
example-data/nfv-nsd.xml
View file @
3587cb0e
...
...
@@ -49,9 +49,10 @@
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
20
</min-disk>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<image>
http://www.
cisco
.com/asa.qcow2
</image>
<image>
http://www.
mycompany
.com/asa.qcow2
</image>
</sw-image-desc>
<ext-cpd>
<id>
inside
</id>
...
...
@@ -132,4 +133,4 @@
</ns-instantiation-level>
</df>
</nsd>
</
nsd
>
</
config
>
example-data/nfv-vnfd.xml
View file @
3587cb0e
...
...
@@ -48,9 +48,10 @@
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
20
</min-disk>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<image>
http://www.
cisco
.com/asa.qcow2
</image>
<image>
http://www.
mycompany
.com/asa.qcow2
</image>
</sw-image-desc>
<ext-cpd>
<id>
inside
</id>
...
...
example-data/nfv.xml
View file @
3587cb0e
...
...
@@ -54,12 +54,23 @@
<size>
1
</size>
<image>
http://mycompany.images.com/asa.qcow2
</image>
</sw-image-desc>
<int-virtual-link-desc>
<id>
inside-vl
</id>
<flavour>
<id>
1g
</id>
<qos>
<latency>
1
</latency>
<packet-delay-variation>
1
</packet-delay-variation>
<packet-loss-ratio>
0.02
</packet-loss-ratio>
</qos>
</flavour>
<connectivity-type>
<layer-protocol>
ethernet
</layer-protocol>
</connectivity-type>
</int-virtual-link-desc>
<ext-cpd>
<id>
inside
</id>
<int-cpd>
<vdu-id>
firewall
</vdu-id>
<cpd>
inside
</cpd>
</int-cpd>
<int-virtual-link-desc>
inside-vl
</int-virtual-link-desc>
<layer-protocol>
ethernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
...
...
@@ -85,6 +96,26 @@
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
2
</max-number-of-instances>
</vdu-profile>
<virtual-link-profile>
<id>
inside-vl
</id>
<flavour>
1g
</flavour>
<max-bit-rate-requirements>
<root>
10
</root>
</max-bit-rate-requirements>
<min-bit-rate-requirements>
<root>
1
</root>
</min-bit-rate-requirements>
<virtual-link-protocol-data>
<associated-layer-protocol>
ipv4
</associated-layer-protocol>
<l3-protocol-data>
<name>
inside-network
</name>
<ip-version>
ipv4
</ip-version>
<cidr>
192.138.0.0/8
</cidr>
<gateway-ip>
192.138.0.1
</gateway-ip>
<dhcp-enabled>
true
</dhcp-enabled>
</l3-protocol-data>
</virtual-link-protocol-data>
</virtual-link-profile>
<instantiation-level>
<id>
double
</id>
<vdu-level>
...
...
src/yang/etsi-nfv-common.yang
View file @
3587cb0e
...
...
@@ -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
...
...
src/yang/etsi-nfv-descriptors.yang
View file @
3587cb0e
...
...
@@ -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
...
...
src/yang/etsi-nfv-ns.yang
View file @
3587cb0e
...
...
@@ -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