Tech-invite3GPPspecsGlossariesIETFRFCsGroupsSIPABNFsWorld Map

RFC 8349

Proposed STD
Pages: 80
Top     in Index     Prev     Next
in Group Index     Prev in Group     No Next: Highest Number in Group     Group: NETMOD

A YANG Data Model for Routing Management (NMDA Version)

Part 1 of 4, p. 1 to 14
None       Next Section

Obsoletes:    8022


Top       ToC       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       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       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       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       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       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       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       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       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       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       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       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       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       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 Section