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
4036f689
Commit
4036f689
authored
Jun 05, 2018
by
Mahesh Jethanandani
Committed by
Michele Carignani
Jun 07, 2018
Browse files
Inititial revision for Gerrit
Change-Id: If2a2812ee1af2af12dc6c81e2ac6f67406b959dc
parent
7902178b
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
src/yang/etsi-nfv-common.yang
0 → 100644
View file @
4036f689
submodule
etsi-nfv-common
{
belongs-to
etsi-nfv
{
prefix
nfv
;
}
description
"Common types."
;
revision
2017-01-20
{
description
"Initial revision
Common data structures to support VNFD and NSD
according to:
ETSI GS NFV-IFA 014 V2.1.1 (2016-10)
ETSI GS NFV-IFA 011 V2.1.1 (2016-10)"
;
}
/*
* Identities.
*/
identity
layer-protocol
{
}
identity
Ethernet
{
base
layer-protocol
;
}
identity
MPLS
{
base
layer-protocol
;
}
identity
ODU2
{
base
layer-protocol
;
}
identity
IPv4
{
base
layer-protocol
;
}
identity
IPv6
{
base
layer-protocol
;
}
identity
Psuedo-Wire
{
base
layer-protocol
;
}
identity
address-type
{
description
"Describes the type of the address to be assigned to the CP
instantiated from the parent CPD.
Value:
• MAC address.
• IP address.
• …
The content type shall be aligned with the address type
supported by the layerProtocol attribute of the parent CPD."
;
reference
"GS NFV IFA011: Section 7.1.3.3, AddressData information
element."
;
}
identity
mac-address
{
base
address-type
;
}
identity
ip-address
{
base
address-type
;
}
identity
supported-operation
{
description
"Indicates which operations are available for this DF via the
VNF LCM interface. Instantiate VNF, Query VNF and Terminate
VNF are supported in all DF and therefore need not be
included in this list."
;
reference
"GS NFV IFA011: Section 7.1.8.2 VnfDf information element"
;
}
identity
instantiate-vnf
{
base
supported-operation
;
}
identity
terminate-vnf
{
base
supported-operation
;
}
identity
query-vnf
{
base
supported-operation
;
}
/*
* Typedefs
*/
typedef
flow-pattern
{
type
enumeration
{
enum
line
;
enum
tree
;
enum
mesh
;
}
}
typedef
cp-role
{
type
enumeration
{
enum
"root"
;
enum
"leaf"
;
}
}
typedef
affinity-type
{
type
enumeration
{
enum
"affinity"
;
enum
"anti-affinity"
;
}
}
typedef
affinity-scope
{
type
enumeration
{
enum
"nfvi-node"
;
enum
"zone-group"
;
enum
"zone"
;
enum
"nfvi-pop"
;
}
}
typedef
lifecycle-management-script-event
{
type
enumeration
{
enum
"start-instantiation"
;
enum
"end-instantiation"
;
enum
"start-scaling"
;
enum
"end-scaling"
;
enum
"start-healing"
;
enum
"end-healing"
;
enum
"start-termination"
;
enum
"end-termination"
;
enum
"start-vnf-flavor-change"
;
enum
"end-vnf-flavor-change"
;
enum
"start-vnf-operation-change"
;
enum
"end-vnf-operation-change"
;
enum
"start-vnf-ext-conn-change"
;
enum
"end-vnf-ext-conn-change"
;
enum
"start-vnfinfo-modification"
;
enum
"end-vnfinfo-modification"
;
}
}
grouping
local-affinity-or-anti-affinity-rule
{
list
local-affinity-or-anti-affinity-rule
{
key
"affinity-type affinity-scope"
;
leaf
affinity-type
{
type
affinity-type
;
description
"Specifies whether the rule is an affinity rule or an
anti-affinity rule."
;
reference
"GS NFV IFA011: Section 7.1.8.11,
LocalAffinityOrAntiAffinityRule information element."
;
}
leaf
affinity-scope
{
type
affinity-scope
;
description
"Specifies the scope of the rule, possible values are
'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node'."
;
reference
"GS NFV IFA011: Section 7.1.8.11,
LocalAffinityOrAntiAffinityRule information element."
;
}
}
}
grouping
connectivity-type
{
container
connectivity-type
{
leaf
layer-protocol
{
mandatory
true
;
type
identityref
{
base
layer-protocol
;
}
description
"Identifies the protocol this VL gives access to (Ethernet,
MPLS, ODU2, IPV4, IPV6, Pseudo-Wire)."
;
reference
"GS NFV IFA011: Section 7.1.7.3, ConnectivityType
information element."
;
}
leaf
flow-pattern
{
type
flow-pattern
;
description
"Identifies the flow pattern of the connectivity (Line,
Tree, Mesh)."
;
reference
"GS NFV IFA011: Section 7.1.7.3, ConnectivityType
information element."
;
}
}
}
grouping
link-bitrate-requirements
{
leaf
root
{
type
uint64
;
units
"Mbps"
;
mandatory
true
;
description
"Specifies the throughput requirement of
the link (e.g. bitrate of E-Line, root bitrate
of E-Tree, aggregate capacity of E-LAN)."
;
reference
"GS NFV IFA011: Section 7.1.8.6, LinkBitrateRequirements
information element."
;
}
leaf
leaf
{
type
uint64
;
units
"Mbps"
;
description
"Specifies the throughput requirement of
leaf connections to the link when
applicable to the connectivity type (e.g. for
E-Tree and E-LAN branches)."
;
reference
"GS NFV IFA011: Section 7.1.8.6, LinkBitrateRequirements
information element."
;
}
}
grouping
monitoring-parameter
{
leaf
name
{
type
string
;
description
"Human readable name of the monitoring parameter."
;
reference
"GS NFV IFA011: Section 7.1.11.3, MonitoringParameter
information element."
;
}
leaf
performance-metric
{
type
string
;
description
"Defines the virtualised resource performance metric. The
VNFM collects the performance metrics defined in this
attribute from the VIM using one or more PM Jobs."
;
reference
"GS NFV IFA011: Section 7.1.11.3, MonitoringParameter
information element."
;
}
leaf
collection-period
{
type
uint64
;
units
"ms"
;
description
"An attribute that describes the recommended periodicity at
which to collect the performance information. VNFM determines
if this parameter is considered.
The vendor may provide this information as a guidance for
creating PmJobs if needed."
;
reference
"GS NFV IFA011: Section 7.1.11.3, MonitoringParameter
information element."
;
}
}
}
src/yang/etsi-nfv-ns.yang
0 → 100644
View file @
4036f689
submodule
etsi-nfv-ns
{
belongs-to
etsi-nfv
{
prefix
nfv
;
}
include
etsi-nfv-common
;
description
"Models for NS according to ETSI GS NFV-IFA 014."
;
revision
2017-01-20
{
description
"Initial revision
Common data structure to support NSD
according to:
ETSI GS NFV-IFA 014 V2.1.1 (2016-10)"
;
reference
"ETSI GS NFV-IFA 014 V2.1.1 (2016-10)"
;
}
grouping
security-parameters
{
container
security
{
leaf
signature
{
type
string
;
}
leaf
algorithm
{
type
string
;
}
leaf
certificate
{
type
string
;
}
}
}
grouping
resource-handle
{
leaf
vim-id
{
type
string
;
}
leaf
resrouce-provider-id
{
type
string
;
}
leaf
resource-id
{
type
string
;
}
}
grouping
nsd
{
list
nsd
{
key
"id"
;
leaf
id
{
type
string
;
description
"Uniquely identifies an network service descriptor"
;
}
leaf
designer
{
type
string
;
description
"Identifies the designer of the network service descriptor"
;
}
leaf
version
{
type
string
;
description
"Identifies the version of the network service descriptor"
;
}
leaf
name
{
type
string
;
description
"Provides the human readable name of the network service. descriptor"
;
}
leaf
invariant-id
{
description
"Identifies an network service descriptor in a version
independent manner. This attribute is invariant across
versions of the network service descriptor."
;
type
string
;
}
leaf-list
nested-nsd
{
type
leafref
{
path
"../../nfv:nsd/nfv:id"
;
}
must
". != ../nfv:id"
;
}
list
vnfd
{
key
"vnfd"
;
min-elements
1
;
description
"This lists the VNFDs this network service
descriptor consists of."
;
leaf
vnfd
{
type
leafref
{
path
"/nfv/nfv:vnfd/nfv:id"
;
}
}
}
leaf-list
pnfd
{
type
string
;
}
list
service-access-point-descriptor
{
key
"id"
;
min-elements
1
;
description
"A service access point serves as the network
service's external connection point"
;
leaf
id
{
type
string
;
}
leaf
address-assignment
{
description
"Specify whether the SAP address
assignment is under the responsibility of
management and orchestration functions
or not. If it is set to True, management and
orchestration functions are responsible for
assigning addresses to the access points
instantiated from this SAPD"
;
type
empty
;
}
leaf
description
{
type
string
;
}
leaf
layer-protocol
{
type
identityref
{
base
layer-protocol
;
}
}
leaf
role
{
type
cp-role
;
}
leaf
virtual-link-desc
{
type
leafref
{
path
"../../nfv:virtual-link-desc/nfv:id"
;
}
description
"Can optionally connect this service-access-point to an virtual-link. If not set,
it's assumed a VNFD's connection-points references this
service-access-point."
;
}
/*
associatedCpdId:
Deliberatly not according to standard, see
vnf-profile -> sapd-connectivity
*/
}
list
virtual-link-desc
{
key
"id"
;
description
"The virtual-link-desc information element provides general information
enabling the instantiation of virtual links."
;
leaf
id
{
type
string
;
}
leaf
provider
{
description
"Defines the organization generating the VLD. "
;
type
string
;
}
leaf
version
{
mandatory
true
;
type
string
;
}
uses
connectivity-type
;
list
deployment-flavor
{
key
"id"
;
leaf
id
{
type
string
;
}
container
qos
{
leaf
latency
{
mandatory
true
;
description
"Specifies the maximum latency in ms."
;
type
uint32
;
units
"ms"
;
}
leaf
packet-delay-variation
{
mandatory
true
;
description
"Specifies the maximum jitter in ms."
;
type
uint32
;
units
"ms"
;
}
leaf
packet-loss-ratio
{
description
"Specifies the maximum packet loss ratio."
;
type
decimal64
{
fraction-digits
"2"
;
range
"0..1.00"
;
}
}
leaf
priority
{
description
"Specifies the priority level in case of
congestion on the underlying physical links."
;
type
uint32
;
}
}
leaf
service-availability-level
{
reference
"ETSI GS NFV-REL 001 [i.5]"
;
type
enumeration
{
enum
"level-1"
;
enum
"level-2"
;
enum
"level-3"
;
}
}
}
leaf
test-access
{
type
enumeration
{
enum
none
;
enum
passive-monitoring
;
enum
active
;
}
}
leaf
description
{
type
string
;
}
uses
security-parameters
;
}
// vnffgd skipped since not fully specified by the spec
list
monitored-info
{
key
"id"
;
leaf
id
{
type
string
;
}
choice
source
{
// We have no way of refererencing a VNF MP today
container
ns-monitoring-parameter
{
uses
monitoring-parameter
;
}
container
vnf-indicator
{
leaf
vnfd
{
type
leafref
{
path
"/nfv:nfv/nfv:vnfd/nfv:id"
;
}
}
leaf
indicator
{
type
leafref
{
path
"deref(../nfv:vnfd)/../nfv:indicator/nfv:id"
;
}
}
}
}
}
leaf-list
autoscale-rule
{
type
string
;
}
list
lifecycle-management-script
{
key
"event"
;
leaf
event
{
type
string
;
}
leaf
script
{
type
string
;
}
}
list
deployment-flavor
{
min-elements
1
;
must
"nfv:default-instantiation-level or count(nfv:instantiation-level) = 1"
;
key
"id"
;
description
"The NsDf information element specifies the properties of a variant of an NS."
;
leaf
id
{
type
string
;
}
leaf
flavor-key
{
type
leafref
{
path
"../../nfv:monitored-info/nfv:id"
;
}
}
list
vnf-profile
{
must
"nfv:min-number-of-instances<=nfv:max-number-of-instances"
;
must
"count(../../nfv:vnfd[vnfd=current()/nfv:vnfd])=1"
{
error-message
"VNFDs in the profile has to be listed as a dependency of the network service descriptor."
;
}
key
"id"
;
leaf
id
{
type
string
;
}
leaf
vnfd
{
mandatory
true
;
type
leafref
{
path
"/nfv:nfv/nfv:vnfd/nfv:id"
;
}
}
leaf
flavor
{
mandatory
true
;
type
leafref
{
path
"deref(../nfv:vnfd)/../nfv:deployment-flavor/nfv:id"
;
}
}
leaf
instantiation-level
{
mandatory
true
;
type
leafref
{
path
"deref(../nfv:flavor)/../nfv:instantiation-level/nfv:id"
;
}
}
leaf
min-number-of-instances
{
type
uint16
;
mandatory
true
;
}
leaf
max-number-of-instances
{
type
uint16
;
mandatory
true
;
}
uses
local-affinity-or-anti-affinity-rule
;
list
affinity-or-anti-affinity-group
{
key
"id"
;
leaf
id
{
type
leafref
{
path
"../../../nfv:affinity-or-anti-affinity-group/nfv:id"
;
}
}
}
list
virtual-link-connectivity
{
key
"virtual-link-profile cp"
;
leaf
virtual-link-profile
{
type
leafref
{
path
"../../../nfv:virtual-link-profile/nfv:virtual-link-desc"
;
}
}
leaf
cp
{
type
leafref
{
path
"deref(../../nfv:vnfd)/../nfv:ext-cpd/nfv:id"
;
}
}
}
// Not according to standard
list
sapd-connectivity
{
key
"sapd cp"
;
leaf
sapd
{
type
leafref
{
path
"../../../../nfv:service-access-point-descriptor/nfv:id"
;
}
}
leaf
cp
{
type
leafref
{
path
"deref(../../nfv:vnfd)/../nfv:ext-cpd/nfv:id"
;
}
}
}
}
list
pnf-profile
{
key
"pnfd"
;
leaf
pnfd
{