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
d67cd24d
Commit
d67cd24d
authored
Mar 28, 2019
by
jethanandani
Browse files
Merge branch 'master' into 'bug#170'
# Conflicts: # src/yang/etsi-nfv-vnf.yang
parents
094395a0
82f542ca
Pipeline
#519
passed with stage
in 0 seconds
Changes
8
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
.jenkins.sh
View file @
d67cd24d
...
...
@@ -6,7 +6,7 @@
# https://forge.etsi.org/etsi-software-license
YANG_MODULES
=
"yang/yang/*"
OUTPUT
=
"etsi-nfv.html"
OUTPUT
=
"etsi-nfv
-descriptors
.html"
IMG_NAME
=
"sol006"
VERSION
=
latest
IMG
=
"
$IMG_NAME
:
$VERSION
"
...
...
example-data/nfv.xml
View file @
d67cd24d
<nfv
xmlns=
"urn:etsi:
params:xml:ns
:yang:etsi-nfv"
>
<nfv
xmlns=
"urn:etsi:
nfv
:yang:etsi-nfv
-descriptors
"
>
<vnfd>
<id>
ASA
</id>
<provider>
My Company
</provider>
<product-name>
My Company ASAv
</product-name>
<software-version>
9.8
</software-version>
<version>
9.8
</version>
<version>
9.8
</version>
<vnfm-info>
My Company Vnfm
</vnfm-info>
<vdu>
<id>
firewall
</id>
<name>
Firewall VDU
</name>
<int-cpd>
<id>
inside
</id>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
management
</id>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
outside
</id>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</int-cpd>
<virtual-compute-desc>
asa-vcd
</virtual-compute-desc>
<virtual-storage-desc>
asa-vsd
</virtual-storage-desc>
...
...
@@ -36,14 +36,21 @@
</virtual-compute-desc>
<virtual-storage-descriptor>
<id>
asa-vsd
</id>
<type-of-storage>
root
</type-of-storage>
<type-of-storage>
root
-storage
</type-of-storage>
<size-of-storage>
0
</size-of-storage>
</virtual-storage-descriptor>
<sw-image-desc>
<id>
asa-image
</id>
<name>
ASA image
</name>
<version>
1.1
</version>
<checksum>
<algorithm>
sha-224
</algorithm>
<hash>
deadbeef
</hash>
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<image>
http://www.cisco.com/asa.qcow2
</image>
</sw-image-desc>
<ext-cpd>
...
...
@@ -52,7 +59,7 @@
<vdu-id>
firewall
</vdu-id>
<cpd>
inside
</cpd>
</int-cpd>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
management
</id>
...
...
@@ -60,7 +67,7 @@
<vdu-id>
firewall
</vdu-id>
<cpd>
management
</cpd>
</int-cpd>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
outside
</id>
...
...
@@ -68,7 +75,7 @@
<vdu-id>
firewall
</vdu-id>
<cpd>
outside
</cpd>
</int-cpd>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</ext-cpd>
<df>
<id>
normal
</id>
...
...
@@ -80,14 +87,14 @@
<instantiation-level>
<id>
double
</id>
<vdu-level>
<id>
firewall
</id>
<
vdu-
id>
firewall
</
vdu-
id>
<number-of-instances>
2
</number-of-instances>
</vdu-level>
</instantiation-level>
<instantiation-level>
<id>
single
</id>
<vdu-level>
<id>
firewall
</id>
<
vdu-
id>
firewall
</
vdu-
id>
<number-of-instances>
1
</number-of-instances>
</vdu-level>
</instantiation-level>
...
...
@@ -106,15 +113,15 @@
<name>
Router VDU
</name>
<int-cpd>
<id>
left
</id>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
management
</id>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
right
</id>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</int-cpd>
<virtual-compute-desc>
csr-vcd
</virtual-compute-desc>
<virtual-storage-desc>
csr-vsd
</virtual-storage-desc>
...
...
@@ -131,14 +138,21 @@
</virtual-compute-desc>
<virtual-storage-descriptor>
<id>
csr-vsd
</id>
<type-of-storage>
root
</type-of-storage>
<type-of-storage>
root
-storage
</type-of-storage>
<size-of-storage>
0
</size-of-storage>
</virtual-storage-descriptor>
<sw-image-desc>
<id>
csr-image
</id>
<name>
CSR image
</name>
<version>
1.1
</version>
<checksum>
<algorithm>
sha-224
</algorithm>
<hash>
deadbeef
</hash>
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<image>
http://www.cisco.com/csr.qcow2
</image>
</sw-image-desc>
<ext-cpd>
...
...
@@ -147,7 +161,7 @@
<vdu-id>
router
</vdu-id>
<cpd>
left
</cpd>
</int-cpd>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
management
</id>
...
...
@@ -155,7 +169,7 @@
<vdu-id>
router
</vdu-id>
<cpd>
management
</cpd>
</int-cpd>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
right
</id>
...
...
@@ -163,7 +177,7 @@
<vdu-id>
router
</vdu-id>
<cpd>
right
</cpd>
</int-cpd>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</ext-cpd>
<df>
<id>
normal
</id>
...
...
@@ -175,14 +189,14 @@
<instantiation-level>
<id>
double
</id>
<vdu-level>
<id>
router
</id>
<
vdu-
id>
router
</
vdu-
id>
<number-of-instances>
2
</number-of-instances>
</vdu-level>
</instantiation-level>
<instantiation-level>
<id>
single
</id>
<vdu-level>
<id>
router
</id>
<
vdu-
id>
router
</
vdu-
id>
<number-of-instances>
1
</number-of-instances>
</vdu-level>
</instantiation-level>
...
...
@@ -206,7 +220,7 @@
<vnf-profile>
<id>
firewall
</id>
<vnfd-id>
ASA
</vnfd-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
...
...
@@ -243,7 +257,7 @@
<id>
fw2dpi
</id>
<connectivity-type>
<layer-protocol>
<protocol>
E
thernet
</protocol>
<protocol>
e
thernet
</protocol>
</layer-protocol>
</connectivity-type>
<df>
...
...
@@ -258,7 +272,7 @@
<id>
mgmt
</id>
<connectivity-type>
<layer-protocol>
<protocol>
IP
v4
</protocol>
<protocol>
ip
v4
</protocol>
</layer-protocol>
</connectivity-type>
<df>
...
...
@@ -273,7 +287,7 @@
<id>
r2fw
</id>
<connectivity-type>
<layer-protocol>
<protocol>
E
thernet
</protocol>
<protocol>
e
thernet
</protocol>
</layer-protocol>
</connectivity-type>
<df>
...
...
@@ -289,7 +303,7 @@
<vnf-profile>
<id>
firewall
</id>
<vnfd-id>
ASA
</vnfd-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
...
...
@@ -311,7 +325,7 @@
<vnf-profile>
<id>
router
</id>
<vnfd-id>
CSR
</vnfd-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
...
...
@@ -333,7 +347,7 @@
<virtual-link-profile>
<id>
mgmt
</id>
<virtual-link-desc-id>
mgmt
</virtual-link-desc-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<max-bitrate-requirements>
<root>
1000
</root>
</max-bitrate-requirements>
...
...
@@ -344,7 +358,7 @@
<virtual-link-profile>
<id>
r2fw
</id>
<virtual-link-desc-id>
r2fw
</virtual-link-desc-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<max-bitrate-requirements>
<root>
10000000
</root>
</max-bitrate-requirements>
...
...
@@ -370,7 +384,7 @@
<vnf-profile>
<id>
firewall
</id>
<vnfd-id>
ASA
</vnfd-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
...
...
@@ -399,7 +413,7 @@
<vnf-profile>
<id>
router
</id>
<vnfd-id>
CSR
</vnfd-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
...
...
@@ -432,7 +446,7 @@
<virtual-link-profile>
<id>
fw2dpi
</id>
<virtual-link-desc-id>
fw2dpi
</virtual-link-desc-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<max-bitrate-requirements>
<root>
1000000
</root>
</max-bitrate-requirements>
...
...
@@ -443,7 +457,7 @@
<virtual-link-profile>
<id>
mgmt
</id>
<virtual-link-desc-id>
mgmt
</virtual-link-desc-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<max-bitrate-requirements>
<root>
1000
</root>
</max-bitrate-requirements>
...
...
@@ -454,7 +468,7 @@
<virtual-link-profile>
<id>
r2fw
</id>
<virtual-link-desc-id>
r2fw
</virtual-link-desc-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<max-bitrate-requirements>
<root>
1000000
</root>
</max-bitrate-requirements>
...
...
@@ -498,7 +512,7 @@
<id>
r2fw
</id>
<connectivity-type>
<layer-protocol>
<protocol>
IP
v4
</protocol>
<protocol>
ip
v4
</protocol>
</layer-protocol>
</connectivity-type>
<df>
...
...
@@ -514,7 +528,7 @@
<vnf-profile>
<id>
router
</id>
<vnfd-id>
CSR
</vnfd-id>
<flavor-id>
normal
</flavor-id>
<flavo
u
r-id>
normal
</flavo
u
r-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
...
...
@@ -529,7 +543,7 @@
<virtual-link-profile>
<id>
r2fw
</id>
<virtual-link-desc-id>
r2fw
</virtual-link-desc-id>
<flavor-id>
r2fw
</flavor-id>
<flavo
u
r-id>
r2fw
</flavo
u
r-id>
<max-bitrate-requirements>
<root>
500
</root>
</max-bitrate-requirements>
...
...
@@ -570,7 +584,7 @@
<version>
1.0
</version>
<ext-cpd>
<id>
outside
</id>
<layer-protocol>
E
thernet
</layer-protocol>
<layer-protocol>
e
thernet
</layer-protocol>
</ext-cpd>
</pnfd>
</nfv>
run-test.sh
View file @
d67cd24d
...
...
@@ -10,7 +10,7 @@ cd src
echo
"Testing compilation"
CONFD_OPTS
=
"--fail-on-warnings"
CONFD_OPTS
=
""
confdc
-c
$CONFD_OPTS
-o
/opt/confd/etc/confd/etsi-nfv.fxs etsi-nfv.yang
confdc
-c
$CONFD_OPTS
-o
/opt/confd/etc/confd/etsi-nfv
-descriptors
.fxs etsi-nfv
-descriptors
.yang
echo
"Starting ConfD"
confd
...
...
src/yang/etsi-nfv-common.yang
View file @
d67cd24d
submodule
etsi-nfv-common
{
yang-version
1.1
;
belongs-to
etsi-nfv
{
belongs-to
etsi-nfv
-descriptors
{
prefix
nfv
;
}
description
...
...
@@ -20,22 +20,22 @@ submodule etsi-nfv-common {
*/
identity
layer-protocol
{
}
identity
E
thernet
{
identity
e
thernet
{
base
layer-protocol
;
}
identity
MPLS
{
identity
mpls
{
base
layer-protocol
;
}
identity
ODU
2
{
identity
odu
2
{
base
layer-protocol
;
}
identity
IP
v4
{
identity
ip
v4
{
base
layer-protocol
;
}
identity
IP
v6
{
identity
ip
v6
{
base
layer-protocol
;
}
identity
P
seudo-
W
ire
{
identity
p
seudo-
w
ire
{
base
layer-protocol
;
}
...
...
@@ -177,6 +177,69 @@ submodule etsi-nfv-common {
base
cp-role
;
}
identity
checksum-algorithm
{
description
"Identifies the algorithms supported for the purpose of
calculating the checksum."
;
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element."
;
}
identity
sha-224
{
base
checksum-algorithm
;
description
"SHA-224."
;
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element."
;
}
identity
sha-256
{
base
checksum-algorithm
;
description
"SHA-256."
;
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element."
;
}
identity
sha-384
{
base
checksum-algorithm
;
description
"SHA-384."
;
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element."
;
}
identity
sha-512
{
base
checksum-algorithm
;
description
"SHA-512."
;
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element."
;
}
identity
storage-type
{
description
"Base type of storage that identities can derive from."
;
}
identity
root-storage
{
base
storage-type
;
description
"Root type of storage."
;
}
identity
swap-storage
{
base
storage-type
;
description
"Swap type of storage."
;
}
identity
ephemeral-storage
{
base
storage-type
;
description
"Ephemeral type of storage."
;
}
/*
* Typedefs
*/
...
...
@@ -215,8 +278,8 @@ submodule etsi-nfv-common {
enum
"end-healing"
;
enum
"start-termination"
;
enum
"end-termination"
;
enum
"start-vnf-flavor-change"
;
enum
"end-vnf-flavor-change"
;
enum
"start-vnf-flavo
u
r-change"
;
enum
"end-vnf-flavo
u
r-change"
;
enum
"start-vnf-operation-change"
;
enum
"end-vnf-operation-change"
;
enum
"start-vnf-ext-conn-change"
;
...
...
@@ -392,7 +455,7 @@ submodule etsi-nfv-common {
}
leaf-list
layer-protocol
{
default
E
thernet
;
default
e
thernet
;
type
identityref
{
base
layer-protocol
;
}
...
...
@@ -571,5 +634,115 @@ submodule etsi-nfv-common {
reference
"GS NFV IFA011: Section 7.1.6.3 Cpd information element"
;
}
leaf
security-group-rule-id
{
type
leafref
{
path
"/nfv/vnfd/security-group-rule/id"
;
}
description
"Reference of the security group rules bound to this
CPD."
;
reference
"GS NFV IFA011: Section 7.1.6.3 Cpd information element"
;
}
}
grouping
security-group-rule
{
list
security-group-rule
{
key
"id"
;
leaf
id
{
type
string
;
description
"Identifier of this SecurityGroupRule information
element."
;
reference
"GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
information element."
;
}
leaf
description
{
type
string
;
description
"Human readable description of the security group rule."
;
reference
"GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
information element."
;
}
leaf
direction
{
type
enumeration
{
enum
ingress
;
enum
egress
;
}
default
"ingress"
;
description
"The direction in which the security group rule is applied.
Permitted values: INGRESS, EGRESS. Defaults to INGRESS."
;
reference
"GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
information element."
;
}
leaf
ether-type
{
type
enumeration
{
enum
ipv4
;
enum
ipv6
;
}
default
"ipv4"
;
description
"Indicates the protocol carried over the Ethernet layer.
Permitted values: IPV4, IPV6. Defaults to IPV4."
;
reference
"GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
information element."
;
}
leaf
protocol
{
type
enumeration
{
enum
tcp
;
enum
udp
;
enum
icmp
;
}
default
"tcp"
;
description
"Indicates the protocol carried over the IP layer.
Permitted values: any protocol defined in the IANA
protocol registry, e.g. TCP, UDP, ICMP, etc. Defaults
to TCP."
;
reference
"GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
information element."
;
}
leaf
port-range-min
{
must
". <= ../port-range-max"
;
type
uint16
;
default
"0"
;
description
"Indicates minimum port number in the range that is
matched by the security group rule. Defaults to 0."
;
reference
"GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
information element."
;
}
leaf
port-range-max
{
must
". >= ../port-range-min"
;
type
uint16
;
default
"65535"
;
description
"Indicates maximum port number in the range that is
matched by the security group rule. Defaults to 65535."
;
reference
"GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
information element."
;
}
description
"Defines security group rules to be used by the VNF."
;
reference
"GS NFV IFA011: Section 7.1.2, VNFD information element."
;
}
}
}
src/yang/etsi-nfv.yang
→
src/yang/etsi-nfv
-descriptors
.yang
View file @
d67cd24d
module
etsi-nfv
{
module
etsi-nfv
-descriptors
{
yang-version
1.1
;
namespace
"urn:etsi:
params:xml:ns
:yang:etsi-nfv"
;
namespace
"urn:etsi:
nfv
:yang:etsi-nfv
-descriptors
"
;
prefix
nfv
;
include
etsi-nfv-common
;
...
...
src/yang/etsi-nfv-ns.yang
View file @
d67cd24d
submodule
etsi-nfv-ns
{
yang-version
1.1
;
belongs-to
etsi-nfv
{
belongs-to
etsi-nfv
-descriptors
{
prefix
nfv
;
}
...
...
@@ -146,63 +146,66 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.2.3.2 Sapd information element"
;
}
leaf
virtual-link-desc
{
type
leafref
{
path
"../../virtual-link-desc/id"
;
choice
cpd-or-virtual-link
{
leaf
virtual-link-desc
{
type
leafref
{
path
"../../virtual-link-desc/id"
;
}
description
"References the descriptor of the NS VL instance to
which the SAP instantiated from this SAPD connects to."
;
reference
"GS NFV IFA014: Section 6.2.3.2 Sapd information element"
;
}
description
"References the descriptor of the NS VL instance to
which the SAP instantiated from this SAPD connects to."
;
reference
"GS NFV IFA014: Section 6.2.3.2 Sapd information element"
;
}
choice
associated-cpd-id
{
container
vnf
{
leaf
vnfd-id
{
mandatory
true
;
type
leafref
{
path
"../../../../nfv:vnfd/nfv:id"
;
choice
associated-cpd-id
{
container
vnf
{
leaf
vnfd-id
{
mandatory
true
;
type
leafref
{
path
"../../../../nfv:vnfd/nfv:id"
;
}
must
"boolean(../../../vnfd-id[.=current()])"
;
}
must
"boolean(../../../vnfd-id[.=current()])"
;