Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 8349

A YANG Data Model for Routing Management (NMDA Version)

Pages: 80
Proposed Standard
Errata
Obsoletes:  8022
Part 1 of 4 – Pages 1 to 14
None   None   Next

Top   ToC   RFC8349 - Page 1
Internet Engineering Task Force (IETF)                         L. Lhotka
Request for Comments: 8349                                        CZ.NIC
Obsoletes: 8022                                                A. Lindem
Category: Standards Track                                  Cisco Systems
ISSN: 2070-1721                                                    Y. Qu
                                                                  Huawei
                                                              March 2018


        A YANG Data Model for Routing Management (NMDA Version)

Abstract

This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem. It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions. The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols. The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). This document obsoletes RFC 8022. Status of This Memo This is an Internet Standards Track document. 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). Further information on Internet Standards is available in Section 2 of RFC 7841. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8349.
Top   ToC   RFC8349 - Page 2
Copyright Notice

   Copyright (c) 2018 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
   (https://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.
Top   ToC   RFC8349 - Page 3

Table of Contents

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology and Notation . . . . . . . . . . . . . . . . . . 4 2.1. Glossary of New Terms . . . . . . . . . . . . . . . . . . 5 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 6 2.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 6 3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. The Design of the Core Routing Data Model . . . . . . . . . . 7 4.1. System-Controlled and User-Controlled List Entries . . . 8 5. Basic Building Blocks . . . . . . . . . . . . . . . . . . . . 9 5.1. Routes . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2. Routing Information Base (RIB) . . . . . . . . . . . . . 10 5.3. Control-Plane Protocol . . . . . . . . . . . . . . . . . 11 5.3.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . 11 5.3.2. Defining New Control-Plane Protocols . . . . . . . . 11 5.4. Parameters of IPv6 Router Advertisements . . . . . . . . 12 6. Interactions with Other YANG Modules . . . . . . . . . . . . 13 6.1. Module "ietf-interfaces" . . . . . . . . . . . . . . . . 13 6.2. Module "ietf-ip" . . . . . . . . . . . . . . . . . . . . 14 7. Routing Management YANG Module . . . . . . . . . . . . . . . 15 8. IPv4 Unicast Routing Management YANG Module . . . . . . . . . 29 9. IPv6 Unicast Routing Management YANG Module . . . . . . . . . 37 9.1. IPv6 Router Advertisements Submodule . . . . . . . . . . 45 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 56 11. Security Considerations . . . . . . . . . . . . . . . . . . . 57 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 58 12.1. Normative References . . . . . . . . . . . . . . . . . . 58 12.2. Informative References . . . . . . . . . . . . . . . . . 60 Appendix A. The Complete Schema Tree . . . . . . . . . . . . . . 61 Appendix B. Minimum Implementation . . . . . . . . . . . . . . . 66 Appendix C. Example: Adding a New Control-Plane Protocol . . . . 67 Appendix D. Data Tree Example . . . . . . . . . . . . . . . . . 70 Appendix E. NETCONF Get Data Reply Example . . . . . . . . . . . 77 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 80 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 80
Top   ToC   RFC8349 - Page 4

1. Introduction

This document specifies the following YANG modules: o The "ietf-routing" module provides generic components of a routing data model. o The "ietf-ipv4-unicast-routing" module augments the "ietf-routing" module with additional data specific to IPv4 unicast. o The "ietf-ipv6-unicast-routing" module augments the "ietf-routing" module with additional data specific to IPv6 unicast. Its submodule, "ietf-ipv6-router-advertisements", also augments the "ietf-interfaces" [RFC8343] and "ietf-ip" [RFC8344] modules with IPv6 router configuration variables required by [RFC4861]. These modules together define the core routing data model, which is intended as a basis for future data model development covering more-sophisticated routing systems. While these three modules can be directly used for simple IP devices with static routing (see Appendix B), their main purpose is to provide essential building blocks for more-complicated data models involving multiple control-plane protocols, multicast routing, additional address families, and advanced functions such as route filtering or policy routing. To this end, it is expected that the core routing data model will be augmented by numerous modules developed by various IETF working groups. The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA) [RFC8342]. This document obsoletes RFC 8022 [RFC8022].

2. Terminology and Notation

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. The following terms are defined in [RFC8342]: o client o server o configuration
Top   ToC   RFC8349 - Page 5
   o  system state

   o  operational state

   o  intended configuration

   The following terms are defined in [RFC7950]:

   o  action

   o  augment

   o  container

   o  data model

   o  data node

   o  feature

   o  leaf

   o  list

   o  mandatory node

   o  module

   o  presence container

   o  schema tree

   o  RPC (Remote Procedure Call) operation

