diff options
Diffstat (limited to 'doc/rfc/rfc6244.txt')
-rw-r--r-- | doc/rfc/rfc6244.txt | 1683 |
1 files changed, 1683 insertions, 0 deletions
diff --git a/doc/rfc/rfc6244.txt b/doc/rfc/rfc6244.txt new file mode 100644 index 0000000..cf4c304 --- /dev/null +++ b/doc/rfc/rfc6244.txt @@ -0,0 +1,1683 @@ + + + + + + +Internet Engineering Task Force (IETF) P. Shafer +Request for Comments: 6244 Juniper Networks +Category: Informational June 2011 +ISSN: 2070-1721 + + + An Architecture for Network Management Using NETCONF and YANG + +Abstract + + The Network Configuration Protocol (NETCONF) gives access to native + capabilities of the devices within a network, defining methods for + manipulating configuration databases, retrieving operational data, + and invoking specific operations. YANG provides the means to define + the content carried via NETCONF, both data and operations. Using + both technologies, standard modules can be defined to give + interoperability and commonality to devices, while still allowing + devices to express their unique capabilities. + + This document describes how NETCONF and YANG help build network + management applications that meet the needs of network operators. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Not all documents + approved by the IESG are a candidate for any level of Internet + Standard; see Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc6244. + + + + + + + + + + + + + + +Shafer Informational [Page 1] + +RFC 6244 NETMODARCH June 2011 + + +Copyright Notice + + Copyright (c) 2011 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + it for publication as an RFC or to translate it into languages other + than English. + + + + + + + + + + + + + + + + + + + + + + + + + +Shafer Informational [Page 2] + +RFC 6244 NETMODARCH June 2011 + + +Table of Contents + + 1. Origins of NETCONF and YANG . . . . . . . . . . . . . . . . . 4 + 2. Elements of the Architecture . . . . . . . . . . . . . . . . . 5 + 2.1. NETCONF . . . . . . . . . . . . . . . . . . . . . . . . . 5 + 2.1.1. NETCONF Transport Mappings . . . . . . . . . . . . . . 7 + 2.2. YANG . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 + 2.2.1. Constraints . . . . . . . . . . . . . . . . . . . . . 10 + 2.2.2. Flexibility . . . . . . . . . . . . . . . . . . . . . 11 + 2.2.3. Extensibility Model . . . . . . . . . . . . . . . . . 12 + 2.3. YANG Translations . . . . . . . . . . . . . . . . . . . . 13 + 2.3.1. YIN . . . . . . . . . . . . . . . . . . . . . . . . . 13 + 2.3.2. DSDL (RELAX NG) . . . . . . . . . . . . . . . . . . . 14 + 2.4. YANG Types . . . . . . . . . . . . . . . . . . . . . . . . 14 + 2.5. IETF Guidelines . . . . . . . . . . . . . . . . . . . . . 14 + 3. Working with YANG . . . . . . . . . . . . . . . . . . . . . . 14 + 3.1. Building NETCONF- and YANG-Based Solutions . . . . . . . . 14 + 3.2. Addressing Operator Requirements . . . . . . . . . . . . . 16 + 3.3. Roles in Building Solutions . . . . . . . . . . . . . . . 18 + 3.3.1. Modeler . . . . . . . . . . . . . . . . . . . . . . . 19 + 3.3.2. Reviewer . . . . . . . . . . . . . . . . . . . . . . . 19 + 3.3.3. Device Developer . . . . . . . . . . . . . . . . . . . 19 + 3.3.4. Application Developer . . . . . . . . . . . . . . . . 20 + 4. Modeling Considerations . . . . . . . . . . . . . . . . . . . 22 + 4.1. Default Values . . . . . . . . . . . . . . . . . . . . . . 22 + 4.2. Compliance . . . . . . . . . . . . . . . . . . . . . . . . 23 + 4.3. Data Distinctions . . . . . . . . . . . . . . . . . . . . 24 + 4.3.1. Background . . . . . . . . . . . . . . . . . . . . . . 24 + 4.3.2. Definitions . . . . . . . . . . . . . . . . . . . . . 25 + 4.3.3. Implications . . . . . . . . . . . . . . . . . . . . . 27 + 4.4. Direction . . . . . . . . . . . . . . . . . . . . . . . . 27 + 5. Security Considerations . . . . . . . . . . . . . . . . . . . 28 + 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 28 + 6.1. Normative References . . . . . . . . . . . . . . . . . . . 28 + 6.2. Informative References . . . . . . . . . . . . . . . . . . 29 + + + + + + + + + + + + + + + + +Shafer Informational [Page 3] + +RFC 6244 NETMODARCH June 2011 + + +1. Origins of NETCONF and YANG + + Networks are increasing in complexity and capacity, as well as the + density of the services deployed upon them. Uptime, reliability, and + predictable latency requirements drive the need for automation. The + problems with network management are not simple. They are complex + and intricate. But these problems must be solved for networks to + meet the stability needs of existing services while incorporating new + services in a world where the growth of networks is exhausting the + supply of qualified networking engineers. + + In June of 2002, the Internet Architecture Board (IAB) held a + workshop on Network Management [RFC3535]. The members of this + workshop made a number of observations and recommendations for the + IETF's consideration concerning the issues operators were facing in + their network management-related work as well as issues they were + having with the direction of the IETF activities in this area. + + The output of this workshop was focused on current problems. The + observations were reasonable and straightforward, including the need + for transactions, rollback, low implementation costs, and the ability + to save and restore the device's configuration data. Many of the + observations give insight into the problems operators were having + with existing network management solutions, such as the lack of full + coverage of device capabilities and the ability to distinguish + between configuration data and other types of data. + + Based on these directions, the NETCONF working group was formed and + the Network Configuration (NETCONF) protocol was created. This + protocol defines a simple mechanism where network management + applications, acting as clients, can invoke operations on the + devices, which act as servers. The NETCONF specification [RFC4741] + defines a small set of operations, but goes out of its way to avoid + making any requirements on the data carried in those operations, + preferring to allow the protocol to carry any data. This "data model + agnostic" approach allows data models to be defined independently. + + But lacking a means of defining data models, the NETCONF protocol was + not usable for standards-based work. Existing data modeling + languages such as the XML Schema Definition (XSD) [W3CXSD] and the + Document Schema Definition Languages (DSDL) [ISODSDL] were + considered, but were rejected because of the problem that domains + have little natural overlap. Defining a data model or protocol that + is encoded in XML is a distinct problem from defining an XML + document. The use of NETCONF operations places requirements on the + data content that are not shared with the static document problem + domain addressed by schema languages like XSD or RELAX NG. + + + + +Shafer Informational [Page 4] + +RFC 6244 NETMODARCH June 2011 + + + In 2007 and 2008, the issue of a data modeling language for NETCONF + was discussed in the OPS and APP areas of IETF 70 and 71, and a + design team was tasked with creating a requirements document [RCDML]. + After discussing the available options at the CANMOD BoF at IETF 71, + the community wrote a charter for the NETMOD working group. An + excellent description of this time period is available at + <http://www.ietf.org/mail-archive/web/ietf/current/msg51644.html>. + + In 2008 and 2009, the NETMOD working group produced a specification + for YANG [RFC6020] as a means for defining data models for NETCONF, + allowing both standard and proprietary data models to be published in + a form that is easily digestible by human readers and satisfies many + of the issues raised in the IAB NM workshop. This brings NETCONF to + a point where is can be used to develop standard data models within + the IETF. + + YANG allows a modeler to create a data model, to define the + organization of the data in that model, and to define constraints on + that data. Once published, the YANG module acts as a contract + between the client and server, with both parties understanding how + their peer will expect them to behave. A client knows how to create + valid data for the server, and knows what data will be sent from the + server. A server knows the rules that govern the data and how it + should behave. + + YANG also incorporates a level of extensibility and flexibility not + present in other model languages. New modules can augment the data + hierarchies defined in other modules, seamlessly adding data at + appropriate places in the existing data organization. YANG also + allows new statements to be defined, allowing the language itself to + be expanded in a consistent way. + + This document presents an architecture for YANG, describing how YANG- + related technologies work and how solutions built on them can address + the network management problem domain. + +2. Elements of the Architecture + +2.1. NETCONF + + NETCONF defines an XML-based remote procedure call (RPC) mechanism + that leverages the simplicity and availability of high-quality XML + parsers. XML gives a rich, flexible, hierarchical, standard + representation of data that matches the needs of networking devices. + NETCONF carries configuration data and operations as requests and + replies using RPCs encoded in XML over a connection-oriented + transport. + + + + +Shafer Informational [Page 5] + +RFC 6244 NETMODARCH June 2011 + + + XML's hierarchical data representation allows complex networking data + to be rendered in a natural way. For example, the following + configuration places interfaces in OSPF areas. The <ospf> element + contains a list of <area> elements, each of which contain a list of + <interface> elements. The <name> element identifies the specific + area or interface. Additional configuration for each area or + interface appears directly inside the appropriate element. + + <ospf xmlns="http://example.org/netconf/ospf"> + + <area> + <name>0.0.0.0</name> + + <interface> + <name>ge-0/0/0.0</name> + <!-- The priority for this interface --> + <priority>30</priority> + <metric>100</metric> + <dead-interval>120</dead-interval> + </interface> + + <interface> + <name>ge-0/0/1.0</name> + <metric>140</metric> + </interface> + </area> + + <area> + <name>10.1.2.0</name> + + <interface> + <name>ge-0/0/2.0</name> + <metric>100</metric> + </interface> + + <interface> + <name>ge-0/0/3.0</name> + <metric>140</metric> + <dead-interval>120</dead-interval> + </interface> + </area> + </ospf> + + NETCONF includes mechanisms for controlling configuration datastores. + Each datastore is a specific collection of configuration data that + can be used as source or target of the configuration-related + operations. The device can indicate whether it has a distinct + "startup" configuration datastore, whether the current or "running" + + + +Shafer Informational [Page 6] + +RFC 6244 NETMODARCH June 2011 + + + datastore is directly writable, or whether there is a "candidate" + configuration datastore where configuration changes can be made that + will not affect the device until a "commit-configuration" operation + is invoked. + + NETCONF defines operations that are invoked as RPCs from the client + (the application) to the server (running on the device). The + following table lists some of these operations: + + +---------------+---------------------------------------------------+ + | Operation | Description | + +---------------+---------------------------------------------------+ + | commit | Commit the "candidate" configuration to "running" | + | copy-config | Copy one configuration datastore to another | + | delete-config | Delete a configuration datastore | + | edit-config | Change the contents of a configuration datastore | + | get-config | Retrieve all or part of a configuration datastore | + | lock | Prevent changes to a datastore from another party | + | unlock | Release a lock on a datastore | + +---------------+---------------------------------------------------+ + + NETCONF's "capability" mechanism allows the device to announce the + set of capabilities that the device supports, including protocol + operations, datastores, data models, and other abilities. These are + announced during session establishment as part of the <hello> + message. A client can inspect the hello message to determine what + the device is capable of and how to interact with the device to + perform the desired tasks. + + NETCONF also defines a means of sending asynchronous notifications + from the server to the client, described in [RFC5277]. + + In addition, NETCONF can fetch state data, receive notifications, and + invoke additional RPC methods defined as part of a capability. + Complete information about NETCONF can be found in [RFC4741]. + +2.1.1. NETCONF Transport Mappings + + NETCONF can run over any transport protocol that meets the + requirements defined in RFC 4741, including + + o connection-oriented operation + + o authentication + + o integrity + + o confidentiality + + + +Shafer Informational [Page 7] + +RFC 6244 NETMODARCH June 2011 + + + [RFC4742] defines a mapping for the Secure Shell (SSH) [RFC4251] + protocol, which is the mandatory transport protocol. Others include + SOAP [RFC4743], the Blocks Extensible Exchange Protocol (BEEP) + [RFC4744], and Transport Layer Security (TLS) [RFC5539]. + +2.2. YANG + + YANG is a data modeling language for NETCONF. It allows the + description of hierarchies of data nodes ("nodes") and the + constraints that exist among them. YANG defines data models and how + to manipulate those models via NETCONF protocol operations. + + Each YANG module defines a data model, uniquely identified by a + namespace URI. These data models are extensible in a manner that + allows tight integration of standard data models and proprietary data + models. Models are built from organizational containers, lists of + data nodes, and data-node-forming leafs of the data tree. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Shafer Informational [Page 8] + +RFC 6244 NETMODARCH June 2011 + + + module example-ospf { + namespace "http://example.org/netconf/ospf"; + prefix ospf; + + import network-types { // Access another module's def'ns + prefix nett; + } + + container ospf { // Declare the top-level tag + list area { // Declare a list of "area" nodes + key name; // The key "name" identifies list members + leaf name { + type nett:area-id; + } + list interface { + key name; + leaf name { + type nett:interface-name; + } + leaf priority { + description "Designated router priority"; + type uint8; // The type is a constraint on + // valid values for "priority". + } + leaf metric { + type uint16 { + range 1..65535; + } + } + leaf dead-interval { + units seconds; + type uint16 { + range 1..65535; + } + } + } + } + } + } + + A YANG module defines a data model in terms of the data, its + hierarchical organization, and the constraints on that data. YANG + defines how this data is represented in XML and how that data is used + in NETCONF operations. + + + + + + + +Shafer Informational [Page 9] + +RFC 6244 NETMODARCH June 2011 + + + The following table briefly describes some common YANG statements: + + +--------------+----------------------------------------------------+ + | Statement | Description | + +--------------+----------------------------------------------------+ + | augment | Extends existing data hierarchies | + | choice | Defines mutually exclusive alternatives | + | container | Defines a layer of the data hierarchy | + | extension | Allows new statements to be added to YANG | + | feature | Indicates parts of the model that are optional | + | grouping | Groups data definitions into reusable sets | + | key | Defines the key leafs for lists | + | leaf | Defines a leaf node in the data hierarchy | + | leaf-list | A leaf node that can appear multiple times | + | list | A hierarchy that can appear multiple times | + | notification | Defines notification | + | rpc | Defines input and output parameters for an RPC | + | | operation | + | typedef | Defines a new type | + | uses | Incorporates the contents of a "grouping" | + +--------------+----------------------------------------------------+ + +2.2.1. Constraints + + YANG allows the modeler to add constraints to the data model to + prevent impossible or illogical data. These constraints give clients + information about the data being sent from the device, and also allow + the client to know as much as possible about the data the device will + accept, so the client can send correct data. These constraints apply + to configuration data, but can also be used for rpc and notification + data. + + The principal constraint is the "type" statement, which limits the + contents of a leaf node to that of the named type. The following + table briefly describes some other common YANG constraints: + + + + + + + + + + + + + + + + +Shafer Informational [Page 10] + +RFC 6244 NETMODARCH June 2011 + + + +--------------+----------------------------------------------------+ + | Statement | Description | + +--------------+----------------------------------------------------+ + | length | Limits the length of a string | + | mandatory | Requires the node appear | + | max-elements | Limits the number of instances in a list | + | min-elements | Limits the number of instances in a list | + | must | XPath expression must be true | + | pattern | Regular expression must be satisfied | + | range | Value must appear in range | + | reference | Value must appear elsewhere in the data | + | unique | Value must be unique within the data | + | when | Node is only present when XPath expression is true | + +--------------+----------------------------------------------------+ + + The "must" and "when" statements use XPath [W3CXPATH] expressions to + specify conditions that are semantically evaluated against the data + hierarchy, but neither the client nor the server are required to + implement the XPath specification. Instead they can use any means to + ensure these conditions are met. + +2.2.2. Flexibility + + YANG uses the "union" type and the "choice" and "feature" statements + to give modelers flexibility in defining their data models. The + "union" type allows a single leaf to accept multiple types, like an + integer or the word "unbounded": + + type union { + type int32; + type enumeration { + enum "unbounded"; + } + } + + The "choice" statement lists a set of mutually exclusive nodes, so a + valid configuration can choose any one node (or case). The "feature" + statement allows the modeler to identify parts of the model that can + be optional, and allows the device to indicate whether it implements + these optional portions. + + The "deviation" statement allows the device to indicate parts of a + YANG module that the device does not faithfully implement. While + devices are encouraged to fully abide according to the contract + presented in the YANG module, real-world situations may force the + device to break the contract. Deviations give a means of declaring + this limitation, rather than leaving it to be discovered via run-time + errors. + + + +Shafer Informational [Page 11] + +RFC 6244 NETMODARCH June 2011 + + +2.2.3. Extensibility Model + + XML includes the concept of namespaces, allowing XML elements from + different sources to be combined in the same hierarchy without + risking collision. YANG modules define content for specific + namespaces, but one module may augment the definition of another + module, introducing elements from that module's namespace into the + first module's hierarchy. + + Since one module can augment another module's definition, hierarchies + of definitions are allowed to grow, as definitions from multiple + sources are added to the base hierarchy. These augmentations are + qualified using the namespace of the source module, helping to avoid + issues with name conflicts as the modules change over time. + + For example, if the above OSPF configuration were the standard, a + vendor module may augment this with vendor-specific extensions. + + module vendorx-ospf { + namespace "http://vendorx.example.com/ospf"; + prefix vendorx; + + import example-ospf { + prefix ospf; + } + + augment /ospf:ospf/ospf:area/ospf:interfaces { + leaf no-neighbor-down-notification { + type empty; + description "Don't inform other protocols about" + + " neighbor down events"; + } + } + } + + The <no-neighbor-down-notification> element is then placed in the + vendorx namespace: + + + + + + + + + + + + + + +Shafer Informational [Page 12] + +RFC 6244 NETMODARCH June 2011 + + + <ospf xmlns="http://example.org/netconf/ospf" + xmlns:vendorx="http://vendorx.example.com/ospf"> + + <area> + <name>0.0.0.0</name> + + <interface> + <name>ge-0/0/0.0</name> + <priority>30</priority> + <vendorx:no-neighbor-down-notification/> + </interface> + + </area> + </ospf> + + Augmentations are seamlessly integrated with base modules, allowing + them to be fetched, archived, loaded, and deleted within their + natural hierarchy. If a client application asks for the + configuration for a specific OSPF area, it will receive the sub- + hierarchy for that area, complete with any augmented data. + +2.3. YANG Translations + + The YANG data modeling language is the central piece of a group of + related technologies. The YANG language itself, described in + [RFC6020], defines the syntax of the language and its statements, the + meaning of those statements, and how to combine them to build the + hierarchy of nodes that describe a data model. + + That document also defines the "on the wire" XML content for NETCONF + operations on data models defined in YANG modules. This includes the + basic mapping between YANG data tree nodes and XML elements, as well + as mechanisms used in <edit-config> content to manipulate that data, + such as arranging the order of nodes within a list. + + YANG uses a syntax that is regular and easily described, primarily + designed for human readability. YANG's syntax is friendly to email, + diff, patch, and the constraints of RFC formatting. + +2.3.1. YIN + + In some environments, incorporating a YANG parser may not be an + acceptable option. For those scenarios, an XML grammar for YANG is + defined as YIN (YANG Independent Notation). YIN allows the use of + XML parsers that are readily available in both open source and + commercial versions. Conversion between YANG and YIN is direct, + loss-less, and reversible. YANG statements are converted to XML + elements, preserving the structure and content of YANG, but enabling + + + +Shafer Informational [Page 13] + +RFC 6244 NETMODARCH June 2011 + + + the use of off-the-shelf XML parsers rather than requiring the + integration of a YANG parser. YIN maintains complete semantic + equivalence with YANG. + +2.3.2. DSDL (RELAX NG) + + Since NETCONF content is encoded in XML, it is natural to use XML + schema languages for their validation. To facilitate this, YANG + offers a standardized mapping of YANG modules into Document Schema + Definition Languages [RFC6110], of which RELAX NG is a major + component. + + DSDL is considered to be the best choice as a standard schema + language because it addresses not only grammar and datatypes of XML + documents but also semantic constraints and rules for modifying the + information set of the document. + + In addition, DSDL offers formal means for coordinating multiple + independent schemas and specifying how to apply the schemas to the + various parts of the document. This is useful since YANG content is + typically composed of multiple vocabularies. + +2.4. YANG Types + + YANG supports a number of builtin types, and allows additional types + to be derived from those types in an extensible manner. New types + can add additional restrictions to allowable data values. + + A standard type library for use by YANG is available [RFC6021]. + These YANG modules define commonly used data types for IETF-related + standards. + +2.5. IETF Guidelines + + A set of additional guidelines is defined that indicate desirable + usage for authors and reviewers of Standards-Track specifications + containing YANG data model modules [RFC6087]. These guidelines + should be used as a basis for reviews of other YANG data model + documents. + +3. Working with YANG + +3.1. Building NETCONF- and YANG-Based Solutions + + In the typical YANG-based solution, the client and server are driven + by the content of YANG modules. The server includes the definitions + of the modules as meta-data that is available to the NETCONF engine. + This engine processes incoming requests, uses the meta-data to parse + + + +Shafer Informational [Page 14] + +RFC 6244 NETMODARCH June 2011 + + + and verify the request, performs the requested operation, and returns + the results to the client. + + +----------------------------+ + |Server (device) | + | +--------------------+ | + | | configuration | | + +----+ | | ---------------| | + |YANG|+ | | m d state data | | + |mods||+ | | e a ---------------| | + +----+|| -----> | t t notifications | | + +----+| | | a a ---------------| | + +----+ | | operations | | + | +--------------------+ | + | ^ | + | | | + | v | + +------+ | +-------------+ | + | | -------------> | | | + |Client| <rpc> | | NETCONF | | + | (app)| | | engine | | + | | <------------ | | | + +------+ <rpc-reply> +-------------+ | + | / \ | + | / \ | + | / \ | + | +--------+ +---------+ | + | | config | |system |+ | + | | data- | |software ||+ | + | | base | |component||| | + | +--------+ +---------+|| | + | +---------+| | + | +---------+ | + +----------------------------+ + + To use YANG, YANG modules must be defined to model the specific + problem domain. These modules are then loaded, compiled, or coded + into the server. + + The sequence of events for the typical client/server interaction may + be as follows: + + o A client application ([C]) opens a NETCONF session to the server + (device) ([S]) + + o [C] and [S] exchange <hello> messages containing the list of + capabilities supported by each side, allowing [C] to learn the + modules supported by [S] + + + +Shafer Informational [Page 15] + +RFC 6244 NETMODARCH June 2011 + + + o [C] builds and sends an operation defined in the YANG module, + encoded in XML, within NETCONF's <rpc> element + + o [S] receives and parses the <rpc> element + + o [S] verifies the contents of the request against the data model + defined in the YANG module + + o [S] performs the requested operation, possibly changing the + configuration datastore + + o [S] builds the response, containing the response, any requested + data, and any errors + + o [S] sends the response, encoded in XML, within NETCONF's + <rpc-reply> element + + o [C] receives and parses the <rpc-reply> element + + o [C] inspects the response and processes it as needed + + Note that there is no requirement for the client or server to process + the YANG modules in this way. The server may hard code the contents + of the data model, rather than handle the content via a generic + engine. Or the client may be targeted at the specific YANG model, + rather than being driven generically. Such a client might be a + simple shell script that stuffs arguments into an XML payload + template and sends it to the server. + +3.2. Addressing Operator Requirements + + NETCONF and YANG address many of the issues raised in the IAB NM + workshop. + + o Ease of use: YANG is designed to be human friendly, simple, and + readable. Many tricky issues remain due to the complexity of the + problem domain, but YANG strives to make them more visible and + easier to deal with. + + o Configuration and state data: YANG clearly divides configuration + data from other types of data. + + o Transactions: NETCONF provides a simple transaction mechanism. + + o Generation of deltas: A YANG module gives enough information to + generate the delta needed to change between two configuration data + sets. + + + + +Shafer Informational [Page 16] + +RFC 6244 NETMODARCH June 2011 + + + o Dump and restore: NETCONF gives the ability to save and restore + configuration data. This can also be performed for a specific + YANG module. + + o Network-wide configuration: NETCONF supports robust network-wide + configuration transactions via the commit and confirmed-commit + capabilities. When a change is attempted that affects multiple + devices, these capabilities simplify the management of failure + scenarios, resulting in the ability to have transactions that will + dependably succeed or fail atomically. + + o Text-friendly: YANG modules are very text friendly, as is the data + they define. + + o Configuration handling: NETCONF addresses the ability to + distinguish between distributing configuration data and activating + it. + + o Task-oriented: A YANG module can define specific tasks as RPC + operations. A client can choose to invoke the RPC operation or to + access any underlying data directly. + + o Full coverage: YANG modules can be defined that give full coverage + to all the native abilities of the device. Giving this access + avoids the need to resort to the command line interface (CLI) + using tools such as Expect [SWEXPECT]. + + o Timeliness: YANG modules can be tied to CLI operations, so all + native operations and data are immediately available. + + o Implementation difficulty: YANG's flexibility enables modules that + can be more easily implemented. Adding "features" and replacing + "third normal form" with a natural data hierarchy should reduce + complexity. + + o Simple data modeling language: YANG has sufficient power to be + usable in other situations. In particular, on-box API and native + CLI can be integrated to achieve simplification of the + infrastructure. + + o Internationalization: YANG uses UTF-8 [RFC3629] encoded Unicode + characters. + + o Event correlation: YANG integrates RPC operations, notification, + configuration, and state data, enabling internal references. For + example, a field in a notification can be tagged as pointing to a + BGP peer, and the client application can easily find that peer in + the configuration data. + + + +Shafer Informational [Page 17] + +RFC 6244 NETMODARCH June 2011 + + + o Implementation costs: Significant effort has been made to keep + implementation costs as low as possible. + + o Human-friendly syntax: YANG's syntax is optimized for the reader, + specifically the reviewer on the basis that this is the most + common human interaction. + + o Post-processing: Use of XML will maximize the opportunities for + post-processing of data, possibly using XML-based technologies + like XPath [W3CXPATH], XQuery [W3CXQUERY], and XSLT [W3CXSLT]. + + o Semantic mismatch: Richer, more descriptive data models will + reduce the possibility of semantic mismatch. With the ability to + define new primitives, YANG modules will be more specific in + content, allowing more enforcement of rules and constraints. + + o Security: NETCONF runs over transport protocols secured by SSH or + TLS, allowing secure communications and authentication using well- + trusted technology. The secure transport can use existing key and + credential management infrastructure, reducing deployment costs. + + o Reliable: NETCONF and YANG are solid and reliable technologies. + NETCONF is connection based, and includes automatic recovery + mechanisms when the connection is lost. + + o Delta friendly: YANG-based models support operations that are + delta friendly. Add, change, insert, and delete operations are + all well defined. + + o Method-oriented: YANG allows new RPC operations to be defined, + including an operation name, which is essentially a method. The + input and output parameters of the RPC operations are also defined + in the YANG module. + +3.3. Roles in Building Solutions + + Building NETCONF- and YANG-based solutions requires interacting with + many distinct groups. Modelers must understand how to build useful + models that give structure and meaning to data while maximizing the + flexibility of that data to "future proof" their work. Reviewers + need to quickly determine if that structure is accurate. Device + developers need to code that data model into their devices, and + application developers need to code their applications to take + advantage of that data model. There are a variety of strategies for + performing each piece of this work. This section discusses some of + those strategies. + + + + + +Shafer Informational [Page 18] + +RFC 6244 NETMODARCH June 2011 + + +3.3.1. Modeler + + The modeler defines a data model based on their in-depth knowledge of + the problem domain being modeled. This model should be as simple as + possible, but should balance complexity with expressiveness. The + organization of the model not only should target the current model + but also should allow for extensibility from other modules and for + adaptability to future changes. + + Additional modeling issues are discussed in Section 4. + +3.3.2. Reviewer + + The reviewer role is perhaps the most important and the time + reviewers are willing to give is precious. To help the reviewer, + YANG stresses readability, with a human-friendly syntax, natural data + hierarchy, and simple, concise statements. + +3.3.3. Device Developer + + The YANG model tells the device developer what data is being modeled. + The developer reads the YANG models and writes code that supports the + model. The model describes the data hierarchy and associated + constraints, and the description and reference material helps the + developer understand how to transform the model's view into the + device's native implementation. + +3.3.3.1. Generic Content Support + + The YANG model can be compiled into a YANG-based engine for either + the client or server side. Incoming data can be validated, as can + outgoing data. The complete configuration datastore may be validated + in accordance with the constraints described in the data model. + + Serializers and de-serializers for generating and receiving NETCONF + content can be driven by the meta-data in the model. As data is + received, the meta-data is consulted to ensure the validity of + incoming XML elements. + +3.3.3.2. XML Definitions + + The YANG module dictates the XML encoding for data sent via NETCONF. + The rules that define the encoding are fixed, so the YANG module can + be used to ascertain whether a specific NETCONF payload is obeying + the rules. + + + + + + +Shafer Informational [Page 19] + +RFC 6244 NETMODARCH June 2011 + + +3.3.4. Application Developer + + The YANG module tells the application developer what data can be + modeled. Developers can inspect the modules and take one of three + distinct views. In this section, we will consider them and the + impact of YANG on their design. In the real world, most applications + are a mixture of these approaches. + +3.3.4.1. Hard Coded + + An application can be coded against the specific, well-known contents + of YANG modules, implementing their organization, rules, and logic + directly with explicit knowledge. For example, a script could be + written to change the domain name of a set of devices using a + standard YANG module that includes such a leaf node. This script + takes the new domain name as an argument and inserts it into a string + containing the rest of the XML encoding as required by the YANG + module. This content is then sent via NETCONF to each of the + devices. + + This type of application is useful for small, fixed problems where + the cost and complexity of flexibility are overwhelmed by the ease of + hard coding direct knowledge into the application. + +3.3.4.2. Bottom Up + + An application may take a generic, bottom-up approach to + configuration, concentrating on the device's data directly and + treating that data without specific understanding. + + YANG modules may be used to drive the operation of the YANG + equivalent of a "MIB browser". Such an application manipulates the + device's configuration data based on the data organization contained + in the YANG module. For example, a GUI may present a straightforward + visualization where elements of the YANG hierarchy are depicted in a + hierarchy of folders or GUI panels. Clicking on a line expands to + the contents of the matching XML hierarchy. + + This type of GUI can easily be built by generating XSLT stylesheets + from the YANG data models. An XSLT engine can then be used to turn + configuration data into a set of web pages. + + The YANG modules allow the application to enforce a set of + constraints without understanding the semantics of the YANG module. + + + + + + + +Shafer Informational [Page 20] + +RFC 6244 NETMODARCH June 2011 + + +3.3.4.3. Top Down + + In contrast to the bottom-up approach, the top-down approach allows + the application to take a view of the configuration data that is + distinct from the standard and/or proprietary YANG modules. The + application is free to construct its own model for data organization + and to present this model to the user. When the application needs to + transmit data to a device, the application transforms its data from + the problem-oriented view of the world into the data needed for that + particular device. This transformation is under the control and + maintenance of the application, allowing the transformation to be + changed and updated without affecting the device. + + For example, an application could be written that models VPNs in a + network-oriented view. The application would need to transform these + high-level VPN definitions into the configuration data that would be + handed to any particular device within a VPN. + + Even in this approach, YANG is useful since it can be used to model + the VPN. For example, the following VPN straw-man models a list of + VPNs, each with a protocol, a topology, a list of member interfaces, + and a list of classifiers. + + list example-bgpvpn { + key name; + leaf name { ... } + leaf protocol { + type enumeration { + enum bgpvpn; + enum l2vpn; + } + } + leaf topology { + type enumeration { + enum hub-n-spoke; + enum mesh; + } + } + list members { + key "device interface"; + leaf device { ... } + leaf interface { ... } + } + list classifiers { + ... + } + } + + + + +Shafer Informational [Page 21] + +RFC 6244 NETMODARCH June 2011 + + + The application can use such a YANG module to drive its operation, + building VPN instances in a database and then pushing the + configuration for those VPNs to individual devices either using a + standard device model (e.g., example-bgpvpn.yang) or by transforming + that standard device content into some proprietary format for devices + that do not support that standard. + +4. Modeling Considerations + + This section discusses considerations the modeler should be aware of + while developing models in YANG. + +4.1. Default Values + + The concept of default values is simple, but their details, + representation, and interaction with configuration data can be + difficult issues. NETCONF leaves default values as a data model + issue, and YANG gives flexibility to the device implementation in + terms of how default values are handled. The requirement is that the + device "MUST operationally behave as if the leaf was present in the + data tree with the default value as its value". This gives the + device implementation choices in how default values are handled. + + One choice is to view the configuration as a set of instructions for + how the device should be configured. If a data value that is given + as part of those instructions is the default value, then it should be + retained as part of the configuration, but if it is not explicitly + given, then the value is not considered to be part of the + configuration. + + Another choice is to trim values that are identical to the default + values, implicitly removing them from the configuration datastore. + The act of setting a leaf to its default value effectively deletes + that leaf. + + The device could also choose to report all default values, regardless + of whether they were explicitly set. This choice eases the work of a + client that needs default values, but may significantly increase the + size of the configuration data. + + These choices reflect the default handling schemes of widely deployed + networking devices and supporting them allows YANG to reduce + implementation and deployment costs of YANG-based models. + + + + + + + + +Shafer Informational [Page 22] + +RFC 6244 NETMODARCH June 2011 + + + When the client retrieves data from the device, it must be prepared + to handle the absence of leaf nodes with the default value, since the + server is not required to send such leaf elements. This permits the + device to implement either of the first two default handling schemes + given above. + + Regardless of the implementation choice, the device can support the + "with-defaults" capability [RFC6243] and give the client the ability + to select the desired handling of default values. + + When evaluating the XPath expressions for constraints like "must" and + "when", the evaluation context for the expressions will include any + appropriate default values, so the modeler can depend on consistent + behavior from all devices. + +4.2. Compliance + + In developing good data models, there are many conflicting interests + the data modeler must keep in mind. Modelers need to be aware of + five issues with models and devices: + + o usefulness + + o compliance + + o flexibility + + o extensibility + + o deviations + + For a model to be interesting, it must be useful, solving a problem + in a more direct or more powerful way than can be accomplished + without the model. The model should maximize the usefulness of the + model within the problem domain. + + Modelers should build models that maximize the number of devices that + can faithfully implement the model. If the model is drawn too + narrowly, or includes too many assumptions about the device, then the + difficulty and cost of accurately implementing the model will lead to + low-quality implementations and interoperability issues, and will + reduce the value of the model. + + Modelers can use the "feature" statement in their models to give the + device some flexibility by partitioning their model and allowing the + device to indicate which portions of the model are implemented on the + + + + + +Shafer Informational [Page 23] + +RFC 6244 NETMODARCH June 2011 + + + device. For example, if the model includes some "logging" feature, a + device with no storage facilities for the log can tell the client + that it does not support this feature of the model. + + Models can be extended via the "augment" statement, and the modeler + should consider how their model is likely to be extended. These + augmentations can be defined by vendors, applications, or standards + bodies. + + Deviations are a means of allowing the devices to indicate where its + implementation is not in full compliance with the model. For + example, once a model is published, an implementer may decide to make + a particular node configurable, where the standard model describes it + as state data. The implementation reports the value normally and may + declare a deviation that this device behaves in a different manner + than the standard. Applications capable of discovering this + deviation can make allowances, but applications that do not discover + the deviation can continue treating the implementation as if it were + compliant. + + Rarely, implementations may make decisions that prevent compliance + with the standard. Such occasions are regrettable, but they remain a + part of reality, and modelers and application writers ignore them at + their own risk. An implementation that emits an integer leaf as + "cow" would be difficult to manage, but applications should expect to + encounter such misbehaving devices in the field. + + Despite this, both client and server should view the YANG module as a + contract, with both sides agreeing to abide by the terms. The + modeler should be explicit about the terms of such a contract, and + both client and server implementations should strive to faithfully + and accurately implement the data model described in the YANG module. + +4.3. Data Distinctions + + The distinction between configuration data, operational state data, + and statistics is important to understand for data model writers and + people who plan to extend the NETCONF protocol. This section first + discusses some background and then provides a definition and some + examples. + +4.3.1. Background + + During the IAB NM workshop, operators did formulate the following two + requirements, as listed in [RFC3535]: + + + + + + +Shafer Informational [Page 24] + +RFC 6244 NETMODARCH June 2011 + + + 2. It is necessary to make a clear distinction between + configuration data, data that describes operational state, + and statistics. Some devices make it very hard to determine + which parameters were administratively configured and which + were obtained via other mechanisms such as routing + protocols. + + 3. It is required to be able to fetch separately configuration + data, operational state data, and statistics from devices, + and to be able to compare these between devices. + + The NETCONF protocol defined in RFC 4741 distinguishes two types of + data -- namely, configuration data and state data: + + Configuration data is the set of writable data that is + required to transform a system from its initial default state + into its current state. + + State data is the additional data on a system that is not + configuration data such as read-only status information and + collected statistics. + + NETCONF does not follow the distinction formulated by the operators + between configuration data, operational state data, and statistical + data, since it considers state data to include both statistics and + operational state data. + +4.3.2. Definitions + + Below is a definition for configuration data, operational state data, + and statistical data. The definition borrows from previous work. + + o Configuration data is the set of writable data that is required to + transform a system from its initial default state into its current + state [RFC4741]. + + o Operational state data is a set of data that has been obtained by + the system at runtime and influences the system's behavior similar + to configuration data. In contrast to configuration data, + operational state is transient and modified by interactions with + internal components or other systems via specialized protocols. + + o Statistical data is the set of read-only data created by a system + itself. It describes the performance of the system and its + components. + + The following examples help to clarify the difference between + configuration data, operational state data, and statistical data. + + + +Shafer Informational [Page 25] + +RFC 6244 NETMODARCH June 2011 + + +4.3.2.1. Example 1: IP Routing Table + + IP routing tables can contain entries that are statically configured + (configuration data) as well as entries obtained from routing + protocols such as OSPF (operational state data). In addition, a + routing engine might collect statistics like how often a particular + routing table entry has been used. + +4.3.2.2. Example 2: Interfaces + + Network interfaces usually come with a large number of attributes + that are specific to the interface type and in some cases specific to + the cable plugged into an interface. Examples are the maximum + transmission unit of an interface or the speed detected by an + Ethernet interface. + + In many deployments, systems use the interface attributes detected + when an interface is initialized. As such, these attributes + constitute operational state. However, there are usually provisions + to overwrite the discovered attributes with static configuration + data, like for example configuring the interface MTU to use a + specific value or forcing an Ethernet interface to run at a given + speed. + + The system will record statistics (counters) measuring the number of + packets, bytes, and errors received and transmitted on each + interface. + +4.3.2.3. Example 3: Account Information + + Systems usually maintain static configuration information about the + accounts on the system. In addition, systems can obtain information + about accounts from other sources (e.g., Lightweight Directory Access + Protocol (LDAP), Network Information Service (NIS)) dynamically, + leading to operational state data. Information about account usage + is an example of statistical data. + + Note that configuration data supplied to a system in order to create + a new account might be supplemented with additional configuration + information determined by the system when the account is being + created (such as a unique account id). Even though the system might + create such information, it usually becomes part of the static + configuration of the system since this data is not transient. + + + + + + + + +Shafer Informational [Page 26] + +RFC 6244 NETMODARCH June 2011 + + +4.3.3. Implications + + The primary focus of YANG is configuration data. There is no single + mechanism defined for the separation of operational state data and + statistics since NETCONF treats them both as state data. This + section describes several different options for addressing this + issue. + +4.3.3.1. Data Models + + The first option is to have data models that explicitly differentiate + between configuration data and operational state data. This leads to + duplication of data structures and might not scale well from a + modeling perspective. + + For example, the configured duplex value and the operational duplex + value would be distinct leafs in the data model. + +4.3.3.2. Additional Operations to Retrieve Operational State + + The NETCONF protocol can be extended with new protocol operations + that specifically allow the retrieval of all operational state, e.g., + by introducing a <get-ops> operation (and perhaps also a <get-stats> + operation). + +4.3.3.3. Introduction of an Operational State Datastore + + Another option could be to introduce a new "configuration" data store + that represents the operational state. A <get-config> operation on + the <operational> data store would then return the operational state + determining the behavior of the box instead of its static and + explicit configuration state. + +4.4. Direction + + At this time, the only viable solution is to distinctly model the + configuration and operational values. The configuration leaf would + indicate the desired value, as given by the user, and the operational + leaf would indicate the current value, as observed on the device. + + In the duplex example, this would result in two distinct leafs being + defined, "duplex" and "op-duplex", one with "config true" and one + with "config false". + + + + + + + + +Shafer Informational [Page 27] + +RFC 6244 NETMODARCH June 2011 + + + In some cases, distinct leafs would be used, but in others, distinct + lists might be used. Distinct lists allows the list to be organized + in different ways, with different constraints. Keys, sorting, and + constraint statements like must, unique, or when may differ between + configuration data and operational data. + + For example, configured static routes might be a distinct list from + the operational routing table, since the use of keys and sorting + might differ. + +5. Security Considerations + + This document discusses an architecture for network management using + NETCONF and YANG. It has no security impact on the Internet. + +6. References + +6.1. Normative References + + [ISODSDL] International Organization for Standardization, + "Document Schema Definition Languages (DSDL) - Part 1: + Overview", ISO/IEC 19757-1, November 2004. + + [RFC3535] Schoenwaelder, J., "Overview of the 2002 IAB Network + Management Workshop", RFC 3535, May 2003. + + [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO + 10646", STD 63, RFC 3629, November 2003. + + [RFC4251] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) + Protocol Architecture", RFC 4251, January 2006. + + [RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741, + December 2006. + + [RFC4742] Wasserman, M. and T. Goddard, "Using the NETCONF + Configuration Protocol over Secure SHell (SSH)", + RFC 4742, December 2006. + + [RFC4743] Goddard, T., "Using NETCONF over the Simple Object + Access Protocol (SOAP)", RFC 4743, December 2006. + + [RFC4744] Lear, E. and K. Crozier, "Using the NETCONF Protocol + over the Blocks Extensible Exchange Protocol (BEEP)", + RFC 4744, December 2006. + + [RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event + Notifications", RFC 5277, July 2008. + + + +Shafer Informational [Page 28] + +RFC 6244 NETMODARCH June 2011 + + + [RFC5539] Badra, M., "NETCONF over Transport Layer Security + (TLS)", RFC 5539, May 2009. + + [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the + Network Configuration Protocol (NETCONF)", RFC 6020, + October 2010. + + [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, + October 2010. + + [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of + YANG Data Model Documents", RFC 6087, January 2011. + + [RFC6110] Lhotka, L., "Mapping YANG to Document Schema Definition + Languages and Validating NETCONF Content", RFC 6110, + February 2011. + + [RFC6243] Bierman, A. and B. Lengyel, "With-defaults Capability + for NETCONF", RFC 6243, June 2011. + + [SWEXPECT] "The Expect Home Page", + <http://expect.sourceforge.net/>. + + [W3CXPATH] DeRose, S. and J. Clark, "XML Path Language (XPath) + Version 1.0", World Wide Web Consortium + Recommendation REC-xpath-19991116, November 1999, + <http://www.w3.org/TR/1999/REC-xpath-19991116>. + + [W3CXQUERY] Boag, S., "XQuery 1.0: An XML Query Language", W3C + WD WD-xquery-20050915, September 2005. + + [W3CXSD] Walmsley, P. and D. Fallside, "XML Schema Part 0: Primer + Second Edition", World Wide Web Consortium + Recommendation REC-xmlschema-0-20041028, October 2004, + <http://www.w3.org/TR/2004/REC-xmlschema-0-20041028>. + + [W3CXSLT] Clark, J., "XSL Transformations (XSLT) Version 1.0", + World Wide Web Consortium Recommendation REC-xslt- + 19991116, November 1999, + <http://www.w3.org/TR/1999/REC-xslt-19991116>. + +6.2. Informative References + + [RCDML] Presuhn, R., Ed., "Requirements for a Configuration Data + Modeling Language", Work in Progress, February 2008. + + + + + + +Shafer Informational [Page 29] + +RFC 6244 NETMODARCH June 2011 + + +Author's Address + + Phil Shafer + Juniper Networks + + EMail: phil@juniper.net + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Shafer Informational [Page 30] + |