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 @@
...
@@ -78,11 +78,11 @@
<num-virtual-cpu>
16
</num-virtual-cpu>
<num-virtual-cpu>
16
</num-virtual-cpu>
</virtual-cpu>
</virtual-cpu>
</virtual-compute-desc>
</virtual-compute-desc>
<virtual-storage-desc
riptor
>
<virtual-storage-desc>
<id>
root
</id>
<id>
root
</id>
<type-of-storage>
root-storage
</type-of-storage>
<type-of-storage>
root-storage
</type-of-storage>
<size-of-storage>
10
</size-of-storage>
<size-of-storage>
10
</size-of-storage>
</virtual-storage-desc
riptor
>
</virtual-storage-desc>
<sw-image-desc>
<sw-image-desc>
<id>
CP
</id>
<id>
CP
</id>
<name>
CP
</name>
<name>
CP
</name>
...
@@ -116,17 +116,13 @@
...
@@ -116,17 +116,13 @@
<int-virtual-link-desc>
<int-virtual-link-desc>
<id>
internal-vl
</id>
<id>
internal-vl
</id>
<connectivity-type>
<connectivity-type>
<layer-protocol>
<layer-protocol>
ipv4
</layer-protocol>
<protocol>
ipv4
</protocol>
</layer-protocol>
</connectivity-type>
</connectivity-type>
</int-virtual-link-desc>
</int-virtual-link-desc>
<int-virtual-link-desc>
<int-virtual-link-desc>
<id>
mgmt
</id>
<id>
mgmt
</id>
<connectivity-type>
<connectivity-type>
<layer-protocol>
<layer-protocol>
ipv4
</layer-protocol>
<protocol>
ipv4
</protocol>
</layer-protocol>
</connectivity-type>
</connectivity-type>
</int-virtual-link-desc>
</int-virtual-link-desc>
<ext-cpd>
<ext-cpd>
...
...
example-data/nfv-nsd.xml
View file @
3587cb0e
...
@@ -49,9 +49,10 @@
...
@@ -49,9 +49,10 @@
</checksum>
</checksum>
<container-format>
bare
</container-format>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
20
</min-disk>
<min-ram>
2.0
</min-ram>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<size>
1
</size>
<image>
http://www.
cisco
.com/asa.qcow2
</image>
<image>
http://www.
mycompany
.com/asa.qcow2
</image>
</sw-image-desc>
</sw-image-desc>
<ext-cpd>
<ext-cpd>
<id>
inside
</id>
<id>
inside
</id>
...
@@ -132,4 +133,4 @@
...
@@ -132,4 +133,4 @@
</ns-instantiation-level>
</ns-instantiation-level>
</df>
</df>
</nsd>
</nsd>
</
nsd
>
</
config
>
example-data/nfv-vnfd.xml
View file @
3587cb0e
...
@@ -48,9 +48,10 @@
...
@@ -48,9 +48,10 @@
</checksum>
</checksum>
<container-format>
bare
</container-format>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
20
</min-disk>
<min-ram>
2.0
</min-ram>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<size>
1
</size>
<image>
http://www.
cisco
.com/asa.qcow2
</image>
<image>
http://www.
mycompany
.com/asa.qcow2
</image>
</sw-image-desc>
</sw-image-desc>
<ext-cpd>
<ext-cpd>
<id>
inside
</id>
<id>
inside
</id>
...
...
example-data/nfv.xml
View file @
3587cb0e
...
@@ -54,12 +54,23 @@
...
@@ -54,12 +54,23 @@
<size>
1
</size>
<size>
1
</size>
<image>
http://mycompany.images.com/asa.qcow2
</image>
<image>
http://mycompany.images.com/asa.qcow2
</image>
</sw-image-desc>
</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>
<ext-cpd>
<id>
inside
</id>
<id>
inside
</id>
<int-cpd>
<int-virtual-link-desc>
inside-vl
</int-virtual-link-desc>
<vdu-id>
firewall
</vdu-id>
<cpd>
inside
</cpd>
</int-cpd>
<layer-protocol>
ethernet
</layer-protocol>
<layer-protocol>
ethernet
</layer-protocol>
</ext-cpd>
</ext-cpd>
<ext-cpd>
<ext-cpd>
...
@@ -85,6 +96,26 @@
...
@@ -85,6 +96,26 @@
<min-number-of-instances>
1
</min-number-of-instances>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
2
</max-number-of-instances>
<max-number-of-instances>
2
</max-number-of-instances>
</vdu-profile>
</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>
<instantiation-level>
<id>
double
</id>
<id>
double
</id>
<vdu-level>
<vdu-level>
...
...
src/yang/etsi-nfv-common.yang
View file @
3587cb0e
...
@@ -9,6 +9,14 @@ submodule etsi-nfv-common {
...
@@ -9,6 +9,14 @@ submodule etsi-nfv-common {
description
description
"Common data types for ETSI data models."
;
"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
{
revision
2019-04-25
{
description
description
"Initial revision
"Initial revision
...
@@ -243,6 +251,99 @@ submodule etsi-nfv-common {
...
@@ -243,6 +251,99 @@ submodule etsi-nfv-common {
"Ephemeral type of storage."
;
"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
* Typedefs
*/
*/
...
@@ -294,8 +395,8 @@ submodule etsi-nfv-common {
...
@@ -294,8 +395,8 @@ submodule etsi-nfv-common {
grouping
local-affinity-or-anti-affinity-rule
{
grouping
local-affinity-or-anti-affinity-rule
{
list
local-affinity-or-anti-affinity-rule
{
list
local-affinity-or-anti-affinity-rule
{
key
"
affinity-type affinity-
scope"
;
key
"
type
scope"
;
leaf
affinity-
type
{
leaf
type
{
type
affinity-type
;
type
affinity-type
;
description
description
"Specifies whether the rule is an affinity rule or an
"Specifies whether the rule is an affinity rule or an
...
@@ -305,7 +406,7 @@ submodule etsi-nfv-common {
...
@@ -305,7 +406,7 @@ submodule etsi-nfv-common {
LocalAffinityOrAntiAffinityRule information element."
;
LocalAffinityOrAntiAffinityRule information element."
;
}
}
leaf
affinity-
scope
{
leaf
scope
{
type
affinity-scope
;
type
affinity-scope
;
description
description
"Specifies the scope of the rule, possible values are
"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 {
...
@@ -14,6 +14,13 @@ module etsi-nfv-descriptors {
description
description
"Network Function Virtualization Descriptors"
;
"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
{
revision
2019-04-25
{
description
description
"Initial revision.
"Initial revision.
...
@@ -24,6 +31,7 @@ module etsi-nfv-descriptors {
...
@@ -24,6 +31,7 @@ module etsi-nfv-descriptors {
container
nfv
{
container
nfv
{
list
vnfd
{
list
vnfd
{
key
"id"
;
key
"id"
;
description
description
"A VNF Descriptor (VNFD) is a deployment template which
"A VNF Descriptor (VNFD) is a deployment template which
describes a VNF in terms of deployment and operational
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 {
...
@@ -11,6 +11,14 @@ submodule etsi-nfv-ns {
description
description
"Models for NS according to ETSI GS NFV-IFA 014."
;
"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
{
revision
2019-04-25
{
description
description
"Initial revision
"Initial revision
...
@@ -97,7 +105,7 @@ submodule etsi-nfv-ns {
...
@@ -97,7 +105,7 @@ submodule etsi-nfv-ns {
leaf-list
vnfd-id
{
leaf-list
vnfd-id
{
type
leafref
{
type
leafref
{
path
"
../../
vnfd/id"
;
path
"
/nfv:nfv/nfv:
vnfd/
nfv:
id"
;
}
}
description
description
"References the VNFD of a constituent VNF."
;
"References the VNFD of a constituent VNF."
;
...
@@ -108,7 +116,7 @@ submodule etsi-nfv-ns {
...
@@ -108,7 +116,7 @@ submodule etsi-nfv-ns {
leaf-list
pnfd-id
{
leaf-list
pnfd-id
{
type
leafref
{
type
leafref
{
path
"
../../
pnfd/id"
;
path
"
/nfv:nfv/nfv:
pnfd/
nfv:
id"
;
}
}
description
description
"References the PNFD of a constituent PNF."
;
"References the PNFD of a constituent PNF."
;
...
@@ -164,7 +172,7 @@ submodule etsi-nfv-ns {
...
@@ -164,7 +172,7 @@ submodule etsi-nfv-ns {
leaf
vnfd-id
{
leaf
vnfd-id
{
mandatory
true
;
mandatory
true
;
type
leafref
{
type
leafref
{
path
"
../../../../
vnfd/id"
;
path
"
/nfv:nfv/nfv:
vnfd/
nfv:
id"
;
}
}
must
"boolean(../../../vnfd-id[.=current()])"
;
must
"boolean(../../../vnfd-id[.=current()])"
;
}
}
...
@@ -172,7 +180,7 @@ submodule etsi-nfv-ns {
...
@@ -172,7 +180,7 @@ submodule etsi-nfv-ns {
leaf
ext-cpd-id
{
leaf
ext-cpd-id
{
mandatory
true
;
mandatory
true
;
type
leafref
{
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 {
...
@@ -181,7 +189,7 @@ submodule etsi-nfv-ns {
leaf
pnfd-id
{
leaf
pnfd-id
{
mandatory
true
;
mandatory
true
;
type
leafref
{
type
leafref
{
path
"
../../../../
pnfd/id"
;
path
"
/nfv:nfv/nfv:
pnfd/
nfv:
id"
;
}
}
must
"boolean(../pnfd-id[.=current()])"
;
must
"boolean(../pnfd-id[.=current()])"
;
}
}
...
@@ -189,7 +197,7 @@ submodule etsi-nfv-ns {
...
@@ -189,7 +197,7 @@ submodule etsi-nfv-ns {
leaf
ext-cpd-id
{
leaf
ext-cpd-id
{
mandatory
true
;
mandatory
true
;
type
leafref
{
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 {
...
@@ -415,121 +423,136 @@ submodule etsi-nfv-ns {
element"
;
element"
;
}
}
list
cpd-pool
{
list
nfp-position-element
{
key
"id"
;
key
"id"
;
description
min-elements
1
;
"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"
;
leaf
id
{
leaf
id
{
type
string
;
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
{
container
desc
{
mandatory
"true"
;
choice
constituent-base-element-id
{
container
vnf-profile
{
mandatory
"true"
;
leaf
vnf-profile-id
{
container
vnf-profile
{
must
". = deref(../../vnfd-profile-id)"
{
leaf
vnf-profile-id
{
}
must
". = deref(../../vnfd-profile-id)"
{
type
leafref
{
}
path
"../../../../../nsd/df/vnf-profile/id"
;
type
leafref
{
path
"../../../../../../nsd/df/vnf-profile/id"
;
}
}
}
}
}
}
container
pnf-profile
{
container
pnf-profile
{
leaf
pnf-profile-id
{
leaf
pnf-profile-id
{
must
". = deref(../../pnfd-profile-id)"
{
must
". = deref(../../pnfd-profile-id)"
{
}
}
type
leafref
{
type
leafref
{
path
"../../../../../nsd/df/pnf-profile/id"
;
path
"../../../../../../nsd/df/pnf-profile/id"
;
}
}
}
}
}
}
container
ns-profile
{
container
ns-profile
{
leaf
ns-profile-id
{
leaf
ns-profile-id
{
must
". = deref(../../ns-profile-id)"
{
must
". = deref(../../ns-profile-id)"
{
}
}
type
leafref
{
type
leafref
{
path
"../../../../../nsd/df/ns-profile/id"
;
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
{
choice
constituent-cpd-id
{
container
vnf
{
container
vnf
{
leaf
vnfd-id
{
leaf
vnfd-id
{
must
". = deref(../../vnfd-profile-id)/../vnfd-id"
{
must
". = deref(../../vnfd-profile-id)/../vnfd-id"
{
}
}
type
leafref
{
type
leafref
{
path
"../../../../../vnfd/id"
;
path
"/nfv:nfv/nfv:vnfd/nfv:id"
;
}
}
}
}
leaf
cpd-id
{
leaf
cpd-id
{
type
leafref
{
type
leafref
{
path
"deref(../vnfd-id)/../nfv:ext-cpd/nfv:id"
;
path
"deref(../vnfd-id)/../ext-cpd/id"
;
}
}
}
}
}
}
container
pnf
{
container
pnf
{
leaf
pnfd-id
{
leaf
pnfd-id
{
must
". = deref(../../pnfd-profile-id)/../pnfd-id"
{
must
". = deref(../../pnfd-profile-id)/../pnfd-id"
{
}
type
leafref
{
path
"/nfv:nfv/nfv:pnfd/nfv:id"
;
}
}
}
type
leafref
{
leaf
pnf-cpd-id
{
path
"../../../../../pnfd/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
{
container
ns
{
path
"../../../../../nsd/id"
;
leaf
nsd-id
{
must
". = deref(../../nested-ns-profile-id)/"
+
"../nsd-id"
{
}
type
leafref
{
path
"../../../../../../nsd/id"
;
}
}
}
}
leaf
sap-cpd-id
{
leaf
sap-cpd-id
{
type
leafref
{