2.1. Glossary of New Terms

core routing data model: YANG data model comprising "ietf-routing", "ietf-ipv4-unicast-routing", and "ietf-ipv6-unicast-routing" modules. direct route: A route to a directly connected network. Routing Information Base (RIB): An object containing a list of routes, together with other information. See Section 5.2 for details.
Top   ToC   RFC8349 - Page 6
   system-controlled entry:  An entry in a list in the operational state
      ("config false") that is created by the system independently of
      what has been explicitly configured.  See Section 4.1 for details.

   user-controlled entry:  An entry in a list in the operational state
      ("config false") that is created and deleted as a direct
      consequence of certain configuration changes.  See Section 4.1 for
      details.

2.2. Tree Diagrams

Tree diagrams used in this document follow the notation defined in [RFC8340].

2.3. Prefixes in Data Node Names

In this document, names of data nodes, actions, and other data model objects are often used without a prefix, as long as it is clear from the context in which YANG module each name is defined. Otherwise, names are prefixed using the standard prefix associated with the corresponding YANG module, as shown in Table 1. +--------+---------------------------+-----------+ | Prefix | YANG module | Reference | +--------+---------------------------+-----------+ | if | ietf-interfaces | [RFC8343] | | ip | ietf-ip | [RFC8344] | | rt | ietf-routing | Section 7 | | v4ur | ietf-ipv4-unicast-routing | Section 8 | | v6ur | ietf-ipv6-unicast-routing | Section 9 | | yang | ietf-yang-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] | +--------+---------------------------+-----------+ Table 1: Prefixes and Corresponding YANG Modules

3. Objectives

The initial design of the core routing data model was driven by the following objectives: o The data model should be suitable for the common address families -- in particular, IPv4 and IPv6 -- and for unicast and multicast routing, as well as Multiprotocol Label Switching (MPLS). o A simple IP routing system, such as one that uses only static routing, should be configurable in a simple way, ideally without any need to develop additional YANG modules.
Top   ToC   RFC8349 - Page 7
   o  On the other hand, the core routing framework must allow for
      complicated implementations involving multiple RIBs and multiple
      control-plane protocols, as well as controlled redistributions of
      routing information.

   o  Because device vendors will want to map the data models built on
      this generic framework to their proprietary data models and
      configuration interfaces, the framework should be flexible enough
      to facilitate such mapping and accommodate data models with
      different logic.

4. The Design of the Core Routing Data Model

The core routing data model consists of three YANG modules and one submodule. The first module, "ietf-routing", defines the generic components of a routing system. The other two modules -- "ietf-ipv4-unicast-routing" and "ietf-ipv6-unicast-routing" -- augment the "ietf-routing" module with additional data nodes that are needed for IPv4 and IPv6 unicast routing, respectively. The "ietf-ipv6-unicast-routing" module has a submodule, "ietf-ipv6-router-advertisements", that augments the "ietf-interfaces" [RFC8343] and "ietf-ip" [RFC8344] modules with configuration variables for IPv6 Router Advertisements as required by [RFC4861].
Top   ToC   RFC8349 - Page 8
   Figure 1 shows abridged views of the hierarchies.  See Appendix A for
   the complete data trees.

   +--rw routing
      +--rw router-id?                 yang:dotted-quad
      +--ro interfaces
      |  +--ro interface*   if:interface-ref
      +--rw control-plane-protocols
      |  +--rw control-plane-protocol* [type name]
      |     +--rw type             identityref
      |     +--rw name             string
      |     +--rw description?     string
      |     +--rw static-routes
      |        +--rw v4ur:ipv4
      |        |     ...
      |        +--rw v6ur:ipv6
      |              ...
      +--rw ribs
         +--rw rib* [name]
            +--rw name              string
            +--rw address-family?   identityref
            +--ro default-rib?      boolean {multiple-ribs}?
            +--ro routes
            |  +--ro route*
            |        ...
            +---x active-route
            |  +---w input
            |  |  +---w v4ur:destination-address?   inet:ipv4-address
            |  |  +---w v6ur:destination-address?   inet:ipv6-address
            |  +--ro output
            |        ...
            +--rw description?      string

                         Figure 1: Data Hierarchy

   As can be seen from Figure 1, the core routing data model introduces
   several generic components of a routing framework: routes, RIBs
   containing lists of routes, and control-plane protocols.  Section 5
   describes these components in more detail.

4.1. System-Controlled and User-Controlled List Entries

