idnits 2.17.1 draft-ietf-i2rs-yang-l3-topology-10.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 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 210: '...NG modules (that SHOULD NOT be support...' RFC 2119 keyword, line 1477: '...unicast-topology SHOULD NOT be support...' Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 239 has weird spacing: '... prefix ine...' -- The document date (July 2, 2017) is 2489 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: 'RFC2863' is defined on line 1391, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1440, but no explicit reference was found in the text == Outdated reference: A later version (-20) exists of draft-ietf-i2rs-yang-network-topo-14 == Outdated reference: A later version (-10) exists of draft-ietf-netmod-revised-datastores-02 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-10) exists of draft-acee-rtgwg-yang-rib-extend-02 == Outdated reference: A later version (-22) exists of draft-ietf-teas-yang-te-topo-09 -- Obsolete informational reference (is this intentional?): RFC 7223 (Obsoleted by RFC 8343) -- Obsolete informational reference (is this intentional?): RFC 8022 (Obsoleted by RFC 8349) Summary: 2 errors (**), 0 flaws (~~), 8 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Clemm 3 Internet-Draft Huawei 4 Intended status: Standards Track J. Medved 5 Expires: January 3, 2018 Cisco 6 R. Varga 7 Pantheon Technologies SRO 8 X. Liu 9 Ericsson 10 H. Ananthakrishnan 11 Packet Design 12 N. Bahadur 13 Bracket Computing 14 July 2, 2017 16 A YANG Data Model for Layer 3 Topologies 17 draft-ietf-i2rs-yang-l3-topology-10.txt 19 Abstract 21 This document defines a YANG data model for layer 3 network 22 topologies. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at http://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on January 3, 2018. 41 Copyright Notice 43 Copyright (c) 2017 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (http://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 59 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 60 3. Model Structure . . . . . . . . . . . . . . . . . . . . . . . 4 61 4. Layer 3 Unicast Topology Model Overview . . . . . . . . . . . 5 62 5. Layer 3 Unicast Topology YANG Module . . . . . . . . . . . . 7 63 6. Extending the Model . . . . . . . . . . . . . . . . . . . . . 15 64 6.1. Example 1: OSPF Topology . . . . . . . . . . . . . . . . 15 65 6.1.1. Model Overview . . . . . . . . . . . . . . . . . . . 15 66 6.1.2. OSPF Topology YANG Module . . . . . . . . . . . . . . 17 67 6.2. Example 2: IS-IS Topology . . . . . . . . . . . . . . . . 22 68 6.2.1. Model Overview . . . . . . . . . . . . . . . . . . . 22 69 6.2.2. IS-IS Topology YANG Module . . . . . . . . . . . . . 23 70 7. Interactions with Other YANG Modules . . . . . . . . . . . . 28 71 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 72 9. Security Considerations . . . . . . . . . . . . . . . . . . . 29 73 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 29 74 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 30 75 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 76 12.1. Normative References . . . . . . . . . . . . . . . . . . 30 77 12.2. Informative References . . . . . . . . . . . . . . . . . 31 78 Appendix A. Companion YANG model for non-NMDA compliant 79 implementations . . . . . . . . . . . . . . . . . . 32 80 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 82 1. Introduction 84 This document introduces a YANG [RFC7950] [RFC6991] data model for 85 Layer 3 network topologies, specifically Layer 3 Unicast. The model 86 allows an application to have a holistic view of the topology of a 87 Layer 3 network, all contained in a single conceptual YANG datastore. 88 The data model builds on top of, and augments, the data model for 89 network topologies defined in 90 [I-D.draft-ietf-i2rs-yang-network-topo]. 92 This document also shows how the model can be further refined to 93 cover different Layer 3 Unicast topology types. For this purpose, 94 example models are introduced that cover IS-IS [RFC1195] and OSPF 95 [RFC2328]. Those examples are intended purely for illustrative 96 purposes; we expect that full-blown IS-IS and OSPF models will be 97 more comprehensive and refined than the examples shown here. 99 There are multiple applications for a topology data model. A number 100 of use cases have been defined in section 6 of 101 [I-D.draft-ietf-i2rs-usecase-reqs-summary]. For example, nodes 102 within the network can use the data model to capture their 103 understanding of the overall network topology and expose it to a 104 network controller. A network controller can then use the 105 instantiated topology data to compare and reconcile its own view of 106 the network topology with that of the network elements that it 107 controls. Alternatively, nodes within the network could propagate 108 this understanding to compare and reconcile this understanding either 109 amongst themselves or with help of a controller. Beyond the network 110 element itself, a network controller might even use the data model to 111 represent its view of the topology that it controls and expose it to 112 applications north of itself. 114 The data model for Layer 3 Unicast topologies defined in this 115 document is specified in a YANG module "ietf-l3-unicast-topology". 116 To do so, it augments general network topology model defined in 117 [I-D.draft-ietf-i2rs-yang-network-topo] with information specific to 118 Layer 3 Unicast. This way, the general topology model is extended to 119 be able to meet the needs of Layer 3 Unicast topologies. 121 Information that is kept in the Traffic Engineering Database (TED) 122 will be specified in a separate model 123 [I-D.draft-ietf-teas-yang-te-topo] and outside the scope of this 124 specification. 126 2. Definitions and Acronyms 128 As this document defines a YANG data model, in this document many 129 terms are used that have been defined in conjunction with YANG 130 [RFC7950] and Netconf [RFC6241]. Some terms, such as datastore and 131 data tree, are repeated here for clarity and to put them in context. 133 Datastore: A conceptual place to store and access information, such 134 as instantiated YANG data. 136 Data tree: An instantiated tree of data modeled with YANG, in which 137 individual data items are represented by data nodes which are 138 arranged in hierarchical manner. 140 Data subtree: An instantiated data node and the data nodes that are 141 hierarchically contained within it. 143 HTTP: Hyper-Text Transfer Protocol 144 IGP: Interior Gateway Protocol 146 IS-IS: Intermediate System to Intermediate System protocol 148 LSP: Label Switched Path 150 NETCONF: Network Configuration Protocol 152 NMDA: Network Management Datastore Architecture 154 OSPF: Open Shortest Path First, a link state routing protocol 156 URI: Uniform Resource Identifier 158 ReST: Representational State Transfer, a style of stateless interface 159 and protocol that is generally carried over HTTP 161 SRLG: Shared Risk Link Group 163 TED: Traffic Engineering Database 165 YANG: A data definition language for NETCONF 167 3. Model Structure 169 The Layer 3 Unicast topology model is defined by YANG module "l3- 170 unicast-topology". The relationship of this module with other YANG 171 modules is roughly depicted in the figure below. 173 +-----------------------------+ 174 | +-----------------------+ | 175 | | ietf-network | | 176 | +----------^------------+ | 177 | | | 178 | +-----------------------+ | 179 | | ietf-network-topology | | 180 | +----------+------------+ | 181 +-------------^---------------+ 182 | 183 | 184 +-----------^-------------+ 185 | L3-UNICAST-TOPOLOGY | 186 +----+---------------+----+ 187 ^ ^ 188 | | 189 | | 190 +--------^-----+ +-----^---------+ 191 | ospf-topology| | isis-topology | 192 +--------------+ +---------------+ 194 Figure 1: Overall model structure 196 YANG modules "ietf-network" and "ietf-network-topology" collectively 197 define the basic network topology model. YANG module "ietf-l3- 198 unicast-topology" augments those models with additional definitions 199 needed to represent Layer 3 Unicast topologies. This module in turn 200 can be augmented by YANG modules with additional definitions for 201 specific types of Layer 3 Unicast topologies, such as OSPF and for 202 IS-IS topologies. 204 The YANG modules ietf-network and ietf-network are designed to be 205 used in conjunction with implementations that support the Network 206 Management Datastore Architecture (NMDA) defined in 207 [I-D.draft-ietf-netmod-revised-datastores]. Accordingly, the same is 208 true for the YANG modules that augment it. In order to allow 209 implementations to use the model even in cases when NMDA is not 210 supported, companion YANG modules (that SHOULD NOT be supported by 211 implementations that support NMDA) are defined in an Appendix, see 212 Appendix A. 214 4. Layer 3 Unicast Topology Model Overview 216 The Layer 3 Unicast topology model is defined by YANG module "ietf- 217 l3-unicast-topology" and depicted in the following diagram. Brackets 218 enclose list keys, "rw" means configuration, "ro" operational state 219 data, "?" designates optional nodes, "*" designates nodes that can 220 have multiple instances. Parantheses enclose choice and case nodes. 222 The prefix "nd:" refers to the YANG module for networks; the prefix 223 "lnk:" refers to the YANG module for network topology. In the 224 interest of brevity, notifications are not depicted. 226 module: ietf-l3-unicast-topology 227 augment /nd:networks/nd:network/nd:network-types: 228 +--rw l3-unicast-topology! 229 augment /nd:networks/nd:network: 230 +--rw l3-topology-attributes 231 +--rw name? string 232 +--rw flag* l3-flag-type 233 augment /nd:networks/nd:network/nd:node: 234 +--rw l3-node-attributes 235 +--rw name? inet:domain-name 236 +--rw flag* node-flag-type 237 +--rw router-id* inet:ip-address 238 +--rw prefix* [prefix] 239 +--rw prefix inet:ip-prefix 240 +--rw metric? uint32 241 +--rw flag* prefix-flag-type 242 augment /nd:networks/nd:network/lnk:link: 243 +--rw l3-link-attributes 244 +--rw name? string 245 +--rw flag* link-flag-type 246 +--rw metric? uint32 247 augment /nd:networks/nd:network/nd:node/lnk:termination-point: 248 +--rw l3-termination-point-attributes 249 +--rw (termination-point-type)? 250 +--:(ip) 251 | +--rw ip-address* inet:ip-address 252 +--:(unnumbered) 253 | +--rw unnumbered-id? uint32 254 +--:(interface-name) 255 +--ro interface-name? string 257 The module augments the original ietf-network and ietf-network- 258 topology modules as follows: 260 o A new network topology type is introduced, l3-unicast-topology. 261 The corresponding container augments the network-types of the 262 ietf-network module. 264 o Additional topology attributes are introduced, defined in a 265 grouping, which augments the "network" list of the network module. 266 The attributes include a name for the topology, as well as a set 267 of flags (represented through a leaf-list). Each type of flag is 268 represented by a separate identity. This allows to introduce 269 additional flags in augmenting modules using additional identities 270 without needing to revise this module. 272 o Additional data objects for nodes are introduced by augmenting the 273 "node" list of the network module. New objects include again a 274 set of flags, as well as a list of prefixes. Each prefix in turn 275 includes an ip prefix, a metric, and a prefix-specific set of 276 flags. 278 o Links (in the ietf-network-topology module) are augmented with a 279 set of parameters as well, allowing to associate a link with a 280 link name, another set of flags, and a link metric. 282 o Termination points (in the ietf-network-topology module as well) 283 are augmented with a choice of IP address, identifier, or name. 285 In addition, the module defines a set of notifications to alert 286 clients of any events concerning links, nodes, prefixes, and 287 termination points. Each notification includes an indication of the 288 type of event, the topology from which it originated, and the 289 affected node, or link, or prefix, or termination point. In 290 addition, as a convenience to applications, additional data of the 291 affected node, or link, or termination point (respectively) is 292 included. While this makes notifications larger in volume than they 293 would need to be, it avoids the need for subsequent retrieval of 294 context information, which also might have changed in the meantime. 296 5. Layer 3 Unicast Topology YANG Module 298 file "ietf-l3-unicast-topology@2017-07-02.yang" 299 module ietf-l3-unicast-topology { 300 yang-version 1.1; 301 namespace 302 "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology"; 303 prefix "l3t"; 304 import ietf-network { 305 prefix "nd"; 306 } 307 import ietf-network-topology { 308 prefix "lnk"; 309 } 310 import ietf-inet-types { 311 prefix "inet"; 312 } 313 organization 314 "IETF I2RS (Interface to the Routing System) Working Group"; 315 contact 316 "WG Web: 317 WG List: 318 WG Chair: Susan Hares 319 320 WG Chair: Russ White 321 322 Editor: Alexander Clemm 323 324 Editor: Jan Medved 325 326 Editor: Robert Varga 327 328 Editor: Xufeng Liu 329 330 Editor: Nitin Bahadur 331 332 Editor: Hariharan Ananthakrishnan 333 "; 334 description 335 "This module defines a model for Layer 3 Unicast 336 topologies. 337 Copyright (c) 2017 IETF Trust and the persons identified as 338 authors of the code. All rights reserved. 339 Redistribution and use in source and binary forms, with or 340 without modification, is permitted pursuant to, and subject 341 to the license terms contained in, the Simplified BSD License 342 set forth in Section 4.c of the IETF Trust's Legal Provisions 343 Relating to IETF Documents 344 (http://trustee.ietf.org/license-info). 345 This version of this YANG module is part of 346 draft-ietf-i2rs-yang-l3-topology-10; 347 see the RFC itself for full legal notices. 348 NOTE TO RFC EDITOR: Please replace above reference to 349 draft-ietf-i2rs-yang-l3-topology-10 with RFC 350 number when published (i.e. RFC xxxx)."; 351 revision "2017-07-02" { 352 description 353 "Initial revision. 354 NOTE TO RFC EDITOR: Please replace the following reference 355 to draft-ietf-i2rs-yang-l3-topology-10 with 356 RFC number when published (i.e. RFC xxxx)."; 357 reference 358 "draft-ietf-i2rs-yang-l3-topology-10"; 359 } 361 identity flag-identity { 362 description "Base type for flags"; 363 } 364 typedef l3-event-type { 365 type enumeration { 366 enum "add" { 367 description 368 "An Layer 3 node or link or prefix or termination-point has 369 been added"; 370 } 371 enum "remove" { 372 description 373 "An Layer 3 node or link or prefix or termination-point has 374 been removed"; 375 } 376 enum "update" { 377 description 378 "An Layer 3 node or link or prefix or termination-point has 379 been updated"; 380 } 381 } 382 description "Layer 3 Event type for notifications"; 383 } 385 typedef prefix-flag-type { 386 type identityref { 387 base "flag-identity"; 388 } 389 description "Prefix flag attributes"; 390 } 392 typedef node-flag-type { 393 type identityref { 394 base "flag-identity"; 395 } 396 description "Node flag attributes"; 397 } 399 typedef link-flag-type { 400 type identityref { 401 base "flag-identity"; 402 } 403 description "Link flag attributes"; 404 } 406 typedef l3-flag-type { 407 type identityref { 408 base "flag-identity"; 409 } 410 description "L3 flag attributes"; 411 } 412 grouping l3-prefix-attributes { 413 description 414 "L3 prefix attributes"; 415 leaf prefix { 416 type inet:ip-prefix; 417 description 418 "IP prefix value"; 419 } 420 leaf metric { 421 type uint32; 422 description 423 "Prefix metric"; 424 } 425 leaf-list flag { 426 type prefix-flag-type; 427 description 428 "Prefix flags"; 429 } 430 } 431 grouping l3-unicast-topology-type { 432 description "Identify the topology type to be L3 unicast."; 433 container l3-unicast-topology { 434 presence "indicates L3 Unicast Topology"; 435 description 436 "The presence of the container node indicates L3 Unicast 437 Topology"; 438 } 439 } 440 grouping l3-topology-attributes { 441 description "Topology scope attributes"; 442 container l3-topology-attributes { 443 description "Containing topology attributes"; 444 leaf name { 445 type string; 446 description 447 "Name of the topology"; 448 } 449 leaf-list flag { 450 type l3-flag-type; 451 description 452 "Topology flags"; 453 } 454 } 455 } 456 grouping l3-node-attributes { 457 description "L3 node scope attributes"; 458 container l3-node-attributes { 459 description 460 "Containing node attributes"; 461 leaf name { 462 type inet:domain-name; 463 description 464 "Node name"; 465 } 466 leaf-list flag { 467 type node-flag-type; 468 description 469 "Node flags"; 470 } 471 leaf-list router-id { 472 type inet:ip-address; 473 description 474 "Router-id for the node"; 475 } 476 list prefix { 477 key "prefix"; 478 description 479 "A list of prefixes along with their attributes"; 480 uses l3-prefix-attributes; 481 } 482 } 483 } 484 grouping l3-link-attributes { 485 description 486 "L3 link scope attributes"; 487 container l3-link-attributes { 488 description 489 "Containing link attributes"; 490 leaf name { 491 type string; 492 description 493 "Link Name"; 494 } 495 leaf-list flag { 496 type link-flag-type; 497 description 498 "Link flags"; 499 } 500 leaf metric { 501 type uint32; 502 description 503 "Link Metric"; 504 } 505 } 506 } 507 grouping l3-termination-point-attributes { 508 description "L3 termination point scope attributes"; 509 container l3-termination-point-attributes { 510 description 511 "Containing termination point attributes"; 512 choice termination-point-type { 513 description 514 "Indicates the termination point type"; 515 case ip { 516 leaf-list ip-address { 517 type inet:ip-address; 518 description 519 "IPv4 or IPv6 address."; 520 } 521 } 522 case unnumbered { 523 leaf unnumbered-id { 524 type uint32; 525 description 526 "Unnumbered interface identifier. 527 The identifier will correspond to the ifIndex value 528 of the interface, i.e. the ifIndex value of the 529 ifEntry that represents the interface in 530 implementations where the Interfaces Group MIB 531 (RFC 2863) is supported."; 532 reference 533 "RFC 2863: The Interfaces Group MIB"; 534 } 535 } 536 case interface-name { 537 leaf interface-name { 538 type string; 539 description 540 "A name of the interface. The name can (but does not 541 have to) correspond to an interface reference of a 542 containing node's interface, i.e. the path name of a 543 corresponding interface data node on the containing 544 node reminiscent of data type if-ref defined in 545 RFC 7223. It should be noted that data type if-ref of 546 RFC 7223 cannot be used directly, as this data type 547 is used to reference an interface in a datastore of 548 a single node in the network, not to uniquely 549 reference interfaces across a network."; 550 } 551 } 552 } 553 } 554 } 555 augment "/nd:networks/nd:network/nd:network-types" { 556 description 557 "Introduce new network type for L3 unicast topology"; 558 uses l3-unicast-topology-type; 559 } 560 augment "/nd:networks/nd:network" { 561 when "nd:network-types/l3-unicast-topology" { 562 description 563 "Augmentation parameters apply only for networks with 564 L3 unicast topology"; 565 } 566 description 567 "L3 unicast for the network as a whole"; 568 uses l3-topology-attributes; 569 } 570 augment "/nd:networks/nd:network/nd:node" { 571 when "../nd:network-types/l3-unicast-topology" { 572 description 573 "Augmentation parameters apply only for networks with 574 L3 unicast topology"; 575 } 576 description 577 "L3 unicast node level attributes "; 578 uses l3-node-attributes; 579 } 580 augment "/nd:networks/nd:network/lnk:link" { 581 when "../nd:network-types/l3-unicast-topology" { 582 description 583 "Augmentation parameters apply only for networks with 584 L3 unicast topology"; 585 } 586 description 587 "Augment topology link attributes"; 588 uses l3-link-attributes; 589 } 590 augment "/nd:networks/nd:network/nd:node/" 591 +"lnk:termination-point" { 592 when "../../nd:network-types/l3-unicast-topology" { 593 description 594 "Augmentation parameters apply only for networks with 595 L3 unicast topology"; 596 } 597 description "Augment topology termination point configuration"; 598 uses l3-termination-point-attributes; 599 } 600 notification l3-node-event { 601 description 602 "Notification event for L3 node"; 603 leaf l3-event-type { 604 type l3-event-type; 605 description 606 "Event type"; 607 } 608 uses nd:node-ref; 609 uses l3-unicast-topology-type; 610 uses l3-node-attributes; 611 } 612 notification l3-link-event { 613 description 614 "Notification event for L3 link"; 615 leaf l3-event-type { 616 type l3-event-type; 617 description 618 "Event type"; 619 } 620 uses lnk:link-ref; 621 uses l3-unicast-topology-type; 622 uses l3-link-attributes; 623 } 624 notification l3-prefix-event { 625 description 626 "Notification event for L3 prefix"; 627 leaf l3-event-type { 628 type l3-event-type; 629 description 630 "Event type"; 631 } 632 uses nd:node-ref; 633 uses l3-unicast-topology-type; 634 container prefix { 635 description 636 "Containing L3 prefix attributes"; 637 uses l3-prefix-attributes; 638 } 639 } 640 notification termination-point-event { 641 description 642 "Notification event for L3 termination point"; 643 leaf l3-event-type { 644 type l3-event-type; 645 description 646 "Event type"; 647 } 648 uses lnk:tp-ref; 649 uses l3-unicast-topology-type; 650 uses l3-termination-point-attributes; 651 } 653 } 655 657 6. Extending the Model 659 The model can be extended for specific Layer 3 Unicast types. 660 Examples include OSPF and IS-IS topologies. In the following, two 661 additional YANG modules are introduced that define simple topology 662 models for OSPF and IS-IS, respectively. These modules intended to 663 serve as examples that illustrate how the general topology model can 664 be refined across multiple levels; they do not constitute full- 665 fledged OSPF and IS-IS topology models which may be more 666 comprehensive and refined than the models that are described here. 668 6.1. Example 1: OSPF Topology 670 6.1.1. Model Overview 672 The following model shows how the Layer 3 Unicast topology model can 673 be extended to cover OSFP topologies. For this purpose, a set of 674 augmentations are introduced in a separate YANG module, "example- 675 ietf-ospf-topology", whose structure is depicted in the following 676 diagram. Like before, brackets enclose list keys, "rw" means 677 configuration, "ro" operational state data, "?" designates optional 678 nodes, "*" designates nodes that can have multiple instances. 679 Parantheses enclose choice and case nodes. A "+" at the end of a 680 line indicates a line break. 682 module: example-ietf-ospf-topology 683 augment /nd:networks/nd:network/nd:network-types/+ 684 l3t:l3-unicast-topology: 685 +--rw ospf! 686 augment /nd:networks/nd:network/l3t:l3-topology-attributes: 687 +--rw ospf-topology-attributes 688 +--rw area-id? area-id-type 689 augment /nd:networks/nd:network/nd:node/l3t:l3-node-attributes: 690 +--rw ospf-node-attributes 691 +--rw (router-type)? 692 | +--:(abr) 693 | | +--rw abr? empty 694 | +--:(asbr) 695 | | +--rw asbr? empty 696 | +--:(internal) 697 | | +--rw internal? empty 698 | +--:(pseudonode) 699 | +--rw pseudonode? empty 700 +--rw dr-interface-id? uint32 701 +--rw multi-topology-id* uint8 702 augment /nd:networks/nd:network/lnk:link/l3t:l3-link-attributes: 703 +--rw ospf-link-attributes 704 +--rw multi-topology-id? uint8 705 augment /l3t:l3-node-event: 706 +---- ospf! 707 +---- ospf-node-attributes 708 +---- (router-type)? 709 | +--:(abr) 710 | | +---- abr? empty 711 | +--:(asbr) 712 | | +---- asbr? empty 713 | +--:(internal) 714 | | +---- internal? empty 715 | +--:(pseudonode) 716 | +---- pseudonode? empty 717 +---- dr-interface-id? uint32 718 +---- multi-topology-id* uint8 719 augment /l3t:l3-link-event: 720 +---- ospf! 721 +---- ospf-link-attributes 722 +---- multi-topology-id? uint8 724 The module augments "ietf-l3-unicast-topology" as follows: 726 o A new topology type for an OSPF topology is introduced. 728 o Additional topology attributes are defined in a new grouping which 729 augments l3-topology-attributes of the ietf-l3-unicast-topology 730 module. The attributes include an OSPF area-id identifying the 731 OSPF area. 733 o Additional data objects for nodes are introduced by augmenting the 734 l3-node-attributes of the l3-unicast-topology module. New objects 735 include router-type, dr-interface-id for pseudonodes, list of 736 multi-topology-ids, ospf node capabilities, and traffic 737 engineering attributes. 739 o Links are augmented with a multi-topology-id and traffic 740 engineering link attributes. 742 o Prefixes are augmented with OSPF specific forwarding address. 744 In addition, the module extends notifications for events concerning 745 Layer 3 nodes, links, termination points, and prefixes with OSPF 746 attributes. 748 It should be noted that the model defined here represents topology 749 and is intended as an example. It does not define how to configure 750 OSPF routers or interfaces. 752 6.1.2. OSPF Topology YANG Module 754 The OSPF Topology YANG Module is specified below. As mentioned, the 755 module is intended as an example for how the Layer 3 Unicast topology 756 model can be extended to cover OSFP topologies, but it is not 757 normative. Accordingly, the module is not delimited with CODE BEGINS 758 and CODE ENDS tags. 760 file "example-ietf-ospf-topology@2017-07-02.yang" 761 module example-ietf-ospf-topology { 762 yang-version 1.1; 763 namespace "urn:ietf:params:xml:ns:yang:example-ietf-ospf-topology"; 764 prefix "ospft"; 765 import ietf-yang-types { 766 prefix "yang"; 767 } 768 import ietf-network { 769 prefix "nd"; 770 } 771 import ietf-network-topology { 772 prefix "lnk"; 773 } 774 import ietf-l3-unicast-topology { 775 prefix "l3t"; 777 } 778 organization 779 "IETF I2RS (Interface to the Routing System) Working Group"; 780 contact 781 "WG Web: 782 WG List: 783 WG Chair: Susan Hares 784 785 WG Chair: Russ White 786 787 Editor: Alexander Clemm 788 789 Editor: Jan Medved 790 791 Editor: Robert Varga 792 793 Editor: Xufeng Liu 794 795 Editor: Nitin Bahadur 796 797 Editor: Hariharan Ananthakrishnan 798 "; 799 description 800 "This module defines a model for OSPF network topologies. 801 Copyright (c) 2017 IETF Trust and the persons identified as 802 authors of the code. All rights reserved. 803 Redistribution and use in source and binary forms, with or 804 without modification, is permitted pursuant to, and subject 805 to the license terms contained in, the Simplified BSD License 806 set forth in Section 4.c of the IETF Trust's Legal Provisions 807 Relating to IETF Documents 808 (http://trustee.ietf.org/license-info). 809 This version of this YANG module is part of 810 draft-ietf-i2rs-yang-l3-topology-10; 811 see the RFC itself for full legal notices. 812 NOTE TO RFC EDITOR: Please replace above reference to 813 draft-ietf-i2rs-yang-l3-topology-10 with RFC 814 number when published (i.e. RFC xxxx)."; 815 revision "2017-07-02" { 816 description 817 "Initial revision. 818 NOTE TO RFC EDITOR: Please replace the following reference 819 to draft-ietf-i2rs-yang-l3-topology-10 with 820 RFC number when published (i.e. RFC xxxx)."; 821 reference 822 "draft-ietf-i2rs-yang-l3-topology-10"; 823 } 824 typedef area-id-type { 825 type yang:dotted-quad; 826 description 827 "Area ID type."; 828 } 829 grouping ospf-topology-type { 830 description 831 "Identifies the OSPF topology type."; 832 container ospf { 833 presence "indiates OSPF Topology"; 834 description 835 "Its presence identifies the OSPF topology type."; 836 } 837 } 838 augment "/nd:networks/nd:network/nd:network-types/" 839 + "l3t:l3-unicast-topology" { 840 description 841 "Defines the OSPF topology type."; 842 uses ospf-topology-type; 843 } 844 augment "/nd:networks/nd:network/l3t:l3-topology-attributes" { 845 when "../nd:network-types/l3t:l3-unicast-topology/ospf" { 846 description 847 "Augment only for OSPF topology"; 848 } 849 description 850 "Augment topology configuration"; 851 container ospf-topology-attributes { 852 description 853 "Containing topology attributes"; 854 leaf area-id { 855 type area-id-type; 856 description 857 "OSPF area ID"; 858 } 859 } 860 } 861 augment "/nd:networks/nd:network/nd:node/l3t:l3-node-attributes" { 862 when "../../nd:network-types/l3t:l3-unicast-topology/ospf" { 863 description 864 "Augment only for OSPF topology"; 865 } 866 description 867 "Augment node configuration"; 868 uses ospf-node-attributes; 869 } 870 augment "/nd:networks/nd:network/lnk:link/l3t:l3-link-attributes" { 871 when "../../nd:network-types/l3t:l3-unicast-topology/ospf" { 872 description 873 "Augment only for OSPF topology"; 874 } 875 description 876 "Augment link configuration"; 877 uses ospf-link-attributes; 878 } 879 grouping ospf-node-attributes { 880 description 881 "OSPF node scope attributes"; 882 container ospf-node-attributes { 883 description 884 "Containing node attributes"; 885 choice router-type { 886 description 887 "Indicates router type"; 888 case abr { 889 leaf abr { 890 type empty; 891 description 892 "The node is ABR"; 893 } 894 } 895 case asbr { 896 leaf asbr { 897 type empty; 898 description 899 "The node is ASBR"; 900 } 901 } 902 case internal { 903 leaf internal { 904 type empty; 905 description 906 "The node is internal"; 907 } 908 } 909 case pseudonode { 910 leaf pseudonode { 911 type empty; 912 description 913 "The node is pseudonode"; 914 } 915 } 916 } 917 leaf dr-interface-id { 918 when "../pseudonode" { 919 description 920 "Valid only for pseudonode"; 922 } 923 type uint32; 924 default "0"; 925 description 926 "For pseudonodes, DR interface-id"; 927 } 928 leaf-list multi-topology-id { 929 type uint8 { 930 range "0..127"; 931 } 932 max-elements "128"; 933 description 934 "List of Multi-Topology Identifier up-to 128 (0-127). 935 See RFC 4915"; 936 } 937 } 938 } 939 grouping ospf-link-attributes { 940 description 941 "OSPF link scope attributes"; 942 container ospf-link-attributes { 943 description 944 "Containing OSPF link attributes"; 945 leaf multi-topology-id { 946 type uint8 { 947 range "0..127"; 948 } 949 description "Multi topology ID"; 950 } 951 } 952 } // ospf-link-attributes 953 augment "/l3t:l3-node-event" { 954 description 955 "OSPF node event"; 956 uses ospf-topology-type; 957 uses ospft:ospf-node-attributes; 958 } 959 augment "/l3t:l3-link-event" { 960 description 961 "OSPF link event"; 962 uses ospf-topology-type; 963 uses ospft:ospf-link-attributes; 964 } 965 } 967 6.2. Example 2: IS-IS Topology 969 6.2.1. Model Overview 971 IS-IS topologies are another type of Layer 3 Unicast topology. Like 972 in the case of OSPF topology, a model for IS-IS topology can be 973 defined in a separate module which augments "ietf-l3-unicast-igp- 974 topology". The structure of a corresponding model, "ietf-isis- 975 topology", is depicted in the following diagram. Like before, 976 brackets enclose list keys, "rw" means configuration, "ro" 977 operational state data, "?" designates optional nodes, "*" designates 978 nodes that can have multiple instances. Parantheses enclose choice 979 and case nodes. A "+" at the end of a line indicates a line break. 981 module: example-ietf-isis-topology 982 augment /nd:networks/nd:network/nd:network-types/+ 983 l3t:l3-unicast-topology: 984 +--rw isis! 985 augment /nd:networks/nd:network/l3t:l3-topology-attributes: 986 +--rw isis-topology-attributes 987 +--rw net? area-address 988 augment /nd:networks/nd:network/nd:node/l3t:l3-node-attributes: 989 +--rw isis-node-attributes 990 +--rw iso 991 | +--rw iso-system-id? system-id 992 | +--rw iso-pseudonode-id? iso-pseudonode-id 993 +--rw net* area-address 994 +--rw multi-topology-id* uint16 995 +--rw level? level 996 augment /nd:networks/nd:network/lnk:link/l3t:l3-link-attributes: 997 +--rw isis-link-attributes 998 +--rw multi-topology-id? uint16 999 augment /l3t:l3-node-event: 1000 +---- isis! 1001 +---- isis-node-attributes 1002 +---- iso 1003 | +---- iso-system-id? system-id 1004 | +---- iso-pseudonode-id? iso-pseudonode-id 1005 +---- net* area-address 1006 +---- multi-topology-id* uint16 1007 +---- level? level 1008 augment /l3t:l3-link-event: 1009 +---- isis! 1010 +---- isis-link-attributes 1011 +---- multi-topology-id? uint16 1013 The module augments the ietf-l3-unicast-topology as follows: 1015 o A new topology type is introduced for isis. 1017 o Additional topology attributes are introduced in a new grouping 1018 which augments "topology-attributes" of the ietf-l3-unicast- 1019 topology module. The attributes include an ISIS NET-id 1020 identifying the area. 1022 o Additional data objects for nodes are introduced by augmenting 1023 "node-attributes" of the ietf-l3-unicast-topology module. New 1024 objects include router-type, iso-system-id to identify the router, 1025 a list of multi-topology-id, a list of NET ids, and traffic 1026 engineering attributes. 1028 o Links are augmented with multi-topology-id and traffic engineering 1029 link attributes. 1031 In addition, the module augments nodes and links with IS-IS 1032 attributes. 1034 Again, it should be noted that the model defined here represents a 1035 topology and is intended as an example. It does not define how to 1036 configure IS-IS routers or interfaces. 1038 6.2.2. IS-IS Topology YANG Module 1040 The IS-IS Topology YANG Module is specified as follows. As 1041 mentioned, the module is intended as an example for how the Layer 3 1042 Unicast topology model can be extended to cover IS-IS topologies, but 1043 it is not normative. Accordingly, the module is not delimited with 1044 CODE BEGINS and CODE ENDS tags. 1046 file "example-ietf-isis-topology@2017-07-02.yang" 1047 module example-ietf-isis-topology { 1048 yang-version 1.1; 1049 namespace "urn:ietf:params:xml:ns:yang:example-ietf-isis-topology"; 1050 prefix "isist"; 1051 import ietf-network { 1052 prefix "nd"; 1053 } 1054 import ietf-network-topology { 1055 prefix "lnk"; 1056 } 1057 import ietf-l3-unicast-topology { 1058 prefix "l3t"; 1059 } 1060 organization 1061 "IETF I2RS (Interface to the Routing System) Working Group"; 1062 contact 1063 "WG Web: 1064 WG List: 1065 WG Chair: Susan Hares 1066 1067 WG Chair: Russ White 1068 1069 Editor: Alexander Clemm 1070 1071 Editor: Jan Medved 1072 1073 Editor: Robert Varga 1074 1075 Editor: Xufeng Liu 1076 1077 Editor: Nitin Bahadur 1078 1079 Editor: Hariharan Ananthakrishnan 1080 "; 1081 description 1082 "This module defines a model for IS-IS network topologies. 1083 Copyright (c) 2017 IETF Trust and the persons identified as 1084 authors of the code. All rights reserved. 1085 Redistribution and use in source and binary forms, with or 1086 without modification, is permitted pursuant to, and subject 1087 to the license terms contained in, the Simplified BSD License 1088 set forth in Section 4.c of the IETF Trust's Legal Provisions 1089 Relating to IETF Documents 1090 (http://trustee.ietf.org/license-info). 1091 This version of this YANG module is part of 1092 draft-ietf-i2rs-yang-l3-topology-10; 1093 see the RFC itself for full legal notices. 1094 NOTE TO RFC EDITOR: Please replace above reference to 1095 draft-ietf-i2rs-yang-l3-topology-10 with RFC 1096 number when published (i.e. RFC xxxx)."; 1097 revision "2017-07-02" { 1098 description 1099 "Initial revision. 1100 NOTE TO RFC EDITOR: Please replace the following reference 1101 to draft-ietf-i2rs-yang-l3-topology-10 with 1102 RFC number when published (i.e. RFC xxxx)."; 1103 reference 1104 draft-ietf-i2rs-yang-l3-topology-10; 1105 } 1106 typedef iso-pseudonode-id { 1107 type string { 1108 pattern '[0-9a-fA-F]{2}'; 1110 } 1111 description 1112 "ISO pseudonode id for broadcast network."; 1113 } 1114 typedef area-address{ 1115 type string { 1116 pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; 1117 } 1118 description 1119 "This type defines the area address."; 1120 } 1121 typedef system-id { 1122 type string { 1123 pattern 1124 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 1125 } 1126 description 1127 "This type defines ISIS system id using a pattern; 1128 an example of a system id looks like: 0143.0438.AeF0."; 1129 } 1130 typedef level { 1131 type enumeration { 1132 enum "level-1" { 1133 description 1134 "This enum describes L1 only capability."; 1135 } 1136 enum "level-2" { 1137 description 1138 "This enum describes L2 only capability."; 1139 } 1140 enum "level-all" { 1141 description 1142 "This enum describes both levels (L1 and L2) capability."; 1143 } 1144 } 1145 default "level-all"; 1146 description 1147 "This type defines the ISIS level of an object."; 1148 } 1149 grouping isis-topology-type { 1150 description 1151 "Identifies the ISIS topology type."; 1152 container isis { 1153 presence "Indicates ISIS Topology"; 1154 description 1155 "Its presence identifies the ISIS topology type."; 1156 } 1157 } 1158 augment "/nd:networks/nd:network/nd:network-types/" 1159 +"l3t:l3-unicast-topology" { 1160 description 1161 "Defines the ISIS topology type."; 1162 uses isis-topology-type; 1163 } 1164 augment "/nd:networks/nd:network/l3t:l3-topology-attributes" { 1165 when "../nd:network-types/l3t:l3-unicast-topology/isis" { 1166 description 1167 "Augment only for ISIS topology"; 1168 } 1169 description 1170 "Augment topology configuration"; 1171 container isis-topology-attributes { 1172 description 1173 "Containing topology attributes"; 1174 leaf net { 1175 type area-address; 1176 description 1177 "ISO NET ID value"; 1178 } 1179 } 1180 } 1181 augment "/nd:networks/nd:network/nd:node/"+ 1182 "l3t:l3-node-attributes" { 1183 when "../../nd:network-types/l3t:l3-unicast-topology/isis" { 1184 description 1185 "Augment only for ISIS topology"; 1186 } 1187 description 1188 "Augment node configuration"; 1189 uses isis-node-attributes; 1190 } 1191 augment "/nd:networks/nd:network/lnk:link/l3t:l3-link-attributes" { 1192 when "../../nd:network-types/l3t:l3-unicast-topology/isis" { 1193 description 1194 "Augment only for ISIS topology"; 1195 } 1196 description 1197 "Augment link configuration"; 1198 uses isis-link-attributes; 1199 } 1200 grouping isis-node-attributes { 1201 description 1202 "ISIS node scope attributes"; 1203 container isis-node-attributes { 1204 description 1205 "Containing node attributes"; 1207 container iso { 1208 description 1209 "Containing ISO atrributes"; 1210 leaf iso-system-id { 1211 type system-id; 1212 description 1213 "ISO system ID"; 1214 } 1215 leaf iso-pseudonode-id { 1216 type iso-pseudonode-id; 1217 default "00"; 1218 description 1219 "Pseudonode ID"; 1220 } 1221 } 1222 leaf-list net { 1223 type area-address; 1224 max-elements 3; 1225 description 1226 "List of ISO NET IDs"; 1227 } 1228 leaf-list multi-topology-id { 1229 type uint16 { 1230 range "0..4095"; 1231 } 1232 max-elements "128"; 1233 description 1234 "List of Multi Topology Identifier up to 128 (0-127). 1235 RFC 4915"; 1236 } 1237 leaf level { 1238 type level; 1239 description "Level 1, Level 2 or Level 1 and 2"; 1240 } 1241 } 1242 } 1243 grouping isis-link-attributes { 1244 description 1245 "ISIS link scope attributes"; 1246 container isis-link-attributes { 1247 description 1248 "Containing link attributes"; 1249 leaf multi-topology-id { 1250 type uint16 { 1251 range "0..4095"; 1252 } 1253 description 1254 "Multi topology ID"; 1256 } 1257 } 1258 } 1259 augment "/l3t:l3-node-event" { 1260 description 1261 "ISIS node event"; 1262 uses isis-topology-type; 1263 uses isis-node-attributes; 1264 } 1265 augment "/l3t:l3-link-event" { 1266 description 1267 "ISIS link event"; 1268 uses isis-topology-type; 1269 uses isis-link-attributes; 1270 } 1271 } 1273 7. Interactions with Other YANG Modules 1275 As described in section Section 3, the model builds on top of, and 1276 augments, the YANG modules defined in 1277 [I-D.draft-ietf-i2rs-yang-network-topo]. Specifically, module ietf- 1278 l3-unicast-topology augments modules "ietf-network" and "ietf- 1279 network-topology". In addition, the model makes use of data types 1280 that have been defined in [RFC6991]. 1282 The moodel defines a protocol independent YANG data model with layer 1283 3 topology information. It is separate from and not linked with data 1284 models that are used to configure routing protocols or routing 1285 information. This includes e.g. model "ietf-routing" [RFC8022] and 1286 model "ietf-fb-rib" [I-D.draft-acee-rtgwg-yang-rib-extend]. 1288 The model obeys the requirements for the ephemeral state found in the 1289 document [I-D.draft-ietf-i2rs-ephemeral-state]. For ephemeral 1290 topology data that is server provided, the process tasked with 1291 maintaining topology information will load information from the 1292 routing process (such as OSPF) into the data model without relying on 1293 a configuration datastore. 1295 8. IANA Considerations 1297 This document registers the following namespace URIs in the "IETF XML 1298 Registry" [RFC3688]: 1300 URI: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology 1301 Registrant Contact: The IESG. 1302 XML: N/A; the requested URI is an XML namespace. 1304 URI: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology-state 1305 Registrant Contact: The IESG. 1306 XML: N/A; the requested URI is an XML namespace. 1308 This document registers the following YANG modules in the "YANG 1309 Module Names" registry [RFC6020]: 1311 Name: ietf-l3-unicast-topology 1312 Namespace: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology 1313 Prefix: l3t 1314 Reference: draft-ietf-i2rs-yang-l3-topology-10.txt (RFC form) 1316 Name: ietf-l3-unicast-topology-state 1317 Namespace: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology-state 1318 Prefix: l3t-s 1319 Reference: draft-ietf-i2rs-yang-l3-topology-10.txt (RFC form) 1321 9. Security Considerations 1323 The YANG module defined in this memo is designed to be accessed via 1324 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 1325 secure transport layer, and the mandatory-to-implement secure 1326 transport is Secure Shell (SSH) [RFC6242]. The NETCONF access 1327 control model [RFC6536] provides the means to restrict access for 1328 particular NETCONF users to a pre-configured subset of all available 1329 NETCONF protocol operations and content. 1331 In general, Layer 3 Unicast topologies are server-provided and 1332 provide ephemeral topology information. As they provide read-only 1333 access to clients, they are less vulnerable. That said, the YANG 1334 module does in principle allow information to be configurable in 1335 certain instances (when the server-provided flag for the topology is 1336 set to false). In such cases, a malicious client could introduce 1337 topologies that are undesired. For example, a client could remove or 1338 add topological links between nodes, which could lead to an undesired 1339 and suboptimal topology, which might impact service levels and 1340 network utilization. It is therefore important that the NETCONF 1341 access control model is vigorously applied to prevent topology 1342 configuration by unauthorized clients. 1344 10. Contributors 1346 The model presented in this paper was contributed to by more people 1347 than can be listed on the author list. Additional contributors 1348 include: 1350 o Vishnu Pavan Beeram, Juniper 1351 o Igor Bryskin, Huawei 1353 o Ken Gray, Cisco 1355 o Aihua Guo, Huawei 1357 o Tom Nadeau, Brocade 1359 o Tony Tkacik 1361 o Aleksandr Zhdankin, Cisco 1363 11. Acknowledgements 1365 We wish to acknowledge the helpful contributions, comments, and 1366 suggestions that were received from Ladislav Lhotka, Andy Bierman, 1367 Carlos Pignataro, Joel Halpern, Juergen Schoenwaelder, Alia Atlas, 1368 Susan Hares, Benoit Claise, and Carl Moberg. 1370 12. References 1372 12.1. Normative References 1374 [I-D.draft-ietf-i2rs-yang-network-topo] 1375 Clemm, A., Medved, J., Varga, R., Bahadur, N., 1376 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 1377 Network Topologies", I-D draft-ietf-i2rs-yang-network- 1378 topo-14, June 2017. 1380 [I-D.draft-ietf-netmod-revised-datastores] 1381 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1382 and R. Wilton, "A Revised Conceptual Model for YANG 1383 Datastores", I-D draft-ietf-netmod-revised-datastores-02, 1384 May 2017. 1386 [RFC1195] Callon, R., "Use of OSI IS-IS for Routing in TCP/IP and 1387 Dual Environments", RFC 1195, December 1990. 1389 [RFC2328] Moy, J., "OSPF Version 2", RFC 2328, April 1998. 1391 [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group 1392 MIB", RFC 2863, June 2000. 1394 [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January 1395 2004. 1397 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1398 Network Configuration Protocol (NETCONF)", RFC 6020, 1399 October 2010. 1401 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1402 Bierman, "Network Configuration Protocol (NETCONF)", 1403 RFC 6241, June 2011. 1405 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1406 Shell (SSH)", RFC 6242, June 2011. 1408 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1409 Protocol (NETCONF) Access Control Model", RFC 6536, March 1410 2012. 1412 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 1413 July 2013. 1415 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 1416 RFC 7950, August 2016. 1418 12.2. Informative References 1420 [I-D.draft-acee-rtgwg-yang-rib-extend] 1421 Lindem, A. and Y. Qu, "YANG Data Model for RIB 1422 Extensions", I-D draft-acee-rtgwg-yang-rib-extend-02, 1423 October 2016. 1425 [I-D.draft-ietf-i2rs-ephemeral-state] 1426 Haas, J. and S. Hares, "I2RS Ephemeral State 1427 Requirements", I-D draft-ietf-i2rs-ephemeral-state-23, 1428 November 2016. 1430 [I-D.draft-ietf-i2rs-usecase-reqs-summary] 1431 Hares, S. and M. Chen, "Summary of I2RS Use Case 1432 Requirements", I-D draft-ietf-i2rs-usecase-reqs-summary- 1433 03, November 2016. 1435 [I-D.draft-ietf-teas-yang-te-topo] 1436 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 1437 O. Gonzalez De Dios, "YANG Data Model for TE Topologies", 1438 I-D draft-ietf-teas-yang-te-topo-09, June 2017. 1440 [RFC7223] Bjorklund, M., "A YANG Data Model for Routing Management", 1441 RFC 7223, May 2014. 1443 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1444 Management", RFC 8022, November 2016. 1446 Appendix A. Companion YANG model for non-NMDA compliant implementations 1448 The YANG module ietf-l3-unicast-topology defined in this document 1449 augments two modules, ietf-network and ietf-network-topology, that 1450 are designed to be used in conjunction with implementations that 1451 support the Network Management Datastore Architecture (NMDA) defined 1452 in [I-D.draft-ietf-netmod-revised-datastores]. In order to allow 1453 implementations to use the model even in cases when NMDA is not 1454 supported, a set of companion modules have been defined that 1455 represent a state model of networks and network topologies, ietf- 1456 network-state and ietf-network-topology-state, respectively. 1458 In order to be able to use the model for layer 3 topologies defined 1459 in this in this document in conjunction with non-NMDA compliant 1460 implementations, a corresponding companion module needs to be 1461 introduced as well. This companion module, ietf-l3-unicast-topology- 1462 state, mirrors ietf-l3-unicast-topology. However, the module 1463 augments ietf-network-state and ietf-network-topology-state (instead 1464 of ietf-network and ietf-network-state) and all of its data nodes are 1465 non-configurable. 1467 Similar considerations apply for any modules that augment ietf-l3- 1468 unicast-topology, such as the example modules defined earlier, 1469 example-ietf-ospf-topology and example-ietf-isis-topology. For non- 1470 NMDA compliant implementations, companion modules will need to be 1471 introduced that represent state information and are non-configurable, 1472 augmenting ietf-l3-unicast-topology-state instead of ietf-l3-unicast- 1473 topology. Because they served as examples only, companion modules 1474 for those examples are not given. 1476 Like ietf-network-state and ietf-network-topology-state, ietf-l3- 1477 unicast-topology SHOULD NOT be supported by implementations that 1478 support NMDA. It is for this reason that the module is defined in 1479 the Appendix. 1481 The definition of the module follows below. As the structure of the 1482 module mirrors that of its underlying module, the YANG tree is not 1483 depicted separately. 1485 file "ietf-l3-unicast-topology-state@2017-07-02.yang" 1486 module ietf-l3-unicast-topology-state { 1487 yang-version 1.1; 1488 namespace 1489 "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology-state"; 1490 prefix "l3t-s"; 1491 import ietf-network-state { 1492 prefix "nd-s"; 1493 } 1494 import ietf-network-topology-state { 1495 prefix "lnk-s"; 1496 } 1497 import ietf-l3-unicast-topology { 1498 prefix "l3t"; 1499 } 1500 organization 1501 "IETF I2RS (Interface to the Routing System) Working Group"; 1502 contact 1503 "WG Web: 1504 WG List: 1505 WG Chair: Susan Hares 1506 1507 WG Chair: Russ White 1508 1509 Editor: Alexander Clemm 1510 1511 Editor: Jan Medved 1512 1513 Editor: Robert Varga 1514 1515 Editor: Xufeng Liu 1516 1517 Editor: Nitin Bahadur 1518 1519 Editor: Hariharan Ananthakrishnan 1520 "; 1521 description 1522 "This module defines a model for Layer 3 Unicast topology 1523 state, representing topology that is either learned, or topology 1524 that results from applying topology that has been configured per 1525 the ietf-l3-unicast-topology model, mirroring the corresponding 1526 data nodes in this model. 1528 The model mirrors ietf-l3-unicast-topology, but contains only 1529 read-only state data. The model is not needed when the 1530 underlying implementation infrastructure supports the Network 1531 Management Datastore Architecture (NMDA). 1533 Copyright (c) 2017 IETF Trust and the persons identified as 1534 authors of the code. All rights reserved. 1535 Redistribution and use in source and binary forms, with or 1536 without modification, is permitted pursuant to, and subject 1537 to the license terms contained in, the Simplified BSD License 1538 set forth in Section 4.c of the IETF Trust's Legal Provisions 1539 Relating to IETF Documents 1540 (http://trustee.ietf.org/license-info). 1541 This version of this YANG module is part of 1542 draft-ietf-i2rs-yang-l3-topology-10; 1543 see the RFC itself for full legal notices. 1544 NOTE TO RFC EDITOR: Please replace above reference to 1545 draft-ietf-i2rs-yang-l3-topology-10 with RFC 1546 number when published (i.e. RFC xxxx)."; 1547 revision "2017-07-02" { 1548 description 1549 "Initial revision. 1550 NOTE TO RFC EDITOR: Please replace the following reference 1551 to draft-ietf-i2rs-yang-l3-topology-10 with 1552 RFC number when published (i.e. RFC xxxx)."; 1553 reference 1554 "draft-ietf-i2rs-yang-l3-topology-10"; 1555 } 1557 augment "/nd-s:networks/nd-s:network/nd-s:network-types" { 1558 description 1559 "Introduce new network type for L3 unicast topology"; 1560 uses l3t:l3-unicast-topology-type; 1561 } 1562 augment "/nd-s:networks/nd-s:network" { 1563 when "nd-s:network-types/l3-unicast-topology" { 1564 description 1565 "Augmentation parameters apply only for networks with 1566 L3 unicast topology"; 1567 } 1568 description 1569 "L3 unicast for the network as a whole"; 1570 uses l3t:l3-topology-attributes; 1571 } 1572 augment "/nd-s:networks/nd-s:network/nd-s:node" { 1573 when "../nd-s:network-types/l3-unicast-topology" { 1574 description 1575 "Augmentation parameters apply only for networks with 1576 L3 unicast topology"; 1577 } 1578 description 1579 "L3 unicast node level attributes "; 1580 uses l3t:l3-node-attributes; 1581 } 1582 augment "/nd-s:networks/nd-s:network/lnk-s:link" { 1583 when "../nd-s:network-types/l3-unicast-topology" { 1584 description 1585 "Augmentation parameters apply only for networks with 1586 L3 unicast topology"; 1587 } 1588 description 1589 "Augment topology link attributes"; 1591 uses l3t:l3-link-attributes; 1592 } 1593 augment "/nd-s:networks/nd-s:network/nd-s:node/" 1594 +"lnk-s:termination-point" { 1595 when "../../nd-s:network-types/l3-unicast-topology" { 1596 description 1597 "Augmentation parameters apply only for networks with 1598 L3 unicast topology"; 1599 } 1600 description "Augment topology termination point configuration"; 1601 uses l3t:l3-termination-point-attributes; 1602 } 1603 notification l3-node-event { 1604 description 1605 "Notification event for L3 node"; 1606 leaf l3-event-type { 1607 type l3t:l3-event-type; 1608 description 1609 "Event type"; 1610 } 1611 uses nd-s:node-ref; 1612 uses l3t:l3-unicast-topology-type; 1613 uses l3t:l3-node-attributes; 1614 } 1615 notification l3-link-event { 1616 description 1617 "Notification event for L3 link"; 1618 leaf l3-event-type { 1619 type l3t:l3-event-type; 1620 description 1621 "Event type"; 1622 } 1623 uses lnk-s:link-ref; 1624 uses l3t:l3-unicast-topology-type; 1625 uses l3t:l3-link-attributes; 1626 } 1627 notification l3-prefix-event { 1628 description 1629 "Notification event for L3 prefix"; 1630 leaf l3-event-type { 1631 type l3t:l3-event-type; 1632 description 1633 "Event type"; 1634 } 1635 uses nd-s:node-ref; 1636 uses l3t:l3-unicast-topology-type; 1637 container prefix { 1638 description 1639 "Containing L3 prefix attributes"; 1640 uses l3t:l3-prefix-attributes; 1641 } 1642 } 1643 notification termination-point-event { 1644 description 1645 "Notification event for L3 termination point"; 1646 leaf l3-event-type { 1647 type l3t:l3-event-type; 1648 description 1649 "Event type"; 1650 } 1651 uses lnk-s:tp-ref; 1652 uses l3t:l3-unicast-topology-type; 1653 uses l3t:l3-termination-point-attributes; 1654 } 1655 } 1657 1659 Authors' Addresses 1661 Alexander Clemm 1662 Huawei 1664 EMail: ludwig@clemm.org 1666 Jan Medved 1667 Cisco 1669 EMail: jmedved@cisco.com 1671 Robert Varga 1672 Pantheon Technologies SRO 1674 EMail: robert.varga@pantheon.sk 1676 Xufeng Liu 1677 Ericsson 1679 EMail: xliu@kuatrotech.com 1680 Hariharan Ananthakrishnan 1681 Packet Design 1683 EMail: hari@packetdesign.com 1685 Nitin Bahadur 1686 Bracket Computing 1688 EMail: nitin_bahadur@yahoo.com