draft-ietf-netmod-yang-model-classification-02.txt | draft-ietf-netmod-yang-model-classification-03.txt | |||
---|---|---|---|---|
NETMOD D. Bogdanovic | NETMOD D. Bogdanovic | |||
Internet-Draft Volta Networks, Inc. | Internet-Draft Volta Networks, Inc. | |||
Intended status: Informational B. Claise | Intended status: Informational B. Claise | |||
Expires: December 24, 2016 C. Moberg | Expires: April 2, 2017 C. Moberg | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
June 22, 2016 | September 29, 2016 | |||
YANG Module Classification | YANG Module Classification | |||
draft-ietf-netmod-yang-model-classification-02 | draft-ietf-netmod-yang-model-classification-03 | |||
Abstract | Abstract | |||
The YANG [RFC6020] data modeling language is currently being | The YANG [RFC6020] data modeling language is currently being | |||
considered for a wide variety of applications throughout the | considered for a wide variety of applications throughout the | |||
networking industry at large. Many standards-defining organizations | networking industry at large. Many standards-defining organizations | |||
(SDOs), open source software projects, vendors and users are using | (SDOs), open source software projects, vendors and users are using | |||
YANG to develop and publish YANG modules of configuration, state data | YANG to develop and publish YANG modules for a wide variety of | |||
and operations for a wide variety of applications. At the same time, | applications. At the same time, there is currently no well-known | |||
there is currently no well-known terminology to categorize various | terminology to categorize various types of YANG modules. | |||
types of YANG modules. | ||||
A consistent terminology would help with the categorization of YANG | A consistent terminology would help with the categorization of YANG | |||
modules, assist in the analysis the YANG data modeling efforts in the | modules, assist in the analysis of the YANG data modeling efforts in | |||
IETF and other organizations, and bring clarity to the YANG-related | the IETF and other organizations, and bring clarity to the YANG- | |||
discussions between the different groups. | related discussions between the different groups. | |||
This document describes a set of concepts and associated terms to | This document describes a set of concepts and associated terms to | |||
support consistent classification of YANG modules. | support consistent classification of YANG modules. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on December 24, 2016. | This Internet-Draft will expire on April 2, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. First Dimension: YANG Data Model Abstraction Layers . . . . . 4 | 2. First Dimension: YANG Module Abstraction Layers . . . . . . . 4 | |||
2.1. Network Service YANG Modules . . . . . . . . . . . . . . 6 | 2.1. Network Service YANG Modules . . . . . . . . . . . . . . 6 | |||
2.2. Network Element YANG Modules . . . . . . . . . . . . . . 7 | 2.2. Network Element YANG Modules . . . . . . . . . . . . . . 7 | |||
3. Second Dimension: Module Types . . . . . . . . . . . . . . . 7 | 3. Second Dimension: Module Types . . . . . . . . . . . . . . . 7 | |||
3.1. Standard YANG Modules . . . . . . . . . . . . . . . . . . 8 | 3.1. Standard YANG Modules . . . . . . . . . . . . . . . . . . 8 | |||
3.2. Vendor-specific YANG Modules and Extensions . . . . . . . 8 | 3.2. Vendor-specific YANG Modules and Extensions . . . . . . . 8 | |||
3.3. User-specific YANG Modules and Extensions . . . . . . . . 9 | 3.3. User-specific YANG Modules and Extensions . . . . . . . . 9 | |||
4. Adding The Classification Type to YANG Module Catalogs . . . 9 | 4. Adding The Classification Type to YANG Module Catalogs . . . 9 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | |||
8. Change log [RFC Editor: Please remove] . . . . . . . . . . . 10 | 8. Change log [RFC Editor: Please remove] . . . . . . . . . . . 10 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 11 | 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
The Internet Engineering Steering Group (IESG) has been actively | The Internet Engineering Steering Group (IESG) has been actively | |||
encouraging IETF working groups to use the YANG [RFC6020] | encouraging IETF working groups to use the YANG modeling language | |||
[I-D.ietf-netmod-rfc6020bis] and NETCONF [RFC6241] and YANG standards | [RFC6020], [RFC7950] and NETCONF protocol [RFC6241] for configuration | |||
for configuration management purposes, especially in new working | management purposes, especially in new working group charters | |||
group charters [Writable-MIB-Module-IESG-Statement]. | [Writable-MIB-Module-IESG-Statement]. | |||
YANG is also gaining wide acceptance as the de-facto standard | YANG is also gaining wide acceptance as the de-facto standard | |||
modeling language in the broader industry. This extends beyond the | modeling language in the broader industry. This extends beyond the | |||
IETF, including many standards development organizations, industry | IETF, including many standards development organizations, industry | |||
consortia, ad hoc groups, open source projects, vendors, and end- | consortia, ad hoc groups, open source projects, vendors, and end- | |||
users. | users. | |||
There are currently no clear guidelines on how to classify the | There are currently no clear guidelines on how to classify the | |||
layering of YANG modules according to abstraction, or how to classify | layering of YANG modules according to abstraction, or how to classify | |||
modules along the continuum spanning formal standards publications, | modules along the continuum spanning formal standards publications, | |||
skipping to change at page 3, line 24 ¶ | skipping to change at page 3, line 24 ¶ | |||
dimensions: | dimensions: | |||
o The layering of modules based on their abstraction levels | o The layering of modules based on their abstraction levels | |||
o The type of module based on the nature and intent of the content | o The type of module based on the nature and intent of the content | |||
The intent of this document is to provide a taxonomy to simplify | The intent of this document is to provide a taxonomy to simplify | |||
human communication around YANG modules. The authors acknowledge | human communication around YANG modules. The authors acknowledge | |||
that the classification boundaries are at times blurry, but believe | that the classification boundaries are at times blurry, but believe | |||
that this document should provide a robust starting point as the YANG | that this document should provide a robust starting point as the YANG | |||
community gain further experience with designing and deploying | community gains further experience with designing and deploying | |||
modules. To be more explicit, the authors believe that the | modules. To be more explicit, the authors believe that the | |||
classification criteria will change over time. | classification criteria will change over time. | |||
An example of a type of module that have created substantial | A number of module types have created substantial discussion during | |||
discussion during the development of this document is topologies. | the development of this document including those concerned with | |||
Topology models are useful both on the Network Element level (e.g. | topologies. Topology modules are useful both on the Network Element | |||
link-state database content) as well as in the Network Service level | level (e.g. link-state database content) as well as on the Network | |||
(e.g. network-wide, configured topologies). In the end, it is the | Service level (e.g. network-wide, configured topologies). In the | |||
module developer that classifies the module according to the initial | end, it is the module developer that classifies the module according | |||
intent of the module content. | to the initial intent of the module content. | |||
This document should provide benefits to multiple audiences: | This document should provide benefits to multiple audiences: | |||
o First, a common taxonomy helps with the different standards | o First, a common taxonomy helps with the different standards | |||
development organizations and industry consortia discussions, | development organizations and industry consortia discussions, | |||
whose goals are determined in their respective areas of work. | whose goals are determined in their respective areas of work. | |||
o Second, operators might look at the YANG module classification | o Second, operators might look at the YANG module classification | |||
type to understand which Network Service YANG modules and Network | type to understand which Network Service YANG modules and Network | |||
Element YANG modules are available for their service composition. | Element YANG modules are available for their service composition. | |||
skipping to change at page 4, line 12 ¶ | skipping to change at page 4, line 12 ¶ | |||
Element YANG module that contains the L2VPN data definitions | Element YANG module that contains the L2VPN data definitions | |||
required to be configured on a single device. | required to be configured on a single device. | |||
o And thirdly, this taxonomy would help equipment vendors (whether | o And thirdly, this taxonomy would help equipment vendors (whether | |||
physical or virtual), controller vendors, orchestrator vendors to | physical or virtual), controller vendors, orchestrator vendors to | |||
explain to their customers the relationship between the different | explain to their customers the relationship between the different | |||
YANG modules they propose in their products. See Figure 1. | YANG modules they propose in their products. See Figure 1. | |||
1.1. Terminology | 1.1. Terminology | |||
RFC6020bis [I-D.ietf-netmod-rfc6020bis] specifies: | [RFC7950] specifies: | |||
o data model: A data model describes how data is represented and | o data model: A data model describes how data is represented and | |||
accessed. | accessed. | |||
o module: A YANG module defines a hierarchy of nodes that can be | o module: A YANG module defines a hierarchy of nodes that can be | |||
used for NETCONF-based operations. With its definitions and the | used for NETCONF-based operations. With its definitions and the | |||
definitions it imports or includes from elsewhere, a module is | definitions it imports or includes from elsewhere, a module is | |||
self-contained and "compilable". | self-contained and "compilable". | |||
2. First Dimension: YANG Data Model Abstraction Layers | 2. First Dimension: YANG Module Abstraction Layers | |||
Model developers have taken two approaches to developing YANG | Module developers have taken two approaches to developing YANG | |||
modules: top-down and bottom-up. The top-down approach starts with | modules: top-down and bottom-up. The top-down approach starts with | |||
high level abstractions modeling business or customer requirements | high level abstractions modeling business or customer requirements | |||
and maps them to specific networking technologies. The bottom-up | and maps them to specific networking technologies. The bottom-up | |||
approach starts with fundamental networking technologies and maps | approach starts with fundamental networking technologies and maps | |||
them into more abstract constructs. | them into more abstract constructs. | |||
There are currently no specific requirements on, or well-defined best | There are currently no specific requirements on, or well-defined best | |||
practices around the development of YANG modules For the purpose of | practices around the development of YANG modules. For the purpose of | |||
this document we assume that both approaches (bottom-up and top-down) | this document we assume that both approaches (bottom-up and top-down) | |||
will be used as they both provide benefits that appeal to different | will be used as they both provide benefits that appeal to different | |||
groups. | groups. | |||
For layering purposes, this document suggests the classification of | For layering purposes, this document suggests the classification of | |||
YANG modules into two distinct abstraction layers: | YANG modules into two distinct abstraction layers: | |||
o Network Element YANG Modules describe the configuration, state | o Network Element YANG Modules describe the configuration, state | |||
data and operations of specific device-centric technologies or | data, operations and notifications of specific device-centric | |||
features | technologies or features | |||
o Network Service YANG Modules describe the configuration, state | o Network Service YANG Modules describe the configuration, state | |||
data and operations of an abstract representation of a service | data, operations and notifications of abstract representations of | |||
implemented on one or multiple network elements | services implemented on one or multiple network elements | |||
+--------------------------+ | ||||
| Operations and Business | | ||||
| Support Systems | | ||||
| (OSS/BSS) | | ||||
+--------------------------+ | ||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
Network Service YANG Modules | ||||
+------------+ +-------------+ +-------------+ | ||||
| | | | | | | ||||
| - L2VPN | | - L2VPN | | L3VPN | | ||||
| - VPWS | | - VPLS | | | | ||||
| | | | | | | ||||
+------------+ +-------------+ +-------------+ | ||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
Network Element YANG Modules | ||||
+------------+ +------------+ +-------------+ +------------+ | ||||
| | | | | | | | | ||||
| MPLS | | BGP | | IPv4 / IPv6 | | Ethernet | | ||||
| | | | | | | | | ||||
+------------+ +------------+ +-------------+ +------------+ | ||||
L2VPN: Layer 2 Virtual Private Network | ||||
L3VPN: Layer 3 Virtual Private Network | ||||
VPWS: Virtual Private Wire Service | ||||
VPLS: Virtual Private LAN Service | ||||
Figure 1: YANG Module Layers | ||||
Figure 1 illustrates the application of YANG modules at different | Figure 1 illustrates the application of YANG modules at different | |||
layers of abstraction. Layering of modules allows for reusability of | layers of abstraction. Layering of modules allows for reusability of | |||
existing lower layer modules by higher level modules while limiting | existing lower layer modules by higher level modules while limiting | |||
duplication of features across layers. | duplication of features across layers. | |||
For module developers, per-layer modeling allows for separation of | For module developers, per-layer modeling allows for separation of | |||
concern across editing teams focusing on specific areas. | concern across editing teams focusing on specific areas. | |||
As an example, experience from the IETF shows that creating useful | As an example, experience from the IETF shows that creating useful | |||
network element YANG modules for e.g. routing or switching protocols | network element YANG modules for e.g. routing or switching protocols | |||
requires teams that include developers with experience of | requires teams that include developers with experience of | |||
implementing those protocols. | implementing those protocols. | |||
On the other hand, network service YANG modules are best developed by | On the other hand, network service YANG modules are best developed by | |||
network operators experienced in defining network services for | network operators experienced in defining network services for | |||
consumption by programmers developing e.g. flow-through provisioning | consumption by programmers developing e.g. flow-through provisioning | |||
systems or self-service portals. | systems or self-service portals. | |||
+--------------------------+ | ||||
| Operations and Business | | ||||
| Support Systems | | ||||
| (OSS/BSS) | | ||||
+--------------------------+ | ||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
Network Service YANG Modules | ||||
+------------+ +-------------+ +-------------+ | ||||
| | | | | | | ||||
| - L2VPN | | - L2VPN | | L3VPN | | ||||
| - VPWS | | - VPLS | | | | ||||
| | | | | | | ||||
+------------+ +-------------+ +-------------+ | ||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
Network Element YANG Modules | ||||
+------------+ +------------+ +-------------+ +------------+ | ||||
| | | | | | | | | ||||
| MPLS | | BGP | | IPv4 / IPv6 | | Ethernet | | ||||
| | | | | | | | | ||||
+------------+ +------------+ +-------------+ +------------+ | ||||
L2VPN: Layer 2 Virtual Private Network | ||||
L3VPN: Layer 3 Virtual Private Network | ||||
VPWS: Virtual Private Wire Service | ||||
VPLS: Virtual Private LAN Service | ||||
Figure 1: YANG Module Layers | ||||
2.1. Network Service YANG Modules | 2.1. Network Service YANG Modules | |||
Network Service YANG Modules describe the characteristics of a | Network Service YANG Modules describe the characteristics of a | |||
service, as agreed upon with consumers of that service. That is, a | service, as agreed upon with consumers of that service. That is, a | |||
service model does not expose the detailed configuration parameters | service module does not expose the detailed configuration parameters | |||
of all participating network elements and features, but describes an | of all participating network elements and features, but describes an | |||
abstract model that allows instances of the service to be decomposed | abstract model that allows instances of the service to be decomposed | |||
into instance data according to the Network Element Modules of the | into instance data according to the Network Element YANG Modules of | |||
participating network elements. The service-to-element decomposition | the participating network elements. The service-to-element | |||
is a separate process with details depending on how the network | decomposition is a separate process with details depending on how the | |||
operator chooses to realize the service. For the purpose of this | network operator chooses to realize the service. For the purpose of | |||
document we will use the term "orchestrator" to describe a system | this document we will use the term "orchestrator" to describe a | |||
implementing such a process. | system implementing such a process. | |||
As an example, the Network Service YANG Module included in | As an example, the Network Service YANG Module defined in | |||
[YANG-Data-Model-for-L3VPN-service-delivery] provides an abstract | [YANG-Data-Model-for-L3VPN-service-delivery] provides an abstract | |||
model for Layer 3 IP VPN service configuration. This model includes | model for Layer 3 IP VPN service configuration. This module includes | |||
e.g. the concept of a 'site-network-access' to represent bearer and | e.g. the concept of a 'site-network-access' to represent bearer and | |||
connection parameters. An orchestrator receives operations on | connection parameters. An orchestrator receives operations on | |||
service instances according to the service model and decomposes the | service instances according to the service module and decomposes the | |||
data into specific Network Element Modules to configure the | data into specific Network Element YANG Modules to configure the | |||
participating network elements to perform the intent of the service. | participating network elements to perform the intent of the service. | |||
In the case of the L3VPN module, this would include translating the | In the case of the L3VPN module, this would include translating the | |||
'site-network-access' parameters to the appropriate parameters in the | 'site-network-access' parameters to the appropriate parameters in the | |||
Network Element YANG Module implemented on the constituent elements. | Network Element YANG Module implemented on the constituent elements. | |||
Network Service YANG Modules define services models to be consumed by | Network Service YANG Modules define service models to be consumed by | |||
external systems. These modules are commonly designed, developed and | external systems. These modules are commonly designed, developed and | |||
deployed by network infrastructure teams. | deployed by network infrastructure teams. | |||
YANG allows for different design patterns to describe network | YANG allows for different design patterns to describe network | |||
services, ranging from monolithic to component-based approaches. | services, ranging from monolithic to component-based approaches. | |||
The monolithic approach captures the entire service in a single | The monolithic approach captures the entire service in a single | |||
module and does not put focus on reusability of internal data | module and does not put focus on reusability of internal data | |||
definitions and groupings. The monolithic approach has the | definitions and groupings. The monolithic approach has the | |||
advantages of single-purpose development including speed at the | advantages of single-purpose development including speed at the | |||
skipping to change at page 7, line 15 ¶ | skipping to change at page 7, line 17 ¶ | |||
As an example, an L2VPN service can be built on many different types | As an example, an L2VPN service can be built on many different types | |||
of transport network technologies, including e.g. MPLS or carrier | of transport network technologies, including e.g. MPLS or carrier | |||
ethernet. A component-based approach would allow for reuse of e.g. | ethernet. A component-based approach would allow for reuse of e.g. | |||
UNI-interface definitions independent of the underlying transport | UNI-interface definitions independent of the underlying transport | |||
network (e.g. MEF UNI interface or MPLS interface). The monolithic | network (e.g. MEF UNI interface or MPLS interface). The monolithic | |||
approach would assume a specific set of transport technologies and | approach would assume a specific set of transport technologies and | |||
interface definitions. | interface definitions. | |||
2.2. Network Element YANG Modules | 2.2. Network Element YANG Modules | |||
Network Element YANG Modules describe the configuration, state data | Network Element YANG Modules describe the characteristics of a | |||
and operations of a network device as defined by the vendor of that | network device as defined by the vendor of that device. The modules | |||
device. The modules are commonly structured around features of the | are commonly structured around features of the device, e.g. interface | |||
device, e.g. interface configuration [RFC7223], OSPF configuration | configuration [RFC7223], OSPF configuration [I-D.ietf-ospf-yang], and | |||
[I-D.ietf-ospf-yang], and firewall rules definitions | firewall rules definitions [I-D.ietf-netmod-acl-model]. | |||
[I-D.ietf-netmod-acl-model]. | ||||
The module provides a coherent data model representation of what is | The module provides a coherent data model representation of the | |||
commonly a very mixed software environment consisting of the | software environment consisting of the operating system and | |||
operating system and applications running on the device. The | applications running on the device. The decomposition, ordering, and | |||
decomposition, ordering, and execution of changes to the operating | execution of changes to the operating system and application | |||
system and application configuration is the task of the management | configuration is the task of the agent that implements the module. | |||
framework that implements the YANG module. | ||||
3. Second Dimension: Module Types | 3. Second Dimension: Module Types | |||
This document suggests classifying YANG module types as either | This document suggests classifying YANG module types as standard YANG | |||
standard YANG modules, vendor-specific YANG modules and extensions, | modules, vendor-specific YANG modules and extensions, or user- | |||
and user-specific YANG modules and extensions | specific YANG modules and extensions | |||
The suggested classification applies to both Network Element YANG | The suggested classification applies to both Network Element YANG | |||
Modules and Network Service YANG Modules. | Modules and Network Service YANG Modules. | |||
It is to be expected that real-world implementations of both Network | It is to be expected that real-world implementations of both Network | |||
Service and Network Element YANG Modules will include a mix of all | Service YANG Modules and Network Element YANG Modules will include a | |||
three types of modules. | mix of all three types of modules. | |||
Figure 2 illustrates the relationship between the three types of | Figure 2 illustrates the relationship between the three types of | |||
modules. | modules. | |||
+--------------+ | +--------------+ | |||
| User | | | User | | |||
| Extensions | | | Extensions | | |||
+------+-------+ | +------+-------+ | |||
Augments | Augments | |||
+------+-------+ +--------------+ +--------------+ | +------+-------+ +--------------+ +--------------+ | |||
| Vendor | | User | | User | | | Vendor | | User | | User | | |||
| Extensions | | Extensions | | Extensions | | | Extensions | | Extensions | | Extensions | | |||
+------+-------+ +------+-------+ +------+-------+ | +------+-------+ +------+-------+ +------+-------+ | |||
Augments Augments Augments | Augments Augments Augments | |||
+------+-----------------+-------+ +------+-------+ +--------------+ | +------+-----------------+-------+ +------+-------+ +--------------+ | |||
| Standard | | Vendor | | User | | | Standard | | Vendor | | User | | |||
| Models | | Models | | Models | | | Modules | | Modules | | Modules | | |||
+--------------------------------+ +--------------+ +--------------+ | +--------------------------------+ +--------------+ +--------------+ | |||
Figure 2: YANG Module Types | Figure 2: YANG Module Types | |||
3.1. Standard YANG Modules | 3.1. Standard YANG Modules | |||
Standard YANG Modules are published by standards-defining | Standard YANG Modules are published by standards-defining | |||
organizations (SDOs). While there is no formal definition of what | organizations (SDOs). While there is no formal definition of what | |||
construes an SDO, a common feature is that they publish | construes an SDO, a common feature is that they publish | |||
specifications along specific processes with content that reflects | specifications along specific processes with content that reflects | |||
some sort of membership consensus. The specifications are developed | some sort of membership consensus. The specifications are developed | |||
for wide use among the membership or for audiences beyond that. | for wide use among the membership or for audiences beyond that. | |||
The lifecycle of these modules is driven by the editing cycle of the | The lifecycle of these modules is driven by the editing cycle of the | |||
specification and not tied to a specific implementation. | specification and not tied to a specific implementation. | |||
Examples of SDOs in the networking industry are the IETF, the IEEE | Examples of SDOs in the networking industry are the IETF, the IEEE | |||
(Institute of Electrical and Electronics Engineers) and the MEF. | and the MEF. | |||
3.2. Vendor-specific YANG Modules and Extensions | 3.2. Vendor-specific YANG Modules and Extensions | |||
Vendor-specific YANG modules are developed by organizations with the | Vendor-specific YANG Modules are developed by organizations with the | |||
intent to support a specific set of implementations under control of | intent to support a specific set of implementations under control of | |||
that organization. For example vendors of virtual or physical | that organization. For example vendors of virtual or physical | |||
equipment, industry consortia, and opensource projects. The intent | equipment, industry consortia, and opensource projects. The intent | |||
of these modules range from providing openly published YANG modules | of these modules range from providing openly published YANG modules | |||
that may eventually be contributed back to, or adopted by an SDO, to | that may eventually be contributed back to, or adopted by, an SDO, to | |||
strictly internal YANG modules not intended for external consumption. | strictly internal YANG modules not intended for external consumption. | |||
The lifecycle of these modules are generally aligned with the release | The lifecycle of these modules are generally aligned with the release | |||
cycle of the product or open source software project deliverables. | cycle of the product or open source software project deliverables. | |||
It is worth noting that there is an increasing amount of interaction | It is worth noting that there is an increasing amount of interaction | |||
between open source projects and SDOs in the networking industry. | between open source projects and SDOs in the networking industry. | |||
This includes open source projects implementing published standards | This includes open source projects implementing published standards | |||
as well as open source projects contributing content to SDO | as well as open source projects contributing content to SDO | |||
processes. | processes. | |||
Vendors also develop Vendor-specific Extensions to standard modules | Vendors also develop Vendor-specific Extensions to standard modules | |||
using YANG constructs for extending data definitions of previously | using YANG constructs for extending data definitions of previously | |||
published modules. This is done using the 'augment' statement that | published modules. This is done using the 'augment' statement that | |||
allows locally defined data trees to be augmented into locations in | allows locally defined data trees to be augmented into locations in | |||
externally defined data trees. | externally defined data trees. | |||
Vendors use this to extend standard modules to cover the full scope | Vendors use this to extend standard modules to cover the full scope | |||
of features in implementations, which commonly is broader than what | of features in implementations, which commonly is broader than that | |||
is covered by the standard module. | covered by the standard module. | |||
3.3. User-specific YANG Modules and Extensions | 3.3. User-specific YANG Modules and Extensions | |||
User-specific YANG modules are developed by organizations that | User-specific YANG Modules are developed by organizations that | |||
operate YANG-based infrastructure including devices and | operate YANG-based infrastructure including devices and | |||
orchestrators. For example, network administrators in enterprises, | orchestrators. For example, network administrators in enterprises, | |||
or operators service providers. The intent of these modules is to | or at service providers. The intent of these modules is to express | |||
express the specific needs for a certain implementation, above and | the specific needs for a certain implementation, above and beyond | |||
beyond what is provided by vendors. | what is provided by vendors. | |||
This module type obviously requires the infrastructure to support the | This module type obviously requires the infrastructure to support the | |||
introduction of user-provided modules and extensions. This would | introduction of user-provided modules and extensions. This would | |||
include ability to describe the service-to-network decomposition in | include ability to describe the service-to-network decomposition in | |||
orchestrators and the module to configuration decomposition in | orchestrators and the module to configuration decomposition in | |||
devices. | devices. | |||
The lifecycle of these modules are generally aligned with the change | The lifecycles of these modules are generally aligned with the change | |||
cadence of the infrastructure. | cadence of the infrastructure. | |||
4. Adding The Classification Type to YANG Module Catalogs | 4. Adding The Classification Type to YANG Module Catalogs | |||
The suggested classification in this document would be an useful | The suggested classification in this document would be an useful | |||
information in a catalog of YANG modules. Such catalog allows for | information in a catalog of YANG modules. Such a catalog allows for | |||
easy lookup and reusability of YANG modules. Practically, the YANG | easy lookup and reusability of YANG modules. Practically, the YANG | |||
module classification type would be an additional leaf to YANG module | module classification type would be an additional leaf to a YANG | |||
specified in [I-D.openconfig-netmod-model-catalog]: | module specified in [I-D.openconfig-netmod-model-catalog]: | |||
leaf module-class{ | leaf module-class{ | |||
type enum { | type enum { | |||
service | service | |||
device | device | |||
notApplicable | notApplicable | |||
} | } | |||
description | description | |||
"Categorization of the YANG module based on | "Categorization of the YANG module based on | |||
draft-ietf-netmod-yang-model-classification."; | draft-ietf-netmod-yang-model-classification."; | |||
} | } | |||
Note: this leaf should actually be moved to | Note: this leaf should actually be moved to | |||
[I-D.openconfig-netmod-model-catalog]. Note2: since a YANG module | [I-D.openconfig-netmod-model-catalog]. Note2: since a YANG module | |||
can belong to both service and device, the ENUM is not appropriate. | can belong to both service and device, the ENUM is not appropriate. | |||
A extensible list of module type is more appropriate. | An extensible list of module type is more appropriate. | |||
Indeed, without inspecting the YANG module itself, it's difficult to | Indeed, without inspecting the YANG module itself, it's difficult to | |||
determine whether its type is a network service or a network element. | determine whether its type is a network service or a network element. | |||
The YANG module name might provide some useful information but is not | The YANG module name might provide some useful information but is not | |||
a definite answer. | a definitive answer. | |||
5. Security Considerations | 5. Security Considerations | |||
This document doesn't have any Security Considerations". | This document doesn't have any Security Considerations. | |||
6. IANA Considerations | 6. IANA Considerations | |||
This document has no IANA actions. | This document has no IANA actions. | |||
7. Acknowledgements | 7. Acknowledgements | |||
Thanks to David Ball and David Hansford for feedback and suggestions. | Thanks to David Ball and David Hansford for feedback and suggestions. | |||
8. Change log [RFC Editor: Please remove] | 8. Change log [RFC Editor: Please remove] | |||
version 00: Renamed and small fixes based on WG feedback. | version 00: Renamed and small fixes based on WG feedback. | |||
version 01: Language fixes, collapsing of vendor data models and | version 01: Language fixes, collapsing of vendor data models and | |||
extensions, and the introduction of user data models and extensions. | extensions, and the introduction of user data models and extensions. | |||
version 02: Updated the YANG Module Catalog section, terminology | version 02: Updated the YANG Module Catalog section, terminology | |||
alignment (YANG data model versus YANG module), epxlain better the | alignment (YANG data model versus YANG module), explain better the | |||
distinction between the Network Element and Service YANG data models | distinction between the Network Element and Service YANG data models | |||
even if sometimes there are grey areas, editorial pass. Changed the | even if sometimes there are grey areas, editorial pass. Changed the | |||
use of the term 'model' to 'module' to be better aligned with | use of the term 'model' to 'module' to be better aligned with | |||
RFC6020. | RFC6020. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
<http://www.rfc-editor.org/info/rfc6020>. | <http://www.rfc-editor.org/info/rfc6020>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<http://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface | ||||
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | ||||
<http://www.rfc-editor.org/info/rfc7223>. | ||||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | ||||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | ||||
<http://www.rfc-editor.org/info/rfc7950>. | ||||
9.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-netmod-acl-model] | [I-D.ietf-netmod-acl-model] | |||
Bogdanovic, D., Koushik, K., Huang, L., and D. Blair, | Bogdanovic, D., Koushik, K., Huang, L., and D. Blair, | |||
"Network Access Control List (ACL) YANG Data Model", | "Network Access Control List (ACL) YANG Data Model", | |||
draft-ietf-netmod-acl-model-07 (work in progress), March | draft-ietf-netmod-acl-model-08 (work in progress), July | |||
2016. | ||||
[I-D.ietf-netmod-rfc6020bis] | ||||
Bjorklund, M., "The YANG 1.1 Data Modeling Language", | ||||
draft-ietf-netmod-rfc6020bis-14 (work in progress), June | ||||
2016. | 2016. | |||
[I-D.ietf-ospf-yang] | [I-D.ietf-ospf-yang] | |||
Yeung, D., Qu, Y., Zhang, Z., Bogdanovic, D., and K. | Yeung, D., Qu, Y., Zhang, Z., Bogdanovic, D., and K. | |||
Koushik, "Yang Data Model for OSPF Protocol", draft-ietf- | Koushik, "Yang Data Model for OSPF Protocol", draft-ietf- | |||
ospf-yang-04 (work in progress), March 2016. | ospf-yang-05 (work in progress), July 2016. | |||
[I-D.openconfig-netmod-model-catalog] | [I-D.openconfig-netmod-model-catalog] | |||
D'Souza, K., Shaikh, A., and R. Shakir, "Catalog and | D'Souza, K., Shaikh, A., and R. Shakir, "Catalog and | |||
registry for YANG models", draft-openconfig-netmod-model- | registry for YANG models", draft-openconfig-netmod-model- | |||
catalog-00 (work in progress), October 2015. | catalog-01 (work in progress), July 2016. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<http://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface | ||||
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | ||||
<http://www.rfc-editor.org/info/rfc7223>. | ||||
[Writable-MIB-Module-IESG-Statement] | [Writable-MIB-Module-IESG-Statement] | |||
"Writable MIB Module IESG Statement", | "Writable MIB Module IESG Statement", | |||
<https://www.ietf.org/iesg/statement/writable-mib- | <https://www.ietf.org/iesg/statement/writable-mib- | |||
module.html>. | module.html>. | |||
[YANG-Data-Model-for-L3VPN-service-delivery] | [YANG-Data-Model-for-L3VPN-service-delivery] | |||
"YANG Data Model for L3VPN service delivery", | "YANG Data Model for L3VPN service delivery", | |||
<https://tools.ietf.org/id/draft-l3vpn-service-yang>. | <https://tools.ietf.org/id/draft-l3vpn-service-yang>. | |||
End of changes. 45 change blocks. | ||||
129 lines changed or deleted | 124 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |