idnits 2.17.1 draft-ietf-i2rs-yang-l3-topology-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.) ** 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 1175: '...sed for sending the topology data MUST...' RFC 2119 keyword, line 1176: '...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 255 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 (June 8, 2015) is 3245 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC7223' is defined on line 1231, but no explicit reference was found in the text == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-01 == Outdated reference: A later version (-18) exists of draft-ietf-netconf-restconf-05 == Outdated reference: A later version (-10) exists of draft-ietf-netmod-yang-json-03 ** 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) == Outdated reference: A later version (-03) exists of draft-ietf-i2rs-usecase-reqs-summary-01 Summary: 5 errors (**), 0 flaws (~~), 8 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: Standards Track Cisco 5 Expires: December 10, 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 June 8, 2015 21 A YANG Data Model for Layer 3 Topologies 22 draft-ietf-i2rs-yang-l3-topology-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 December 10, 2015. 46 Copyright Notice 48 Copyright (c) 2015 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 4. Layer 3 Unicast IGP Topology YANG Module . . . . . . . . . . 10 83 5. OSPF Topology YANG Module . . . . . . . . . . . . . . . . . . 17 84 6. ISIS Topology YANG Module . . . . . . . . . . . . . . . . . . 22 85 7. Security Considerations . . . . . . . . . . . . . . . . . . . 25 86 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 25 87 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 88 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 89 10.1. Normative References . . . . . . . . . . . . . . . . . . 26 90 10.2. Informative References . . . . . . . . . . . . . . . . . 27 91 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 93 1. Introduction 95 This document introduces a YANG [RFC6020] [RFC6021] data model for 96 Layer 3 network topologies. The model allows an application to have 97 a holistic view of the topology of a Layer 3 network, all contained 98 in a single conceptual YANG datastore. The data model builds on top 99 of, and augments, the data model for network topologies defined in 100 [I-D.draft-ietf-i2rs-yang-network-topo]. An earlier revision of that 101 Internet Draft contained not just the general model for network 102 topologies, but also the model for layer 3 network topologies that is 103 being specified here. However, we decided to "split" the earlier 104 draft to separate the truly general aspects of a topology data model, 105 which apply to any type of topology, from the application of this 106 model to a particular domain, here: a Layer 3 network. 108 Specific topology types that are covered in this document include 109 Layer 3 Unicast IGP, IS-IS [RFC1195], and OSPF [RFC2178]. In 110 addition, this documents defines a set of traffic engineering 111 extensions. 113 There are multiple applications for such a data model and a number of 114 use cases have been defined in section 6 of 115 [I-D.draft-ietf-i2rs-usecase-reqs-summary]. For example, nodes 116 within the network can use the data model to capture their 117 understanding of the overall network topology and expose it to a 118 network controller. A network controller can then use the 119 instantiated topology data to compare and reconcile its own view of 120 the network topology with that of the network elements that it 121 controls. Alternatively, nodes within the network could propagate 122 this understanding to compare and reconcile this understanding either 123 amongst themselves or with help of a controller. Beyond the network 124 element itself, a network controller might even use the data model to 125 represent its view of the topology that it controls and expose it to 126 applications north of itself. 128 There are several reasons to choose YANG to define the data model. 129 Data defined using YANG can be exposed by a server to client 130 applications and controllers via Netconf [RFC6241] or via a ReST 131 Interface [I-D.draft-ietf-netconf-restconf] 132 [I-D.draft-ietf-netmod-yang-json]. The fact that it can be used with 133 different protocols and interfaces provides for a degree of "future- 134 proofing" of model implementations. Also, YANG can serve as the 135 basis for model-driven toolchains, such as used in the Open Daylight 136 project. 138 The data model is defined in several YANG modules: 140 o Module "l3-unicast-igp-topology" defines a model for Layer 3 141 Unicast IGP topologies. To do so, it augments general network 142 topology model defined in [I-D.draft-ietf-i2rs-yang-network-topo] 143 with information specific to Layer 3 Unicast IGP. In doing so, it 144 also illustrates the extension patterns associated with extending 145 respectively augmenting the general topology model to meet the 146 needs of a specific topology. 148 o Module "ospf-topology" defines a topology model for OSPF, building 149 on and extending the Layer 3 Unicast IGP topology model. It 150 serves as an example of how the general topology model can be 151 refined across multiple levels. 153 o Module "isis-topology" defines a topology model for IS-IS, again 154 building on and extending the Layer 3 Unicast IGP topology model. 156 Information that is kept in the Traffic Engineering Database (TED) is 157 specified in a separate model and outside the scope of this 158 specification. 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 187 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 | +-----------------------+ | 204 | | ietf-network | | 205 | +----------^------------+ | 206 | | | 207 | +-----------------------+ | 208 | | ietf-network-topology | | 209 | +----------+------------+ | 210 +-------------^---------------+ 211 | 212 | 213 +-----------^-------------+ 214 | l3-unicast-igp-topology | 215 +----+---------------+----+ 216 ^ ^ 217 | | 218 | | 219 +--------^-----+ +-----^---------+ 220 | ospf-topology| | isis-topology | 221 +--------------+ +---------------+ 223 Figure 1: Overall model structure 225 YANG modules ietf-network and ietf-network-topology collectively 226 define the basic network topology model. YANG module l3-unicast-igp- 227 topology augments those models with additional definitions needed to 228 represent Layer 3 Unicast IGP topologies. This module in turn is 229 augmented by YANG modules with additional definitions for OSPF and 230 for IS-IS topologies, ospf-topology and isis-topology, respectively. 232 3.2. Layer 3 Unicast - IGP 234 The Layer 3 Unicast IGP topology model is defined by YANG module "l3- 235 unicast-igp-topology". The model is depicted in the following 236 diagram. Brackets enclose list keys, "rw" means configuration, "ro" 237 operational state data, "?" designates optional nodes, "*" designates 238 nodes that can have multiple instances. Parantheses enclose choice 239 and case nodes. Notifications are not depicted. The prefix "nt:" 240 refers to the YANG module for network topology. 242 module: l3-unicast-igp-topology 243 augment /nw:network/nw:network-types: 244 +--rw l3-unicast-igp-topology! 245 augment /nw:network: 246 +--rw igp-topology-attributes 247 +--rw name? string 248 +--rw flag* flag-type 249 augment /nw:network/nw:node: 250 +--rw igp-node-attributes 251 +--rw name? inet:domain-name 252 +--rw flag* flag-type 253 +--rw router-id* inet:ip-address 254 +--rw prefix* [prefix] 255 +--rw prefix inet:ip-prefix 256 +--rw metric? uint32 257 +--rw flag* flag-type 258 augment /nw:network/nt:link: 259 +--rw igp-link-attributes 260 +--rw name? string 261 +--rw flag* flag-type 262 +--rw metric? uint32 263 augment /nw:network/nw:node/nt:termination-point: 264 +--rw igp-termination-point-attributes 265 +--rw (termination-point-type)? 266 +--:(ip) 267 | +--rw ip-address* inet:ip-address 268 +--:(unnumbered) 269 +--rw unnumbered-id? uint32 271 The module augments the original ietf-network and ietf-network- 272 topology modules as follows: 274 o A new network topology type is introduced, l3-unicast-igp- 275 topology. The corresponding container augments the network-types 276 of the ietf-network module. 278 o Additional topology attributes are introduced, defined in a 279 grouping, which augments the "network" list of the network module. 281 The attributes include an IGP name, as well as a set of flags 282 (represented through a leaf-list). Each type of flag is 283 represented by a separate identity. This allows to introduce 284 additional flags in augmenting modules that are associated with 285 specific IGP topologies, without needing to revise this module. 287 o Additional data objects for nodes are introduced by augmenting the 288 "node" list of the network module. New objects include again a 289 set of flags, as well as a list of prefixes. Each prefix in turn 290 includes an ip prefix, a metric, and a prefix-specific set of 291 flags. 293 o Links (in the ietf-network-topology module) are augmented with a 294 set of parameters as well, allowing to associate a link with an 295 IGP name, another set of flags, and a link metric. 297 o Termination points (in the ietf-network-topology module as well) 298 are augmented with a choice of IP address or identifier. 300 In addition, the module defines a set of notifications to alert 301 clients of any events concerning links, nodes, prefixes, and 302 termination points. Each notification includes an indication of the 303 type of event, the topology from which it originated, and the 304 affected node, or link, or prefix, or termination point. In 305 addition, as a convenience to applications, additional data of the 306 affected node, or link, or termination point (respectively) is 307 included. While this makes notifications larger in volume than they 308 would need to be, it avoids the need for subsequent retrieval of 309 context information, which also might have changed in the meantime. 311 3.3. OSPF Topology 313 OSPF is the next type of topology represented in the model. OSPF 314 represents a particular type of Layer 3 Unicast IGP. Accordingly, 315 this time the Layer 3 Unicast IGP topology model needs to be 316 extended. The corresponding extensions are introduced in a separate 317 YANG module "ospf-topology", whose structure is depicted in the 318 following diagram. For the most part, this module augments "l3- 319 unicast-igp-topology". Like before, brackets enclose list keys, "rw" 320 means configuration, "ro" operational state data, "?" designates 321 optional nodes, "*" designates nodes that can have multiple 322 instances. Parantheses enclose choice and case nodes. Notifications 323 respectively augmentations of notifications are not depicted. 325 module: ospf-topology 326 augment /nw:network/nw:network-types/l3t:l3-unicast-igp-topology: 327 +--rw ospf! 328 augment /nw:network/l3t:igp-topology-attributes: 329 +--rw ospf-topology-attributes 330 +--rw area-id? area-id 331 augment /nw:network/nw: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 augment /nw:network/nt:link/l3t:igp-link-attributes: 346 +--rw ospf-link-attributes 347 +--rw multi-topology-id? uint8 348 augment /nw:network/nw:node/l3t:igp-node-attributes/l3t:prefix: 349 +--rw ospf-prefix-attributes 350 +--rw forwarding-address? inet:ipv4-address 352 The module augments "l3-unicast-igp-topology" as follows: 354 o A new topology type for an OSPF topology is introduced. 356 o Additional topology attributes are defined in a new grouping which 357 augments igp-topology-attributes of the l3-unicast-igp-topology 358 module. The attributes include an OSPF area-id identifying the 359 OSPF area. 361 o Additional data objects for nodes are introduced by augmenting the 362 igp-node-attributes of the l3-unicast-igp-topology module. New 363 objects include router-type, dr-interface-id for pseudonodes, list 364 of multi-topology-ids, ospf node capabilities, and traffic 365 engineering attributes. 367 o Links are augmented with a multi-topology-id and traffic 368 engineering link attributes. 370 o Prefixes are augmented with OSPF specific forwarding address. 372 In addition, the module extends IGP node, link and prefix 373 notifications with OSPF attributes. 375 3.4. IS-IS Topology 377 IS-IS is another type of Layer 3 Unicast IGP. Like OSPF topology, 378 IS-IS topology is defined in a separate module, "isis-topology", 379 which augments "l3-unicast-igp-topology". The structure is depicted 380 in the following diagram. Like before, brackets enclose list keys, 381 "rw" means configuration, "ro" operational state data, "?" designates 382 optional nodes, "*" designates nodes that can have multiple 383 instances. Parantheses enclose choice and case nodes. Notifications 384 are not depicted. 386 module: isis-topology 387 augment /nw:network/nw:network-types/l3t:l3-unicast-igp-topology: 388 +--rw isis! 389 augment /nw:network/l3t:igp-topology-attributes: 390 +--rw isis-topology-attributes 391 +--rw net? iso-net-id 392 augment /nw:network/nw:node/l3t:igp-node-attributes: 393 +--rw isis-node-attributes 394 +--rw iso 395 | +--rw iso-system-id? iso-system-id 396 | +--rw iso-pseudonode-id? iso-pseudonode-id 397 +--rw net* iso-net-id 398 +--rw multi-topology-id* uint8 399 +--rw (router-type)? 400 +--:(level-2) 401 | +--rw level-2? empty 402 +--:(level-1) 403 | +--rw level-1? empty 404 +--:(level-1-2) 405 +--rw level-1-2? empty 406 augment /nw:network/nt:link/l3t:igp-link-attributes: 407 +--rw isis-link-attributes 408 +--rw multi-topology-id? uint8 410 The module augments the l3-unicast-igp-topology as follows: 412 o A new topology type is introduced for isis. 414 o Additional topology attributes are introduced in a new grouping 415 which augments "igp-topology-attributes" of the l3-unicast-igp- 416 topology module. The attributes include an ISIS NET-id 417 identifying the area. 419 o Additional data objects for nodes are introduced by augmenting 420 "igp-node-attributes" of the l3-unicast-igp-topology module. New 421 objects include router-type, iso-system-id to identify the router, 422 a list of multi-topology-id, a list of NET ids, and traffic 423 engineering attributes. 425 o Links are augmented with multi-topology-id and traffic engineering 426 link attributes. 428 In addition, the module augments IGP nodes and links with ISIS 429 attributes. 431 4. Layer 3 Unicast IGP Topology YANG Module 433 434 file "l3-unicast-igp-topology@2015-06-08.yang" 435 module l3-unicast-igp-topology { 436 yang-version 1; 437 namespace "urn:ietf:params:xml:ns:yang:l3-unicast-igp-topology"; 438 prefix "l3t"; 439 import ietf-network { 440 prefix "nw"; 441 } 442 import ietf-network-topology { 443 prefix "nt"; 444 } 445 import ietf-inet-types { 446 prefix "inet"; 447 } 449 organization "TBD"; 450 contact "TBD"; 452 description 453 "This module defines a model for the layer 3 IGP topology."; 455 revision "2015-06-08" { 456 description "Initial revision"; 457 reference "TBD"; 458 } 460 typedef igp-event-type { 461 type enumeration { 462 enum "add" { 463 value 0; 464 description 465 "An IGP node or link or prefix or termination-point has 466 been added"; 468 } 469 enum "remove" { 470 value 1; 471 description 472 "An IGP node or link or prefix or termination-point has 473 been removed"; 474 } 475 enum "update" { 476 value 2; 477 description 478 "An IGP node or link or prefix or termination-point has 479 been updated"; 480 } 481 } 482 description "IGP Event type for notifications"; 483 } // igp-event-type 485 identity flag-identity { 486 description "Base type for flags"; 487 } 488 identity undefined-flag { 489 base "flag-identity"; 490 description "Undefined flag"; 491 } 493 typedef flag-type { 494 type identityref { 495 base "flag-identity"; 496 } 497 description "Type for flags"; 498 } 500 grouping network-ref { 501 description 502 "Grouping for an absolute reference to a network topology 503 instance."; 504 leaf network-ref { 505 type leafref { 506 path "/nw:network/nw:network-id"; 507 } 508 description 509 "An absolute reference to a network topology instance."; 510 } 511 } 513 grouping link-ref { 514 description 515 "Grouping for an absolute reference to a link instance."; 516 uses network-ref; 517 leaf link-ref { 518 type leafref { 519 path "/nw:network" 520 +"[nw:network-id = current()/../network-ref]" 521 +"/nt:link/nt:link-id"; 522 } 523 description 524 "An absolute reference to a link instance."; 525 } 526 } 528 grouping node-ref { 529 description 530 "Grouping for an absolute reference to a node instance."; 531 uses network-ref; 532 leaf node-ref { 533 type leafref { 534 path "/nw:network" 535 +"[nw:network-id = current()/../network-ref]" 536 +"/nw:node/nw:node-id"; 537 } 538 description 539 "An absolute reference to a node instance."; 540 } 541 } 543 grouping tp-ref { 544 description 545 "Grouping for an absolute reference to a termination point."; 546 uses node-ref; 547 leaf tp-ref { 548 type leafref { 549 path "/nw:network" 550 +"[nw:network-id = current()/../network-ref]" 551 +"/nw:node[nw:node-id = current()/../node-ref]" 552 +"/nt:termination-point/nt:tp-id"; 553 } 554 description 555 "Grouping for an absolute reference to a termination point."; 556 } 557 } 559 grouping igp-prefix-attributes { 560 description 561 "IGP prefix attributes"; 562 leaf prefix { 563 type inet:ip-prefix; 564 description "IP prefix value"; 565 } 566 leaf metric { 567 type uint32; 568 description "Prefix metric"; 569 } 570 leaf-list flag { 571 type flag-type; 572 description "Prefix flags"; 573 } 574 } 576 grouping l3-unicast-igp-topology-type { 577 description "Identify the topology type to be L3 unicast."; 578 container l3-unicast-igp-topology { 579 presence "indicates L3 Unicast IGP Topology"; 580 description 581 "The presence of the container node indicates L3 Unicast 582 IGP Topology"; 583 } 584 } 586 grouping igp-topology-attributes { 587 description "Topology scope attributes"; 588 container igp-topology-attributes { 589 description "Containing topology attributes"; 590 leaf name { 591 type string; 592 description "Name of the topology"; 593 } 594 leaf-list flag { 595 type flag-type; 596 description "Topology flags"; 597 } 598 } 599 } 601 grouping igp-node-attributes { 602 description "IGP node scope attributes"; 603 container igp-node-attributes { 604 description "Containing node attributes"; 605 leaf name { 606 type inet:domain-name; 607 description "Node name"; 608 } 609 leaf-list flag { 610 type flag-type; 611 description "Node operational flags"; 613 } 614 leaf-list router-id { 615 type inet:ip-address; 616 description "Router-id for the node"; 617 } 618 list prefix { 619 key "prefix"; 620 description 621 "A list of prefixes along with their attributes"; 622 uses igp-prefix-attributes; 623 } 624 } 625 } 627 grouping igp-link-attributes { 628 description "IGP link scope attributes"; 629 container igp-link-attributes { 630 description "Containing link attributes"; 631 leaf name { 632 type string; 633 description "Link Name"; 634 } 635 leaf-list flag { 636 type flag-type; 637 description "Link flags"; 638 } 639 leaf metric { 640 type uint32 { 641 range "0..16777215" { 642 description " 643 "; 644 // OSPF/ISIS supports max 3 byte metric. 645 // Ideally we would like this restriction to be 646 // defined in the derived models, however, 647 // we are not allowed to augment a "must" statement. 648 } 649 } 650 description "Link Metric"; 651 } 652 } 653 } // grouping igp-link-attributes 655 grouping igp-termination-point-attributes { 656 description "IGP termination point scope attributes"; 657 container igp-termination-point-attributes { 658 description "Containing termination point attributes"; 659 choice termination-point-type { 660 description "Indicates the termination point type"; 661 case ip { 662 leaf-list ip-address { 663 type inet:ip-address; 664 description "IPv4 or IPv6 address"; 665 } 666 } 667 case unnumbered { 668 leaf unnumbered-id { 669 type uint32; 670 description "Unnumbered interface identifier"; 671 } 672 } 673 } 674 } 675 } // grouping igp-termination-point-attributes 677 augment "/nw:network/nw:network-types" { 678 description 679 "Introduce new network type for L3 unicast IGP topology"; 680 uses l3-unicast-igp-topology-type; 681 } 683 augment "/nw:network" { 684 when "nw:network-types/l3-unicast-igp-topology" { 685 description 686 "Augmentation parameters apply only for networks with 687 L3 unicast IGP topology"; 688 } 689 description 690 "Configuration parameters for L3 unicast IPG for the network 691 as a whole"; 692 uses igp-topology-attributes; 693 } 695 augment "/nw:network/nw:node" { 696 when "../nw:network-types/l3-unicast-igp-topology" { 697 description 698 "Augmentation parameters apply only for networks with 699 L3 unicast IGP topology"; 700 } 701 description 702 "Configuration parameters for L3 unicast IPG at the node 703 level"; 704 uses igp-node-attributes; 705 } 707 augment "/nw:network/nt:link" { 708 when "../nw:network-types/l3-unicast-igp-topology" { 709 description 710 "Augmentation parameters apply only for networks with 711 L3 unicast IGP topology"; 712 } 713 description "Augment topology link configuration"; 714 uses igp-link-attributes; 715 } 717 augment "/nw:network/nw:node/" 718 +"nt:termination-point" { 719 when "../../nw:network-types/l3-unicast-igp-topology" { 720 description 721 "Augmentation parameters apply only for networks with 722 L3 unicast IGP topology"; 723 } 724 description "Augment topology termination point configuration"; 725 uses igp-termination-point-attributes; 726 } 728 notification igp-node-event { 729 description "Notification event for IGP node"; 730 leaf igp-event-type { 731 type igp-event-type; 732 description "Event type"; 733 } 734 uses node-ref; 735 uses l3-unicast-igp-topology-type; 736 uses igp-node-attributes; 737 } 739 notification igp-link-event { 740 description "Notification event for IGP link"; 741 leaf igp-event-type { 742 type igp-event-type; 743 description "Event type"; 744 } 745 uses link-ref; 746 uses l3-unicast-igp-topology-type; 747 uses igp-link-attributes; 748 } 750 notification igp-prefix-event { 751 description "Notification event for IGP prefix"; 752 leaf igp-event-type { 753 type igp-event-type; 754 description "Event type"; 755 } 756 uses node-ref; 757 uses l3-unicast-igp-topology-type; 758 container prefix { 759 description "Containing IPG prefix attributes"; 760 uses igp-prefix-attributes; 761 } 762 } 764 notification termination-point-event { 765 description "Notification event for IGP termination point"; 766 leaf igp-event-type { 767 type igp-event-type; 768 description "Event type"; 769 } 770 uses tp-ref; 771 uses l3-unicast-igp-topology-type; 772 uses igp-termination-point-attributes; 773 } 774 } 776 778 5. OSPF Topology YANG Module 780 781 file "ospf-topology@2015-06-08.yang" 782 module ospf-topology { 783 yang-version 1; 784 namespace "urn:ietf:params:xml:ns:yang:ospf-topology"; 785 prefix "ospf"; 787 import ietf-inet-types { 788 prefix "inet"; 789 } 790 import ietf-network { 791 prefix "nw"; 792 } 793 import ietf-network-topology { 794 prefix "nt"; 795 } 796 import l3-unicast-igp-topology { 797 prefix "l3t"; 798 } 800 organization "TBD"; 801 contact "TBD"; 802 description "OSPF Topology model"; 804 revision "2015-06-08" { 805 description "Initial revision"; 806 reference "TBD"; 807 } 809 typedef area-id { 810 type uint32; 811 description "OSPF Area ID"; 812 } 814 grouping ospf-topology-type { 815 description 816 "Identifies the OSPF topology type."; 817 container ospf { 818 presence "indiates OSPF Topology"; 819 description 820 "Its presence identifies the OSPF topology type."; 821 } 822 } 824 augment "/nw:network/nw:network-types/" 825 + "l3t:l3-unicast-igp-topology" { 826 description 827 "Defines the OSPF topology type."; 828 uses ospf-topology-type; 829 } 831 augment "/nw:network/l3t:igp-topology-attributes" { 832 when "../nw:network-types/l3t:l3-unicast-igp-topology/ospf" { 833 description "Augment only for OSPF topology"; 834 } 835 description "Augment topology configuration"; 836 container ospf-topology-attributes { 837 description "Containing topology attributes"; 838 leaf area-id { 839 type area-id; 840 description "OSPF area ID"; 841 } 842 } 843 } 845 augment "/nw:network/nw:node/l3t:igp-node-attributes" { 846 when "../../nw:network-types/l3t:l3-unicast-igp-topology/ospf" { 847 description "Augment only for OSPF topology"; 848 } 849 description "Augment node configuration"; 850 uses ospf-node-attributes; 851 } 852 augment "/nw:network/nt:link/l3t:igp-link-attributes" { 853 when "../../nw:network-types/l3t:l3-unicast-igp-topology/ospf" { 854 description "Augment only for OSPF topology"; 855 } 856 description "Augment link configuration"; 857 uses ospf-link-attributes; 858 } 860 augment "/nw:network/nw:node/l3t:igp-node-attributes/l3t:prefix" { 861 when "../../../nw:network-types/l3t:l3-unicast-igp-topology/" 862 +"ospf" { 863 description "Augment only for OSPF topology"; 864 } 865 description "Augment prefix"; 866 uses ospf-prefix-attributes; 867 } 869 grouping ospf-node-attributes { 870 description "OSPF node scope attributes"; 871 container ospf-node-attributes { 872 description "Containing node attributes"; 873 choice router-type { 874 description "Indicates router type"; 875 case abr { 876 leaf abr { 877 type empty; 878 description "The node is ABR"; 879 } 880 } 881 case asbr { 882 leaf asbr { 883 type empty; 884 description "The node is ASBR"; 885 } 886 } 887 case internal { 888 leaf internal { 889 type empty; 890 description "The node is internal"; 891 } 892 } 893 case pseudonode { 894 leaf pseudonode { 895 type empty; 896 description "The node is pseudonode"; 897 } 898 } 899 } 900 leaf dr-interface-id { 901 when "../router-type/pseudonode" { 902 description "Valid only for pseudonode"; 903 } 904 type uint32; 905 default "0"; 906 description "For pseudonodes, DR interface-id"; 907 } 908 leaf-list multi-topology-id { 909 type uint8 { 910 range "0..127"; 911 } 912 max-elements "128"; 913 description 914 "List of Multi-Topology Identifier up-to 128 (0-127). 915 RFC 4915"; 916 } 917 leaf capabilities { 918 type bits { 919 bit graceful-restart-capable { 920 position 0; 921 description "Graceful restart capable"; 922 } 923 bit graceful-restart-helper { 924 position 1; 925 description "Graceful restart helper"; 926 } 927 bit stub-router-support { 928 position 2; 929 description "Stub router support"; 930 } 931 bit traffic-engineering-support { 932 position 3; 933 description "Traffic engineering support"; 934 } 935 bit point-to-point-over-lan { 936 position 4; 937 description "Support point to point over LAN"; 938 } 939 bit experimental-te { 940 position 5; 941 description "Support experimental traffic engineering"; 942 } 943 } 944 description "OSPF capabilities as bit vector. RFC 4970"; 945 } 946 } // ospf 947 } // ospf-node-attributes 948 grouping ospf-link-attributes { 949 description "OSPF link scope attributes"; 950 container ospf-link-attributes { 951 description "Containing OSPF link attributes"; 952 leaf multi-topology-id { 953 type uint8 { 954 range "0..127"; 955 } 956 description "Muti topology ID"; 957 } 958 } 959 } // ospf-link-attributes 961 grouping ospf-prefix-attributes { 962 description "OSPF prefix attributes"; 963 container ospf-prefix-attributes { 964 description "Containing prefix attributes"; 965 leaf forwarding-address { 966 when "../../l3t:l3-unicast-igp-topology/l3t:ospf/" 967 +"l3t:router-type/l3t:asbr" { 968 description "Valid only for ABSR"; 969 } 970 type inet:ipv4-address; 971 description "Forwarding address for ABSR"; 972 } 973 } 974 } 976 augment "/l3t:igp-node-event" { 977 description "OSPF node event"; 978 uses ospf-topology-type; 979 uses ospf:ospf-node-attributes; 980 } 982 augment "/l3t:igp-link-event" { 983 description "OSPF link event"; 984 uses ospf-topology-type; 985 uses ospf:ospf-link-attributes; 986 } 988 augment "/l3t:igp-prefix-event" { 989 description "OSPF prefix event"; 990 uses ospf-topology-type; 991 uses ospf:ospf-prefix-attributes; 992 } 993 } 994 996 6. ISIS Topology YANG Module 998 999 file "isis-topology@2015-06-08.yang" 1000 module isis-topology { 1001 yang-version 1; 1002 namespace "urn:ietf:params:xml:ns:yang:isis-topology"; 1003 prefix "isis"; 1005 import ietf-network { 1006 prefix "nw"; 1007 } 1008 import ietf-network-topology { 1009 prefix "nt"; 1010 } 1011 import l3-unicast-igp-topology { 1012 prefix "l3t"; 1013 } 1015 organization "TBD"; 1016 contact "TBD"; 1017 description "ISIS Topology model"; 1019 revision "2015-06-08" { 1020 description "Initial version"; 1021 reference "TBD"; 1022 } 1023 typedef iso-system-id { 1024 type string { 1025 pattern '[0-9a-fA-F]{4}(\.[0-9a-fA-F]{4}){2}'; 1026 } 1027 description "ISO System ID. RFC 1237"; 1028 } 1030 typedef iso-pseudonode-id { 1031 type string { 1032 pattern '[0-9a-fA-F]{2}'; 1033 } 1034 description "ISO pseudonode id for broadcast network"; 1035 } 1037 typedef iso-net-id { 1038 type string { 1039 pattern '[0-9a-fA-F]{2}((\.[0-9a-fA-F]{4}){6})'; 1040 } 1041 description "ISO NET ID. RFC 1237"; 1042 } 1043 grouping isis-topology-type { 1044 description 1045 "Identifies the ISIS topology type."; 1046 container isis { 1047 presence "Indicates ISIS Topology"; 1048 description 1049 "Its presence identifies the ISIS topology type."; 1050 } 1051 } 1053 augment "/nw:network/nw:network-types/" 1054 +"l3t:l3-unicast-igp-topology" { 1055 description 1056 "Defines the ISIS topology type."; 1057 uses isis-topology-type; 1058 } 1060 augment "/nw:network/l3t:igp-topology-attributes" { 1061 when "../nw:network-types/l3t:l3-unicast-igp-topology/isis" { 1062 description "Augment only for ISIS topology"; 1063 } 1064 description "Augment topology configuration"; 1065 container isis-topology-attributes { 1066 description "Containing topology attributes"; 1067 leaf net { 1068 type iso-net-id; 1069 description "ISO NET ID value"; 1070 } 1071 } 1072 } 1074 augment "/nw:network/nw:node/" 1075 +"l3t:igp-node-attributes" { 1076 when "../../nw:network-types/l3t:l3-unicast-igp-topology/isis" { 1077 description "Augment only for ISIS topology"; 1078 } 1079 description "Augment node configuration"; 1080 uses isis-node-attributes; 1081 } 1083 augment "/nw:network/nt:link/l3t:igp-link-attributes" { 1084 when "../../nw:network-types/l3t:l3-unicast-igp-topology/isis" { 1085 description "Augment only for ISIS topology"; 1086 } 1087 description "Augment link configuration"; 1088 uses isis-link-attributes; 1089 } 1090 grouping isis-node-attributes { 1091 description "ISIS node scope attributes"; 1092 container isis-node-attributes { 1093 description "Containing node attributes"; 1094 container iso { 1095 description "Containing ISO atrributes"; 1096 leaf iso-system-id { 1097 type iso-system-id; 1098 description "ISO system ID"; 1099 } 1100 leaf iso-pseudonode-id { 1101 type iso-pseudonode-id; 1102 default "00"; 1103 description "Pseudonode ID"; 1104 } 1105 } 1106 leaf-list net { 1107 type iso-net-id; 1108 max-elements 3; 1109 description "List of ISO NET IDs"; 1110 } 1111 leaf-list multi-topology-id { 1112 type uint8 { 1113 range "0..127"; 1114 } 1115 max-elements "128"; 1116 description 1117 "List of Multi Topology Identifier upto 128 (0-127). 1118 RFC 4915"; 1119 } 1120 choice router-type { 1121 description "Indicates router type"; 1122 case level-2 { 1123 leaf level-2 { 1124 type empty; 1125 description "Level-2 only"; 1126 } 1127 } 1128 case level-1 { 1129 leaf level-1 { 1130 type empty; 1131 description "Level-1 only"; 1132 } 1133 } 1134 case level-1-2 { 1135 leaf level-1-2 { 1136 type empty; 1137 description "Level-1 and Level-2"; 1139 } 1140 } 1141 } 1142 } 1143 } 1145 grouping isis-link-attributes { 1146 description "ISIS link scope attributes"; 1147 container isis-link-attributes { 1148 description "Containing link attributes"; 1149 leaf multi-topology-id { 1150 type uint8 { 1151 range "0..127"; 1152 } 1153 description "Muti topology ID"; 1154 } 1155 } 1156 } 1158 augment "/l3t:igp-node-event" { 1159 description "ISIS node event"; 1160 uses isis-topology-type; 1161 uses isis-node-attributes; 1162 } 1164 augment "/l3t:igp-link-event" { 1165 description "ISIS link event"; 1166 uses isis-topology-type; 1167 uses isis-link-attributes; 1168 } 1169 } // Module isis-topology 1171 1173 7. Security Considerations 1175 The transport protocol used for sending the topology data MUST 1176 support authentication and SHOULD support encryption. The data-model 1177 by itself does not create any security implications. 1179 8. Contributors 1181 The model presented in this paper was contributed to by more people 1182 than can be listed on the author list. Additional contributors 1183 include: 1185 o Ken Gray, Juniper Networks 1186 o Tom Nadeau, Brocade 1188 o Aleksandr Zhdankin, Cisco 1190 9. Acknowledgements 1192 We wish to acknowledge the helpful contributions, comments, and 1193 suggestions that were received from Ladislav Lhotka, Andy Bierman, 1194 Carlos Pignataro, Joel Halpern, Juergen Schoenwaelder, Alia Atlas, 1195 and Susan Hares. 1197 10. References 1199 10.1. Normative References 1201 [I-D.draft-ietf-i2rs-yang-network-topo] 1202 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1203 and H. Ananthakrishnan, "A YANG Data Model for Network 1204 Topologies", I-D draft-ietf-i2rs-yang-network-topo-01, 1205 June 2015. 1207 [I-D.draft-ietf-netconf-restconf] 1208 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1209 Protocol", I-D draft-ietf-netconf-restconf-05, June 2015. 1211 [I-D.draft-ietf-netmod-yang-json] 1212 Lhotka, L., "JSON Encoding of Data Modeled with YANG", I-D 1213 draft-ietf-netmod-yang-json-03, February 2015. 1215 [RFC1195] Callon, R., "Use of OSI IS-IS for Routing in TCP/IP and 1216 Dual Environments", RFC 1195, December 1990. 1218 [RFC2178] Moy, J., "OSPF Version 2", RFC 2178, July 1997. 1220 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1221 Network Configuration Protocol (NETCONF)", RFC 6020, 1222 October 2010. 1224 [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, 1225 October 2010. 1227 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1228 Bierman, "Network Configuration Protocol (NETCONF)", RFC 1229 6241, June 2011. 1231 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1232 Management", RFC 7223, May 2014. 1234 10.2. Informative References 1236 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1237 Hares, S. and M. Chen, "Summary of I2RS Use Case 1238 Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- 1239 01, May 2015. 1241 Authors' Addresses 1243 Alexander Clemm 1244 Cisco 1246 EMail: alex@cisco.com 1248 Jan Medved 1249 Cisco 1251 EMail: jmedved@cisco.com 1253 Robert Varga 1254 Pantheon Technologies SRO 1256 EMail: robert.varga@pantheon.sk 1258 Tony Tkacik 1259 Pantheon Technologies SRO 1261 EMail: tony.tkacik@pantheon.sk 1263 Xufeng Liu 1264 Ericsson 1266 EMail: xufeng.liu@ericsson.com 1268 Igor Bryskin 1269 Adva Optical 1271 EMail: ibryskin@advaoptical.com 1272 Aihua Guo 1273 Adva Optical 1275 EMail: aguo@advaoptical.com 1277 Hariharan Ananthakrishnan 1278 Packet Design 1280 EMail: hari@packetdesign.com 1282 Nitin Bahadur 1283 Bracket Computing 1285 EMail: nitin_bahadur@yahoo.com 1287 Vishnu Beeram 1288 Juniper Networks 1290 EMail: vbeeram@juniper.net