The core routing data model defines several lists in the schema tree, such as "rib", that have to be populated with at least one entry in any properly functioning device, and additional entries may be configured by a client.
Top   ToC   RFC8349 - Page 9
   In such a list, the server creates the required item as a
   "system-controlled entry" in the operational state, i.e., inside
   read-only lists in the "routing" container.

   An example can be seen in Appendix D: the "/routing/ribs/rib" list
   has two system-controlled entries -- "ipv4-master" and "ipv6-master".

   Additional entries called "user-controlled entries" may be created in
   the configuration by a client, e.g., via the Network Configuration
   Protocol (NETCONF).  If the server accepts a configured
   user-controlled entry, then this entry also appears in the
   operational state version of the list.

   Corresponding entries in both versions of the list (in the intended
   configuration and the operational state) [RFC8342] have the same
   value of the list key.

   A client may also provide supplemental configuration of system-
   controlled entries.  To do so, the client creates a new entry in the
   configuration with the desired contents.  In order to bind this entry
   to the corresponding entry in the operational state, the key of the
   configuration entry has to be set to the same value as the key of the
   operational state entry.

   Deleting a user-controlled entry from the intended configuration
   results in the removal of the corresponding entry in the operational
   state list.  In contrast, if a client deletes a system-controlled
   entry from the intended configuration, only the extra configuration
   specified in that entry is removed; the corresponding operational
   state entry is not removed.

5. Basic Building Blocks

This section describes the essential components of the core routing data model.

5.1. Routes

Routes are basic elements of information in a routing system. The core routing data model defines only the following minimal set of route attributes: o "destination-prefix": address prefix specifying the set of destination addresses for which the route may be used. This attribute is mandatory.
Top   ToC   RFC8349 - Page 10
   o  "route-preference": an integer value (also known as
      "administrative distance") that is used for selecting a preferred
      route among routes with the same destination prefix.  A lower
      value indicates a route that is more preferred.

   o  "next-hop": determines the outgoing interface and/or next-hop
      address(es), or a special operation to be performed on a packet.

   Routes are primarily system state and appear as entries in RIBs
   (Section 5.2), but they may also be found in configuration data --
   for example, as manually configured static routes.  In the latter
   case, configurable route attributes are generally a subset of
   attributes defined for RIB routes.

5.2. Routing Information Base (RIB)

Every implementation of the core routing data model manages one or more RIBs. A RIB is a list of routes complemented with administrative data. Each RIB contains only routes of one address family. An address family is represented by an identity derived from the "rt:address-family" base identity. In the core routing data model, RIBs are represented as entries in the list "/routing/ribs/rib" in the operational state. The contents of RIBs are controlled and manipulated by control-plane protocol operations that may result in route additions, removals, and modifications. This also includes manipulations via the "static" and/or "direct" pseudo-protocols; see Section 5.3.1. For every supported address family, exactly one RIB MUST be marked as the "default RIB", in which control-plane protocols place their routes by default. Simple router implementations that do not advertise the "multiple-ribs" feature will typically create one system-controlled RIB per supported address family and mark it as the default RIB. More-complex router implementations advertising the "multiple-ribs" feature support multiple RIBs per address family that can be used for policy routing and other purposes. The following action (see Section 7.15 of [RFC7950]) is defined for the "rib" list: o active-route -- return the active RIB route for the destination address that is specified as the action's input parameter.
Top   ToC   RFC8349 - Page 11

5.3. Control-Plane Protocol

The core routing data model provides an open-ended framework for defining multiple control-plane protocol instances, e.g., for Layer 3 routing protocols. Each control-plane protocol instance MUST be assigned a type, which is an identity derived from the "rt:control-plane-protocol" base identity. The core routing data model defines two identities for the "direct" and "static" pseudo-protocols (Section 5.3.1). Multiple control-plane protocol instances of the same type MAY be configured.

5.3.1. Routing Pseudo-Protocols

The core routing data model defines two special routing protocol types -- "direct" and "static". Both are in fact pseudo-protocols, which means that they are confined to the local device and do not exchange any routing information with adjacent routers. Every implementation of the core routing data model MUST provide exactly one instance of the "direct" pseudo-protocol type. It is the source of direct routes for all configured address families. Direct routes are normally supplied by the operating system kernel, based on the configuration of network interface addresses; see Section 6.2. A pseudo-protocol of the type "static" allows for specifying routes manually. It MAY be configured in zero or multiple instances, although a typical configuration will have exactly one instance.

5.3.2. Defining New Control-Plane Protocols

