Tech-invite3GPPspaceIETFspace
96959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 8022

A YANG Data Model for Routing Management

Pages: 64
Obsoleted by:  8349
Part 1 of 3 – Pages 1 to 14
None   None   Next

ToP   noToC   RFC8022 - Page 1
Internet Engineering Task Force (IETF)                         L. Lhotka
Request for Comments: 8022                                        CZ.NIC
Category: Standards Track                                      A. Lindem
ISSN: 2070-1721                                            Cisco Systems
                                                           November 2016


                A YANG Data Model for Routing Management

Abstract

This document contains a specification of 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. 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 http://www.rfc-editor.org/info/rfc8022. Copyright Notice Copyright (c) 2016 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.
ToP   noToC   RFC8022 - Page 2

Table of Contents

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 2.1. Glossary of New Terms . . . . . . . . . . . . . . . . . . 4 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 5 2.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. The Design of the Core Routing Data Model . . . . . . . . . . 6 4.1. System-Controlled and User-Controlled List Entries . . . 8 5. Basic Building Blocks . . . . . . . . . . . . . . . . . . . . 9 5.1. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2. Routing Information Base (RIB) . . . . . . . . . . . . . 9 5.3. Control-Plane Protocol . . . . . . . . . . . . . . . . . 10 5.3.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . 10 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" . . . . . . . . . . . . . . . . . . . . 13 7. Routing Management YANG Module . . . . . . . . . . . . . . . 14 8. IPv4 Unicast Routing Management YANG Module . . . . . . . . . 26 9. IPv6 Unicast Routing Management YANG Module . . . . . . . . . 32 9.1. IPv6 Router Advertisements Submodule . . . . . . . . . . 37 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 11. Security Considerations . . . . . . . . . . . . . . . . . . . 48 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 12.1. Normative References . . . . . . . . . . . . . . . . . . 49 12.2. Informative References . . . . . . . . . . . . . . . . . 50 Appendix A. The Complete Data Trees . . . . . . . . . . . . . . 51 A.1. Configuration Data . . . . . . . . . . . . . . . . . . . 51 A.2. State Data . . . . . . . . . . . . . . . . . . . . . . . 52 Appendix B. Minimum Implementation . . . . . . . . . . . . . . . 53 Appendix C. Example: Adding a New Control-Plane Protocol . . . . 54 Appendix D. Data Tree Example . . . . . . . . . . . . . . . . . 56 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 64 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 64
ToP   noToC   RFC8022 - Page 3

1. Introduction

This document contains a specification of 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" [RFC7223] and "ietf-ip" [RFC7277] modules with IPv6 router configuration variables required by [RFC4861]. These modules together define the so-called 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.

