7 module ietf-network-topology {
9 namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
12 import ietf-inet-types {
21 "WILL-BE-DEFINED-LATER";
23 "This module defines a common base model for network topology,
24 augmenting the base network model with links to connect nodes,
25 as well as termination points to terminate links on nodes.";
30 reference "draft-ietf-i2rs-yang-network-topo-01";
36 "An identifier for a link in a topology.
37 The identifier may be opaque.
38 The identifier SHOULD be chosen such that the same link in a
39 real network topology will always be identified through the
40 same identifier, even if the model is instantiated in
41 separate datastores. An implementation MAY choose to capture
42 semantics in the identifier, for example to indicate the type
43 of link and/or the type of topology that the link is a part
50 "An identifier for termination points on a node.
51 The identifier may be opaque.
52 The identifier SHOULD be chosen such that the same TP in a
53 real network topology will always be identified through the
54 same identifier, even if the model is instantiated in
55 separate datastores. An implementation MAY choose to capture
56 semantics in the identifier, for example to indicate the type
57 of TP and/or the type of node and topology that the TP is a
63 "References a link in a specific network.";
66 path "/nd:network[nd:network-id=current()/../"+
67 "nd:network-ref]/link/link-id";
70 "A type for an absolute reference a link instance.
71 (This type should not be used for relative references.
72 In such a case, a relative path should be used instead.)";
79 "References a termination point in a specific node.";
82 path "/nd:network[nd:network-id=current()/../"+
83 "nd:network-ref]/nd:node[nd:node-id=current()/../"+
84 "nd:node-ref]/termination-point/tp-id";
87 "A type for an absolute reference to a termination point.
88 (This type should not be used for relative references.
89 In such a case, a relative path should be used instead.)";
94 augment "/nd:network" {
96 "Add links to the network model.";
101 "A Network Link connects a by Local (Source) node and
102 a Remote (Destination) Network Nodes via a set of the
103 nodes' termination points.
104 As it is possible to have several links between the same
105 source and destination nodes, and as a link could
106 potentially be re-homed between termination points, to
107 ensure that we would always know to distinguish between
108 links, every link is identified by a dedicated link
110 Note that a link models a point-to-point link, not a
112 Layering dependencies on links in underlay topologies are
113 not represented as the layering information of nodes and of
114 termination points is sufficient.";
117 "This container holds the logical source of a particular
122 path "../../../../nd:network/nd:node/nd:node-id";
126 "Source node identifier, must be in same topology.";
131 path "../../../../nd:network/nd:node[nd:node-id=current()/../"+
132 "source-node]/termination-point/tp-id";
135 "Termination point within source node that terminates
139 container destination {
141 "This container holds the logical destination of a
146 path "../../../../nd:network/nd:node/nd:node-id";
150 "Destination node identifier, must be in the same
156 path "../../../../nd:network/nd:node[nd:node-id=current()/../"+
157 "dest-node]/termination-point/tp-id";
160 "Termination point within destination node that
161 terminates the link.";
167 "The identifier of a link in the topology.
168 A link is specific to a topology to which it belongs.";
170 list supporting-link {
171 key "network-ref link-ref";
173 "Identifies the link, or links, that this link
178 path "../../../../nd:network/nd:supporting-network/nd:network-ref";
181 "This leaf identifies in which underlay topology
182 supporting link is present.";
186 path "/nd:network[nd:network-id=current()/.."+
187 "/network-ref]/link/link-id";
190 "This leaf identifies a link which is a part
191 of this link's underlay. Reference loops, in which
192 a link identifies itself as its underlay, either
193 directly or transitively, are not allowed.";
198 augment "/nd:network/nd:node" {
200 "Augment termination points which terminate links.
201 Termination points can ultimately be mapped to interfaces.";
202 list termination-point {
205 "A termination point can terminate a link.
206 Depending on the type of topology, a termination point
207 could, for example, refer to a port or an interface.";
211 "Termination point identifier.";
213 list supporting-termination-point {
214 key "network-ref node-ref tp-ref";
216 "The leaf list identifies any termination points that
217 the termination point is dependent on, or maps onto.
218 Those termination points will themselves be contained
219 in a supporting node.
220 This dependency information can be inferred from
221 the dependencies between links. For this reason,
222 this item is not separately configurable. Hence no
223 corresponding constraint needs to be articulated.
224 The corresponding information is simply provided by the
225 implementing system.";
229 path "/nd:network/nd:node/nd:supporting-node/nd:network-ref";
232 "This leaf identifies in which topology the
233 supporting termination point is present.";
238 path "/nd:network/nd:node/nd:supporting-node/nd:node-ref";
241 "This leaf identifies in which node the supporting
242 termination point is present.";
246 path "/nd:network[nd:network-id=current()/../"+
247 "network-ref]/nd:node[nd:node-id=current()/../"+
248 "node-ref]/termination-point/tp-id";
251 "Reference to the underlay node, must be in a