1 module ietf-network-topology-state {
3 namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology-state";
6 import ietf-network-state {
9 "RFC 8345: A YANG Data Model for Network Topologies";
11 import ietf-network-topology {
14 "RFC 8345: A YANG Data Model for Network Topologies";
18 "IETF I2RS (Interface to the Routing System) Working Group";
21 "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
22 WG List: <mailto:i2rs@ietf.org>
24 Editor: Alexander Clemm
25 <mailto:ludwig@clemm.org>
28 <mailto:jmedved@cisco.com>
31 <mailto:robert.varga@pantheon.tech>
34 <mailto:nitin_bahadur@yahoo.com>
36 Editor: Hariharan Ananthakrishnan
37 <mailto:hari@packetdesign.com>
40 <mailto:xufeng.liu.ietf@gmail.com>";
43 "This module defines a common base data model for network
44 topology state, representing topology that either (1) is learned
45 or (2) results from applying topology that has been configured
46 per the 'ietf-network-topology' data model, mirroring the
47 corresponding data nodes in this data model. It augments the
48 base network state data model with links to connect nodes, as
49 well as termination points to terminate links on nodes.
51 The data model mirrors 'ietf-network-topology' but contains only
52 read-only state data. The data model is not needed when the
53 underlying implementation infrastructure supports the Network
54 Management Datastore Architecture (NMDA).
56 Copyright (c) 2018 IETF Trust and the persons identified as
57 authors of the code. All rights reserved.
59 Redistribution and use in source and binary forms, with or
60 without modification, is permitted pursuant to, and subject
61 to the license terms contained in, the Simplified BSD License
62 set forth in Section 4.c of the IETF Trust's Legal Provisions
63 Relating to IETF Documents
64 (https://trustee.ietf.org/license-info).
66 This version of this YANG module is part of RFC 8345;
67 see the RFC itself for full legal notices.";
73 "RFC 8345: A YANG Data Model for Network Topologies";
78 "References a link in a specific network. Although this
79 grouping is not used in this module, it is defined here for
80 the convenience of augmenting modules.";
83 path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
84 "/../network-ref]/nt-s:link/nt-s:link-id";
85 require-instance false;
88 "A type for an absolute reference to a link instance.
89 (This type should not be used for relative references.
90 In such a case, a relative path should be used instead.)";
92 uses nw-s:network-ref;
97 "References a termination point in a specific node. Although
98 this grouping is not used in this module, it is defined here
99 for the convenience of augmenting modules.";
102 path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
103 "/../network-ref]/nw-s:node[nw-s:node-id=current()/../"+
104 "node-ref]/nt-s:termination-point/nt-s:tp-id";
105 require-instance false;
108 "A type for an absolute reference to a termination point.
109 (This type should not be used for relative references.
110 In such a case, a relative path should be used instead.)";
115 augment "/nw-s:networks/nw-s:network" {
117 "Add links to the network data model.";
121 "A network link connects a local (source) node and
122 a remote (destination) node via a set of the respective
123 node's termination points. It is possible to have several
124 links between the same source and destination nodes.
125 Likewise, a link could potentially be re-homed between
126 termination points. Therefore, in order to ensure that we
127 would always know to distinguish between links, every link
128 is identified by a dedicated link identifier. Note that a
129 link models a point-to-point link, not a multipoint link.";
132 "This container holds the logical source of a particular
136 path "../../../nw-s:node/nw-s:node-id";
137 require-instance false;
140 "Source node identifier. Must be in the same topology.";
144 path "../../../nw-s:node[nw-s:node-id=current()/../"+
145 "source-node]/termination-point/tp-id";
146 require-instance false;
149 "This termination point is located within the source node
150 and terminates the link.";
153 container destination {
155 "This container holds the logical destination of a
159 path "../../../nw-s:node/nw-s:node-id";
160 require-instance false;
163 "Destination node identifier. Must be in the same
169 path "../../../nw-s:node[nw-s:node-id=current()/../"+
170 "dest-node]/termination-point/tp-id";
171 require-instance false;
174 "This termination point is located within the
175 destination node and terminates the link.";
181 "The identifier of a link in the topology.
182 A link is specific to a topology to which it belongs.";
184 list supporting-link {
185 key "network-ref link-ref";
187 "Identifies the link or links on which this link depends.";
190 path "../../../nw-s:supporting-network/nw-s:network-ref";
191 require-instance false;
194 "This leaf identifies in which underlay topology
195 the supporting link is present.";
199 path "/nw-s:networks/nw-s:network[nw-s:network-id="+
200 "current()/../network-ref]/link/link-id";
201 require-instance false;
204 "This leaf identifies a link that is a part
205 of this link's underlay. Reference loops in which
206 a link identifies itself as its underlay, either
207 directly or transitively, are not allowed.";
213 augment "/nw-s:networks/nw-s:network/nw-s:node" {
215 "Augments termination points that terminate links.
216 Termination points can ultimately be mapped to interfaces.";
217 list termination-point {
220 "A termination point can terminate a link.
221 Depending on the type of topology, a termination point
222 could, for example, refer to a port or an interface.";
226 "Termination point identifier.";
228 list supporting-termination-point {
229 key "network-ref node-ref tp-ref";
231 "This list identifies any termination points on which a
232 given termination point depends or onto which it maps.
233 Those termination points will themselves be contained
234 in a supporting node. This dependency information can be
235 inferred from the dependencies between links. Therefore,
236 this item is not separately configurable. Hence, no
237 corresponding constraint needs to be articulated.
238 The corresponding information is simply provided by the
239 implementing system.";
242 path "../../../nw-s:supporting-node/nw-s:network-ref";
243 require-instance false;
246 "This leaf identifies in which topology the
247 supporting termination point is present.";
251 path "../../../nw-s:supporting-node/nw-s:node-ref";
252 require-instance false;
255 "This leaf identifies in which node the supporting
256 termination point is present.";
261 path "/nw-s:networks/nw-s:network[nw-s:network-id="+
262 "current()/../network-ref]/nw-s:node[nw-s:node-id="+
263 "current()/../node-ref]/termination-point/tp-id";
264 require-instance false;
267 "Reference to the underlay node (the underlay node must
268 be in a different topology).";