summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8345.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8345.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8345.txt')
-rw-r--r--doc/rfc/rfc8345.txt3195
1 files changed, 3195 insertions, 0 deletions
diff --git a/doc/rfc/rfc8345.txt b/doc/rfc/rfc8345.txt
new file mode 100644
index 0000000..00f09b6
--- /dev/null
+++ b/doc/rfc/rfc8345.txt
@@ -0,0 +1,3195 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) A. Clemm
+Request for Comments: 8345 Huawei
+Category: Standards Track J. Medved
+ISSN: 2070-1721 Cisco
+ R. Varga
+ Pantheon Technologies SRO
+ N. Bahadur
+ Bracket Computing
+ H. Ananthakrishnan
+ Packet Design
+ X. Liu
+ Jabil
+ March 2018
+
+
+ A YANG Data Model for Network Topologies
+
+Abstract
+
+ This document defines an abstract (generic, or base) YANG data model
+ for network/service topologies and inventories. The data model
+ serves as a base model that is augmented with technology-specific
+ details in other, more specific topology and inventory data models.
+
+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/rfc8345.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 1]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 2]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+Table of Contents
+
+ 1. Introduction ....................................................4
+ 2. Key Words .......................................................8
+ 3. Definitions and Abbreviations ...................................9
+ 4. Model Structure Details .........................................9
+ 4.1. Base Network Model .........................................9
+ 4.2. Base Network Topology Data Model ..........................12
+ 4.3. Extending the Data Model ..................................13
+ 4.4. Discussion and Selected Design Decisions ..................14
+ 4.4.1. Container Structure ................................14
+ 4.4.2. Underlay Hierarchies and Mappings ..................14
+ 4.4.3. Dealing with Changes in Underlay Networks ..........15
+ 4.4.4. Use of Groupings ...................................15
+ 4.4.5. Cardinality and Directionality of Links ............16
+ 4.4.6. Multihoming and Link Aggregation ...................16
+ 4.4.7. Mapping Redundancy .................................16
+ 4.4.8. Typing .............................................17
+ 4.4.9. Representing the Same Device in Multiple Networks ..17
+ 4.4.10. Supporting Client-Configured and
+ System-Controlled Network Topologies ..............18
+ 4.4.11. Identifiers of String or URI Type .................19
+ 5. Interactions with Other YANG Modules ...........................19
+ 6. YANG Modules ...................................................20
+ 6.1. Defining the Abstract Network: ietf-network ...............20
+ 6.2. Creating Abstract Network Topology:
+ ietf-network-topology .....................................25
+ 7. IANA Considerations ............................................32
+ 8. Security Considerations ........................................33
+ 9. References .....................................................35
+ 9.1. Normative References ......................................35
+ 9.2. Informative References ....................................36
+ Appendix A. Model Use Cases .......................................38
+ A.1. Fetching Topology from a Network Element ...................38
+ A.2. Modifying TE Topology Imported from an Optical Controller ..38
+ A.3. Annotating Topology for Local Computation ..................39
+ A.4. SDN Controller-Based Configuration of Overlays on Top of
+ Underlays ..................................................39
+ Appendix B. Companion YANG Data Models for Implementations Not
+ Compliant with NMDA ...................................39
+ B.1. YANG Module for Network State ..............................40
+ B.2. YANG Module for Network Topology State .....................45
+ Appendix C. An Example ............................................52
+ Acknowledgments ...................................................56
+ Contributors ......................................................56
+ Authors' Addresses ................................................57
+
+
+
+
+
+Clemm, et al. Standards Track [Page 3]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+1. Introduction
+
+ This document introduces an abstract (base) YANG [RFC7950] data model
+ [RFC3444] to represent networks and topologies. The data model is
+ divided into two parts: The first part of the data model defines a
+ network data model that enables the definition of network
+ hierarchies, or network stacks (i.e., networks that are layered on
+ top of each other) and maintenance of an inventory of nodes contained
+ in a network. The second part of the data model augments the basic
+ network data model with information to describe topology information.
+ Specifically, it adds the concepts of "links" and
+ "termination points" to describe how nodes in a network are connected
+ to each other. Moreover, the data model introduces vertical layering
+ relationships between networks that can be augmented to cover both
+ network inventories and network/service topologies.
+
+ Although it would be possible to combine both parts into a single
+ data model, the separation facilitates integration of network
+ topology and network inventory data models, because it allows network
+ inventory information to be augmented separately, and without concern
+ for topology, into the network data model.
+
+ The data model can be augmented to describe the specifics of
+ particular types of networks and topologies. For example, an
+ augmenting data model can provide network node information with
+ attributes that are specific to a particular network type. Examples
+ of augmenting models include data models for Layer 2 network
+ topologies; Layer 3 network topologies such as unicast IGP, IS-IS
+ [RFC1195], and OSPF [RFC2328]; traffic engineering (TE) data
+ [RFC3209]; or any of the variety of transport and service topologies.
+ Information specific to particular network types will be captured in
+ separate, technology-specific data models.
+
+ The basic data models introduced in this document are generic in
+ nature and can be applied to many network and service topologies and
+ inventories. The data models allow applications to operate on an
+ inventory or topology of any network at a generic level, where the
+ specifics of particular inventory/topology types are not required.
+ At the same time, where data specific to a network type comes into
+ play and the data model is augmented, the instantiated data still
+ adheres to the same structure and is represented in a consistent
+ fashion. This also facilitates the representation of network
+ hierarchies and dependencies between different network components and
+ network types.
+
+ The abstract (base) network YANG module introduced in this document,
+ entitled "ietf-network" (Section 6.1), contains a list of abstract
+ network nodes and defines the concept of "network hierarchy" (network
+
+
+
+Clemm, et al. Standards Track [Page 4]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ stack). The abstract network node can be augmented in inventory and
+ topology data models with inventory-specific and topology-specific
+ attributes. The network hierarchy (stack) allows any given network
+ to have one or more "supporting networks". The relationship between
+ the base network data model, the inventory data models, and the
+ topology data models is shown in Figure 1 (dotted lines in the figure
+ denote possible augmentations to models defined in this document).
+
+ +------------------------+
+ | |
+ | Abstract Network Model |
+ | |
+ +------------------------+
+ |
+ +-------+-------+
+ | |
+ V V
+ +------------+ ..............
+ | Abstract | : Inventory :
+ | Topology | : Model(s) :
+ | Model | : :
+ +------------+ ''''''''''''''
+ |
+ +-------------+-------------+-------------+
+ | | | |
+ V V V V
+ ............ ............ ............ ............
+ : L1 : : L2 : : L3 : : Service :
+ : Topology : : Topology : : Topology : : Topology :
+ : Model : : Model : : Model : : Model :
+ '''''''''''' '''''''''''' '''''''''''' ''''''''''''
+
+ Figure 1: The Network Data Model Structure
+
+ The network-topology YANG module introduced in this document,
+ entitled "ietf-network-topology" (Section 6.2), defines a generic
+ topology data model at its most general level of abstraction. The
+ module defines a topology graph and components from which it is
+ composed: nodes, edges, and termination points. Nodes (from the
+ "ietf-network" module) represent graph vertices and links represent
+ graph edges. Nodes also contain termination points that anchor the
+ links. A network can contain multiple topologies -- for example,
+ topologies at different layers and overlay topologies. The data
+ model therefore allows relationships between topologies, as well as
+ dependencies between nodes and termination points across topologies,
+ to be captured. An example of a topology stack is shown in Figure 2.
+
+
+
+
+
+Clemm, et al. Standards Track [Page 5]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ +---------------------------------------+
+ / _[X1]_ "Service" /
+ / _/ : \_ /
+ / _/ : \_ /
+ / _/ : \_ /
+ / / : \ /
+ / [X2]__________________[X3] /
+ +---------:--------------:------:-------+
+ : : :
+ +----:--------------:----:--------------+
+ / : : : "L3" /
+ / : : : /
+ / : : : /
+ / [Y1]_____________[Y2] /
+ / * * * /
+ / * * * /
+ +--------------*-------------*--*-------+
+ * * *
+ +--------*----------*----*--------------+
+ / [Z1]_______________[Z2] "Optical" /
+ / \_ * _/ /
+ / \_ * _/ /
+ / \_ * _/ /
+ / \ * / /
+ / [Z] /
+ +---------------------------------------+
+
+ Figure 2: Topology Hierarchy (Stack) Example
+
+ Figure 2 shows three topology levels. At the top, the "Service"
+ topology shows relationships between service entities, such as
+ service functions in a service chain. The "L3" topology shows
+ network elements at Layer 3 (IP), and the "Optical" topology shows
+ network elements at Layer 1. Service functions in the "Service"
+ topology are mapped onto network elements in the "L3" topology, which
+ in turn are mapped onto network elements in the "Optical" topology.
+ Two service functions (X1 and X3) are mapped onto a single L3 network
+ element (Y2); this could happen, for example, if two service
+ functions reside in the same Virtual Machine (VM) (or server) and
+ share the same set of network interfaces. A single "L3" network
+ element (Y2) is mapped onto two "Optical" network elements (Z2 and
+ Z). This could happen, for example, if a single IP router attaches
+ to multiple Reconfigurable Optical Add/Drop Multiplexers (ROADMs) in
+ the optical domain.
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 6]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ Another example of a service topology stack is shown in Figure 3.
+
+ VPN1 VPN2
+ +---------------------+ +---------------------+
+ / [Y5]... / / [Z5]______[Z3] /
+ / / \ : / / : \_ / : /
+ / / \ : / / : \_ / : /
+ / / \ : / / : \ / : /
+ / [Y4]____[Y1] : / / : [Z2] : /
+ +------:-------:---:--+ +---:---------:-----:-+
+ : : : : : :
+ : : : : : :
+ : +-------:---:-----:------------:-----:-----+
+ : / [X1]__:___:___________[X2] : /
+ :/ / \_ : : _____/ / : /
+ : / \_ : _____/ / : /
+ /: / \: / / : /
+ / : / [X5] / : /
+ / : / __/ \__ / : /
+ / : / ___/ \__ / : /
+ / : / ___/ \ / : /
+ / [X4]__________________[X3]..: /
+ +------------------------------------------+
+ L3 Topology
+
+ Figure 3: Topology Hierarchy (Stack) Example
+
+ Figure 3 shows two VPN service topologies (VPN1 and VPN2)
+ instantiated over a common L3 topology. Each VPN service topology is
+ mapped onto a subset of nodes from the common L3 topology.
+
+ There are multiple applications for such a data model. For example,
+ within the context of Interface to the Routing System (I2RS), nodes
+ within the network can use the data model to capture their
+ understanding of the overall network topology and expose it to a
+ network controller. A network controller can then use the
+ instantiated topology data to compare and reconcile its own view of
+ the network topology with that of the network elements that it
+ controls. Alternatively, nodes within the network could propagate
+ this understanding to compare and reconcile this understanding either
+ among themselves or with the help of a controller. Beyond the
+ network element and the immediate context of I2RS itself, a network
+ controller might even use the data model to represent its view of the
+ topology that it controls and expose it to applications north of
+ itself. Further use cases where the data model can be applied are
+ described in [USECASE-REQS].
+
+
+
+
+
+Clemm, et al. Standards Track [Page 7]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ In this data model, a network is categorized as either system
+ controlled or not. If a network is system controlled, then it is
+ automatically populated by the server and represents dynamically
+ learned information that can be read from the operational state
+ datastore. The data model can also be used to create or modify
+ network topologies that might be associated with an inventory model
+ or with an overlay network. Such a network is not system controlled;
+ rather, it is configured by a client.
+
+ The data model allows a network to refer to a supporting network,
+ supporting nodes, supporting links, etc. The data model also allows
+ the layering of a network that is configured on top of a network that
+ is system controlled. This permits the configuration of overlay
+ networks on top of networks that are discovered. Specifically, this
+ data model is structured to support being implemented as part of the
+ ephemeral datastore [RFC8342], the requirements for which are defined
+ in Section 3 of [RFC8242]. This allows network topology data that is
+ written, i.e., configured by a client and not system controlled, to
+ refer to dynamically learned data that is controlled by the system,
+ not configured by a client. A simple use case might involve creating
+ an overlay network that is supported by the dynamically discovered
+ IP-routed network topology. When an implementation places written
+ data for this data model in the ephemeral datastore, such a network
+ MAY refer to another network that is system controlled.
+
+2. Key Words
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 8]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+3. Definitions and Abbreviations
+
+ Datastore: A conceptual place to store and access information. A
+ datastore might be implemented, for example, using files, a
+ database, flash memory locations, or combinations thereof. A
+ datastore maps to an instantiated YANG data tree (definition from
+ [RFC8342]).
+
+ Data subtree: An instantiated data node and the data nodes that are
+ hierarchically contained within it.
+
+ IGP: Interior Gateway Protocol.
+
+ IS-IS: Intermediate System to Intermediate System.
+
+ OSPF: Open Shortest Path First (a link-state routing protocol).
+
+ SDN: Software-Defined Networking.
+
+ URI: Uniform Resource Identifier.
+
+ VM: Virtual Machine.
+
+4. Model Structure Details
+
+4.1. Base Network Model
+
+ The abstract (base) network data model is defined in the
+ "ietf-network" module. Its structure is shown in Figure 4. The
+ notation syntax follows the syntax used in [RFC8340].
+
+ module: ietf-network
+ +--rw networks
+ +--rw network* [network-id]
+ +--rw network-id network-id
+ +--rw network-types
+ +--rw supporting-network* [network-ref]
+ | +--rw network-ref -> /networks/network/network-id
+ +--rw node* [node-id]
+ +--rw node-id node-id
+ +--rw supporting-node* [network-ref node-ref]
+ +--rw network-ref
+ | -> ../../../supporting-network/network-ref
+ +--rw node-ref -> /networks/network/node/node-id
+
+ Figure 4: The Structure of the Abstract (Base) Network Data Model
+
+
+
+
+
+Clemm, et al. Standards Track [Page 9]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ The data model contains a container with a list of networks. Each
+ network is captured in its own list entry, distinguished via a
+ network-id.
+
+ A network has a certain type, such as L2, L3, OSPF, or IS-IS. A
+ network can even have multiple types simultaneously. The type or
+ types are captured underneath the container "network-types". In this
+ model, it serves merely as an augmentation target; network-specific
+ modules will later introduce new data nodes to represent new network
+ types below this target, i.e., will insert them below "network-types"
+ via YANG augmentation.
+
+ When a network is of a certain type, it will contain a corresponding
+ data node. Network types SHOULD always be represented using presence
+ containers, not leafs of type "empty". This allows the
+ representation of hierarchies of network subtypes within the instance
+ information. For example, an instance of an OSPF network (which, at
+ the same time, is a Layer 3 unicast IGP network) would contain
+ underneath "network-types" another presence container
+ "l3-unicast-igp-network", which in turn would contain a presence
+ container "ospf-network". Actual examples of this pattern can be
+ found in [RFC8346].
+
+ A network can in turn be part of a hierarchy of networks, building on
+ top of other networks. Any such networks are captured in the list
+ "supporting-network". A supporting network is, in effect, an
+ underlay network.
+
+ Furthermore, a network contains an inventory of nodes that are part
+ of the network. The nodes of a network are captured in their own
+ list. Each node is identified relative to its containing network by
+ a node-id.
+
+ It should be noted that a node does not exist independently of a
+ network; instead, it is a part of the network that contains it. In
+ cases where the same device or entity takes part in multiple
+ networks, or at multiple layers of a networking stack, the same
+ device or entity will be represented by multiple nodes, one for each
+ network. In other words, the node represents an abstraction of the
+ device for the particular network of which it is a part. To indicate
+ that the same entity or device is part of multiple topologies or
+ networks, it is possible to create one "physical" network with a list
+ of nodes for each of the devices or entities. This (physical)
+ network -- the nodes (entities) in that network -- can then be
+ referred to as an underlay network and as nodes from the other
+ (logical) networks and nodes, respectively. Note that the data model
+
+
+
+
+
+Clemm, et al. Standards Track [Page 10]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ allows for the definition of more than one underlay network (and
+ node), allowing for simultaneous representation of layered network
+ topologies and service topologies, and their physical instantiation.
+
+ Similar to a network, a node can be supported by other nodes and map
+ onto one or more other nodes in an underlay network. This is
+ captured in the list "supporting-node". The resulting hierarchy of
+ nodes also allows for the representation of device stacks, where a
+ node at one level is supported by a set of nodes at an underlying
+ level. For example:
+
+ o a "router" node might be supported by a node representing a route
+ processor and separate nodes for various line cards and service
+ modules,
+
+ o a virtual router might be supported or hosted on a physical device
+ represented by a separate node,
+
+ and so on.
+
+ Network data of a network at a particular layer can come into being
+ in one of two ways: (1) the network data is configured by client
+ applications -- for example, in the case of overlay networks that are
+ configured by an SDN Controller application, or (2) the network data
+ is automatically controlled by the system, in the case of networks
+ that can be discovered. It is possible for a configured (overlay)
+ network to refer to a (discovered) underlay network.
+
+ The revised datastore architecture [RFC8342] is used to account for
+ those possibilities. Specifically, for each network, the origin of
+ its data is indicated per the "origin" metadata [RFC7952] annotation
+ (as defined in [RFC8342]) -- "intended" for data that was configured
+ by a client application and "learned" for data that is discovered.
+ Network data that is discovered is automatically populated as part of
+ the operational state datastore. Network data that is configured is
+ part of the configuration and intended datastores, respectively.
+ Configured network data that is actually in effect is, in addition,
+ reflected in the operational state datastore. Data in the
+ operational state datastore will always have complete referential
+ integrity. Should a configured data item (such as a node) have a
+ dangling reference that refers to a non-existing data item (such as a
+ supporting node), the configured data item will automatically be
+ removed from the operational state datastore and thus only appear in
+ the intended datastore. It will be up to the client application
+ (such as an SDN Controller) to resolve the situation and ensure that
+ the reference to the supporting resources is configured properly.
+
+
+
+
+
+Clemm, et al. Standards Track [Page 11]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+4.2. Base Network Topology Data Model
+
+ The abstract (base) network topology data model is defined in the
+ "ietf-network-topology" module. It builds on the network data model
+ defined in the "ietf-network" module, augmenting it with links
+ (defining how nodes are connected) and termination points (which
+ anchor the links and are contained in nodes). The structure of the
+ network topology module is shown in Figure 5. The notation syntax
+ follows the syntax used in [RFC8340].
+
+ module: ietf-network-topology
+ augment /nw:networks/nw:network:
+ +--rw link* [link-id]
+ +--rw link-id link-id
+ +--rw source
+ | +--rw source-node? -> ../../../nw:node/node-id
+ | +--rw source-tp? leafref
+ +--rw destination
+ | +--rw dest-node? -> ../../../nw:node/node-id
+ | +--rw dest-tp? leafref
+ +--rw supporting-link* [network-ref link-ref]
+ +--rw network-ref
+ | -> ../../../nw:supporting-network/network-ref
+ +--rw link-ref leafref
+ augment /nw:networks/nw:network/nw:node:
+ +--rw termination-point* [tp-id]
+ +--rw tp-id tp-id
+ +--rw supporting-termination-point*
+ [network-ref node-ref tp-ref]
+ +--rw network-ref
+ | -> ../../../nw:supporting-node/network-ref
+ +--rw node-ref
+ | -> ../../../nw:supporting-node/node-ref
+ +--rw tp-ref leafref
+
+ Figure 5: The Structure of the Abstract (Base) Network Topology
+ Data Model
+
+ A node has a list of termination points that are used to terminate
+ links. An example of a termination point might be a physical or
+ logical port or, more generally, an interface.
+
+ Like a node, a termination point can in turn be supported by an
+ underlying termination point, contained in the supporting node of the
+ underlay network.
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 12]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ A link is identified by a link-id that uniquely identifies the link
+ within a given topology. Links are point-to-point and
+ unidirectional. Accordingly, a link contains a source and a
+ destination. Both source and destination reference a corresponding
+ node, as well as a termination point on that node. Similar to a
+ node, a link can map onto one or more links (which are terminated by
+ the corresponding underlay termination points) in an underlay
+ topology. This is captured in the list "supporting-link".
+
+4.3. Extending the Data Model
+
+ In order to derive a data model for a specific type of network, the
+ base data model can be extended. This can be done roughly as
+ follows: a new YANG module for the new network type is introduced.
+ In this module, a number of augmentations are defined against the
+ "ietf-network" and "ietf-network-topology" modules.
+
+ We start with augmentations against the "ietf-network" module.
+ First, a new network type needs to be defined; this is done by
+ defining a presence container that represents the new network type.
+ The new network type is inserted, by means of augmentation, below the
+ network-types container. Subsequently, data nodes for any node
+ parameters that are specific to a network type are defined and
+ augmented into the node list. The new data nodes can be defined as
+ conditional ("when") on the presence of the corresponding network
+ type in the containing network. In cases where there are any
+ requirements or restrictions in terms of network hierarchies, such as
+ when a network of a new network type requires a specific type of
+ underlay network, it is possible to define corresponding constraints
+ as well and augment the supporting-network list accordingly.
+ However, care should be taken to avoid excessive definitions of
+ constraints.
+
+ Subsequently, augmentations are defined against the
+ "ietf-network-topology" module. Data nodes are defined for link
+ parameters, as well as termination point parameters, that are
+ specific to the new network type. Those data nodes are inserted via
+ augmentation into the link and termination-point lists, respectively.
+ Again, data nodes can be defined as conditional on the presence of
+ the corresponding network type in the containing network, by adding a
+ corresponding "when" statement.
+
+ It is possible, but not required, to group data nodes for a given
+ network type under a dedicated container. Doing so introduces
+ additional structure but lengthens data node path names.
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 13]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ In cases where a hierarchy of network types is defined, augmentations
+ can in turn be applied against augmenting modules, with the module of
+ a network whose type is more specific augmenting the module of a
+ network whose type is more general.
+
+4.4. Discussion and Selected Design Decisions
+
+4.4.1. Container Structure
+
+ Rather than maintaining lists in separate containers, the data model
+ is kept relatively flat in terms of its containment structure. Lists
+ of nodes, links, termination points, and supporting nodes; supporting
+ links; and supporting termination points are not kept in separate
+ containers. Therefore, path identifiers that are used to refer to
+ specific nodes -- in management operations or in specifications of
+ constraints -- can remain relatively compact. Of course, this means
+ that there is no separate structure in instance information that
+ separates elements of different lists from one another. Such a
+ structure is semantically not required, but it might provide enhanced
+ "human readability" in some cases.
+
+4.4.2. Underlay Hierarchies and Mappings
+
+ To minimize assumptions regarding what a particular entity might
+ actually represent, mappings between networks, nodes, links, and
+ termination points are kept strictly generic. For example, no
+ assumptions are made regarding whether a termination point actually
+ refers to an interface or whether a node refers to a specific
+ "system" or device; the data model at this generic level makes no
+ provisions for these.
+
+ Where additional specifics about mappings between upper and lower
+ layers are required, the information can be captured in augmenting
+ modules. For example, to express that a termination point in a
+ particular network type maps to an interface, an augmenting module
+ can introduce an augmentation to the termination point. The
+ augmentation introduces a leaf of type "interface-ref". That leaf
+ references the corresponding interface [RFC8343]. Similarly, if a
+ node maps to a particular device or network element, an augmenting
+ module can augment the node data with a leaf that references the
+ network element.
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 14]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ It is possible for links at one level of a hierarchy to map to
+ multiple links at another level of the hierarchy. For example, a VPN
+ topology might model VPN tunnels as links. Where a VPN tunnel maps
+ to a path that is composed of a chain of several links, the link will
+ contain a list of those supporting links. Likewise, it is possible
+ for a link at one level of a hierarchy to aggregate a bundle of links
+ at another level of the hierarchy.
+
+4.4.3. Dealing with Changes in Underlay Networks
+
+ It is possible for a network to undergo churn even as other networks
+ are layered on top of it. When a supporting node, link, or
+ termination point is deleted, the supporting leafrefs in the overlay
+ will be left dangling. To allow for this possibility, the data model
+ makes use of the "require-instance" construct of YANG 1.1 [RFC7950].
+
+ A dangling leafref of a configured object leaves the corresponding
+ instance in a state in which it lacks referential integrity,
+ effectively rendering it nonoperational. Any corresponding object
+ instance is therefore removed from the operational state datastore
+ until the situation has been resolved, i.e., until either (1) the
+ supporting object is added to the operational state datastore or
+ (2) the instance is reconfigured to refer to another object that is
+ actually reflected in the operational state datastore. It will
+ remain part of the intended datastore.
+
+ It is the responsibility of the application maintaining the overlay
+ to deal with the possibility of churn in the underlay network. When
+ a server receives a request to configure an overlay network, it
+ SHOULD validate whether supporting nodes / links / termination points
+ refer to nodes in the underlay that actually exist, i.e., verify that
+ the nodes are reflected in the operational state datastore.
+ Configuration requests in which supporting nodes / links /
+ termination points refer to objects currently not in existence SHOULD
+ be rejected. It is the responsibility of the application to update
+ the overlay when a supporting node / link / termination point is
+ deleted at a later point in time. For this purpose, an application
+ might subscribe to updates when changes to the underlay occur -- for
+ example, using mechanisms defined in [YANG-Push].
+
+4.4.4. Use of Groupings
+
+ The data model makes use of groupings instead of simply defining data
+ nodes "inline". This makes it easier to include the corresponding
+ data nodes in notifications, which then do not need to respecify each
+ data node that is to be included. The trade-off is that it makes the
+ specification of constraints more complex, because constraints
+ involving data nodes outside the grouping need to be specified in
+
+
+
+Clemm, et al. Standards Track [Page 15]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ conjunction with a "uses" statement where the grouping is applied.
+ This also means that constraints and XML Path Language (XPath)
+ statements need to be specified in such a way that they navigate
+ "down" first and select entire sets of nodes, as opposed to being
+ able to simply specify them against individual data nodes.
+
+4.4.5. Cardinality and Directionality of Links
+
+ The topology data model includes links that are point-to-point and
+ unidirectional. It does not directly support multipoint and
+ bidirectional links. Although this may appear as a limitation, the
+ decision to do so keeps the data model simple and generic, and it
+ allows it to be very easily subjected to applications that make use
+ of graph algorithms. Bidirectional connections can be represented
+ through pairs of unidirectional links. Multipoint networks can be
+ represented through pseudonodes (similar to IS-IS, for example). By
+ introducing hierarchies of nodes with nodes at one level mapping onto
+ a set of other nodes at another level and by introducing new links
+ for nodes at that level, topologies with connections representing
+ non-point-to-point communication patterns can be represented.
+
+4.4.6. Multihoming and Link Aggregation
+
+ Links are terminated by a single termination point, not sets of
+ termination points. Connections involving multihoming or link
+ aggregation schemes need to be represented using multiple point-to-
+ point links and then defining a link at a higher layer that is
+ supported by those individual links.
+
+4.4.7. Mapping Redundancy
+
+ In a hierarchy of networks, there are nodes mapping to nodes, links
+ mapping to links, and termination points mapping to termination
+ points. Some of this information is redundant. Specifically, if the
+ mapping of a link to one or more other links is known and the
+ termination points of each link are known, the mapping information
+ for the termination points can be derived via transitive closure and
+ does not have to be explicitly configured. Nonetheless, in order to
+ not constrain applications regarding which mappings they want to
+ configure and which should be derived, the data model provides the
+ option to configure this information explicitly. The data model
+ includes integrity constraints to allow for validating for
+ consistency.
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 16]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+4.4.8. Typing
+
+ A network's network types are represented using a container that
+ contains a data node for each of its network types. A network can
+ encompass several types of networks simultaneously; hence, a
+ container is used instead of a case construct, with each network type
+ in turn represented by a dedicated presence container. The reason
+ for not simply using an empty leaf, or (even more simply) even doing
+ away with the network container and just using a leaf-list of
+ "network-type" instead, is to be able to represent "class
+ hierarchies" of network types, with one network type "refining" the
+ other. Containers specific to a network type are to be defined in
+ the network-specific modules, augmenting the network-types container.
+
+4.4.9. Representing the Same Device in Multiple Networks
+
+ One common requirement concerns the ability to indicate that the same
+ device can be part of multiple networks and topologies. However, the
+ data model defines a node as relative to the network that contains
+ it. The same node cannot be part of multiple topologies. In many
+ cases, a node will be the abstraction of a particular device in a
+ network. To reflect that the same device is part of multiple
+ topologies, the following approach might be chosen: a new type of
+ network to represent a "physical" (or "device") network is
+ introduced, with nodes representing devices. This network forms an
+ underlay network for logical networks above it, with nodes of the
+ logical network mapping onto nodes in the physical network.
+
+ This scenario is depicted in Figure 6. This figure depicts three
+ networks with two nodes each. A physical network ("P" in the figure)
+ consists of an inventory of two nodes (D1 and D2), each representing
+ a device. A second network, X, has a third network, Y, as its
+ underlay. Both X and Y also have the physical network (P) as their
+ underlay. X1 has both Y1 and D1 as underlay nodes, while Y1 has D1
+ as its underlay node. Likewise, X2 has both Y2 and D2 as underlay
+ nodes, while Y2 has D2 as its underlay node. The fact that X1 and Y1
+ are both instantiated on the same physical node (D1) can be
+ easily seen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 17]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ +---------------------+
+ / [X1]____[X2] / X(Service Overlay)
+ +----:--:----:--------+
+ ..: :..: :
+ ........: ....: : :....
+ +-----:-------------:--+ : :...
+ / [Y1]____[Y2]....: / :.. :
+ +------|-------|-------+ :.. :...
+ Y(L3) | +---------------------:-----+ :
+ | +----:----|-:----------+
+ +------------------------/---[D1] [D2] /
+ +----------------------+
+ P (Physical Network)
+
+ Figure 6: Topology Hierarchy Example - Multiple Underlays
+
+ In the case of a physical network, nodes represent physical devices
+ and termination points represent physical ports. It should be noted
+ that it is also possible to augment the data model for a physical
+ network type, defining augmentations that have nodes reference system
+ information and termination points reference physical interfaces, in
+ order to provide a bridge between network and device models.
+
+4.4.10. Supporting Client-Configured and System-Controlled Network
+ Topologies
+
+ YANG requires data nodes to be designated as either configuration
+ data ("config true") or operational data ("config false"), but not
+ both, yet it is important to have all network information, including
+ vertical cross-network dependencies, captured in one coherent data
+ model. In most cases, network topology information about a network
+ is discovered; the topology is considered a property of the network
+ that is reflected in the data model. That said, certain types of
+ topologies need to also be configurable by an application, e.g., in
+ the case of overlay topologies.
+
+ The YANG data model for network topologies designates all data as
+ "config true". The distinction between data that is actually
+ configured and data that is in effect, including network data that is
+ discovered, is provided through the datastores introduced as part of
+ the Network Management Datastore Architecture (NMDA) [RFC8342].
+ Network topology data that is discovered is automatically populated
+ as part of the operational state datastore, i.e., <operational>. It
+ is "system controlled". Network topology that is configured is
+ instantiated as part of a configuration datastore, e.g., <intended>.
+ Only when it has actually taken effect will it also be instantiated
+ as part of the operational state datastore, i.e., <operational>.
+
+
+
+
+Clemm, et al. Standards Track [Page 18]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ In general, a configured network topology will refer to an underlay
+ topology and include layering information, such as the supporting
+ node(s) underlying a node, supporting link(s) underlying a link, and
+ supporting termination point(s) underlying a termination point. The
+ supporting objects must be instantiated in the operational state
+ datastore in order for the dependent overlay object to be reflected
+ in the operational state datastore. Should a configured data item
+ (such as a node) have a dangling reference that refers to a
+ nonexistent data item (such as a supporting node), the configured
+ data item will automatically be removed from <operational> and show
+ up only in <intended>. It will be up to the client application to
+ resolve the situation and ensure that the reference to the supporting
+ resources is configured properly.
+
+ For each network, the origin of its data is indicated per the
+ "origin" metadata [RFC7952] annotation defined in [RFC8342]. In
+ general, the origin of discovered network data is "learned"; the
+ origin of configured network data is "intended".
+
+4.4.11. Identifiers of String or URI Type
+
+ The current data model defines identifiers of nodes, networks, links,
+ and termination points as URIs. Alternatively, they could have been
+ defined as strings.
+
+ The case for strings is that they will be easier to implement. The
+ reason for choosing URIs is that the topology / node / termination
+ point exists in a larger context; hence, it is useful to be able to
+ correlate identifiers across systems. Although strings -- being the
+ universal data type -- are easier for human beings, they also muddle
+ things. What typically happens is that strings have some structure
+ that is magically assigned, and the knowledge of this structure has
+ to be communicated to each system working with the data. A URI makes
+ the structure explicit and also attaches additional semantics: the
+ URI, unlike a free-form string, can be fed into a URI resolver, which
+ can point to additional resources associated with the URI. This
+ property is important when the topology data is integrated into a
+ larger and more complex system.
+
+5. Interactions with Other YANG Modules
+
+ The data model makes use of data types that have been defined in
+ [RFC6991].
+
+ This is a protocol-independent YANG data model with topology
+ information. It is separate from, and not linked with, data models
+ that are used to configure routing protocols or routing information.
+ This includes, for example, the "ietf-routing" YANG module [RFC8022].
+
+
+
+Clemm, et al. Standards Track [Page 19]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ The data model obeys the requirements for the ephemeral state as
+ specified in [RFC8242]. For ephemeral topology data that is system
+ controlled, the process tasked with maintaining topology information
+ will load information from the routing process (such as OSPF) into
+ the operational state datastore without relying on a configuration
+ datastore.
+
+6. YANG Modules
+
+6.1. Defining the Abstract Network: ietf-network
+
+ <CODE BEGINS> file "ietf-network@2018-02-26.yang"
+
+ module ietf-network {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network";
+ prefix nw;
+
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+
+
+
+Clemm, et al. Standards Track [Page 20]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ description
+ "This module defines a common base data model for a collection
+ of nodes in a network. Node definitions are further used
+ in network topologies and inventories.
+
+ Copyright (c) 2018 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ typedef node-id {
+ type inet:uri;
+ description
+ "Identifier for a node. The precise structure of the node-id
+ will be up to the implementation. For example, some
+ implementations MAY pick a URI that includes the network-id
+ as part of the path. The identifier SHOULD be chosen
+ such that the same node in a real network topology will
+ always be identified through the same identifier, even if
+ the data model is instantiated in separate datastores. An
+ implementation MAY choose to capture semantics in the
+ identifier -- for example, to indicate the type of node.";
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 21]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ typedef network-id {
+ type inet:uri;
+ description
+ "Identifier for a network. The precise structure of the
+ network-id will be up to the implementation. The identifier
+ SHOULD be chosen such that the same network will always be
+ identified through the same identifier, even if the data model
+ is instantiated in separate datastores. An implementation MAY
+ choose to capture semantics in the identifier -- for example,
+ to indicate the type of network.";
+ }
+
+ grouping network-ref {
+ description
+ "Contains the information necessary to reference a network --
+ for example, an underlay network.";
+ leaf network-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:network-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a network -- for example, an underlay
+ network.";
+ }
+ }
+
+ grouping node-ref {
+ description
+ "Contains the information necessary to reference a node.";
+ leaf node-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/../"+
+ "network-ref]/nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a node.
+ Nodes are identified relative to the network that
+ contains them.";
+ }
+ uses network-ref;
+ }
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 22]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ container networks {
+ description
+ "Serves as a top-level container for a list of networks.";
+ list network {
+ key "network-id";
+ description
+ "Describes a network.
+ A network typically contains an inventory of nodes,
+ topological information (augmented through the
+ network-topology data model), and layering information.";
+ leaf network-id {
+ type network-id;
+ description
+ "Identifies a network.";
+ }
+ container network-types {
+ description
+ "Serves as an augmentation target.
+ The network type is indicated through corresponding
+ presence containers augmented into this container.";
+ }
+ list supporting-network {
+ key "network-ref";
+ description
+ "An underlay network, used to represent layered network
+ topologies.";
+ leaf network-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:network-id";
+ require-instance false;
+ }
+ description
+ "References the underlay network.";
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 23]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ list node {
+ key "node-id";
+ description
+ "The inventory of nodes of this network.";
+ leaf node-id {
+ type node-id;
+ description
+ "Uniquely identifies a node within the containing
+ network.";
+ }
+ list supporting-node {
+ key "network-ref node-ref";
+ description
+ "Represents another node that is in an underlay network
+ and that supports this node. Used to represent layering
+ structure.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw:supporting-network/nw:network-ref";
+ require-instance false;
+ }
+ description
+ "References the underlay network of which the
+ underlay node is a part.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "References the underlay node itself.";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ <CODE ENDS>
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 24]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+6.2. Creating Abstract Network Topology: ietf-network-topology
+
+ <CODE BEGINS> file "ietf-network-topology@2018-02-26.yang"
+
+ module ietf-network-topology {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
+ prefix nt;
+
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-network {
+ prefix nw;
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 25]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ description
+ "This module defines a common base model for a network topology,
+ augmenting the base network data model with links to connect
+ nodes, as well as termination points to terminate links
+ on nodes.
+
+ Copyright (c) 2018 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ typedef link-id {
+ type inet:uri;
+ description
+ "An identifier for a link in a topology. The precise
+ structure of the link-id will be up to the implementation.
+ The identifier SHOULD be chosen such that the same link in a
+ real network topology will always be identified through the
+ same identifier, even if the data model is instantiated in
+ separate datastores. An implementation MAY choose to capture
+ semantics in the identifier -- for example, to indicate the
+ type of link and/or the type of topology of which the link is
+ a part.";
+ }
+
+ typedef tp-id {
+ type inet:uri;
+ description
+ "An identifier for termination points on a node. The precise
+ structure of the tp-id will be up to the implementation.
+ The identifier SHOULD be chosen such that the same termination
+ point in a real network topology will always be identified
+ through the same identifier, even if the data model is
+
+
+
+Clemm, et al. Standards Track [Page 26]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ instantiated in separate datastores. An implementation MAY
+ choose to capture semantics in the identifier -- for example,
+ to indicate the type of termination point and/or the type of
+ node that contains the termination point.";
+ }
+
+ grouping link-ref {
+ description
+ "This grouping can be used to reference a link in a specific
+ network. Although it is not used in this module, it is
+ defined here for the convenience of augmenting modules.";
+ leaf link-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/../"+
+ "network-ref]/nt:link/nt:link-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a link instance.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw:network-ref;
+ }
+
+ grouping tp-ref {
+ description
+ "This grouping can be used to reference a termination point
+ in a specific node. Although it is not used in this module,
+ it is defined here for the convenience of augmenting
+ modules.";
+ leaf tp-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/../"+
+ "network-ref]/nw:node[nw:node-id=current()/../"+
+ "node-ref]/nt:termination-point/nt:tp-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a termination point.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw:node-ref;
+ }
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 27]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ augment "/nw:networks/nw:network" {
+ description
+ "Add links to the network data model.";
+ list link {
+ key "link-id";
+ description
+ "A network link connects a local (source) node and
+ a remote (destination) node via a set of the respective
+ node's termination points. It is possible to have several
+ links between the same source and destination nodes.
+ Likewise, a link could potentially be re-homed between
+ termination points. Therefore, in order to ensure that we
+ would always know to distinguish between links, every link
+ is identified by a dedicated link identifier. Note that a
+ link models a point-to-point link, not a multipoint link.";
+ leaf link-id {
+ type link-id;
+ description
+ "The identifier of a link in the topology.
+ A link is specific to a topology to which it belongs.";
+ }
+ container source {
+ description
+ "This container holds the logical source of a particular
+ link.";
+ leaf source-node {
+ type leafref {
+ path "../../../nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "Source node identifier. Must be in the same topology.";
+ }
+ leaf source-tp {
+ type leafref {
+ path "../../../nw:node[nw:node-id=current()/../"+
+ "source-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the source node
+ and terminates the link.";
+ }
+ }
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 28]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ container destination {
+ description
+ "This container holds the logical destination of a
+ particular link.";
+ leaf dest-node {
+ type leafref {
+ path "../../../nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "Destination node identifier. Must be in the same
+ network.";
+ }
+ leaf dest-tp {
+ type leafref {
+ path "../../../nw:node[nw:node-id=current()/../"+
+ "dest-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the
+ destination node and terminates the link.";
+ }
+ }
+ list supporting-link {
+ key "network-ref link-ref";
+ description
+ "Identifies the link or links on which this link depends.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw:supporting-network/nw:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which underlay topology
+ the supporting link is present.";
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 29]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ leaf link-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/"+
+ "../network-ref]/link/link-id";
+ require-instance false;
+ }
+ description
+ "This leaf identifies a link that is a part
+ of this link's underlay. Reference loops in which
+ a link identifies itself as its underlay, either
+ directly or transitively, are not allowed.";
+ }
+ }
+ }
+ }
+ augment "/nw:networks/nw:network/nw:node" {
+ description
+ "Augments termination points that terminate links.
+ Termination points can ultimately be mapped to interfaces.";
+ list termination-point {
+ key "tp-id";
+ description
+ "A termination point can terminate a link.
+ Depending on the type of topology, a termination point
+ could, for example, refer to a port or an interface.";
+ leaf tp-id {
+ type tp-id;
+ description
+ "Termination point identifier.";
+ }
+ list supporting-termination-point {
+ key "network-ref node-ref tp-ref";
+ description
+ "This list identifies any termination points on which a
+ given termination point depends or onto which it maps.
+ Those termination points will themselves be contained
+ in a supporting node. This dependency information can be
+ inferred from the dependencies between links. Therefore,
+ this item is not separately configurable. Hence, no
+ corresponding constraint needs to be articulated.
+ The corresponding information is simply provided by the
+ implementing system.";
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 30]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ leaf network-ref {
+ type leafref {
+ path "../../../nw:supporting-node/nw:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which topology the
+ supporting termination point is present.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "../../../nw:supporting-node/nw:node-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which node the supporting
+ termination point is present.";
+ }
+ leaf tp-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/"+
+ "../network-ref]/nw:node[nw:node-id=current()/../"+
+ "node-ref]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "Reference to the underlay node (the underlay node must
+ be in a different topology).";
+ }
+ }
+ }
+ }
+ }
+
+ <CODE ENDS>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 31]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+7. IANA Considerations
+
+ This document registers the following namespace URIs in the "IETF XML
+ Registry" [RFC3688]:
+
+ URI: urn:ietf:params:xml:ns:yang:ietf-network
+ Registrant Contact: The IESG.
+ XML: N/A; the requested URI is an XML namespace.
+
+ URI: urn:ietf:params:xml:ns:yang:ietf-network-topology
+ Registrant Contact: The IESG.
+ XML: N/A; the requested URI is an XML namespace.
+
+ URI: urn:ietf:params:xml:ns:yang:ietf-network-state
+ Registrant Contact: The IESG.
+ XML: N/A; the requested URI is an XML namespace.
+
+ URI: urn:ietf:params:xml:ns:yang:ietf-network-topology-state
+ Registrant Contact: The IESG.
+ XML: N/A; the requested URI is an XML namespace.
+
+ This document registers the following YANG modules in the "YANG
+ Module Names" registry [RFC6020]:
+
+ Name: ietf-network
+ Namespace: urn:ietf:params:xml:ns:yang:ietf-network
+ Prefix: nw
+ Reference: RFC 8345
+
+ Name: ietf-network-topology
+ Namespace: urn:ietf:params:xml:ns:yang:ietf-network-topology
+ Prefix: nt
+ Reference: RFC 8345
+
+ Name: ietf-network-state
+ Namespace: urn:ietf:params:xml:ns:yang:ietf-network-state
+ Prefix: nw-s
+ Reference: RFC 8345
+
+ Name: ietf-network-topology-state
+ Namespace: urn:ietf:params:xml:ns:yang:ietf-network-topology-state
+ Prefix: nt-s
+ Reference: RFC 8345
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 32]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+8. Security Considerations
+
+ The YANG modules specified in this document define a schema for data
+ that is designed to be accessed via network management protocols such
+ as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
+ is the secure transport layer, and the mandatory-to-implement secure
+ transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
+ is HTTPS, and the mandatory-to-implement secure transport is TLS
+ [RFC5246].
+
+ The NETCONF access control model [RFC8341] provides the means to
+ restrict access for particular NETCONF or RESTCONF users to a
+ preconfigured subset of all available NETCONF or RESTCONF protocol
+ operations and content.
+
+ The network topology and inventory created by these modules reveal
+ information about the structure of networks that could be very
+ helpful to an attacker. As a privacy consideration, although there
+ is no personally identifiable information defined in these modules,
+ it is possible that some node identifiers may be associated with
+ devices that are in turn associated with specific users.
+
+ The YANG modules define information that can be configurable in
+ certain instances -- for example, in the case of overlay topologies
+ that can be created by client applications. In such cases, a
+ malicious client could introduce topologies that are undesired.
+ Specifically, a malicious client could attempt to remove or add a
+ node, a link, or a termination point by creating or deleting
+ corresponding elements in node, link, or termination point lists,
+ respectively. In the case of a topology that is learned, the server
+ will automatically prohibit such misconfiguration attempts. In the
+ case of a topology that is configured, i.e., whose origin is
+ "intended", the undesired configuration could become effective and be
+ reflected in the operational state datastore, leading to disruption
+ of services provided via this topology. For example, the topology
+ could be "cut" or could be configured in a suboptimal way, leading to
+ increased consumption of resources in the underlay network due to the
+ routing and bandwidth utilization inefficiencies that would result.
+ Likewise, it could lead to degradation of service levels as well as
+ possible disruption of service. For those reasons, it is important
+ that the NETCONF access control model be vigorously applied to
+ prevent topology misconfiguration by unauthorized clients.
+
+ There are a number of data nodes defined in these YANG modules that
+ are writable/creatable/deletable (i.e., config true, which is the
+ default). These data nodes may be considered sensitive or vulnerable
+ in some network environments. Write operations (e.g., edit-config)
+
+
+
+
+Clemm, et al. Standards Track [Page 33]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ to these data nodes without proper protection can have a negative
+ effect on network operations. These are the subtrees and data nodes
+ and their sensitivity/vulnerability:
+
+ In the "ietf-network" module:
+
+ o network: A malicious client could attempt to remove or add a
+ network in an effort to remove an overlay topology or to create an
+ unauthorized overlay.
+
+ o supporting network: A malicious client could attempt to disrupt
+ the logical structure of the model, resulting in a lack of overall
+ data integrity and making it more difficult to, for example,
+ troubleshoot problems rooted in the layering of network
+ topologies.
+
+ o node: A malicious client could attempt to remove or add a node
+ from the network -- for example, in order to sabotage the topology
+ of a network overlay.
+
+ o supporting node: A malicious client could attempt to change the
+ supporting node in order to sabotage the layering of an overlay.
+
+ In the "ietf-network-topology" module:
+
+ o link: A malicious client could attempt to remove a link from a
+ topology, add a new link, manipulate the way the link is layered
+ over supporting links, or modify the source or destination of the
+ link. In each case, the structure of the topology would be
+ sabotaged, and this scenario could, for example, result in an
+ overlay topology that is less than optimal.
+
+ o termination point: A malicious client could attempt to remove
+ termination points from a node, add "phantom" termination points
+ to a node, or change the layering dependencies of termination
+ points, again in an effort to sabotage the integrity of a topology
+ and potentially disrupt orderly operations of an overlay.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 34]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+9. References
+
+9.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ DOI 10.17487/RFC3688, January 2004,
+ <https://www.rfc-editor.org/info/rfc3688>.
+
+ [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
+ (TLS) Protocol Version 1.2", RFC 5246,
+ DOI 10.17487/RFC5246, August 2008,
+ <https://www.rfc-editor.org/info/rfc5246>.
+
+ [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
+ the Network Configuration Protocol (NETCONF)", RFC 6020,
+ DOI 10.17487/RFC6020, October 2010,
+ <https://www.rfc-editor.org/info/rfc6020>.
+
+ [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
+ and A. Bierman, Ed., "Network Configuration Protocol
+ (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
+ <https://www.rfc-editor.org/info/rfc6241>.
+
+ [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
+ Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
+ <https://www.rfc-editor.org/info/rfc6242>.
+
+ [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
+ RFC 6991, DOI 10.17487/RFC6991, July 2013,
+ <https://www.rfc-editor.org/info/rfc6991>.
+
+ [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
+ RFC 7950, DOI 10.17487/RFC7950, August 2016,
+ <https://www.rfc-editor.org/info/rfc7950>.
+
+ [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
+ Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
+ <https://www.rfc-editor.org/info/rfc8040>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in
+ RFC 2119 Key Words", BCP 14, RFC 8174,
+ DOI 10.17487/RFC8174, May 2017,
+ <https://www.rfc-editor.org/info/rfc8174>.
+
+
+
+Clemm, et al. Standards Track [Page 35]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
+ Access Control Model", STD 91, RFC 8341,
+ DOI 10.17487/RFC8341, March 2018,
+ <https://www.rfc-editor.org/info/rfc8341>.
+
+ [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
+ and R. Wilton, "Network Management Datastore Architecture
+ (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
+ <https://www.rfc-editor.org/info/rfc8342>.
+
+9.2. Informative References
+
+ [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
+ dual environments", RFC 1195, DOI 10.17487/RFC1195,
+ December 1990, <https://www.rfc-editor.org/info/rfc1195>.
+
+ [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328,
+ DOI 10.17487/RFC2328, April 1998,
+ <https://www.rfc-editor.org/info/rfc2328>.
+
+ [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
+ and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
+ Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
+ <https://www.rfc-editor.org/info/rfc3209>.
+
+ [RFC3444] Pras, A. and J. Schoenwaelder, "On the Difference between
+ Information Models and Data Models", RFC 3444,
+ DOI 10.17487/RFC3444, January 2003,
+ <https://www.rfc-editor.org/info/rfc3444>.
+
+ [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG",
+ RFC 7951, DOI 10.17487/RFC7951, August 2016,
+ <https://www.rfc-editor.org/info/rfc7951>.
+
+ [RFC7952] Lhotka, L., "Defining and Using Metadata with YANG",
+ RFC 7952, DOI 10.17487/RFC7952, August 2016,
+ <https://www.rfc-editor.org/info/rfc7952>.
+
+ [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
+ Management", RFC 8022, DOI 10.17487/RFC8022,
+ November 2016, <https://www.rfc-editor.org/info/rfc8022>.
+
+ [RFC8242] Haas, J. and S. Hares, "Interface to the Routing System
+ (I2RS) Ephemeral State Requirements", RFC 8242,
+ DOI 10.17487/RFC8242, September 2017,
+ <https://www.rfc-editor.org/info/rfc8242>.
+
+
+
+
+
+Clemm, et al. Standards Track [Page 36]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
+ BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
+ <https://www.rfc-editor.org/info/rfc8340>.
+
+ [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
+ Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
+ <https://www.rfc-editor.org/info/rfc8343>.
+
+ [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X.,
+ Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model
+ for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346,
+ March 2018, <https://www.rfc-editor.org/info/rfc8346>.
+
+ [USECASE-REQS]
+ Hares, S. and M. Chen, "Summary of I2RS Use Case
+ Requirements", Work in Progress, draft-ietf-i2rs-usecase-
+ reqs-summary-03, November 2016.
+
+ [YANG-Push]
+ Clemm, A., Voit, E., Gonzalez Prieto, A., Tripathy, A.,
+ Nilsen-Nygaard, E., Bierman, A., and B. Lengyel, "YANG
+ Datastore Subscription", Work in Progress,
+ draft-ietf-netconf-yang-push-15, February 2018.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 37]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+Appendix A. Model Use Cases
+
+A.1. Fetching Topology from a Network Element
+
+ In its simplest form, topology is learned by a network element (e.g.,
+ a router) through its participation in peering protocols (IS-IS, BGP,
+ etc.). This learned topology can then be exported (e.g., to a
+ Network Management System) for external utilization. Typically, any
+ network element in a domain can be queried for its topology and be
+ expected to return the same result.
+
+ In a slightly more complex form, the network element may be a
+ controller. It could be a network element with satellite or
+ subtended devices hanging off of it, or it could be a controller in
+ the more classical sense -- that is, a special device designated to
+ orchestrate the activities of a number of other devices (e.g., an
+ Optical Controller). In this case, the controller device is
+ logically a singleton and must be queried distinctly.
+
+ It is worth noting that controllers can be built on top of other
+ controllers to establish a topology incorporating all of the domains
+ within an entire network.
+
+ In all of the cases above, the topology learned by the network
+ element is considered to be operational state data. That is, the
+ data is accumulated purely by the network element's interactions with
+ other systems and is subject to change dynamically without input or
+ consent.
+
+A.2. Modifying TE Topology Imported from an Optical Controller
+
+ Consider a scenario where an Optical Controller presents its
+ topology, in abstract TE terms, to a client packet controller. This
+ customized topology (which gets merged into the client's native
+ topology) contains sufficient information for the path-computing
+ client to select paths across the optical domain according to its
+ policies. If the client determines (at any given point in time) that
+ this imported topology does not cater exactly to its requirements, it
+ may decide to request modifications to the topology. Such
+ customization requests may include the addition or deletion of
+ topological elements or the modification of attributes associated
+ with existing topological elements. From the perspective of the
+ Optical Controller, these requests translate into configuration
+ changes to the exported abstract topology.
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 38]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+A.3. Annotating Topology for Local Computation
+
+ In certain scenarios, the topology learned by a controller needs to
+ be augmented with additional attributes before running a computation
+ algorithm on it. Consider the case where a path-computation
+ application on the controller needs to take the geographic
+ coordinates of the nodes into account while computing paths on the
+ learned topology. If the learned topology does not contain these
+ coordinates, then these additional attributes must be configured on
+ the corresponding topological elements.
+
+A.4. SDN Controller-Based Configuration of Overlays on Top of Underlays
+
+ In this scenario, an SDN Controller (for example, Open Daylight)
+ maintains a view of the topology of the network that it controls
+ based on information that it discovers from the network. In
+ addition, it provides an application in which it configures and
+ maintains an overlay topology.
+
+ The SDN Controller thus maintains two roles:
+
+ o It is a client to the network.
+
+ o It is a server to its own northbound applications and clients,
+ e.g., an Operations Support System (OSS).
+
+ In other words, one system's client (or controller, in this case) may
+ be another system's server (or managed system).
+
+ In this scenario, the SDN Controller maintains a consolidated data
+ model of multiple layers of topology. This includes the lower layers
+ of the network topology, built from information that is discovered
+ from the network. It also includes upper layers of topology overlay,
+ configurable by the controller's client, i.e., the OSS. To the OSS,
+ the lower topology layers constitute "read-only" information. The
+ upper topology layers need to be read-writable.
+
+Appendix B. Companion YANG Data Models for Implementations Not
+ Compliant with NMDA
+
+ The YANG modules defined in this document are designed to be used in
+ conjunction with implementations that support the Network Management
+ Datastore Architecture (NMDA) as defined in [RFC8342]. In order to
+ allow implementations to use the data model even in cases when NMDA
+ is not supported, the following two companion modules --
+ "ietf-network-state" and "ietf-network-topology-state" -- are
+ defined; they represent the operational state of networks and network
+ topologies, respectively. These modules mirror the "ietf-network"
+
+
+
+Clemm, et al. Standards Track [Page 39]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ and "ietf-network-topology" modules (defined in Sections 6.1 and 6.2
+ of this document); however, in the case of these modules, all data
+ nodes are non-configurable. They represent state that comes into
+ being by either (1) learning topology information from the network or
+ (2) applying configuration from the mirrored modules.
+
+ The "ietf-network-state" and "ietf-network-topology-state" companion
+ modules are redundant and SHOULD NOT be supported by implementations
+ that support NMDA; therefore, we define these modules in
+ Appendices B.1 and B.2 (below) instead of the main body of this
+ document.
+
+ As the structure of both modules mirrors that of their underlying
+ modules, the YANG tree is not depicted separately.
+
+B.1. YANG Module for Network State
+
+<CODE BEGINS> file "ietf-network-state@2018-02-26.yang"
+
+module ietf-network-state {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-state";
+ prefix nw-s;
+
+ import ietf-network {
+ prefix nw;
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+
+
+Clemm, et al. Standards Track [Page 40]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+
+ description
+ "This module defines a common base data model for a collection
+ of nodes in a network. Node definitions are further used
+ in network topologies and inventories. It represents
+ information that either (1) is learned and automatically
+ populated or (2) results from applying network information
+ that has been configured per the 'ietf-network' data model,
+ mirroring the corresponding data nodes in this data model.
+
+ The data model mirrors 'ietf-network' but contains only
+ read-only state data. The data model is not needed when the
+ underlying implementation infrastructure supports the Network
+ Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2018 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 41]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ grouping network-ref {
+ description
+ "Contains the information necessary to reference a network --
+ for example, an underlay network.";
+ leaf network-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network/nw-s:network-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a network -- for example, an underlay
+ network.";
+ }
+ }
+
+ grouping node-ref {
+ description
+ "Contains the information necessary to reference a node.";
+ leaf node-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
+ "/../network-ref]/nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a node.
+ Nodes are identified relative to the network that
+ contains them.";
+ }
+ uses network-ref;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 42]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ container networks {
+ config false;
+ description
+ "Serves as a top-level container for a list of networks.";
+ list network {
+ key "network-id";
+ description
+ "Describes a network.
+ A network typically contains an inventory of nodes,
+ topological information (augmented through the
+ network-topology data model), and layering information.";
+ container network-types {
+ description
+ "Serves as an augmentation target.
+ The network type is indicated through corresponding
+ presence containers augmented into this container.";
+ }
+ leaf network-id {
+ type nw:network-id;
+ description
+ "Identifies a network.";
+ }
+ list supporting-network {
+ key "network-ref";
+ description
+ "An underlay network, used to represent layered network
+ topologies.";
+ leaf network-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network/nw-s:network-id";
+ require-instance false;
+ }
+ description
+ "References the underlay network.";
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 43]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ list node {
+ key "node-id";
+ description
+ "The inventory of nodes of this network.";
+ leaf node-id {
+ type nw:node-id;
+ description
+ "Uniquely identifies a node within the containing
+ network.";
+ }
+ list supporting-node {
+ key "network-ref node-ref";
+ description
+ "Represents another node that is in an underlay network
+ and that supports this node. Used to represent layering
+ structure.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw-s:supporting-network/nw-s:network-ref";
+ require-instance false;
+ }
+ description
+ "References the underlay network of which the
+ underlay node is a part.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network/nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "References the underlay node itself.";
+ }
+ }
+ }
+ }
+ }
+}
+
+<CODE ENDS>
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 44]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+B.2. YANG Module for Network Topology State
+
+ <CODE BEGINS> file "ietf-network-topology-state@2018-02-26.yang"
+
+ module ietf-network-topology-state {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology-state";
+ prefix nt-s;
+
+ import ietf-network-state {
+ prefix nw-s;
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+ import ietf-network-topology {
+ prefix nt;
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 45]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ description
+ "This module defines a common base data model for network
+ topology state, representing topology that either (1) is learned
+ or (2) results from applying topology that has been configured
+ per the 'ietf-network-topology' data model, mirroring the
+ corresponding data nodes in this data model. It augments the
+ base network state data model with links to connect nodes, as
+ well as termination points to terminate links on nodes.
+
+ The data model mirrors 'ietf-network-topology' but contains only
+ read-only state data. The data model is not needed when the
+ underlying implementation infrastructure supports the Network
+ Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2018 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 46]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ grouping link-ref {
+ description
+ "References a link in a specific network. Although this
+ grouping is not used in this module, it is defined here for
+ the convenience of augmenting modules.";
+ leaf link-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
+ "/../network-ref]/nt-s:link/nt-s:link-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a link instance.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw-s:network-ref;
+ }
+
+ grouping tp-ref {
+ description
+ "References a termination point in a specific node. Although
+ this grouping is not used in this module, it is defined here
+ for the convenience of augmenting modules.";
+ leaf tp-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
+ "/../network-ref]/nw-s:node[nw-s:node-id=current()/../"+
+ "node-ref]/nt-s:termination-point/nt-s:tp-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a termination point.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw-s:node-ref;
+ }
+
+ augment "/nw-s:networks/nw-s:network" {
+ description
+ "Add links to the network data model.";
+ list link {
+ key "link-id";
+ description
+ "A network link connects a local (source) node and
+ a remote (destination) node via a set of the respective
+ node's termination points. It is possible to have several
+
+
+
+Clemm, et al. Standards Track [Page 47]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ links between the same source and destination nodes.
+ Likewise, a link could potentially be re-homed between
+ termination points. Therefore, in order to ensure that we
+ would always know to distinguish between links, every link
+ is identified by a dedicated link identifier. Note that a
+ link models a point-to-point link, not a multipoint link.";
+ container source {
+ description
+ "This container holds the logical source of a particular
+ link.";
+ leaf source-node {
+ type leafref {
+ path "../../../nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "Source node identifier. Must be in the same topology.";
+ }
+ leaf source-tp {
+ type leafref {
+ path "../../../nw-s:node[nw-s:node-id=current()/../"+
+ "source-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the source node
+ and terminates the link.";
+ }
+ }
+ container destination {
+ description
+ "This container holds the logical destination of a
+ particular link.";
+ leaf dest-node {
+ type leafref {
+ path "../../../nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "Destination node identifier. Must be in the same
+ network.";
+ }
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 48]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ leaf dest-tp {
+ type leafref {
+ path "../../../nw-s:node[nw-s:node-id=current()/../"+
+ "dest-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the
+ destination node and terminates the link.";
+ }
+ }
+ leaf link-id {
+ type nt:link-id;
+ description
+ "The identifier of a link in the topology.
+ A link is specific to a topology to which it belongs.";
+ }
+ list supporting-link {
+ key "network-ref link-ref";
+ description
+ "Identifies the link or links on which this link depends.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw-s:supporting-network/nw-s:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which underlay topology
+ the supporting link is present.";
+ }
+ leaf link-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id="+
+ "current()/../network-ref]/link/link-id";
+ require-instance false;
+ }
+ description
+ "This leaf identifies a link that is a part
+ of this link's underlay. Reference loops in which
+ a link identifies itself as its underlay, either
+ directly or transitively, are not allowed.";
+ }
+ }
+ }
+ }
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 49]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ augment "/nw-s:networks/nw-s:network/nw-s:node" {
+ description
+ "Augments termination points that terminate links.
+ Termination points can ultimately be mapped to interfaces.";
+ list termination-point {
+ key "tp-id";
+ description
+ "A termination point can terminate a link.
+ Depending on the type of topology, a termination point
+ could, for example, refer to a port or an interface.";
+ leaf tp-id {
+ type nt:tp-id;
+ description
+ "Termination point identifier.";
+ }
+ list supporting-termination-point {
+ key "network-ref node-ref tp-ref";
+ description
+ "This list identifies any termination points on which a
+ given termination point depends or onto which it maps.
+ Those termination points will themselves be contained
+ in a supporting node. This dependency information can be
+ inferred from the dependencies between links. Therefore,
+ this item is not separately configurable. Hence, no
+ corresponding constraint needs to be articulated.
+ The corresponding information is simply provided by the
+ implementing system.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw-s:supporting-node/nw-s:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which topology the
+ supporting termination point is present.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "../../../nw-s:supporting-node/nw-s:node-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which node the supporting
+ termination point is present.";
+ }
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 50]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ leaf tp-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id="+
+ "current()/../network-ref]/nw-s:node[nw-s:node-id="+
+ "current()/../node-ref]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "Reference to the underlay node (the underlay node must
+ be in a different topology).";
+ }
+ }
+ }
+ }
+ }
+
+ <CODE ENDS>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 51]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+Appendix C. An Example
+
+ This section contains an example of an instance data tree in JSON
+ encoding [RFC7951]. The example instantiates "ietf-network-topology"
+ (and "ietf-network", which "ietf-network-topology" augments) for the
+ topology depicted in Figure 7. There are three nodes: D1, D2, and
+ D3. D1 has three termination points (1-0-1, 1-2-1, and 1-3-1).
+ D2 has three termination points as well (2-1-1, 2-0-1, and 2-3-1).
+ D3 has two termination points (3-1-1 and 3-2-1). In addition, there
+ are six links, two between each pair of nodes with one going in each
+ direction.
+
+ +------------+ +------------+
+ | D1 | | D2 |
+ /-\ /-\ /-\ /-\
+ | | 1-0-1 | |---------------->| | 2-1-1 | |
+ | | 1-2-1 | |<----------------| | 2-0-1 | |
+ \-/ 1-3-1 \-/ \-/ 2-3-1 \-/
+ | /----\ | | /----\ |
+ +---| |---+ +---| |---+
+ \----/ \----/
+ A | A |
+ | | | |
+ | | | |
+ | | +------------+ | |
+ | | | D3 | | |
+ | | /-\ /-\ | |
+ | +----->| | 3-1-1 | |-------+ |
+ +---------| | 3-2-1 | |<---------+
+ \-/ \-/
+ | |
+ +------------+
+
+ Figure 7: A Network Topology Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 52]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ The corresponding instance data tree is depicted in Figure 8:
+
+ {
+ "ietf-network:networks": {
+ "network": [
+ {
+ "network-types": {
+ },
+ "network-id": "otn-hc",
+ "node": [
+ {
+ "node-id": "D1",
+ "termination-point": [
+ {
+ "tp-id": "1-0-1"
+ },
+ {
+ "tp-id": "1-2-1"
+ },
+ {
+ "tp-id": "1-3-1"
+ }
+ ]
+ },
+ {
+ "node-id": "D2",
+ "termination-point": [
+ {
+ "tp-id": "2-0-1"
+ },
+ {
+ "tp-id": "2-1-1"
+ },
+ {
+ "tp-id": "2-3-1"
+ }
+ ]
+ },
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 53]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ {
+ "node-id": "D3",
+ "termination-point": [
+ {
+ "tp-id": "3-1-1"
+ },
+ {
+ "tp-id": "3-2-1"
+ }
+ ]
+ }
+ ],
+ "ietf-network-topology:link": [
+ {
+ "link-id": "D1,1-2-1,D2,2-1-1",
+ "source": {
+ "source-node": "D1",
+ "source-tp": "1-2-1"
+ }
+ "destination": {
+ "dest-node": "D2",
+ "dest-tp": "2-1-1"
+ }
+ },
+ {
+ "link-id": "D2,2-1-1,D1,1-2-1",
+ "source": {
+ "source-node": "D2",
+ "source-tp": "2-1-1"
+ }
+ "destination": {
+ "dest-node": "D1",
+ "dest-tp": "1-2-1"
+ }
+ },
+ {
+ "link-id": "D1,1-3-1,D3,3-1-1",
+ "source": {
+ "source-node": "D1",
+ "source-tp": "1-3-1"
+ }
+ "destination": {
+ "dest-node": "D3",
+ "dest-tp": "3-1-1"
+ }
+ },
+
+
+
+
+
+Clemm, et al. Standards Track [Page 54]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+ {
+ "link-id": "D3,3-1-1,D1,1-3-1",
+ "source": {
+ "source-node": "D3",
+ "source-tp": "3-1-1"
+ }
+ "destination": {
+ "dest-node": "D1",
+ "dest-tp": "1-3-1"
+ }
+ },
+ {
+ "link-id": "D2,2-3-1,D3,3-2-1",
+ "source": {
+ "source-node": "D2",
+ "source-tp": "2-3-1"
+ }
+ "destination": {
+ "dest-node": "D3",
+ "dest-tp": "3-2-1"
+ }
+ },
+ {
+ "link-id": "D3,3-2-1,D2,2-3-1",
+ "source": {
+ "source-node": "D3",
+ "source-tp": "3-2-1"
+ }
+ "destination": {
+ "dest-node": "D2",
+ "dest-tp": "2-3-1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+
+ Figure 8: Instance Data Tree
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 55]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+Acknowledgments
+
+ We wish to acknowledge the helpful contributions, comments, and
+ suggestions that were received from Alia Atlas, Andy Bierman, Martin
+ Bjorklund, Igor Bryskin, Benoit Claise, Susan Hares, Ladislav Lhotka,
+ Carlos Pignataro, Juergen Schoenwaelder, Robert Wilton, Qin Wu, and
+ Xian Zhang.
+
+Contributors
+
+ More people contributed to the data model presented in this paper
+ than can be listed in the "Authors' Addresses" section. Additional
+ contributors include:
+
+ o Vishnu Pavan Beeram, Juniper
+
+ o Ken Gray, Cisco
+
+ o Tom Nadeau, Brocade
+
+ o Tony Tkacik
+
+ o Kent Watsen, Juniper
+
+ o Aleksandr Zhdankin, Cisco
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 56]
+
+RFC 8345 YANG Data Model for Network Topologies March 2018
+
+
+Authors' Addresses
+
+ Alexander Clemm
+ Huawei USA - Futurewei Technologies Inc.
+ Santa Clara, CA
+ United States of America
+
+ Email: ludwig@clemm.org, alexander.clemm@huawei.com
+
+
+ Jan Medved
+ Cisco
+
+ Email: jmedved@cisco.com
+
+
+ Robert Varga
+ Pantheon Technologies SRO
+
+ Email: robert.varga@pantheon.tech
+
+
+ Nitin Bahadur
+ Bracket Computing
+
+ Email: nitin_bahadur@yahoo.com
+
+
+ Hariharan Ananthakrishnan
+ Packet Design
+
+ Email: hari@packetdesign.com
+
+
+ Xufeng Liu
+ Jabil
+
+ Email: xufeng.liu.ietf@gmail.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clemm, et al. Standards Track [Page 57]
+