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
63d359ee
Commit
63d359ee
authored
Dec 09, 2019
by
jethanandani
Browse files
Merge branch 'dev-v2.8.1' into 'issue#1'
# Conflicts: # example-data/complex-vnfd.xml # example-data/nfv-nsd.xml # example-data/nfv-vnfd.xml
parents
e6af2d7a
6bf709ac
Pipeline
#2126
passed with stage
in 0 seconds
Changes
12
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
example-data/complex-vnfd.xml
View file @
63d359ee
...
...
@@ -80,8 +80,12 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>
root
</id>
<type-of-storage>
root-storage
</type-of-storage>
<size-of-storage>
10
</size-of-storage>
<type-of-storage>
block
</type-of-storage>
<block-storage-data>
<size-of-storage>
10
</size-of-storage>
<rdma-enabled>
true
</rdma-enabled>
<sw-image-desc>
CP
</sw-image-desc>
</block-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>
CP
</id>
...
...
example-data/nfv-nsd.xml
View file @
63d359ee
<nsd
xmlns=
"urn:etsi:nfv:yang:etsi-nfv-nsd"
>
<?xml version="1.0" encoding="UTF-8"?>
<nfv
xmlns=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
<vnfd>
<id>
ASA
</id>
<provider>
My Company
</provider>
...
...
@@ -36,8 +37,10 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>
asa-vsd
</id>
<type-of-storage
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:root-storage
</type-of-storage>
<size-of-storage>
0
</size-of-storage>
<type-of-storage
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:block
</type-of-storage>
<block-storage-data>
<size-of-storage>
0
</size-of-storage>
</block-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>
asa-image
</id>
...
...
@@ -49,10 +52,10 @@
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
1
</min-disk>
<min-disk>
0
</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>
...
...
@@ -133,4 +136,4 @@
</ns-instantiation-level>
</df>
</nsd>
</n
sd
>
</n
fv
>
example-data/nfv-vnfd.xml
View file @
63d359ee
...
...
@@ -35,8 +35,11 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>
asa-vsd
</id>
<type-of-storage
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:root-storage
</type-of-storage>
<size-of-storage>
0
</size-of-storage>
<type-of-storage
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:file
</type-of-storage>
<file-storage-data>
<size-of-storage>
0
</size-of-storage>
<int-virtual-link-desc>
asa-image
</int-virtual-link-desc>
</file-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>
asa-image
</id>
...
...
@@ -48,10 +51,10 @@
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
1
</min-disk>
<min-disk>
0
</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 @
63d359ee
...
...
@@ -36,8 +36,12 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>
asa-vsd
</id>
<type-of-storage>
root-storage
</type-of-storage>
<size-of-storage>
0
</size-of-storage>
<type-of-storage>
block
</type-of-storage>
<block-storage-data>
<size-of-storage>
1
</size-of-storage>
<rdma-enabled>
true
</rdma-enabled>
<sw-image-desc>
asa-image
</sw-image-desc>
</block-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>
asa-image
</id>
...
...
@@ -54,12 +58,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 +100,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>
...
...
@@ -150,8 +185,11 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>
csr-vsd
</id>
<type-of-storage>
root-storage
</type-of-storage>
<size-of-storage>
0
</size-of-storage>
<type-of-storage>
file
</type-of-storage>
<file-storage-data>
<size-of-storage>
1
</size-of-storage>
<int-virtual-link-desc>
csr-image
</int-virtual-link-desc>
</file-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>
csr-image
</id>
...
...
src/yang/etsi-nfv-common.yang
View file @
63d359ee
...
...
@@ -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
...
...
@@ -225,22 +233,115 @@ submodule etsi-nfv-common {
"Base type of storage that identities can derive from."
;
}
identity
root-storage
{
identity
block
{
base
storage-type
;
description
"
Root
type of storage."
;
"
Block
type of storage."
;
}
identity
swap-storage
{
identity
object
{
base
storage-type
;
description
"
Swap
type of storage."
;
"
Object
type of storage."
;
}
identity
ephemeral-storag
e
{
identity
fil
e
{
base
storage-type
;
description
"Ephemeral type of storage."
;
"File 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."
;
}
/*
...
...
@@ -307,8 +408,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
...
...
@@ -318,7 +419,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 @
63d359ee
...
...
@@ -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 @
63d359ee
...
...
@@ -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
;
<