It is expected that future YANG modules will create data models for additional control-plane protocol types. Such new modules will have to define the protocol-specific data nodes, and they will have to integrate into the core routing framework in the following way: o A new identity MUST be defined for the control-plane protocol, and its base identity MUST be set to "rt:control-plane-protocol" or to an identity derived from "rt:control-plane-protocol".
Top   ToC   RFC8349 - Page 12
   o  Additional route attributes MAY be defined, preferably in one
      place by means of defining a YANG grouping.  The new attributes
      have to be inserted by augmenting the definitions of the node

       /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route

      and possibly other places in the schema tree.

   o  Data nodes for the new protocol can be defined by augmenting the
      "control-plane-protocol" data node under "/routing".

   By using a "when" statement, the augmented data nodes specific to the
   new protocol SHOULD be made conditional and valid only if the value
   of "rt:type" or "rt:source-protocol" is equal to (or derived from)
   the new protocol's identity.

   It is also RECOMMENDED that protocol-specific data nodes be
   encapsulated in an appropriately named container with presence.  Such
   a container may contain mandatory data nodes that are otherwise
   forbidden at the top level of an augment.

   The above steps are implemented by the example YANG module for the
   Routing Information Protocol (RIP); see Appendix C.

5.4. Parameters of IPv6 Router Advertisements

The YANG module "ietf-ipv6-router-advertisements" (Section 9.1), which is a submodule of the "ietf-ipv6-unicast-routing" module, augments the schema tree of IPv6 interfaces with definitions of the following variables as required by Section 6.2.1 of [RFC4861]: o send-advertisements o max-rtr-adv-interval o min-rtr-adv-interval o managed-flag o other-config-flag o link-mtu o reachable-time o retrans-timer o cur-hop-limit
Top   ToC   RFC8349 - Page 13
   o  default-lifetime

   o  prefix-list: a list of prefixes to be advertised.

      The following parameters are associated with each prefix in
      the list:

      *  valid-lifetime

      *  on-link-flag

      *  preferred-lifetime

      *  autonomous-flag

   NOTES:

   1.  The "IsRouter" flag, which is also required by [RFC4861], is
       implemented in the "ietf-ip" module [RFC8344] (leaf
       "ip:forwarding").

   2.  The Neighbor Discovery specification [RFC4861] allows the
       implementations to decide whether the "valid-lifetime" and
       "preferred-lifetime" parameters remain the same in consecutive
       advertisements or decrement in real time.  However, the latter
       behavior seems problematic because the values might be reset
       again to the (higher) configured values after a configuration is
       reloaded.  Moreover, no implementation is known to use the
       decrementing behavior.  The "ietf-ipv6-router-advertisements"
       submodule therefore stipulates the former behavior with constant
       values.

6. Interactions with Other YANG Modules

The semantics of the core routing data model also depends on several configuration parameters that are defined in other YANG modules.

6.1. Module "ietf-interfaces"

The following boolean switch is defined in the "ietf-interfaces" YANG module [RFC8343]: /if:interfaces/if:interface/if:enabled If this switch is set to "false" for a network-layer interface, then all routing and forwarding functions MUST be disabled on this interface.
Top   ToC   RFC8349 - Page 14

6.2. Module "ietf-ip"

The following boolean switches are defined in the "ietf-ip" YANG module [RFC8344]: /if:interfaces/if:interface/ip:ipv4/ip:enabled If this switch is set to "false" for a network-layer interface, then all IPv4 routing and forwarding functions MUST be disabled on this interface. /if:interfaces/if:interface/ip:ipv4/ip:forwarding If this switch is set to "false" for a network-layer interface, then the forwarding of IPv4 datagrams through this interface MUST be disabled. However, the interface MAY participate in other IPv4 routing functions, such as routing protocols. /if:interfaces/if:interface/ip:ipv6/ip:enabled If this switch is set to "false" for a network-layer interface, then all IPv6 routing and forwarding functions MUST be disabled on this interface. /if:interfaces/if:interface/ip:ipv6/ip:forwarding If this switch is set to "false" for a network-layer interface, then the forwarding of IPv6 datagrams through this interface MUST be disabled. However, the interface MAY participate in other IPv6 routing functions, such as routing protocols. In addition, the "ietf-ip" module allows for configuring IPv4 and IPv6 addresses and network prefixes or masks on network-layer interfaces. Configuration of these parameters on an enabled interface MUST result in an immediate creation of the corresponding direct route. The destination prefix of this route is set according to the configured IP address and network prefix/mask, and the interface is set as the outgoing interface for that route.


(next page on part 2)

Next Section