2. Terminology and Notation

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. The following terms are defined in [RFC6241]: o client o message o protocol operation o server The following terms are defined in [RFC7950]: o action
ToP   noToC   RFC8022 - Page 4
   o  augment

   o  configuration data

   o  container

   o  container with presence

   o  data model

   o  data node

   o  feature

   o  leaf

   o  list

   o  mandatory node

   o  module

   o  schema tree

   o  state data

   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. system-controlled entry: An entry of a list in state data ("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 of a list in state data ("config false") that is created and deleted as a direct consequence of certain configuration changes. See Section 4.1 for details.
ToP   noToC   RFC8022 - Page 5

2.2. Tree Diagrams

A simplified graphical representation of the complete data tree is presented in Appendix A, and similar diagrams of its various subtrees appear in the main text. o Brackets "[" and "]" enclose list keys. o Curly braces "{" and "}" contain names of optional features that make the corresponding node conditional. o Abbreviations before data node names: "rw" means configuration (read-write), "ro" state data (read-only), "-x" RPC operations or actions, and "-n" notifications. o Symbols after data node names: "?" means an optional node, "!" a container with presence, and "*" denotes a "list" or "leaf-list". o Parentheses enclose choice and case nodes, and case nodes are also marked with a colon (":"). o Ellipsis ("...") stands for contents of subtrees that are not shown.

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 | [RFC7223] | | ip | ietf-ip | [RFC7277] | | 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
ToP   noToC   RFC8022 - Page 6

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. o On the other hand, the core routing framework must allow for complicated implementations involving multiple Routing Information Bases (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 that 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" [RFC7223] and "ietf-ip" [RFC7277] modules with configuration variables for IPv6 router advertisements as required by [RFC4861]. Figures 1 and 2 show abridged views of the configuration and state data hierarchies. See Appendix A for the complete data trees.
ToP   noToC   RFC8022 - Page 7
   +--rw routing
      +--rw router-id?
      +--rw control-plane-protocols
      |  +--rw control-plane-protocol* [type name]
      |     +--rw type
      |     +--rw name
      |     +--rw description?
      |     +--rw static-routes
      |        +--rw v6ur:ipv6
      |        |     ...
      |        +--rw v4ur:ipv4
      |              ...
      +--rw ribs
         +--rw rib* [name]
            +--rw name
            +--rw address-family?
            +--rw description?

                  Figure 1: Configuration Data Hierarchy

   +--ro routing-state
      +--ro router-id?
      +--ro interfaces
      |  +--ro interface*
      +--ro control-plane-protocols
      |  +--ro control-plane-protocol* [type name]
      |     +--ro type
      |     +--ro name
      +--ro ribs
         +--ro rib* [name]
            +--ro name
            +--ro address-family
            +--ro default-rib?
            +--ro routes
            |  +--ro route*
            |        ...

                      Figure 2: State Data Hierarchy

   As can be seen from Figures 1 and 2, 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.
ToP   noToC   RFC8022 - Page 8

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. In such a list, the server creates the required item as a so-called system-controlled entry in state data, i.e., inside the "routing- state" container. An example can be seen in Appendix D: the "/routing-state/ribs/rib" list has two system-controlled entries named "ipv4-master" and "ipv6-master". Additional entries may be created in the configuration by a client, e.g., via the NETCONF protocol. These are so-called user-controlled entries. If the server accepts a configured user-controlled entry, then this entry also appears in the state data version of the list. Corresponding entries in both versions of the list (in state data and configuration) 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 state data list, the key of the configuration entry has to be set to the same value as the key of the state entry. Deleting a user-controlled entry from the configuration list results in the removal of the corresponding entry in the state data list. In contrast, if a system-controlled entry is deleted from the configuration list, only the extra configuration specified in that entry is removed but the corresponding state data entry remains in the list.
ToP   noToC   RFC8022 - Page 9

5. Basic Building Blocks

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

5.1. Route

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. 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 means a more preferred route. o "next-hop": determines the outgoing interface and/or next-hop address(es), or a special operation to be performed with a packet. Routes are primarily state data that appear as entries of 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 Routing Information Bases (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 state data represented as entries of the list "/routing-state/ribs/rib". 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 so-called default RIB to which control-plane protocols place their routes by default.
ToP   noToC   RFC8022 - Page 10
   Simple router implementations that do not advertise the feature
   "multiple-ribs" 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.

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.
ToP   noToC   RFC8022 - Page 11

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 a new module has to define the protocol-specific configuration and state data, and it has to integrate it 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". 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 nodes /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route and /rt:routing-state/rt:ribs/rt:rib/rt:output/rt:route, and possibly other places in the configuration, state data, notifications, and input/output parameters of actions or RPC operations. o Configuration parameters and/or state data for the new protocol can be defined by augmenting the "control-plane-protocol" data node under both "/routing" and "/routing-state". By using a "when" statement, the augmented configuration parameters and state data 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) in Appendix C.
ToP   noToC   RFC8022 - Page 12

5.4. Parameters of IPv6 Router Advertisements

YANG module "ietf-ipv6-router-advertisements" (Section 9.1), which is a submodule of the "ietf-ipv6-unicast-routing" module, augments the configuration and state data 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 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 [RFC7277] (leaf "ip:forwarding").
ToP   noToC   RFC8022 - Page 13
   2.  The original 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 [RFC7223]: /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.

6.2. Module "ietf-ip"

The following boolean switches are defined in the "ietf-ip" YANG module [RFC7277]: /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.
ToP   noToC   RFC8022 - Page 14
   /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.



(page 14 continued on part 2)

Next Section