idnits 2.17.1 draft-clemm-i2rs-yang-l3-topo-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There are 12 instances of too long lines in the document, the longest one being 22 characters in excess of 72. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 1723: '...sed for sending the topology data MUST...' RFC 2119 keyword, line 1724: '...thentication and SHOULD support encryp...' Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 257 has weird spacing: '... prefix ine...' == The document seems to contain a disclaimer for pre-RFC5378 work, but was first submitted on or after 10 November 2008. The disclaimer is usually necessary only for documents that revise or obsolete older RFCs, and that take significant amounts of text from those RFCs. If you can contact all authors of the source material and they are willing to grant the BCP78 rights to the IETF Trust, you can and should remove the disclaimer. Otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 27, 2014) is 3468 days in the past. Is this intentional? Checking references for intended status: Experimental ---------------------------------------------------------------------------- == Unused Reference: 'RFC7223' is defined on line 1766, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2178 (Obsoleted by RFC 2328) ** Obsolete normative reference: RFC 6021 (Obsoleted by RFC 6991) ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) Summary: 6 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Clemm 3 Internet-Draft J. Medved 4 Intended status: Experimental Cisco 5 Expires: April 30, 2015 R. Varga 6 T. Tkacik 7 Pantheon Technologies SRO 8 X. Liu 9 Ericsson 10 I. Bryskin 11 A. Guo 12 Adva Optical 13 H. Ananthakrishnan 14 Packet Design 15 N. Bahadur 16 Bracket Computing 17 V. Beeram 18 Juniper Networks 19 October 27, 2014 21 A YANG Data Model for Layer 3 Topologies 22 draft-clemm-i2rs-yang-l3-topo-00.txt 24 Abstract 26 This document defines a YANG data model for layer 3 network 27 topologies. 29 Status of This Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at http://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on April 30, 2015. 46 Copyright Notice 48 Copyright (c) 2014 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (http://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 This document may contain material from IETF Documents or IETF 62 Contributions published or made publicly available before November 63 10, 2008. The person(s) controlling the copyright in some of this 64 material may not have granted the IETF Trust the right to allow 65 modifications of such material outside the IETF Standards Process. 66 Without obtaining an adequate license from the person(s) controlling 67 the copyright in such materials, this document may not be modified 68 outside the IETF Standards Process, and derivative works of it may 69 not be created outside the IETF Standards Process, except to format 70 it for publication as an RFC or to translate it into languages other 71 than English. 73 Table of Contents 75 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 76 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 4 77 3. Model overview . . . . . . . . . . . . . . . . . . . . . . . 5 78 3.1. Model structure . . . . . . . . . . . . . . . . . . . . . 5 79 3.2. Layer 3 Unicast - IGP . . . . . . . . . . . . . . . . . . 6 80 3.3. OSPF Topology . . . . . . . . . . . . . . . . . . . . . . 7 81 3.4. IS-IS Topology . . . . . . . . . . . . . . . . . . . . . 9 82 3.5. TED - Traffic Engineering Data . . . . . . . . . . . . . 10 83 4. Layer 3 Unicast IGP Topology YANG Module . . . . . . . . . . 11 84 5. OSPF Topology YANG Module . . . . . . . . . . . . . . . . . . 17 85 6. ISIS Topology YANG Module . . . . . . . . . . . . . . . . . . 22 86 7. TED YANG Module . . . . . . . . . . . . . . . . . . . . . . . 25 87 8. Security Considerations . . . . . . . . . . . . . . . . . . . 37 88 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 37 89 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 37 90 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 91 11.1. Normative References . . . . . . . . . . . . . . . . . . 37 92 11.2. Informative References . . . . . . . . . . . . . . . . . 38 94 1. Introduction 96 This document introduces a YANG [RFC6020] [RFC6021] data model for 97 Layer 3 network topologies. The model allows an application to have 98 a holistic view of the topology of a Layer 3 network, all contained 99 in a single conceptual YANG datastore. The data model builds on top 100 of, and augments, the data model for network topologies defined in 101 [topology-dm]. An earlier revision of that Internet Draft contained 102 not just the general model for network topologies, but also the model 103 for layer 3 network topologies that is being specified here. 104 However, we decided to "split" the earlier draft to separate the 105 truly general aspects of a topology data model, which apply to any 106 type of topology, from the application of this model to a particular 107 domain, here: a Layer 3 network. 109 Specific topology types that are covered in this document include 110 Layer 3 Unicast IGP, IS-IS [RFC1195], and OSPF [RFC2178]. In 111 addition, this documents defines a set of traffic engineering 112 extensions. 114 There are multiple applications for such a data model. For example, 115 nodes within the network can use the data model to capture their 116 understanding of the overall network topology and expose it to a 117 network controller. A network controller can then use the 118 instantiated topology data to compare and reconcile its own view of 119 the network topology with that of the network elements that it 120 controls. Alternatively, nodes within the network could propagate 121 this understanding to compare and reconcile this understanding either 122 amongst themselves or with help of a controller. Beyond the network 123 element itself, a network controller might even use the data model to 124 represent its view of the topology that it controls and expose it to 125 applications north of itself. 127 There are several reasons to choose YANG to define the data model. 128 Data defined using YANG can be exposed by a server to client 129 applications and controllers via Netconf [RFC6241] or via a ReST 130 Interface [restconf] [yang-json]. The fact that it can be used with 131 different protocols and interfaces provides for a degree of "future- 132 proofing" of model implementations. Also, YANG can serve as the 133 basis for model-driven toolchains, such as used in the Open Daylight 134 project. 136 The data model is defined in several YANG modules: 138 o Module "l3-unicast-igp-topology" defines a model for Layer 3 139 Unicast IGP topologies. To do so, it augments general network 140 topology model defined in [topology-dm] with information specific 141 to Layer 3 Unicast IGP. In doing so, it also illustrates the 142 extension patterns associated with extending respectively 143 augmenting the general topology model to meet the needs of a 144 specific topology. 146 o Module "ospf-topology" defines a topology model for OSPF, building 147 on and extending the Layer 3 Unicast IGP topology model. It 148 serves as an example of how the general topology model can be 149 refined across multiple levels. 151 o Module "isis-topology" defines a topology model for IS-IS, again 152 building on and extending the Layer 3 Unicast IGP topology model. 154 o Module "ted", finally, is a helper module, defining information 155 kept in the Traffic Engineering Database (TED) that is leveraged 156 by IS-IS and OSPF topologies. EDITOR'S NOTE: This module will be 157 removed in subsequent revisions. Instead, it will be specified in 158 a separate draft, [yang-ted]. 160 2. Definitions and Acronyms 162 Datastore: A conceptual store of instantiated management information, 163 with individual data items represented by data nodes which are 164 arranged in hierarchical manner. 166 Data subtree: An instantiated data node and the data nodes that are 167 hierarchically contained within it. 169 HTTP: Hyper-Text Transfer Protocol 171 IGP: Interior Gateway Protocol 173 IS-IS: Intermediate System to Intermediate System protocol 175 LSP: Label Switched Path 177 NETCONF: Network Configuration Protocol 179 OSPF: Open Shortest Path First, a link state routing protocol 181 URI: Uniform Resource Identifier 183 ReST: Representational State Transfer, a style of stateless interface 184 and protocol that is generally carried over HTTP 186 SRLG: Shared Risk Link Group 188 TED: Traffic Engineering Database 189 YANG: A data definition language for NETCONF 191 3. Model overview 193 This section provides an overview of the Layer 3 network topology 194 model. 196 3.1. Model structure 198 The network topology model is defined by the following YANG modules, 199 whose relationship is roughly depicted in the figure below. The base 200 network topology is included in the diagram for completeness. 202 +-----------------------+ 203 | network-topology | 204 | [topology-dm] | 205 +-----------+-----------+ 206 ^ 207 | 208 | 209 +-----------^-------------+ 210 | l3-unicast-igp-topology | 211 +----+---------------+----+ 212 ^ ^ 213 | | 214 | | 215 +--------^-----+ +-----^---------+ +--------+ 216 | ospf-topology| | isis-topology | | ted | 217 +--------^-----+ +-----^---------+ +----v---+ 218 : : : 219 :...............:...................: 221 Figure 1: Overall model structure 223 YANG module network-topology defines the basic network topology 224 model. YANG module l3-unicast-igp-topology augments network-topology 225 with additional definitions needed to represent Layer 3 Unicast IGP 226 topologies. This module in turn is augmented by YANG modules with 227 additional definitions for OSPF and for IS-IS topologies, ospf- 228 topology and isis-topology, respectively. Finally, YANG module "ted" 229 contains a set of auxiliary definitions used by both ospf-topology 230 and isis-topology, capturing data related to traffic engineering. 231 EDITOR'S NOTE: Module "ted" will be removed from subsequent revisions 232 and be specified in a separate draft, [yang-ted]. 234 3.2. Layer 3 Unicast - IGP 236 The Layer 3 Unicast IGP topology model is defined by YANG module "l3- 237 unicast-igp-topology". The model is depicted in the following 238 diagram. Brackets enclose list keys, "rw" means configuration, "ro" 239 operational state data, "?" designates optional nodes, "*" designates 240 nodes that can have multiple instances. Parantheses enclose choice 241 and case nodes. Notifications are not depicted. The prefix "nt:" 242 refers to the YANG module for network topology. 244 module: l3-unicast-igp-topology 245 augment /nt:network-topology/nt:topology/nt:topology-types: 246 +--rw l3-unicast-igp-topology! 247 augment /nt:network-topology/nt:topology: 248 +--rw igp-topology-attributes 249 +--rw name? string 250 +--rw flag* flag-type 251 augment /nt:network-topology/nt:topology/nt:node: 252 +--rw igp-node-attributes 253 +--rw name? inet:domain-name 254 +--rw flag* flag-type 255 +--rw router-id* inet:ip-address 256 +--rw prefix* [prefix] 257 +--rw prefix inet:ip-prefix 258 +--rw metric? uint32 259 +--rw flag* flag-type 260 augment /nt:network-topology/nt:topology/nt:link: 261 +--rw igp-link-attributes 262 +--rw name? string 263 +--rw flag* flag-type 264 +--rw metric? uint32 265 augment /nt:network-topology/nt:topology/nt:node/nt:termination-point: 266 +--rw igp-termination-point-attributes 267 +--rw (termination-point-type)? 268 +--:(ip) 269 | +--rw ip-address* inet:ip-address 270 +--:(unnumbered) 271 +--rw unnumbered-id? uint32 273 The module augments the original network-topology module as follows: 275 o A new topology type is introduced, l3-unicast-igp-topology-type. 277 o Additional topology attributes are introduced, defined in a 278 grouping, which augments the "topology" list of the network 279 topology module. The attributes include an IGP name, as well as a 280 set of flags (represented through a leaf-list). Each type of flag 281 is represented by a separate identity. This allows to introduce 282 additional flags in augmenting modules that are associated with 283 specific IGP topologies, without needing to revise this module. 285 o Additional data objects for nodes are introduced by augmenting the 286 "node" list of the network topology module. New objects include 287 again a set of flags, as well as a list of prefixes. Each prefix 288 in turn includes an ip prefix, a metric, and a prefix-specific set 289 of flags. 291 o Links are augmented as well with a set of parameters, allowing to 292 associate a link with an IGP name, another set of flags, and a 293 link metric. 295 o Termination points are augmented with a choice of IP address or 296 identifier. 298 In addition, the module defines a set of notifications to alert 299 clients of any events concerning links, nodes, prefixes, and 300 termination points. Each notification includes an indication of the 301 type of event, the topology from which it originated, and the 302 affected node, or link, or prefix, or termination point. In 303 addition, as a convenience to applications, additional data of the 304 affected node, or link, or termination point (respectively) is 305 included. While this makes notifications larger in volume than they 306 would need to be, it avoids the need for subsequent retrieval of 307 context information, which also might have changed in the meantime. 309 3.3. OSPF Topology 311 OSPF is the next type of topology represented in the model. OSPF 312 represents a particular type of Layer 3 Unicast IGP. Accordingly, 313 this time the Layer 3 Unicast IGP topology model needs to be 314 extended. The corresponding extensions are introduced in a separate 315 YANG module "ospf-topology", whose structure is depicted in the 316 following diagram. For the most part, this module augments "l3- 317 unicast-igp-topology". Like before, brackets enclose list keys, "rw" 318 means configuration, "ro" operational state data, "?" designates 319 optional nodes, "*" designates nodes that can have multiple 320 instances. Parantheses enclose choice and case nodes. Notifications 321 respectively augmentations of notifications are not depicted. 322 Likewise, used groupings from the TED module are not expanded but 323 simply indicated by "...". 325 module: ospf-topology 326 augment /nt:network-topology/nt:topology/nt:topology-types/l3t:l3-unicast-igp-topology: 327 +--rw ospf! 328 augment /nt:network-topology/nt:topology/l3t:igp-topology-attributes: 329 +--rw ospf-topology-attributes 330 +--rw area-id? area-id 331 augment /nt:network-topology/nt:topology/nt:node/l3t:igp-node-attributes: 332 +--rw ospf-node-attributes 333 +--rw (router-type)? 334 | +--:(abr) 335 | | +--rw abr? empty 336 | +--:(asbr) 337 | | +--rw asbr? empty 338 | +--:(internal) 339 | | +--rw internal? empty 340 | +--:(pseudonode) 341 | +--rw pseudonode? empty 342 +--rw dr-interface-id? uint32 343 +--rw multi-topology-id* uint8 344 +--rw capabilities? bits 345 +--rw ted 346 +--... 347 augment /nt:network-topology/nt:topology/nt:link/l3t:igp-link-attributes: 348 +--rw ospf-link-attributes 349 +--rw multi-topology-id? uint8 350 +--rw ted 351 +--... 352 augment /nt:network-topology/nt:topology/nt:node/l3t:igp-node-attributes/l3t:prefix: 353 +--rw ospf-prefix-attributes 354 +--rw forwarding-address? inet:ipv4-address 356 The module augments "l3-unicast-igp-topology" as follows: 358 o A new topology type for an OSPF topology is introduced. 360 o Additional topology attributes are defined in a new grouping which 361 augments igp-topology-attributes of the l3-unicast-igp-topology 362 module. The attributes include an OSPF area-id identifying the 363 OSPF area. 365 o Additional data objects for nodes are introduced by augmenting the 366 igp-node-attributes of the l3-unicast-igp-topology module. New 367 objects include router-type, dr-interface-id for pseudonodes, list 368 of multi-topology-ids, ospf node capabilities, and traffic 369 engineering attributes. 371 o Links are augmented with a multi-topology-id and traffic 372 engineering link attributes. 374 o Prefixes are augmented with OSPF specific forwarding address. 376 In addition, the module extends IGP node, link and prefix 377 notifications with OSPF attributes. 379 3.4. IS-IS Topology 381 IS-IS is another type of Layer 3 Unicast IGP. Like OSPF topology, 382 IS-IS topology is defined in a separate module, "isis-topology", 383 which augments "l3-unicast-igp-topology". The structure is depicted 384 in the following diagram. Like before, brackets enclose list keys, 385 "rw" means configuration, "ro" operational state data, "?" designates 386 optional nodes, "*" designates nodes that can have multiple 387 instances. Parantheses enclose choice and case nodes. Notifications 388 are not depicted. Likewise, used groupings from the TED module are 389 not expanded but simply indicated by "...". 391 module: isis-topology 392 augment /nt:network-topology/nt:topology/nt:topology-types/l3t:l3-unicast-igp-topology: 393 +--rw isis! 394 augment /nt:network-topology/nt:topology/l3t:igp-topology-attributes: 395 +--rw isis-topology-attributes 396 +--rw net? iso-net-id 397 augment /nt:network-topology/nt:topology/nt:node/l3t:igp-node-attributes: 398 +--rw isis-node-attributes 399 +--rw iso 400 | +--rw iso-system-id? iso-system-id 401 | +--rw iso-pseudonode-id? iso-pseudonode-id 402 +--rw net* iso-net-id 403 +--rw multi-topology-id* uint8 404 +--rw (router-type)? 405 | +--:(level-2) 406 | | +--rw level-2? empty 407 | +--:(level-1) 408 | | +--rw level-1? empty 409 | +--:(level-1-2) 410 | +--rw level-1-2? empty 411 +--rw ted 412 +--... 413 augment /nt:network-topology/nt:topology/nt:link/l3t:igp-link-attributes: 414 +--rw isis-link-attributes 415 +--rw multi-topology-id? uint8 416 +--rw ted 417 +--... 419 The module augments the l3-unicast-igp-topology as follows: 421 o A new topology type is introduced for isis. 423 o Additional topology attributes are introduced in a new grouping 424 which augments "igp-topology-attributes" of the l3-unicast-igp- 425 topology module. The attributes include an ISIS NET-id 426 identifying the area. 428 o Additional data objects for nodes are introduced by augmenting 429 "igp-node-attributes" of the l3-unicast-igp-topology module. New 430 objects include router-type, iso-system-id to identify the router, 431 a list of multi-topology-id, a list of NET ids, and traffic 432 engineering attributes. 434 o Links are augmented with multi-topology-id and traffic engineering 435 link attributes. 437 In addition, the module augments IGP nodes and links with ISIS 438 attributes. 440 3.5. TED - Traffic Engineering Data 442 EDITOR'S NOTE: Module "ted" will be removed from subsequent revisions 443 and be specified in a separate draft, [yang-ted]. Hence, this 444 section will be removed from future revisions of this specification 445 as well. 447 Traffic Engineering Data is required both by OSPF and IS-IS, which 448 are defined in separate modules. Information shared by both is 449 defined in another module, "ted". This module defines a set of 450 groupings with auxiliary information required and shared by those 451 other modules. This module details traffic-engineering node and link 452 attributes: 454 o TED node attributes include te-router-id for IPv4 and IPv6, local 455 IPv4 and IPv6 addresses and path computation client capabilities. 456 The path computation client capabilities in turn include a bit 457 vector for various path computation capabilities. 459 o TED link attributes comprise link color, max-link-bandwidth, max- 460 resv-link-bandwidth, unreserved bandwidth and re-metric. They 461 also include SRLG attributes which contains interface switching 462 capabilities, a list of SRLG values, and a link protection type. 463 The interface switching capabilities in turn contain a list 464 element for each switching capability, defining encoding, max-lsp- 465 bandwidth, and interface switching specific attributes. 467 4. Layer 3 Unicast IGP Topology YANG Module 469 470 file "l3-unicast-igp-topology@2013-10-27.yang" 471 module l3-unicast-igp-topology { 472 yang-version 1; 473 namespace "urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology"; 474 // replace with IANA namespace when assigned 475 prefix "l3t"; 476 import network-topology { 477 prefix "nt"; 478 } 480 import ietf-inet-types { 481 prefix "inet"; 482 } 484 organization "TBD"; 485 contact "TBD"; 487 description 488 "This module defines a model for the layer 3 IGP topology."; 490 revision "2014-10-27" { 491 description "Initial revision"; 492 reference "TBD"; 493 } 495 typedef igp-event-type { 496 type enumeration { 497 enum "add" { 498 value 0; 499 description 500 "An IGP node or link or prefix or termination-point has 501 been added"; 502 } 503 enum "remove" { 504 value 1; 505 description 506 "An IGP node or link or prefix or termination-point has 507 been removed"; 508 } 509 enum "update" { 510 value 2; 511 description 512 "An IGP node or link or prefix or termination-point has 513 been updated"; 514 } 516 } 517 description "IGP Event type for notifications"; 518 } // igp-event-type 520 identity flag-identity { 521 description "Base type for flags"; 522 } 523 identity undefined-flag { 524 base "flag-identity"; 525 description "Undefined flag"; 526 } 528 typedef flag-type { 529 type identityref { 530 base "flag-identity"; 531 } 532 description "Type for flags"; 533 } 535 grouping topo-ref { 536 description 537 "Grouping for an absolute reference to a topology instance."; 538 leaf topo-ref { 539 type leafref { 540 path "/nt:network-topology/nt:topology/nt:topology-id"; 541 } 542 description 543 "An absolute reference to a topology instance."; 544 } 545 } 547 grouping link-ref { 548 description 549 "Grouping for an absolute reference to a link instance."; 550 uses topo-ref; 551 leaf link-ref { 552 type leafref { 553 path "/nt:network-topology/nt:topology" 554 +"[nt:topology-id = current()/../topo-ref]" 555 +"/nt:link/nt:link-id"; 556 } 557 description 558 "An absolute reference to a link instance."; 559 } 560 } 562 grouping node-ref { 563 description 564 "Grouping for an absolute reference to a node instance."; 565 uses topo-ref; 566 leaf node-ref { 567 type leafref { 568 path "/nt:network-topology/nt:topology" 569 +"[nt:topology-id = current()/../topo-ref]" 570 +"/nt:node/nt:node-id"; 571 } 572 description 573 "An absolute reference to a node instance."; 574 } 575 } 577 grouping tp-ref { 578 description 579 "Grouping for an absolute reference to a termination point."; 580 uses node-ref; 581 leaf tp-ref { 582 type leafref { 583 path "/nt:network-topology/nt:topology" 584 +"[nt:topology-id = current()/../topo-ref]" 585 +"/nt:node[nt:node-id = current()/../node-ref]" 586 +"/nt:termination-point/nt:tp-id"; 587 } 588 description 589 "Grouping for an absolute reference to a termination point."; 590 } 591 } 593 grouping igp-prefix-attributes { 594 description 595 "IGP prefix attributes"; 596 leaf prefix { 597 type inet:ip-prefix; 598 description "IP prefix value"; 599 } 600 leaf metric { 601 type uint32; 602 description "Prefix metric"; 603 } 604 leaf-list flag { 605 type flag-type; 606 description "Prefix flags"; 607 } 608 } 610 grouping l3-unicast-igp-topology-type { 611 description "Identify the topology type to be L3 unicast."; 612 container l3-unicast-igp-topology { 613 presence "indicates L3 Unicast IGP Topology"; 614 description 615 "The presence of the container node indicates L3 Unicast 616 IGP Topology"; 617 } 618 } 620 grouping igp-topology-attributes { 621 description "Topology scope attributes"; 622 container igp-topology-attributes { 623 description "Containing topology attributes"; 624 leaf name { 625 type string; 626 description "Name of the topology"; 627 } 628 leaf-list flag { 629 type flag-type; 630 description "Topology flags"; 631 } 632 } 633 } 635 grouping igp-node-attributes { 636 description "IGP node scope attributes"; 637 container igp-node-attributes { 638 description "Containing node attributes"; 639 leaf name { 640 type inet:domain-name; 641 description "Node name"; 642 } 643 leaf-list flag { 644 type flag-type; 645 description "Node operational flags"; 646 } 647 leaf-list router-id { 648 type inet:ip-address; 649 description "Router-id for the node"; 650 } 651 list prefix { 652 key "prefix"; 653 description 654 "A list of prefixes along with their attributes"; 655 uses igp-prefix-attributes; 656 } 657 } 658 } 659 grouping igp-link-attributes { 660 description "IGP link scope attributes"; 661 container igp-link-attributes { 662 description "Containing link attributes"; 663 leaf name { 664 type string; 665 description "Link Name"; 666 } 667 leaf-list flag { 668 type flag-type; 669 description "Link flags"; 670 } 671 leaf metric { 672 type uint32 { 673 range "0..16777215" { 674 description " 675 "; 676 // OSPF/ISIS supports max 3 byte metric. 677 // Ideally we would like this restriction to be 678 // defined in the derived models, however, 679 // we are not allowed to augment a "must" statement. 680 } 681 } 682 description "Link Metric"; 683 } 684 } 685 } // grouping igp-link-attributes 687 grouping igp-termination-point-attributes { 688 description "IGP termination point scope attributes"; 689 container igp-termination-point-attributes { 690 description "Containing termination point attributes"; 691 choice termination-point-type { 692 description "Indicates the termination point type"; 693 case ip { 694 leaf-list ip-address { 695 type inet:ip-address; 696 description "IPv4 or IPv6 address"; 697 } 698 } 699 case unnumbered { 700 leaf unnumbered-id { 701 type uint32; 702 description "Unnumbered interface identifier"; 703 } 704 } 705 } 706 } 708 } // grouping igp-termination-point-attributes 710 augment "/nt:network-topology/nt:topology/nt:topology-types" { 711 description "Augment topology type on network-topology"; 712 uses l3-unicast-igp-topology-type; 713 } 715 augment "/nt:network-topology/nt:topology" { 716 when "nt:topology-types/l3-unicast-igp-topology" { 717 description "Augment only for L3 unicast IGP topology"; 718 } 719 description "Augment topology configuration"; 720 uses igp-topology-attributes; 721 } 723 augment "/nt:network-topology/nt:topology/nt:node" { 724 when "../nt:topology-types/l3-unicast-igp-topology" { 725 description "Augment only for L3 unicast IGP topology"; 726 } 727 description "Augment topology node configuration"; 728 uses igp-node-attributes; 729 } 731 augment "/nt:network-topology/nt:topology/nt:link" { 732 when "../nt:topology-types/l3-unicast-igp-topology" { 733 description "Augment only for L3 unicast IGP topology"; 734 } 735 description "Augment topology link configuration"; 736 uses igp-link-attributes; 737 } 739 augment "/nt:network-topology/nt:topology/nt:node/" 740 +"nt:termination-point" { 741 when "../../nt:topology-types/l3-unicast-igp-topology" { 742 description "Augment only for L3 unicast IGP topology"; 743 } 744 description "Augment topology termination point configuration"; 745 uses igp-termination-point-attributes; 746 } 748 notification igp-node-event { 749 description "Notification event for IGP node"; 750 leaf igp-event-type { 751 type igp-event-type; 752 description "Event type"; 753 } 754 uses node-ref; 755 uses l3-unicast-igp-topology-type; 756 uses igp-node-attributes; 757 } 759 notification igp-link-event { 760 description "Notification event for IGP link"; 761 leaf igp-event-type { 762 type igp-event-type; 763 description "Event type"; 764 } 765 uses link-ref; 766 uses l3-unicast-igp-topology-type; 767 uses igp-link-attributes; 768 } 770 notification igp-prefix-event { 771 description "Notification event for IGP prefix"; 772 leaf igp-event-type { 773 type igp-event-type; 774 description "Event type"; 775 } 776 uses node-ref; 777 uses l3-unicast-igp-topology-type; 778 container prefix { 779 description "Containing IPG prefix attributes"; 780 uses igp-prefix-attributes; 781 } 782 } 784 notification termination-point-event { 785 description "Notification event for IGP termination point"; 786 leaf igp-event-type { 787 type igp-event-type; 788 description "Event type"; 789 } 790 uses tp-ref; 791 uses l3-unicast-igp-topology-type; 792 uses igp-termination-point-attributes; 793 } 794 } 795 797 5. OSPF Topology YANG Module 799 800 file "ospf-topology@2013-10-27.yang" 801 module ospf-topology { 802 yang-version 1; 803 namespace "urn:TBD:params:xml:ns:yang:ospf-topology"; 804 // replace with IANA namespace when assigned 805 prefix "ospf"; 807 import network-topology { 808 prefix "nt"; 809 } 811 import l3-unicast-igp-topology { 812 prefix "l3t"; 813 } 814 import ietf-inet-types { 815 prefix "inet"; 816 } 817 import ted { 818 prefix "ted"; 819 } 821 organization "TBD"; 822 contact "TBD"; 823 description "OSPF Topology model"; 825 revision "2014-10-27" { 826 description "Initial revision"; 827 reference "TBD"; 828 } 830 typedef area-id { 831 type uint32; 832 description "OSPF Area ID"; 833 } 835 grouping ospf-topology-type { 836 description 837 "Identifies the OSPF topology type."; 838 container ospf { 839 presence "indiates OSPF Topology"; 840 description 841 "Its presence identifies the OSPF topology type."; 842 } 843 } 845 augment "/nt:network-topology/nt:topology/nt:topology-types/" 846 +"l3t:l3-unicast-igp-topology" { 847 description 848 "Defines the OSPF topology type."; 849 uses ospf-topology-type; 850 } 851 augment "/nt:network-topology/nt:topology/" 852 +"l3t:igp-topology-attributes" { 853 when "../nt:topology-types/l3t:l3-unicast-igp-topology/ospf" { 854 description "Augment only for OSPF topology"; 855 } 856 description "Augment topology configuration"; 857 container ospf-topology-attributes { 858 description "Containing topology attributes"; 859 leaf area-id { 860 type area-id; 861 description "OSPF area ID"; 862 } 863 } 864 } 866 augment "/nt:network-topology/nt:topology/nt:node/" 867 +"l3t:igp-node-attributes" { 868 when "../../nt:topology-types/l3t:l3-unicast-igp-topology/ospf" { 869 description "Augment only for OSPF topology"; 870 } 871 description "Augment node configuration"; 872 uses ospf-node-attributes; 873 } 875 augment "/nt:network-topology/nt:topology/nt:link/" 876 +"l3t:igp-link-attributes" { 877 when "../../nt:topology-types/l3t:l3-unicast-igp-topology/ospf" { 878 description "Augment only for OSPF topology"; 879 } 880 description "Augment link configuration"; 881 uses ospf-link-attributes; 882 } 884 augment "/nt:network-topology/nt:topology/nt:node/" 885 +"l3t:igp-node-attributes/l3t:prefix" { 886 when "../../../nt:topology-types/l3t:l3-unicast-igp-topology/" 887 +"ospf" { 888 description "Augment only for OSPF topology"; 889 } 890 description "Augment prefix"; 891 uses ospf-prefix-attributes; 892 } 894 grouping ospf-node-attributes { 895 description "OSPF node scope attributes"; 896 container ospf-node-attributes { 897 description "Containing node attributes"; 898 choice router-type { 899 description "Indicates router type"; 900 case abr { 901 leaf abr { 902 type empty; 903 description "The node is ABR"; 904 } 905 } 906 case asbr { 907 leaf asbr { 908 type empty; 909 description "The node is ASBR"; 910 } 911 } 912 case internal { 913 leaf internal { 914 type empty; 915 description "The node is internal"; 916 } 917 } 918 case pseudonode { 919 leaf pseudonode { 920 type empty; 921 description "The node is pseudonode"; 922 } 923 } 924 } 925 leaf dr-interface-id { 926 when "../router-type/pseudonode" { 927 description "Valid only for pseudonode"; 928 } 929 type uint32; 930 default "0"; 931 description "For pseudonodes, DR interface-id"; 932 } 933 leaf-list multi-topology-id { 934 type uint8 { 935 range "0..127"; 936 } 937 max-elements "128"; 938 description 939 "List of Multi-Topology Identifier up-to 128 (0-127). 940 RFC 4915"; 941 } 942 leaf capabilities { 943 type bits { 944 bit graceful-restart-capable { 945 position 0; 946 description "Graceful restart capable"; 948 } 949 bit graceful-restart-helper { 950 position 1; 951 description "Graceful restart helper"; 952 } 953 bit stub-router-support { 954 position 2; 955 description "Stub router support"; 956 } 957 bit traffic-engineering-support { 958 position 3; 959 description "Traffic engineering support"; 960 } 961 bit point-to-point-over-lan { 962 position 4; 963 description "Support point to point over LAN"; 964 } 965 bit experimental-te { 966 position 5; 967 description "Support experimental traffic engineering"; 968 } 969 } 970 description "OSPF capabilities as bit vector. RFC 4970"; 971 } 972 container ted { 973 description "Containing TE attributes"; 974 uses ted:ted-node-attributes; 975 } 976 } // ospf 977 } // ospf-node-attributes 979 grouping ospf-link-attributes { 980 description "OSPF link scope attributes"; 981 container ospf-link-attributes { 982 description "Containing OSPF link attributes"; 983 leaf multi-topology-id { 984 type uint8 { 985 range "0..127"; 986 } 987 description "Muti topology ID"; 988 } 989 container ted { 990 description "Containing TE attributes"; 991 uses ted:ted-link-attributes; 992 } 993 } 994 } // ospf-link-attributes 995 grouping ospf-prefix-attributes { 996 description "OSPF prefix attributes"; 997 container ospf-prefix-attributes { 998 description "Containing prefix attributes"; 999 leaf forwarding-address { 1000 when "../../l3t:l3-unicast-igp-topology/l3t:ospf/" 1001 +"l3t:router-type/l3t:asbr" { 1002 description "Valid only for ABSR"; 1003 } 1004 type inet:ipv4-address; 1005 description "Forwarding address for ABSR"; 1006 } 1007 } 1008 } 1010 augment "/l3t:igp-node-event" { 1011 description "OSPF node event"; 1012 uses ospf-topology-type; 1013 uses ospf:ospf-node-attributes; 1014 } 1016 augment "/l3t:igp-link-event" { 1017 description "OSPF link event"; 1018 uses ospf-topology-type; 1019 uses ospf:ospf-link-attributes; 1020 } 1022 augment "/l3t:igp-prefix-event" { 1023 description "OSPF prefix event"; 1024 uses ospf-topology-type; 1025 uses ospf:ospf-prefix-attributes; 1026 } 1027 } 1028 1030 6. ISIS Topology YANG Module 1032 1033 file "isis-topology@2013-10-21.yang" 1034 module isis-topology { 1035 yang-version 1; 1036 namespace "urn:TBD:params:xml:ns:yang:network:isis-topology"; 1037 // replace with IANA namespace when assigned 1038 prefix "isis"; 1039 import network-topology { 1040 prefix nt; 1041 } 1042 import l3-unicast-igp-topology { 1043 prefix igp; 1044 } 1045 import ted { 1046 prefix ted; 1047 } 1049 organization "TBD"; 1050 contact "TBD"; 1051 description "ISIS Topology model"; 1053 revision "2013-10-21" { 1054 description "Initial version"; 1055 } 1056 typedef iso-system-id { 1057 description "ISO System ID. RFC 1237"; 1058 type string { 1059 pattern '[0-9a-fA-F]{4}(\.[0-9a-fA-F]{4}){2}'; 1060 } 1061 } 1063 typedef iso-pseudonode-id { 1064 description "ISO pseudonode id for broadcast network"; 1065 type string { 1066 pattern '[0-9a-fA-F]{2}'; 1067 } 1068 } 1069 typedef iso-net-id { 1070 description "ISO NET ID. RFC 1237"; 1071 type string { 1072 pattern '[0-9a-fA-F]{2}((\.[0-9a-fA-F]{4}){6})'; 1073 } 1074 } 1076 grouping isis-topology-type { 1077 container isis { 1078 presence "Indicates ISIS Topology"; 1079 } 1080 } 1082 augment "/nt:network-topology/nt:topology/nt:topology-types/igp:l3-unicast-igp-topology" { 1083 uses isis-topology-type; 1084 } 1086 augment "/nt:network-topology/nt:topology/igp:igp-topology-attributes" { 1087 when "../nt:topology-types/l3t:l3-unicast-igp-topology/isis"; 1088 container isis-topology-attributes { 1089 leaf net { 1090 type iso-net-id; 1092 } 1093 } 1094 } 1096 augment "/nt:network-topology/nt:topology/nt:node/igp:igp-node-attributes" { 1097 when "../../nt:topology-types/l3t:l3-unicast-igp-topology/isis"; 1098 uses isis-node-attributes; 1099 } 1101 augment "/nt:network-topology/nt:topology/nt:link/igp:igp-link-attributes" { 1102 when "../../nt:topology-types/l3t:l3-unicast-igp-topology/isis"; 1103 uses isis-link-attributes; 1104 } 1106 grouping isis-node-attributes { 1107 container isis-node-attributes { 1108 container iso { 1109 leaf iso-system-id { 1110 type iso-system-id; 1111 } 1112 leaf iso-pseudonode-id { 1113 default "0"; 1114 type iso-pseudonode-id; 1115 } 1116 } 1117 leaf-list net { 1118 max-elements 3; 1119 type iso-net-id; 1120 } 1121 leaf-list multi-topology-id { 1122 description "List of Multi Topology Identifier upto 128 (0-127). RFC 4915"; 1123 max-elements "128"; 1124 type uint8 { 1125 range "0..127"; 1126 } 1127 } 1128 choice router-type { 1129 case level-2 { 1130 leaf level-2 { 1131 type empty; 1132 } 1133 } 1134 case level-1 { 1135 leaf level-1 { 1136 type empty; 1137 } 1138 } 1139 case level-1-2 { 1140 leaf level-1-2 { 1141 type empty; 1142 } 1143 } 1144 } 1145 container ted { 1146 uses ted:ted-node-attributes; 1147 } 1148 } 1149 } 1151 grouping isis-link-attributes { 1152 container isis-link-attributes { 1153 leaf multi-topology-id { 1154 type uint8 { 1155 range "0..127"; 1156 } 1157 } 1158 container ted { 1159 uses ted:ted-link-attributes; 1160 } 1161 } 1162 } 1164 augment "/igp:igp-node-event" { 1165 uses isis-topology-type; 1166 uses isis-node-attributes; 1167 } 1169 augment "/igp:igp-link-event" { 1170 uses isis-topology-type; 1171 uses isis-link-attributes; 1172 } 1173 } // Module isis-topology 1175 1177 7. TED YANG Module 1179 EDITOR'S NOTE: Module "ted" will be removed from subsequent revisions 1180 and be specified in a separate draft, [yang-ted]. 1182 1183 file "ted@2014-10-27.yang" 1184 module ted { 1185 yang-version 1; 1186 namespace "urn:TBD:params:xml:ns:yang:network:ted"; 1187 // replace with IANA namespace when assigned 1188 prefix ted; 1190 import ietf-inet-types { 1191 prefix "inet"; 1192 } 1194 organization "TBD"; 1195 contact 1196 "TBD"; 1197 description 1198 "Helper module to hold trafic engineering attributes for 1199 any topology on which trafic engineering is enabled."; 1201 revision 2014-10-27 { 1202 description 1203 "Initial revision"; 1204 reference 1205 "RFC 4220: Traffic Engineering Link Management Information 1206 Base. 1207 RFC 6825: Traffic Engineering Database Management Information 1208 Base in Support of MPLS-TE/GMPLS. 1209 RFC 4802: Generalized Multiprotocol Label Switching (GMPLS) 1210 Traffic Engineering Management Information Base"; 1211 } 1213 typedef switching-capabilities { 1214 type enumeration { 1215 enum "psc-1" { 1216 value 1; 1217 description 1218 "Packet-Switch Capable-1 (PSC-1)"; 1219 } 1220 enum "evpl" { 1221 value 30; 1222 description 1223 "Ethernet Virtual Private Line (EVPL)"; 1224 } 1225 enum "l2sc" { 1226 value 51; 1227 description 1228 "Layer-2 Switch Capable (L2SC)"; 1229 } 1230 enum "tdm" { 1231 value 100; 1232 description 1233 "Time-Division-Multiplex Capable (TDM)"; 1234 } 1235 enum "otn-tdm" { 1236 value 110; 1237 description 1238 "OTN-TDM Capable"; 1239 } 1240 enum "lsc" { 1241 value 150; 1242 description 1243 "Lambda-Switch Capable (LSC)"; 1244 } 1245 enum "fsc" { 1246 value 200; 1247 description 1248 "Fiber-Switch Capable (FSC)"; 1249 } 1250 } 1251 description 1252 "Switching Capabilities of an interface."; 1253 reference 1254 "RFC 5307: IS-IS Extensions in Support of Generalized 1255 Multi-Protocol Label Switching (GMPLS). 1256 RFC 3812: Multiprotocol Label Switching (MPLS) Traffic 1257 Engineering (TE) Management Information Base (MIB). 1258 RFC 7074: Revised Definition of the GMPLS Switching Capability 1259 and Type Fields. 1260 RFC 7138: Traffic Engineering Extensions to OSPF 1261 for GMPLS Control of Evolving G.709 Optical Transport 1262 Networks. 1263 RFC 7139: GMPLS Signaling Extensions for Control of Evolving 1264 G.709 Optical Transport Networks."; 1265 } 1267 typedef encoding-type { 1268 type enumeration { 1269 enum "not-gmpls" { 1270 value 0; 1271 description 1272 "GMPLS is not in use"; 1273 } 1274 enum "packet" { 1275 value 1; 1276 description 1277 "Packet"; 1278 } 1279 enum "ethernet" { 1280 value 2; 1281 description 1282 "Ethernet"; 1283 } 1284 enum "pdh" { 1285 value 3; 1286 description 1287 "PDH"; 1288 } 1289 enum "sdh-sonet" { 1290 value 5; 1291 description 1292 "SDH or SONET"; 1293 } 1294 enum "digital-wrapper" { 1295 value 7; 1296 description 1297 "Digital Wrapper"; 1298 } 1299 enum "lambda" { 1300 value 8; 1301 description 1302 "Lambda"; 1303 } 1304 enum "fiber" { 1305 value 9; 1306 description 1307 "Fiber"; 1308 } 1309 enum "fiber-channel" { 1310 value 11; 1311 description 1312 "Fiber Channel"; 1313 } 1314 enum "oduk" { 1315 value 12; 1316 description 1317 "G.709 OKUk (Digital Path)"; 1318 } 1319 enum "optical-channel" { 1320 value 13; 1321 description 1322 "G.709 Optical Channel"; 1323 } 1324 } 1325 description 1326 "Encoding type of an interface."; 1327 reference 1328 "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) 1329 Signaling Functional Description. 1330 RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS) 1331 Signaling Extensions for G.709 Optical Transport Networks 1332 Control."; 1333 } 1335 typedef pcc-capabilities { 1336 type bits { 1337 bit path-computation-with-gmpls-link-constraints { 1338 position 0; 1339 description "Link constraints"; 1340 } 1341 bit bidirectional-path-computation { 1342 position 1; 1343 description "Bidirectional"; 1344 } 1345 bit diverse-path-computation { 1346 position 2; 1347 description "Diverse"; 1348 } 1349 bit load-balanced-path-computation { 1350 position 3; 1351 description "Load balanced"; 1352 } 1353 bit synchronized-path-computation { 1354 position 4; 1355 description "Synchronized"; 1356 } 1357 bit support-for-multiple-objective-functions { 1358 position 5; 1359 description "Multiple objective functions"; 1360 } 1361 bit support-for-additive-path-constraints { 1362 position 6; 1363 description "Additive path constraints"; 1364 } 1365 bit support-for-request-prioritization { 1366 position 7; 1367 description "Request prioritization"; 1368 } 1369 bit support-for-multiple-requests-per-message { 1370 position 8; 1371 description "Multiple requests per message"; 1372 } 1373 } 1374 description 1375 "Path Computation Capabilities."; 1376 reference 1377 "RFC 5088, draft-ietf-pce-disco-protoc-isis-07.txt 1378 OSPF/ISIS Protocol Extensions for Path Computation Element 1379 (PCE) Discovery."; 1381 } 1383 grouping ted-node-attributes { 1384 description 1385 "Identifier to uniquely identify a node in TED"; 1386 reference 1387 "RFC 5305, RFC 6119: IPv6 Traffic Engineering in IS-IS/OSPF"; 1388 leaf te-router-id-ipv4 { 1389 type inet:ipv4-address; 1390 description 1391 "Globally unique IPv4 Traffic Engineering Router ID."; 1392 } 1393 leaf te-router-id-ipv6 { 1394 type inet:ipv6-address; 1395 description 1396 "Globally unique IPv6 Traffic Engineering Router ID"; 1397 } 1398 list ipv4-local-address { 1399 key "ipv4-prefix"; 1400 description 1401 "List of IPv4 Local Address(OSPF). RFC 5786"; 1403 leaf ipv4-prefix { 1404 type inet:ipv4-prefix; 1405 description 1406 "Local IPv4 address for the node"; 1407 } 1408 } 1409 list ipv6-local-address { 1410 key "ipv6-prefix"; 1411 description 1412 "List of IPv6 Local Address."; 1413 reference 1414 "RFC 5786: Advertising a Router's Local Addresses 1415 in OSPF Traffic Engineering (TE) Extensions"; 1416 leaf ipv6-prefix { 1417 type inet:ipv6-prefix; 1418 description 1419 "Local IPv6 address for the node"; 1420 } 1421 leaf prefix-option { 1422 type uint8; 1423 description 1424 "IPv6 prefix option."; 1425 } 1426 } 1427 leaf pcc-capabilities { 1428 type pcc-capabilities; 1429 description 1430 "OSPF/ISIS PCC capabilities"; 1431 } 1432 } 1434 grouping ted-link-attributes { 1435 description 1436 "TED Attributes associated with the link."; 1437 reference 1438 "RFC 3630, RFC 3784: IS-IS / OSPF Traffic Engineering (TE)"; 1439 leaf link-index { 1440 type uint64; 1441 description 1442 "The link identifier. If OSPF is used, this represents an 1443 ospfLsdbID. If IS-IS is used, this represents an isisLSPID. 1444 If a locally configured link is used, this object represents 1445 an unique value, which is locally defined in a router."; 1446 } 1447 leaf information-source { 1448 type enumeration { 1449 enum "unknown" { 1450 description "The source is unknown"; 1451 } 1452 enum "locally-configured" { 1453 description "Configured TE link"; 1454 } 1455 enum "ospfv2" { 1456 description "OSPFv2"; 1457 } 1458 enum "ospfv3" { 1459 description "OSPFv3"; 1460 } 1461 enum "isis" { 1462 description "ISIS"; 1463 } 1464 enum "other" { 1465 description "Other source"; 1466 } 1467 } 1468 description 1469 "Indicates the source of the information about the link"; 1470 } 1471 leaf credibility-preference { 1472 type uint16; 1473 description 1474 "The preference value to calculate the traffic engineering 1475 database credibility value used for tie-break selection 1476 between different information-source values. 1478 Higher value is more preferable."; 1479 } 1480 leaf admin-status { 1481 type enumeration { 1482 enum up { 1483 value 1; 1484 description 1485 "Enabled."; 1486 } 1487 enum down { 1488 value 2; 1489 description 1490 "Disabled."; 1491 } 1492 enum testing { 1493 value 3; 1494 description 1495 "In some test mode."; 1496 } 1497 } 1498 description 1499 "The desired state of the link."; 1500 } 1501 leaf oper-status { 1502 type enumeration { 1503 enum up { 1504 value 1; 1505 description 1506 "Operational up"; 1507 } 1508 enum down { 1509 value 2; 1510 description 1511 "Operational down."; 1512 } 1513 enum testing { 1514 value 3; 1515 description 1516 "In some test mode"; 1517 } 1518 enum unknown { 1519 value 4; 1520 description 1521 "Status cannot be determined for some reason."; 1522 } 1523 } 1524 description 1525 "The current operational state of the link."; 1527 } 1528 leaf area-id { 1529 type binary { 1530 length 1..13; 1531 } 1532 description 1533 "This object indicates the area identifier of the IGP. 1534 If OSPF is used to advertise LSA, this represents an 1535 ospfArea. If IS-IS is used, this represents an area address. 1536 Otherwise, this is zero."; 1537 } 1538 leaf color { 1539 type uint32; 1540 description 1541 "Administrative group or color of the link"; 1542 } 1543 leaf max-link-bandwidth { 1544 type decimal64 { 1545 fraction-digits 2; 1546 } 1547 description 1548 "Maximum bandwidth that can be see on this link in this 1549 direction. Units in bytes per second"; 1550 } 1552 leaf max-resv-link-bandwidth { 1553 type decimal64 { 1554 fraction-digits 2; 1555 } 1556 description 1557 "Maximum amount of bandwidth that can be reserved in this 1558 direction in this link. Units in bytes per second"; 1559 } 1560 list unreserved-bandwidth { 1561 key "priority"; 1562 max-elements "8"; 1563 description 1564 "Unreserved bandwidth for 0-7 priority levels. Units in 1565 bytes per second"; 1566 leaf priority { 1567 type uint8 { 1568 range "0..7"; 1569 } 1570 description "Priority"; 1571 } 1572 leaf bandwidth { 1573 type decimal64 { 1574 fraction-digits 2; 1576 } 1577 description 1578 "Unreserved bandwidth for this level"; 1579 } 1580 } 1581 leaf te-default-metric { 1582 type uint32; 1583 description 1584 "Traffic Engineering Metric"; 1585 } 1586 leaf link-protection-type { 1587 type enumeration { 1588 enum "unprotected" { 1589 description "unprotected"; 1590 } 1591 enum "extra-traffic" { 1592 description "Extra traffic"; 1593 } 1594 enum "shared" { 1595 description "Shared"; 1596 } 1597 enum "1-for-1" { 1598 description "One for one protection"; 1599 } 1600 enum "1-plus-1" { 1601 description "One plus one protection"; 1602 } 1603 enum "enhanced" { 1604 description "Enhanced protection"; 1605 } 1606 } 1607 description 1608 "Link Protection Type desired for this link"; 1609 } 1610 list interface-switching-capabilities { 1611 key "switching-capability"; 1612 description 1613 "List of interface capabilities for this interface"; 1614 leaf switching-capability { 1615 type ted:switching-capabilities; 1616 description 1617 "Switching Capability for this interface"; 1618 } 1619 leaf encoding { 1620 type ted:encoding-type; 1621 description 1622 "Encoding supported by this interface"; 1623 } 1624 list max-lsp-bandwidth { 1625 key "priority"; 1626 max-elements "8"; 1627 description 1628 "Maximum LSP Bandwidth at priorities 0-7"; 1629 leaf priority { 1630 type uint8 { 1631 range "0..7"; 1632 } 1633 description "Priority"; 1634 } 1635 leaf bandwidth { 1636 type decimal64 { 1637 fraction-digits 2; 1638 } 1639 description 1640 "Max LSP Bandwidth for this level"; 1641 } 1642 } 1643 container packet-switch-capable { 1644 when "../switching-capability = PSC-1 or " 1645 +"../switching-capability = PSC-2 or " 1646 +"../switching-capability = PSC-3 or " 1647 +"../switching-capability = PSC-4" { 1648 description "Valid only for PSC"; 1649 } 1650 description 1651 "Interface has packet-switching capabilities"; 1652 leaf minimum-lsp-bandwidth { 1653 type decimal64 { 1654 fraction-digits 2; 1655 } 1656 description 1657 "Minimum LSP Bandwidth. Units in bytes per second"; 1658 } 1659 leaf interface-mtu { 1660 type uint16; 1661 description 1662 "Interface MTU"; 1663 } 1664 } 1665 container time-division-multiplex-capable { 1666 when "../switching-capability = TDM" { 1667 description "Valid only for TDM"; 1668 } 1669 description 1670 "Interface has time-division multiplex capabilities"; 1672 leaf minimum-lsp-bandwidth { 1673 type decimal64 { 1674 fraction-digits 2; 1675 } 1676 description 1677 "Minimum LSP Bandwidth. Units in bytes per second"; 1678 } 1679 leaf indication { 1680 type enumeration { 1681 enum "standard" { 1682 description "Indicates support of standard SONET/SDH"; 1683 } 1684 enum "arbitrary" { 1685 description "Indicates support of arbitrary SONET/SDH"; 1686 } 1687 } 1688 description 1689 "Indication whether the interface supports Standard or 1690 Arbitrary SONET/SDH"; 1691 } 1692 } 1693 } 1694 container srlg { 1695 description 1696 "Shared Risk Link Group Attributes"; 1697 uses srlg-attributes; 1698 } 1699 } 1701 grouping srlg-attributes { 1702 description 1703 "Shared Risk Link Group Attributes"; 1704 reference 1705 "RFC 5307, RFC 4203: ISIS / OSPF Extensions in Support of 1706 Generalized Multi-Protocol Label Switching (GMPLS)"; 1707 list srlg-values { 1708 key "srlg-value"; 1709 description 1710 "List of Shared Risk Link Group this interface belongs to."; 1711 leaf srlg-value { 1712 type uint32; 1713 description 1714 "Shared Risk Link Group value"; 1715 } 1716 } 1717 } 1718 } 1719 1721 8. Security Considerations 1723 The transport protocol used for sending the topology data MUST 1724 support authentication and SHOULD support encryption. The data-model 1725 by itself does not create any security implications. 1727 9. Contributors 1729 The model presented in this paper was contributed to by more people 1730 than can be listed on the author list. Additional contributors 1731 include: 1733 o Ken Gray, Juniper Networks 1735 o Tom Nadeau, Brocade 1737 o Aleksandr Zhdankin, Cisco 1739 10. Acknowledgements 1741 We wish to acknowledge the helpful contributions, comments, and 1742 suggestions that were received from Ladislav Lhotka, Andy Bierman, 1743 Carlos Pignataro, Joel Halpern, Juergen Schoenwaelder, and Alia 1744 Atlas. 1746 11. References 1748 11.1. Normative References 1750 [RFC1195] Callon, R., "Use of OSI IS-IS for Routing in TCP/IP and 1751 Dual Environments", RFC 1195, December 1990. 1753 [RFC2178] Moy, J., "OSPF Version 2", RFC 2178, July 1997. 1755 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1756 Network Configuration Protocol (NETCONF)", RFC 6020, 1757 October 2010. 1759 [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, 1760 October 2010. 1762 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1763 Bierman, "Network Configuration Protocol (NETCONF)", RFC 1764 6241, June 2011. 1766 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1767 Management", RFC 7223, May 2014. 1769 11.2. Informative References 1771 [restconf] 1772 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1773 Protocol", I-D draft-ietf-netconf-restconf-03, October 1774 2014. 1776 [topology-dm] 1777 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1778 and H. Ananthakrishnan, "A YANG Data Model for Network 1779 Topologies", I-D draft-clemm-i2rs-yang-network-topo-01, 1780 October 2014. 1782 [topology-use-cases] 1783 Medved, J., Previdi, S., Lopez, V., and S. Amante, 1784 "Topology API Use Cases", I-D draft-amante-i2rs-topology- 1785 use-cases-01, October 2013. 1787 [yang-json] 1788 Lhotka, L., "JSON Encoding of Data Modeled with YANG", I-D 1789 draft-ietf-netmod-yang-json-01, October 2014. 1791 [yang-ted] 1792 Liu, X., Beeram, V., Clemm, A., Bryskin, I., and A. Guo, 1793 "A YANG module for traffic engineering database (TED)", 1794 I-D draft-liu-yang-ted-00, October 2014. 1796 Authors' Addresses 1798 Alexander Clemm 1799 Cisco 1801 EMail: alex@cisco.com 1803 Jan Medved 1804 Cisco 1806 EMail: jmedved@cisco.com 1808 Robert Varga 1809 Pantheon Technologies SRO 1811 EMail: robert.varga@pantheon.sk 1812 Tony Tkacik 1813 Pantheon Technologies SRO 1815 EMail: tony.tkacik@pantheon.sk 1817 Xufeng Liu 1818 Ericsson 1820 EMail: xufeng.liu@ericsson.com 1822 Igor Bryskin 1823 Adva Optical 1825 EMail: ibryskin@advaoptical.com 1827 Aihua Guo 1828 Adva Optical 1830 EMail: aguo@advaoptical.com 1832 Hariharan Ananthakrishnan 1833 Packet Design 1835 EMail: hari@packetdesign.com 1837 Nitin Bahadur 1838 Bracket Computing 1840 EMail: nitin_bahadur@yahoo.com 1842 Vishnu Beeram 1843 Juniper Networks 1845 EMail: vbeeram@juniper.net