idnits 2.17.1 draft-ietf-i2rs-yang-l3-topology-04.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 2 instances of too long lines in the document, the longest one being 1 character 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 1276: '...sed for sending the topology data MUST...' RFC 2119 keyword, line 1277: '...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 248 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 (September 19, 2016) is 2774 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 1321, but no explicit reference was found in the text == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-06 ** Obsolete normative reference: RFC 2178 (Obsoleted by RFC 2328) ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) == Outdated reference: A later version (-03) exists of draft-ietf-i2rs-usecase-reqs-summary-02 Summary: 5 errors (**), 0 flaws (~~), 6 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: March 23, 2017 R. Varga 6 Pantheon Technologies SRO 7 T. Tkacik 9 X. Liu 10 Ericsson 11 I. Bryskin 12 Huawei 13 A. Guo 14 Adva Optical 15 H. Ananthakrishnan 16 Packet Design 17 N. Bahadur 18 Bracket Computing 19 V. Beeram 20 Juniper Networks 21 September 19, 2016 23 A YANG Data Model for Layer 3 Topologies 24 draft-ietf-i2rs-yang-l3-topology-04.txt 26 Abstract 28 This document defines a YANG data model for layer 3 network 29 topologies. 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at http://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on March 23, 2017. 48 Copyright Notice 50 Copyright (c) 2016 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (http://trustee.ietf.org/license-info) in effect on the date of 56 publication of this document. Please review these documents 57 carefully, as they describe your rights and restrictions with respect 58 to this document. Code Components extracted from this document must 59 include Simplified BSD License text as described in Section 4.e of 60 the Trust Legal Provisions and are provided without warranty as 61 described in the Simplified BSD License. 63 This document may contain material from IETF Documents or IETF 64 Contributions published or made publicly available before November 65 10, 2008. The person(s) controlling the copyright in some of this 66 material may not have granted the IETF Trust the right to allow 67 modifications of such material outside the IETF Standards Process. 68 Without obtaining an adequate license from the person(s) controlling 69 the copyright in such materials, this document may not be modified 70 outside the IETF Standards Process, and derivative works of it may 71 not be created outside the IETF Standards Process, except to format 72 it for publication as an RFC or to translate it into languages other 73 than English. 75 Table of Contents 77 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 78 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 4 79 3. Model Structure . . . . . . . . . . . . . . . . . . . . . . . 4 80 4. Layer 3 Unicast Topology Model Overview . . . . . . . . . . . 5 81 5. Layer 3 Unicast Topology YANG Module . . . . . . . . . . . . 7 82 6. Extending the Model . . . . . . . . . . . . . . . . . . . . . 14 83 6.1. Example 1: OSPF Topology . . . . . . . . . . . . . . . . 14 84 6.1.1. Model Overview . . . . . . . . . . . . . . . . . . . 15 85 6.1.2. OSPF Topology YANG Module . . . . . . . . . . . . . . 17 86 6.2. Example 2: IS-IS Topology . . . . . . . . . . . . . . . . 22 87 6.2.1. Model Overview . . . . . . . . . . . . . . . . . . . 22 88 6.2.2. IS-IS Topology YANG Module . . . . . . . . . . . . . 23 89 7. Security Considerations . . . . . . . . . . . . . . . . . . . 28 90 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 28 91 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 92 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 93 10.1. Normative References . . . . . . . . . . . . . . . . . . 29 94 10.2. Informative References . . . . . . . . . . . . . . . . . 29 95 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 97 1. Introduction 99 This document introduces a YANG [RFC7950] [RFC6991] data model for 100 Layer 3 network topologies, specifically Layer 3 Unicast. The model 101 allows an application to have a holistic view of the topology of a 102 Layer 3 network, all contained in a single conceptual YANG datastore. 104 The data model builds on top of, and augments, the data model for 105 network topologies defined in 106 [I-D.draft-ietf-i2rs-yang-network-topo]. An earlier revision of that 107 Internet Draft contained not just the general model for network 108 topologies, but also the model for layer 3 network topologies that is 109 being specified here. However, we decided to "split" the earlier 110 draft to separate the truly general aspects of a topology data model, 111 which apply to any type of topology, from the application of this 112 model to a particular domain, here: a Layer 3 network. 114 The document also shows how the model can be further refined to cover 115 different Layer 3 Unicast topology types. For this purpose, example 116 models are introduced that cover IS-IS [RFC1195] and OSPF [RFC2178]. 117 Those examples are intended purely for illustrative purposes; we 118 expect that full-blown IS-IS and OSPF models will be more 119 comprehensive and refined than the examples shown here. 121 There are multiple applications for a topology data model. A number 122 of use cases have been defined in section 6 of 123 [I-D.draft-ietf-i2rs-usecase-reqs-summary]. For example, nodes 124 within the network can use the data model to capture their 125 understanding of the overall network topology and expose it to a 126 network controller. A network controller can then use the 127 instantiated topology data to compare and reconcile its own view of 128 the network topology with that of the network elements that it 129 controls. Alternatively, nodes within the network could propagate 130 this understanding to compare and reconcile this understanding either 131 amongst themselves or with help of a controller. Beyond the network 132 element itself, a network controller might even use the data model to 133 represent its view of the topology that it controls and expose it to 134 applications north of itself. 136 There are several reasons to choose YANG to define the data model. 137 Data defined using YANG can be exposed by a server to client 138 applications and controllers via Netconf [RFC6241]. The fact that 139 YANG can potentially be used with different protocols and interfaces 140 provides for a degree of "future-proofing" of model implementations. 141 Also, YANG can serve as the basis for model-driven toolchains, such 142 as used in the Open Daylight project [OpenDaylight]. 144 The data model for Layer 3 Unicast topologies defined in this 145 document is specified in a YANG module "ietf-l3-unicast-topology". 146 To do so, it augments general network topology model defined in 147 [I-D.draft-ietf-i2rs-yang-network-topo] with information specific to 148 Layer 3 Unicast. This way, the general topology model is extended to 149 be able to meet the needs of Layer 3 Unicast topologies. 151 Information that is kept in the Traffic Engineering Database (TED) is 152 specified in a separate model and outside the scope of this 153 specification. 155 2. Definitions and Acronyms 157 Datastore: A conceptual store of instantiated management information, 158 with individual data items represented by data nodes which are 159 arranged in hierarchical manner. 161 Data subtree: An instantiated data node and the data nodes that are 162 hierarchically contained within it. 164 HTTP: Hyper-Text Transfer Protocol 166 IGP: Interior Gateway Protocol 168 IS-IS: Intermediate System to Intermediate System protocol 170 LSP: Label Switched Path 172 NETCONF: Network Configuration Protocol 174 OSPF: Open Shortest Path First, a link state routing protocol 176 URI: Uniform Resource Identifier 178 ReST: Representational State Transfer, a style of stateless interface 179 and protocol that is generally carried over HTTP 181 SRLG: Shared Risk Link Group 183 TED: Traffic Engineering Database 185 YANG: A data definition language for NETCONF 187 3. Model Structure 189 The Layer 3 Unicast topology model is defined by YANG module "l3- 190 unicast-topology". The relationship of this module with other YANG 191 modules is roughly depicted in the figure below. 193 +-----------------------------+ 194 | +-----------------------+ | 195 | | ietf-network | | 196 | +----------^------------+ | 197 | | | 198 | +-----------------------+ | 199 | | ietf-network-topology | | 200 | +----------+------------+ | 201 +-------------^---------------+ 202 | 203 | 204 +-----------^-------------+ 205 | L3-UNICAST-TOPOLOGY | 206 +----+---------------+----+ 207 ^ ^ 208 | | 209 | | 210 +--------^-----+ +-----^---------+ 211 | ospf-topology| | isis-topology | 212 +--------------+ +---------------+ 214 Figure 1: Overall model structure 216 YANG modules "ietf-network" and "ietf-network-topology" collectively 217 define the basic network topology model. YANG module "ietf-l3- 218 unicast-topology" augments those models with additional definitions 219 needed to represent Layer 3 Unicast topologies. This module in turn 220 can be augmented by YANG modules with additional definitions for 221 specific types of Layer 3 Unicast topologies, such as OSPF and for 222 IS-IS topologies. 224 4. Layer 3 Unicast Topology Model Overview 226 The Layer 3 Unicast topology model is defined by YANG module "ietf- 227 l3-unicast-topology" and depicted in the following diagram. Brackets 228 enclose list keys, "rw" means configuration, "ro" operational state 229 data, "?" designates optional nodes, "*" designates nodes that can 230 have multiple instances. Parantheses enclose choice and case nodes. 231 The prefix "nd:" refers to the YANG module for networks; the prefix 232 "lnk:" refers to the YANG module for network topology. In the 233 interest of brevity, notifications are not depicted. 235 module: ietf-l3-unicast-topology 236 augment /nd:networks/nd:network/nd:network-types: 237 +--rw l3-unicast-topology! 238 augment /nd:networks/nd:network: 239 +--rw l3-topology-attributes 240 +--rw name? string 241 +--rw flag* l3-flag-type 242 augment /nd:networks/nd:network/nd:node: 243 +--rw l3-node-attributes 244 +--rw name? inet:domain-name 245 +--rw flag* node-flag-type 246 +--rw router-id* inet:ip-address 247 +--rw prefix* [prefix] 248 +--rw prefix inet:ip-prefix 249 +--rw metric? uint32 250 +--rw flag* prefix-flag-type 251 augment /nd:networks/nd:network/lnk:link: 252 +--rw l3-link-attributes 253 +--rw name? string 254 +--rw flag* link-flag-type 255 +--rw metric? uint32 256 augment /nd:networks/nd:network/nd:node/lnk:termination-point: 257 +--rw l3-termination-point-attributes 258 +--rw (termination-point-type)? 259 +--:(ip) 260 | +--rw ip-address* inet:ip-address 261 +--:(unnumbered) 262 +--rw unnumbered-id? uint32 264 The module augments the original ietf-network and ietf-network- 265 topology modules as follows: 267 o A new network topology type is introduced, l3-unicast-topology. 268 The corresponding container augments the network-types of the 269 ietf-network module. 271 o Additional topology attributes are introduced, defined in a 272 grouping, which augments the "network" list of the network module. 273 The attributes include a name for the topology, as well as a set 274 of flags (represented through a leaf-list). Each type of flag is 275 represented by a separate identity. This allows to introduce 276 additional flags in augmenting modules using additional identities 277 without needing to revise this module. 279 o Additional data objects for nodes are introduced by augmenting the 280 "node" list of the network module. New objects include again a 281 set of flags, as well as a list of prefixes. Each prefix in turn 282 includes an ip prefix, a metric, and a prefix-specific set of 283 flags. 285 o Links (in the ietf-network-topology module) are augmented with a 286 set of parameters as well, allowing to associate a link with a 287 link name, another set of flags, and a link metric. 289 o Termination points (in the ietf-network-topology module as well) 290 are augmented with a choice of IP address or identifier. 292 In addition, the module defines a set of notifications to alert 293 clients of any events concerning links, nodes, prefixes, and 294 termination points. Each notification includes an indication of the 295 type of event, the topology from which it originated, and the 296 affected node, or link, or prefix, or termination point. In 297 addition, as a convenience to applications, additional data of the 298 affected node, or link, or termination point (respectively) is 299 included. While this makes notifications larger in volume than they 300 would need to be, it avoids the need for subsequent retrieval of 301 context information, which also might have changed in the meantime. 303 5. Layer 3 Unicast Topology YANG Module 305 file "ietf-l3-unicast-topology@2016-09-19.yang" 306 module ietf-l3-unicast-topology { 307 yang-version 1.1; 308 namespace 309 "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; 310 prefix "l3t"; 311 import ietf-network { 312 prefix "nd"; 313 } 314 import ietf-network-topology { 315 prefix "lnk"; 316 } 317 import ietf-inet-types { 318 prefix "inet"; 319 } 320 organization 321 "IETF I2RS (Interface to the Routing System) Working Group"; 322 contact 323 "WG Web: 324 WG List: 325 WG Chair: Susan Hares 326 327 WG Chair: Russ White 328 329 Editor: Alexander Clemm 330 331 Editor: Jan Medved 332 333 Editor: Robert Varga 334 335 Editor: Tony Tkacik 336 337 Editor: Xufeng Liu 338 339 Editor: Igor Bryskin 340 341 Editor: Aihua Guo 342 343 Editor: Nitin Bahadur 344 345 Editor: Hariharan Ananthakrishnan 346 347 Editor: Vishnu Pavan Beeram 348 "; 349 description 350 "This module defines a model for Layer 3 Unicast 351 topologies. 352 Copyright (c) 2016 IETF Trust and the persons identified as 353 authors of the code. All rights reserved. 354 Redistribution and use in source and binary forms, with or 355 without modification, is permitted pursuant to, and subject 356 to the license terms contained in, the Simplified BSD License 357 set forth in Section 4.c of the IETF Trust's Legal Provisions 358 Relating to IETF Documents 359 (http://trustee.ietf.org/license-info). 360 This version of this YANG module is part of 361 draft-ietf-i2rs-yang-network-topo-04; 362 see the RFC itself for full legal notices. 363 NOTE TO RFC EDITOR: Please replace above reference to 364 draft-ietf-i2rs-yang-network-topo-04 with RFC 365 number when published (i.e. RFC xxxx)."; 366 revision "2016-09-19" { 367 description 368 "Initial revision. 369 NOTE TO RFC EDITOR: Please replace the following reference 370 to draft-ietf-i2rs-yang-l3-topology-04 with 371 RFC number when published (i.e. RFC xxxx)."; 372 reference 373 "draft-ietf-i2rs-yang-l3-topology-04"; 374 } 376 identity flag-identity { 377 description "Base type for flags"; 379 } 381 typedef l3-event-type { 382 type enumeration { 383 enum "add" { 384 description 385 "An Layer 3 node or link or prefix or termination-point has 386 been added"; 387 } 388 enum "remove" { 389 description 390 "An Layer 3 node or link or prefix or termination-point has 391 been removed"; 392 } 393 enum "update" { 394 description 395 "An Layer 3 node or link or prefix or termination-point has 396 been updated"; 397 } 398 } 399 description "Layer 3 Event type for notifications"; 400 } 402 typedef prefix-flag-type { 403 type identityref { 404 base "flag-identity"; 405 } 406 description "Prefix flag attributes"; 407 } 409 typedef node-flag-type { 410 type identityref { 411 base "flag-identity"; 412 } 413 description "Node flag attributes"; 414 } 416 typedef link-flag-type { 417 type identityref { 418 base "flag-identity"; 419 } 420 description "Prefix flag attributes"; 421 } 423 typedef l3-flag-type { 424 type identityref { 425 base "flag-identity"; 426 } 427 description "L3 flag attributes"; 428 } 430 grouping l3-prefix-attributes { 431 description 432 "L3 prefix attributes"; 433 leaf prefix { 434 type inet:ip-prefix; 435 description 436 "IP prefix value"; 437 } 438 leaf metric { 439 type uint32; 440 description 441 "Prefix metric"; 442 } 443 leaf-list flag { 444 type prefix-flag-type; 445 description 446 "Prefix flags"; 447 } 448 } 449 grouping l3-unicast-topology-type { 450 description "Identify the topology type to be L3 unicast."; 451 container l3-unicast-topology { 452 presence "indicates L3 Unicast Topology"; 453 description 454 "The presence of the container node indicates L3 Unicast 455 Topology"; 456 } 457 } 458 grouping l3-topology-attributes { 459 description "Topology scope attributes"; 460 container l3-topology-attributes { 461 description "Containing topology attributes"; 462 leaf name { 463 type string; 464 description 465 "Name of the topology"; 466 } 467 leaf-list flag { 468 type l3-flag-type; 469 description 470 "Topology flags"; 471 } 472 } 473 } 474 grouping l3-node-attributes { 475 description "L3 node scope attributes"; 476 container l3-node-attributes { 477 description 478 "Containing node attributes"; 479 leaf name { 480 type inet:domain-name; 481 description 482 "Node name"; 483 } 484 leaf-list flag { 485 type node-flag-type; 486 description 487 "Node flags"; 488 } 489 leaf-list router-id { 490 type inet:ip-address; 491 description 492 "Router-id for the node"; 493 } 494 list prefix { 495 key "prefix"; 496 description 497 "A list of prefixes along with their attributes"; 498 uses l3-prefix-attributes; 499 } 500 } 501 } 502 grouping l3-link-attributes { 503 description 504 "L3 link scope attributes"; 505 container l3-link-attributes { 506 description 507 "Containing link attributes"; 508 leaf name { 509 type string; 510 description 511 "Link Name"; 512 } 513 leaf-list flag { 514 type link-flag-type; 515 description 516 "Link flags"; 517 } 518 leaf metric { 519 type uint32; 520 description 521 "Link Metric"; 522 } 524 } 525 } 526 grouping l3-termination-point-attributes { 527 description "L3 termination point scope attributes"; 528 container l3-termination-point-attributes { 529 description 530 "Containing termination point attributes"; 531 choice termination-point-type { 532 description 533 "Indicates the termination point type"; 534 case ip { 535 leaf-list ip-address { 536 type inet:ip-address; 537 description 538 "IPv4 or IPv6 address"; 539 } 540 } 541 case unnumbered { 542 leaf unnumbered-id { 543 type uint32; 544 description 545 "Unnumbered interface identifier"; 546 } 547 } 548 } 549 } 550 } 551 augment "/nd:networks/nd:network/nd:network-types" { 552 description 553 "Introduce new network type for L3 unicast topology"; 554 uses l3-unicast-topology-type; 555 } 556 augment "/nd:networks/nd:network" { 557 when "nd:network-types/l3-unicast-topology" { 558 description 559 "Augmentation parameters apply only for networks with 560 L3 unicast topology"; 561 } 562 description 563 "L3 unicast for the network as a whole"; 564 uses l3-topology-attributes; 565 } 566 augment "/nd:networks/nd:network/nd:node" { 567 when "../nd:network-types/l3-unicast-topology" { 568 description 569 "Augmentation parameters apply only for networks with 570 L3 unicast topology"; 571 } 572 description 573 "L3 unicast node level attributes "; 574 uses l3-node-attributes; 575 } 576 augment "/nd:networks/nd:network/lnk:link" { 577 when "../nd:network-types/l3-unicast-topology" { 578 description 579 "Augmentation parameters apply only for networks with 580 L3 unicast topology"; 581 } 582 description 583 "Augment topology link attributes"; 584 uses l3-link-attributes; 585 } 586 augment "/nd:networks/nd:network/nd:node/" 587 +"lnk:termination-point" { 588 when "../../nd:network-types/l3-unicast-topology" { 589 description 590 "Augmentation parameters apply only for networks with 591 L3 unicast topology"; 592 } 593 description "Augment topology termination point configuration"; 594 uses l3-termination-point-attributes; 595 } 596 notification l3-node-event { 597 description 598 "Notification event for L3 node"; 599 leaf l3-event-type { 600 type l3-event-type; 601 description 602 "Event type"; 603 } 604 uses nd:node-ref; 605 uses l3-unicast-topology-type; 606 uses l3-node-attributes; 607 } 608 notification l3-link-event { 609 description 610 "Notification event for L3 link"; 611 leaf l3-event-type { 612 type l3-event-type; 613 description 614 "Event type"; 615 } 616 uses lnk:link-ref; 617 uses l3-unicast-topology-type; 618 uses l3-link-attributes; 619 } 620 notification l3-prefix-event { 621 description 622 "Notification event for L3 prefix"; 623 leaf l3-event-type { 624 type l3-event-type; 625 description 626 "Event type"; 627 } 628 uses nd:node-ref; 629 uses l3-unicast-topology-type; 630 container prefix { 631 description 632 "Containing L3 prefix attributes"; 633 uses l3-prefix-attributes; 634 } 635 } 636 notification termination-point-event { 637 description 638 "Notification event for L3 termination point"; 639 leaf l3-event-type { 640 type l3-event-type; 641 description 642 "Event type"; 643 } 644 uses lnk:tp-ref; 645 uses l3-unicast-topology-type; 646 uses l3-termination-point-attributes; 647 } 648 } 650 652 6. Extending the Model 654 The model can be extended for specific Layer 3 Unicast types. 655 Examples include OSPF and IS-IS topologies. In the following, two 656 additional YANG modules are introduced that define simple topology 657 models for OSPF and IS-IS, respectively. These modules intended to 658 serve as examples that illustrate how the general topology model can 659 be refined across multiple levels; they do not constitute full- 660 fledged OSPF and IS-IS topology models which may be more 661 comprehensive and refined than the models that are described here. 663 6.1. Example 1: OSPF Topology 664 6.1.1. Model Overview 666 The following model shows how the Layer 3 Unicast topology model can 667 be extended to cover OSFP topologies. For this purpose, a set of 668 augmentations are introduced in a separate YANG module, "ietf-ospf- 669 topology", whose structure is depicted in the following diagram. 670 Like before, brackets enclose list keys, "rw" means configuration, 671 "ro" operational state data, "?" designates optional nodes, "*" 672 designates nodes that can have multiple instances. Parantheses 673 enclose choice and case nodes. A "+" at the end of a line indicates 674 a line break. 676 module: ietf-ospf-topology 677 augment /nd:networks/nd:network/nd:network-types/l3t:l3-unicast-topology: 678 +--rw ospf! 679 augment /nd:networks/nd:network/l3t:l3-topology-attributes: 680 +--rw ospf-topology-attributes 681 +--rw area-id? area-id-type 682 augment /nd:networks/nd:network/nd:node/l3t:l3-node-attributes: 683 +--rw ospf-node-attributes 684 +--rw (router-type)? 685 | +--:(abr) 686 | | +--rw abr? empty 687 | +--:(asbr) 688 | | +--rw asbr? empty 689 | +--:(internal) 690 | | +--rw internal? empty 691 | +--:(pseudonode) 692 | +--rw pseudonode? empty 693 +--rw dr-interface-id? uint32 694 +--rw multi-topology-id* uint8 695 augment /nd:networks/nd:network/lnk:link/l3t:l3-link-attributes: 696 +--rw ospf-link-attributes 697 +--rw multi-topology-id? uint8 698 augment /l3t:l3-node-event: 699 +---- ospf! 700 +---- ospf-node-attributes 701 +---- (router-type)? 702 | +--:(abr) 703 | | +---- abr? empty 704 | +--:(asbr) 705 | | +---- asbr? empty 706 | +--:(internal) 707 | | +---- internal? empty 708 | +--:(pseudonode) 709 | +---- pseudonode? empty 710 +---- dr-interface-id? uint32 711 +---- multi-topology-id* uint8 712 augment /l3t:l3-link-event: 713 +---- ospf! 714 +---- ospf-link-attributes 715 +---- multi-topology-id? uint8 717 The module augments "ietf-l3-unicast-topology" as follows: 719 o A new topology type for an OSPF topology is introduced. 721 o Additional topology attributes are defined in a new grouping which 722 augments l3-topology-attributes of the ietf-l3-unicast-topology 723 module. The attributes include an OSPF area-id identifying the 724 OSPF area. 726 o Additional data objects for nodes are introduced by augmenting the 727 l3-node-attributes of the l3-unicast-topology module. New objects 728 include router-type, dr-interface-id for pseudonodes, list of 729 multi-topology-ids, ospf node capabilities, and traffic 730 engineering attributes. 732 o Links are augmented with a multi-topology-id and traffic 733 engineering link attributes. 735 o Prefixes are augmented with OSPF specific forwarding address. 737 In addition, the module extends notifications for events concerning 738 Layer 3 nodes, links, termination points, and prefixes with OSPF 739 attributes. 741 It should be noted that the model defined here represents topology 742 and is intended as an example. It does not define how to configure 743 OSPF routers or interfaces. 745 6.1.2. OSPF Topology YANG Module 747 file "ietf-ospf-topology@2016-09-19.yang" 748 module ietf-ospf-topology { 749 yang-version 1.1; 750 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-topology"; 751 prefix "ospft"; 752 import ietf-yang-types { 753 prefix "yang"; 754 } 755 import ietf-network { 756 prefix "nd"; 757 } 758 import ietf-network-topology { 759 prefix "lnk"; 760 } 761 import ietf-l3-unicast-topology { 762 prefix "l3t"; 763 } 764 organization 765 "IETF I2RS (Interface to the Routing System) Working Group"; 766 contact 767 "WG Web: <>http://tools.ietf.org/wg/i2rs/> 768 WG List: 769 WG Chair: Susan Hares 770 772 WG Chair: Russ White 773 774 Editor: Alexander Clemm 775 776 Editor: Jan Medved 777 778 Editor: Robert Varga 779 780 Editor: Tony Tkacik 781 782 Editor: Xufeng Liu 783 784 Editor: Igor Bryskin 785 786 Editor: Aihua Guo 787 788 Editor: Nitin Bahadur 789 790 Editor: Hariharan Ananthakrishnan 791 792 Editor: Vishnu Pavan Beeram 793 "; 794 description 795 "This module defines a model for OSPF network topologies. 796 Copyright (c) 2016 IETF Trust and the persons identified as 797 authors of the code. All rights reserved. 798 Redistribution and use in source and binary forms, with or 799 without modification, is permitted pursuant to, and subject 800 to the license terms contained in, the Simplified BSD License 801 set forth in Section 4.c of the IETF Trust's Legal Provisions 802 Relating to IETF Documents 803 (http://trustee.ietf.org/license-info). 804 This version of this YANG module is part of 805 draft-ietf-i2rs-yang-network-topo-04; 806 see the RFC itself for full legal notices. 807 NOTE TO RFC EDITOR: Please replace above reference to 808 draft-ietf-i2rs-yang-network-topo-04 with RFC 809 number when published (i.e. RFC xxxx)."; 810 revision "2016-09-19" { 811 description 812 "Initial revision. 813 NOTE TO RFC EDITOR: Please replace the following reference 814 to draft-ietf-i2rs-yang-l3-topology-04 with 815 RFC number when published (i.e. RFC xxxx)."; 816 reference 817 "draft-ietf-i2rs-yang-l3-topology-04"; 818 } 819 typedef area-id-type { 820 type yang:dotted-quad; 821 description 822 "Area ID type."; 823 } 824 grouping ospf-topology-type { 825 description 826 "Identifies the OSPF topology type."; 827 container ospf { 828 presence "indiates OSPF Topology"; 829 description 830 "Its presence identifies the OSPF topology type."; 831 } 832 } 833 augment "/nd:networks/nd:network/nd:network-types/" 834 + "l3t:l3-unicast-topology" { 835 description 836 "Defines the OSPF topology type."; 837 uses ospf-topology-type; 838 } 839 augment "/nd:networks/nd:network/l3t:l3-topology-attributes" { 840 when "../nd:network-types/l3t:l3-unicast-topology/ospf" { 841 description 842 "Augment only for OSPF topology"; 843 } 844 description 845 "Augment topology configuration"; 846 container ospf-topology-attributes { 847 description 848 "Containing topology attributes"; 849 leaf area-id { 850 type area-id-type; 851 description 852 "OSPF area ID"; 853 } 854 } 855 } 856 augment "/nd:networks/nd:network/nd:node/l3t:l3-node-attributes" { 857 when "../../nd:network-types/l3t:l3-unicast-topology/ospf" { 858 description 859 "Augment only for OSPF topology"; 860 } 861 description 862 "Augment node configuration"; 863 uses ospf-node-attributes; 864 } 865 augment "/nd:networks/nd:network/lnk:link/l3t:l3-link-attributes" { 866 when "../../nd:network-types/l3t:l3-unicast-topology/ospf" { 867 description 868 "Augment only for OSPF topology"; 869 } 870 description 871 "Augment link configuration"; 872 uses ospf-link-attributes; 873 } 874 grouping ospf-node-attributes { 875 description 876 "OSPF node scope attributes"; 877 container ospf-node-attributes { 878 description 879 "Containing node attributes"; 880 choice router-type { 881 description 882 "Indicates router type"; 883 case abr { 884 leaf abr { 885 type empty; 886 description 887 "The node is ABR"; 888 } 889 } 890 case asbr { 891 leaf asbr { 892 type empty; 893 description 894 "The node is ASBR"; 895 } 896 } 897 case internal { 898 leaf internal { 899 type empty; 900 description 901 "The node is internal"; 902 } 903 } 904 case pseudonode { 905 leaf pseudonode { 906 type empty; 907 description 908 "The node is pseudonode"; 909 } 910 } 911 } 912 leaf dr-interface-id { 913 when "../router-type/pseudonode" { 914 description 915 "Valid only for pseudonode"; 917 } 918 type uint32; 919 default "0"; 920 description 921 "For pseudonodes, DR interface-id"; 922 } 923 leaf-list multi-topology-id { 924 type uint8 { 925 range "0..127"; 926 } 927 max-elements "128"; 928 description 929 "List of Multi-Topology Identifier up-to 128 (0-127). 930 See RFC 4915"; 931 } 932 } 933 } 934 grouping ospf-link-attributes { 935 description 936 "OSPF link scope attributes"; 937 container ospf-link-attributes { 938 description 939 "Containing OSPF link attributes"; 940 leaf multi-topology-id { 941 type uint8 { 942 range "0..127"; 943 } 944 description "Multi topology ID"; 945 } 946 } 947 } // ospf-link-attributes 948 augment "/l3t:l3-node-event" { 949 description 950 "OSPF node event"; 951 uses ospf-topology-type; 952 uses ospft:ospf-node-attributes; 953 } 954 augment "/l3t:l3-link-event" { 955 description 956 "OSPF link event"; 957 uses ospf-topology-type; 958 uses ospft:ospf-link-attributes; 959 } 960 } 962 964 6.2. Example 2: IS-IS Topology 966 6.2.1. Model Overview 968 IS-IS topologies are another type of Layer 3 Unicast topology. Like 969 in the case of OSPF topology, a model for IS-IS topology can be 970 defined in a separate module which augments "ietf-l3-unicast-igp- 971 topology". The structure of a corresponding model, "ietf-isis- 972 topology", is depicted in the following diagram. Like before, 973 brackets enclose list keys, "rw" means configuration, "ro" 974 operational state data, "?" designates optional nodes, "*" designates 975 nodes that can have multiple instances. Parantheses enclose choice 976 and case nodes. A "+" at the end of a line indicates a line break. 978 module: ietf-isis-topology 979 augment /nd:networks/nd:network/nd:network-types/l3t:l3-unicast-topology: 980 +--rw isis! 981 augment /nd:networks/nd:network/l3t:l3-topology-attributes: 982 +--rw isis-topology-attributes 983 +--rw net? area-address 984 augment /nd:networks/nd:network/nd:node/l3t:l3-node-attributes: 985 +--rw isis-node-attributes 986 +--rw iso 987 | +--rw iso-system-id? system-id 988 | +--rw iso-pseudonode-id? iso-pseudonode-id 989 +--rw net* area-address 990 +--rw multi-topology-id* uint16 991 +--rw level? level 992 augment /nd:networks/nd:network/lnk:link/l3t:l3-link-attributes: 993 +--rw isis-link-attributes 994 +--rw multi-topology-id? uint16 995 augment /l3t:l3-node-event: 996 +---- isis! 997 +---- isis-node-attributes 998 +---- iso 999 | +---- iso-system-id? system-id 1000 | +---- iso-pseudonode-id? iso-pseudonode-id 1001 +---- net* area-address 1002 +---- multi-topology-id* uint16 1003 +---- level? level 1004 augment /l3t:l3-link-event: 1005 +---- isis! 1006 +---- isis-link-attributes 1007 +---- multi-topology-id? uint16 1009 The module augments the ietf-l3-unicast-topology as follows: 1011 o A new topology type is introduced for isis. 1013 o Additional topology attributes are introduced in a new grouping 1014 which augments "topology-attributes" of the ietf-l3-unicast- 1015 topology module. The attributes include an ISIS NET-id 1016 identifying the area. 1018 o Additional data objects for nodes are introduced by augmenting 1019 "node-attributes" of the ietf-l3-unicast-topology module. New 1020 objects include router-type, iso-system-id to identify the router, 1021 a list of multi-topology-id, a list of NET ids, and traffic 1022 engineering attributes. 1024 o Links are augmented with multi-topology-id and traffic engineering 1025 link attributes. 1027 In addition, the module augments nodes and links with IS-IS 1028 attributes. 1030 Again, it should be noted that the model defined here represents 1031 topology and is intended as an example. It does not define how to 1032 configure IS-IS routers or interfaces. 1034 6.2.2. IS-IS Topology YANG Module 1036 file "ietf-isis-topology@2016-09-19.yang" 1037 module ietf-isis-topology { 1038 yang-version 1.1; 1039 namespace "urn:ietf:params:xml:ns:yang:ietf-isis-topology"; 1040 prefix "isist"; 1041 import ietf-network { 1042 prefix "nd"; 1043 } 1044 import ietf-network-topology { 1045 prefix "lnk"; 1046 } 1047 import ietf-l3-unicast-topology { 1048 prefix "l3t"; 1049 } 1050 organization 1051 "IETF I2RS (Interface to the Routing System) Working Group"; 1052 contact 1053 "WG Web: > 1054 WG List: 1055 WG Chair: Susan Hares 1056 1057 WG Chair: Russ White 1058 1060 Editor: Alexander Clemm 1061 1062 Editor: Jan Medved 1063 1064 Editor: Robert Varga 1065 1066 Editor: Tony Tkacik 1067 1068 Editor: Xufeng Liu 1069 1070 Editor: Igor Bryskin 1071 1072 Editor: Aihua Guo 1073 1074 Editor: Nitin Bahadur 1075 1076 Editor: Hariharan Ananthakrishnan 1077 1078 Editor: Vishnu Pavan Beeram 1079 "; 1080 description 1081 "This module defines a model for IS-IS network topologies. 1082 Copyright (c) 2016 IETF Trust and the persons identified as 1083 authors of the code. All rights reserved. 1084 Redistribution and use in source and binary forms, with or 1085 without modification, is permitted pursuant to, and subject 1086 to the license terms contained in, the Simplified BSD License 1087 set forth in Section 4.c of the IETF Trust's Legal Provisions 1088 Relating to IETF Documents 1089 (http://trustee.ietf.org/license-info). 1090 This version of this YANG module is part of 1091 draft-ietf-i2rs-yang-network-topo-04; 1092 see the RFC itself for full legal notices. 1093 NOTE TO RFC EDITOR: Please replace above reference to 1094 draft-ietf-i2rs-yang-network-topo-04 with RFC 1095 number when published (i.e. RFC xxxx)."; 1096 revision "2016-09-19" { 1097 description 1098 "Initial revision. 1099 NOTE TO RFC EDITOR: Please replace the following reference 1100 to draft-ietf-i2rs-yang-l3-topology-4 with 1101 RFC number when published (i.e. RFC xxxx)."; 1102 reference 1103 draft-ietf-i2rs-yang-l3-topology-04; 1104 } 1105 typedef iso-pseudonode-id { 1106 type string { 1107 pattern '[0-9a-fA-F]{2}'; 1109 } 1110 description 1111 "ISO pseudonode id for broadcast network."; 1112 } 1113 typedef area-address{ 1114 type string { 1115 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1116 } 1117 description 1118 "This type defines the area address."; 1119 } 1120 typedef system-id { 1121 type string { 1122 pattern 1123 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1124 } 1125 description 1126 "This type defines ISIS system id using a pattern; 1127 an example of a system id looks like: 0143.0438.AeF0."; 1128 } 1129 typedef level { 1130 type enumeration { 1131 enum "level-1" { 1132 description 1133 "This enum describes L1 only capability."; 1134 } 1135 enum "level-2" { 1136 description 1137 "This enum describes L2 only capability."; 1138 } 1139 enum "level-all" { 1140 description 1141 "This enum describes both levels (L1 and L2) capability."; 1142 } 1143 } 1144 default "level-all"; 1145 description 1146 "This type defines the ISIS level of an object."; 1147 } 1148 grouping isis-topology-type { 1149 description 1150 "Identifies the ISIS topology type."; 1151 container isis { 1152 presence "Indicates ISIS Topology"; 1153 description 1154 "Its presence identifies the ISIS topology type."; 1155 } 1156 } 1157 augment "/nd:networks/nd:network/nd:network-types/" 1158 +"l3t:l3-unicast-topology" { 1159 description 1160 "Defines the ISIS topology type."; 1161 uses isis-topology-type; 1162 } 1163 augment "/nd:networks/nd:network/l3t:l3-topology-attributes" { 1164 when "../nd:network-types/l3t:l3-unicast-topology/isis" { 1165 description 1166 "Augment only for ISIS topology"; 1167 } 1168 description 1169 "Augment topology configuration"; 1170 container isis-topology-attributes { 1171 description 1172 "Containing topology attributes"; 1173 leaf net { 1174 type area-address; 1175 description 1176 "ISO NET ID value"; 1177 } 1178 } 1179 } 1180 augment "/nd:networks/nd:network/nd:node/"+ 1181 "l3t:l3-node-attributes" { 1182 when "../../nd:network-types/l3t:l3-unicast-topology/isis" { 1183 description 1184 "Augment only for ISIS topology"; 1185 } 1186 description 1187 "Augment node configuration"; 1188 uses isis-node-attributes; 1189 } 1190 augment "/nd:networks/nd:network/lnk:link/l3t:l3-link-attributes" { 1191 when "../../nd:network-types/l3t:l3-unicast-topology/isis" { 1192 description 1193 "Augment only for ISIS topology"; 1194 } 1195 description 1196 "Augment link configuration"; 1197 uses isis-link-attributes; 1198 } 1199 grouping isis-node-attributes { 1200 description 1201 "ISIS node scope attributes"; 1202 container isis-node-attributes { 1203 description 1204 "Containing node attributes"; 1206 container iso { 1207 description 1208 "Containing ISO atrributes"; 1209 leaf iso-system-id { 1210 type system-id; 1211 description 1212 "ISO system ID"; 1213 } 1214 leaf iso-pseudonode-id { 1215 type iso-pseudonode-id; 1216 default "00"; 1217 description 1218 "Pseudonode ID"; 1219 } 1220 } 1221 leaf-list net { 1222 type area-address; 1223 max-elements 3; 1224 description 1225 "List of ISO NET IDs"; 1226 } 1227 leaf-list multi-topology-id { 1228 type uint16 { 1229 range "0..4095"; 1230 } 1231 max-elements "128"; 1232 description 1233 "List of Multi Topology Identifier up to 128 (0-127). 1234 RFC 4915"; 1235 } 1236 leaf level { 1237 type level; 1238 description "Level 1, Level 2 or Level 1 and 2"; 1239 } 1240 } 1241 } 1242 grouping isis-link-attributes { 1243 description 1244 "ISIS link scope attributes"; 1245 container isis-link-attributes { 1246 description 1247 "Containing link attributes"; 1248 leaf multi-topology-id { 1249 type uint16 { 1250 range "0..4095"; 1251 } 1252 description 1253 "Multi topology ID"; 1255 } 1256 } 1257 } 1258 augment "/l3t:l3-node-event" { 1259 description 1260 "ISIS node event"; 1261 uses isis-topology-type; 1262 uses isis-node-attributes; 1263 } 1264 augment "/l3t:l3-link-event" { 1265 description 1266 "ISIS link event"; 1267 uses isis-topology-type; 1268 uses isis-link-attributes; 1269 } 1270 } 1272 1274 7. Security Considerations 1276 The transport protocol used for sending the topology data MUST 1277 support authentication and SHOULD support encryption. The data-model 1278 by itself does not create any security implications. 1280 8. Contributors 1282 The model presented in this paper was contributed to by more people 1283 than can be listed on the author list. Additional contributors 1284 include: 1286 o Ken Gray, Juniper Networks 1288 o Tom Nadeau, Brocade 1290 o Aleksandr Zhdankin, Cisco 1292 9. Acknowledgements 1294 We wish to acknowledge the helpful contributions, comments, and 1295 suggestions that were received from Ladislav Lhotka, Andy Bierman, 1296 Carlos Pignataro, Joel Halpern, Juergen Schoenwaelder, Alia Atlas, 1297 Susan Hares, Benoit Claise, and Carl Moberg. 1299 10. References 1301 10.1. Normative References 1303 [I-D.draft-ietf-i2rs-yang-network-topo] 1304 Clemm, A., Medved, J., Tkacik, T., Varga, R., Bahadur, N., 1305 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 1306 Network Topologies", I-D draft-ietf-i2rs-yang-network- 1307 topo-06, September 2016. 1309 [RFC1195] Callon, R., "Use of OSI IS-IS for Routing in TCP/IP and 1310 Dual Environments", RFC 1195, December 1990. 1312 [RFC2178] Moy, J., "OSPF Version 2", RFC 2178, July 1997. 1314 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1315 Bierman, "Network Configuration Protocol (NETCONF)", 1316 RFC 6241, June 2011. 1318 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1319 July 2013. 1321 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1322 Management", RFC 7223, May 2014. 1324 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1325 RFC 7950, August 2016. 1327 10.2. Informative References 1329 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1330 Hares, S. and M. Chen, "Summary of I2RS Use Case 1331 Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- 1332 02, March 2016. 1334 [OpenDaylight] 1335 Medved, J., Varga, R., Tkacik, T., and K. Gray, 1336 "OpenDaylight: Towards a Model-Driven SDN Controller 1337 architecture", IEEE 15th Int. Symposium on World of 1338 Wireless, Mobile and Multimedia Networks (IEEE WoWMoM 1339 2014), June 2014. 1341 Authors' Addresses 1343 Alexander Clemm 1344 Cisco 1346 EMail: ludwig@clemm.org 1347 Jan Medved 1348 Cisco 1350 EMail: jmedved@cisco.com 1352 Robert Varga 1353 Pantheon Technologies SRO 1355 EMail: robert.varga@pantheon.sk 1357 Tony Tkacik 1359 EMail: tony.tkacik@gmail.com 1361 Xufeng Liu 1362 Ericsson 1364 EMail: xliu@kuatrotech.com 1366 Igor Bryskin 1367 Huawei 1369 EMail: Igor.Bryskin@huawei.com 1371 Aihua Guo 1372 Adva Optical 1374 EMail: aguo@advaoptical.com 1376 Hariharan Ananthakrishnan 1377 Packet Design 1379 EMail: hari@packetdesign.com 1381 Nitin Bahadur 1382 Bracket Computing 1384 EMail: nitin_bahadur@yahoo.com 1385 Vishnu Pavan Beeram 1386 Juniper Networks 1388 EMail: vbeeram@juniper.net