idnits 2.17.1 draft-ietf-teas-yang-sr-te-topo-06.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 208 has weird spacing: '...r-bound uin...' == Line 209 has weird spacing: '...r-bound uin...' == Line 227 has weird spacing: '...r-bound uin...' == Line 228 has weird spacing: '...r-bound uin...' == Line 230 has weird spacing: '...r-bound uin...' == (9 more instances...) -- The document date (November 3, 2019) is 1629 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) == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-13 Summary: 0 errors (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group X. Liu 3 Internet-Draft Volta Networks 4 Intended status: Standards Track I. Bryskin 5 Expires: May 6, 2020 Individual 6 V. Beeram 7 T. Saad 8 Juniper Networks 9 H. Shah 10 Ciena 11 S. Litkowski 12 Cisco 13 November 3, 2019 15 YANG Data Model for SR and SR TE Topologies 16 draft-ietf-teas-yang-sr-te-topo-06 18 Abstract 20 This document defines a YANG data model for Segment Routing (SR) 21 topology and Segment Routing (SR) traffic engineering (TE) topology. 23 Status of This Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at https://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on May 6, 2020. 40 Copyright Notice 42 Copyright (c) 2019 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (https://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 Table of Contents 57 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 58 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 59 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 60 2. Modeling Considerations . . . . . . . . . . . . . . . . . . . 3 61 2.1. Segment Routing (SR) Topology . . . . . . . . . . . . . . 3 62 2.2. Segment Routing (SR) TE Topology . . . . . . . . . . . . 3 63 2.3. Relations to ietf-segment-routing . . . . . . . . . . . . 4 64 2.4. Topology Type Modeling . . . . . . . . . . . . . . . . . 5 65 2.5. Topology Attributes . . . . . . . . . . . . . . . . . . . 5 66 2.6. Node Attributes . . . . . . . . . . . . . . . . . . . . . 5 67 2.7. Link Attributes . . . . . . . . . . . . . . . . . . . . . 6 68 3. Model Structure . . . . . . . . . . . . . . . . . . . . . . . 7 69 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 9 70 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 71 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17 72 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 73 7.1. Normative References . . . . . . . . . . . . . . . . . . 18 74 7.2. Informative References . . . . . . . . . . . . . . . . . 19 75 Appendix A. Companion YANG Model for Non-NMDA Compliant 76 Implementations . . . . . . . . . . . . . . . . . . 21 77 A.1. SR Topology State Module . . . . . . . . . . . . . . . . 21 78 Appendix B. Data Tree Example . . . . . . . . . . . . . . . . . 24 79 Appendix C. Contributors . . . . . . . . . . . . . . . . . . . . 31 80 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 82 1. Introduction 84 This document defines a YANG [RFC7950] data model for describing the 85 presentations of Segment Routing (SR) topology and Segment Routing 86 (SR) traffic engineering (TE) topology. The version of the model 87 limits the transport type to an MPLS dataplane. 89 1.1. Terminology 91 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 92 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 93 "OPTIONAL" in this document are to be interpreted as described in BCP 94 14 [RFC2119] [RFC8174] when, and only when, they appear in all 95 capitals, as shown here. 97 The following terms are defined in [RFC7950] and are not redefined 98 here: 100 o augment 102 o data model 104 o data node 106 1.2. Tree Diagrams 108 Tree diagrams used in this document follow the notation defined in 109 [RFC8340]. 111 2. Modeling Considerations 113 2.1. Segment Routing (SR) Topology 115 The Layer 3 network topology model is discussed in [RFC8346]. The 116 Segment Routing (SR) topology model proposed in this document 117 augments and uses the ietf-l3-unicast-igp-topology module defined in 118 [RFC8346]. SR related attributes are covered in the ietf-sr-topology 119 model. 121 +------------------------------+ 122 | Layer 3 Network Topology | 123 | ietf-l3-unicast-topology | 124 +------------------------------+ 125 | 126 | 127 | 128 V 129 +------------------------+ 130 | SR Topology | 131 | ietf-sr-topology | 132 +------------------------+ 134 2.2. Segment Routing (SR) TE Topology 136 When traffic engineering is enabled on an SR topology, there will be 137 associations between objects in SR topologies and objects in TE 138 topologies. An SR TE topology is both an SR topology and a layer 3 139 TE topology. Multiple inheritance is used to achieve such relations. 141 +------------------+ +---------------------+ 142 | SR Topology | | L3 TE Topology | 143 | ietf-sr-topology | | ietf-l3-te-topology | 144 +------------------+ +---------------------+ 145 \ / 146 \ / 147 \ / 148 v v 149 +------------------------+ 150 | SR TE Topology | 151 | | 152 +------------------------+ 154 Each type of topologies is indicated by "network-types" defined in 155 [RFC8345]. For the three types of topologies above, the data 156 representations are: 158 L3 Topology: 160 /nd:networks/nd:network/nd:network-types/l3-unicast-topology 162 L3 TE Topology: 164 /nd:networks/nd:network/nd:network-types/l3-unicast-topology/l3-te 166 SR Topology: 168 /nd:networks/nd:network/nd:network-types/l3-unicast-topology/sr-mpls 170 SR TE Topology: (multiple inheritance) 172 /nd:networks/nd:network/nd:network-types/l3-unicast-topology/l3-te 173 /nd:networks/nd:network/nd:network-types/l3-unicast-topology/sr-mpls 175 2.3. Relations to ietf-segment-routing 177 [I-D.ietf-spring-sr-yang] defines ietf-segment-routing that is a 178 model intended to be used on network elements to configure or operate 179 segment routing; ietf-sr-topology defined in this document is 180 intended to be used on a controller for the network-wide operations 181 such as path computation. 183 SR topology model shares many modeling constructs defined in ietf- 184 segment-routing. The module ietf-sr-topology uses the types and 185 groupings defined in ietf-segment-routing. 187 2.4. Topology Type Modeling 189 A new topology type is defined in this document, to indicate a 190 topology that is a Segment Routing (SR) topology on an MPLS 191 dataplane. 193 augment /nw:networks/nw:network/nw:network-types 194 /l3t:l3-unicast-topology: 195 +--rw sr-mpls! 197 2.5. Topology Attributes 199 The Segment Routing attributes with topology-wide impacts are modeled 200 by augmenting the container "l3-topology-attributes" in the L3 201 topology model. SRGB (Segment Routing Global Block) is covered in 202 this augmentation. A SR domain is mapped to a topology in this 203 model. 205 augment /nw:networks/nw:network/l3t:l3-topology-attributes: 206 +--rw sr 207 +--rw srgb* [lower-bound upper-bound] 208 +--rw lower-bound uint32 209 +--rw upper-bound uint32 211 2.6. Node Attributes 213 The Segment Routing attributes within the node scope are modeled by 214 augmenting the sub tree /nw:networks/nw:network/nw:node/ in the L3 215 topology model. 217 The SR attributes that have node-scope impact are modeled by 218 augmenting the container "l3-node-attributes" in the L3 topology 219 model, including the SR capabilities, SRGB (Segment Routing Global 220 Block), and SRLB (Segment Routing Local Block) specified on this 221 mode. This model also provides the information about how these SR 222 attributes are learned: 224 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes: 225 +--rw sr 226 +--rw srgb* [lower-bound upper-bound] 227 | +--rw lower-bound uint32 228 | +--rw upper-bound uint32 229 +--rw srlb* [lower-bound upper-bound] 230 | +--rw lower-bound uint32 231 | +--rw upper-bound uint32 232 +--ro node-capabilities 233 | +--ro transport-planes* [transport-plane] 234 | | +--ro transport-plane identityref 235 | +--ro entropy-readable-label-depth? uint8 236 +--rw msd? uint8 {msd}? 237 +--ro information-source? enumeration 238 +--ro information-source-state 239 +--ro credibility-preference? uint16 241 The SR attributes that are related to a IGP-Prefix segment are 242 modeled by augmenting the list entry "prefix" in the L3 topology 243 model: 245 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 246 /l3t:prefix: 247 +--rw sr! 248 +--rw value-type? enumeration 249 +--rw start-sid uint32 250 +--rw range? uint32 251 +--rw algorithm? identityref 252 +--rw last-hop-behavior? enumeration 253 | {sid-last-hop-behavior}? 254 +--rw is-local? boolean 255 +--rw is-node? boolean 256 +--ro is-readvertisment? boolean 258 2.7. Link Attributes 260 A link in the topology model connects the termination point on the 261 source node to the termination point on the destination node. When 262 such a link is instantiated, the bindings between the nodes and the 263 corresponding Adj-SIDs are formed, and the resulting FIB entries are 264 installed. 266 A link in the topology model is mapped to an SR Adjacency Segment, 267 formed by a pair of interfaces on two respective adjacent nodes. The 268 SR Adjacency Segment attributes are modeled by augmenting the link 269 attributes of the L3 topology model. The modeling structure is as 270 follows: 272 augment /nw:networks/nw:network/nt:link/l3t:l3-link-attributes: 273 +--rw sr! 274 +--rw value-type? enumeration 275 +--rw sid uint32 276 +--rw advertise-protection? enumeration 277 +--rw is-local? boolean 278 +--rw msd? uint8 {msd}? 279 +--rw address-family? enumeration 280 +--rw is-backup? boolean 281 +--rw is-part-of-set? boolean 282 +--rw is-persistent? boolean 283 +--rw is-on-lan? boolean 284 +--ro information-source? enumeration 285 +--ro information-source-state 286 +--ro credibility-preference? uint16 288 The usage of the leaf "advertise-protection" is described in 289 [I-D.ietf-spring-sr-yang]. 291 Both IGP and BGP can be supported by the model, the leaf 292 "information-source" is used to indicate where the information is 293 from. 295 The bundling capability of the Adjacency Segemnt is achieved by re- 296 using the existing modeling construct (i.e. "bundle-stack-level") 297 under /nw:networks/nw:network/nt:link/tet:te 298 [I-D.ietf-teas-yang-te-topo] 300 3. Model Structure 302 The model tree structure of the Segment Routing (SR) topology module 303 is as shown below: 305 module: ietf-sr-topology 306 augment /nw:networks/nw:network/nw:network-types 307 /l3t:l3-unicast-topology: 308 +--rw sr-mpls! 309 augment /nw:networks/nw:network/l3t:l3-topology-attributes: 310 +--rw sr 311 +--rw srgb* [lower-bound upper-bound] 312 +--rw lower-bound uint32 313 +--rw upper-bound uint32 314 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes: 315 +--rw sr 316 +--rw srgb* [lower-bound upper-bound] 317 | +--rw lower-bound uint32 318 | +--rw upper-bound uint32 319 +--rw srlb* [lower-bound upper-bound] 320 | +--rw lower-bound uint32 321 | +--rw upper-bound uint32 322 +--ro node-capabilities 323 | +--ro transport-planes* [transport-plane] 324 | | +--ro transport-plane identityref 325 | +--ro entropy-readable-label-depth? uint8 326 +--rw msd? uint8 {msd}? 327 +--ro information-source? enumeration 328 +--ro information-source-instance? string 329 +--ro information-source-state 330 +--ro credibility-preference? uint16 331 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 332 /l3t:prefix: 333 +--rw sr! 334 +--rw value-type? enumeration 335 +--rw start-sid uint32 336 +--rw range? uint32 337 +--rw algorithm? identityref 338 +--rw last-hop-behavior? enumeration 339 | {sid-last-hop-behavior}? 340 +--rw is-local? boolean 341 +--rw is-node? boolean 342 +--ro is-readvertisment? boolean 343 augment /nw:networks/nw:network/nt:link/l3t:l3-link-attributes: 344 +--rw sr! 345 +--rw value-type? enumeration 346 +--rw sid uint32 347 +--rw advertise-protection? enumeration 348 +--rw is-local? boolean 349 +--rw msd? uint8 {msd}? 350 +--rw address-family? enumeration 351 +--rw is-backup? boolean 352 +--rw is-part-of-set? boolean 353 +--rw is-persistent? boolean 354 +--rw is-on-lan? boolean 355 +--ro information-source? enumeration 356 +--ro information-source-instance? string 357 +--ro information-source-state 358 +--ro credibility-preference? uint16 360 4. YANG Module 362 file "ietf-sr-topology@2019-11-02.yang" 363 module ietf-sr-topology { 364 yang-version 1.1; 365 namespace "urn:ietf:params:xml:ns:yang:ietf-sr-topology"; 366 prefix "srt"; 368 import ietf-network { 369 prefix "nw"; 370 reference "RFC 8345: A YANG Data Model for Network Topologies"; 371 } 372 import ietf-network-topology { 373 prefix "nt"; 374 reference "RFC 8345: A YANG Data Model for Network Topologies"; 375 } 376 import ietf-l3-unicast-topology { 377 prefix "l3t"; 378 reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; 379 } 380 import ietf-segment-routing-common { 381 prefix "sr-cmn"; 382 reference 383 "I-D.ietf-spring-sr-yang: YANG Data Model for Segment Routing"; 384 } 386 organization 387 "IETF Traffic Engineering Architecture and Signaling (TEAS) 388 Working Group"; 390 contact 391 "WG Web: 392 WG List: 394 Editor: Xufeng Liu 395 397 Editor: Igor Bryskin 398 400 Editor: Vishnu Pavan Beeram 401 403 Editor: Tarek Saad 404 406 Editor: Himanshu Shah 407 409 Editor: Stephane Litkowski 410 "; 412 description 413 "YANG data model for representing and manipulating Segment 414 Routing Topologies. 416 Copyright (c) 2018 IETF Trust and the persons identified as 417 authors of the code. All rights reserved. 419 Redistribution and use in source and binary forms, with or 420 without modification, is permitted pursuant to, and subject to 421 the license terms contained in, the Simplified BSD License set 422 forth in Section 4.c of the IETF Trust's Legal Provisions 423 Relating to IETF Documents 424 (http://trustee.ietf.org/license-info). 426 This version of this YANG module is part of RFC XXXX; see the 427 RFC itself for full legal notices."; 429 revision 2019-11-02 { 430 description "Initial revision"; 431 reference 432 "RFC XXXX: YANG Data Model for SR and SR TE Topologies"; 433 } 435 feature msd { 436 description 437 "Support of signaling MSD (Maximum SID Depth) in IGP."; 438 } 440 grouping sr-topology-type { 441 description 442 "Identifies the SR-MPLS topology type. This type of network 443 topologies use Segment Routing (SR) technology over the MPLS 444 data plane"; 445 container sr-mpls { 446 presence "Indicates SR-MPLS topology"; 447 description 448 "Its presence identifies the SR topology type."; 449 } 450 } 452 augment "/nw:networks/nw:network/nw:network-types/" 453 + "l3t:l3-unicast-topology" { 454 description 455 "Defines the SR topology type."; 456 uses sr-topology-type; 457 } 459 augment "/nw:networks/nw:network/l3t:l3-topology-attributes" { 460 when "../nw:network-types/l3t:l3-unicast-topology/srt:sr-mpls" { 461 description "Augment only for SR topology."; 462 } 463 description "Augment topology configuration"; 464 uses sr-topology-attributes; 465 } 467 augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" { 468 when "../../nw:network-types/l3t:l3-unicast-topology/" 469 + "srt:sr-mpls" { 470 description "Augment only for SR topology."; 471 } 472 description "Augment node configuration."; 473 uses sr-node-attributes; 474 } 476 augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" 477 + "/l3t:prefix" { 478 when "../../../nw:network-types/l3t:l3-unicast-topology/" 479 + "srt:sr-mpls" { 480 description "Augment only for SR topology."; 481 } 482 description "Augment node prefix."; 483 uses sr-node-prefix-attributes; 484 } 486 augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" { 487 when "../../nw:network-types/l3t:l3-unicast-topology/" 488 + "srt:sr-mpls" { 489 description "Augment only for SR topology."; 490 } 491 description "Augment link configuration"; 492 uses sr-link-attributes; 493 } 495 grouping sr-topology-attributes { 496 description "SR topology scope attributes."; 497 container sr { 498 description 499 "Containing SR attributes."; 500 uses sr-cmn:srgb; 501 } // sr 502 } // sr-topology-attributes 503 grouping information-source-attributes { 504 description 505 "The attributes identifying source that has provided the 506 related information, and the source credibility."; 507 leaf information-source { 508 type enumeration { 509 enum "unknown" { 510 description "The source is unknown."; 511 } 512 enum "locally-configured" { 513 description "Configured entity."; 514 } 515 enum "ospfv2" { 516 description "OSPFv2."; 517 } 518 enum "ospfv3" { 519 description "OSPFv3."; 520 } 521 enum "isis" { 522 description "ISIS."; 523 } 524 enum "bgp-ls" { 525 description "BGP-LS."; 526 reference 527 "RFC 7752: North-Bound Distribution of Link-State and 528 Traffic Engineering (TE) Information Using BGP"; 529 } 530 enum "system-processed" { 531 description "System processed entity."; 532 } 533 enum "other" { 534 description "Other source."; 535 } 536 } 537 config false; 538 description 539 "Indicates the type of the information source."; 540 } 541 leaf information-source-instance { 542 type string; 543 config false; 544 description 545 "The name indicating the instance of the information 546 source."; 547 } 548 container information-source-state { 549 config false; 550 description 551 "The container contains state attributes related to 552 the information source."; 553 leaf credibility-preference { 554 type uint16; 555 description 556 "The preference value to calculate the traffic 557 engineering database credibility value used for 558 tie-break selection between different 559 information-source values. 560 Higher value is more preferable."; 561 } 562 } 563 } // information-source-attributes 565 grouping sr-node-attributes { 566 description "SR node scope attributes."; 567 container sr { 568 description 569 "Containing SR attributes."; 570 uses sr-cmn:srgb; 571 uses sr-cmn:srlb; 572 uses sr-cmn:node-capabilities; 573 leaf msd { 574 if-feature "msd"; 575 type uint8; 576 description 577 "Node MSD is the lowest MSD supported by the node."; 578 } 579 // Operational state data 580 uses information-source-attributes; 581 } // sr 582 } // sr-node-attributes 584 grouping sr-node-prefix-attributes { 585 description "Containing SR attributes for a prefix."; 586 container sr { 587 presence "Presence indicates SR is enabled."; 588 description 589 "Containing SR attributes for a prefix."; 590 uses sr-cmn:prefix-sid-attributes; 591 uses sr-cmn:last-hop-behavior; 592 leaf is-local { 593 type boolean; 594 default false; 595 description 596 "'true' if the SID is local."; 597 } 598 leaf is-node { 599 type boolean; 600 default false; 601 description 602 "'true' if the Prefix-SID refers to the router identified 603 by the prefix. Typically, the leaf 'is-node' (N-Flag) 604 is set on Prefix-SIDs attached to a router loopback 605 address."; 606 } 607 leaf is-readvertisment { 608 type boolean; 609 config false; 610 description 611 "'true' if the prefix to which this Prefix-SID is attached, 612 has been propagated by the router from another 613 topology by redistribution."; 614 } 615 } // sr 616 } // sr-node-prefix-attributes 618 grouping sr-link-attributes { 619 description "SR link scope attributes"; 620 container sr { 621 presence "Presence indicates SR is enabled."; 622 description 623 "Containing SR attributes."; 624 uses sr-cmn:sid-value-type; 625 leaf sid { 626 type uint32; 627 mandatory true; 628 description 629 "Adjacency SID, which can be either IGP-Adjacency SID 630 or BGP PeerAdj SID, depending on the context."; 631 } 632 leaf advertise-protection { 633 type enumeration { 634 enum "single" { 635 description 636 "A single Adj-SID is associated 637 with the adjacency and reflects 638 the protection configuration."; 639 } 640 enum "dual" { 641 description 642 "Two Adj-SIDs will be associated 643 with the adjacency if interface 644 is protected. In this case 645 one will be enforced with 646 backup flag set, the other 647 will be enforced to backup flag unset. 648 In case, protection is not configured, 649 a single Adj-SID will be advertised 650 with backup flag unset."; 651 } 652 } 653 default "single"; 654 description 655 "If set, the Adj-SID refers to an 656 adjacency being protected."; 657 } 658 leaf is-local { 659 type boolean; 660 default false; 661 description 662 "'true' if the SID is local."; 663 } 664 leaf msd { 665 if-feature "msd"; 666 type uint8; 667 description 668 "SID depth of the interface associated with the link."; 669 } 670 leaf address-family { 671 type enumeration { 672 enum "ipv4" { 673 description 674 "The Adj-SID refers to an adjacency with outgoing IPv4 675 encapsulation."; 676 } 677 enum "ipv6" { 678 description 679 "The Adj-SID refers to an adjacency with outgoing IPv6 680 encapsulation."; 681 } 682 } 683 default "ipv4"; 684 description 685 "This leaf defines the F-Flag (Address-Family flag) of the 686 SID."; 687 } 688 leaf is-backup { 689 type boolean; 690 default false; 691 description 692 "'true' if the SID is a backup."; 693 } 694 leaf is-part-of-set { 695 type boolean; 696 default false; 697 description 698 "'true' if the SID is part of a set."; 699 } 700 leaf is-persistent { 701 type boolean; 702 default true; 703 description 704 "'true' if the SID is persistently allocated."; 705 } 706 leaf is-on-lan { 707 type boolean; 708 default false; 709 description 710 "'true' if on a lan."; 711 } 712 uses information-source-attributes; 713 } // sr 714 } // sr-tp-attributes 715 } 716 718 5. IANA Considerations 720 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 721 actual RFC number (and remove this note). 723 This document registers the following namespace URIs in the IETF XML 724 registry [RFC3688]: 726 -------------------------------------------------------------------- 727 URI: urn:ietf:params:xml:ns:yang:ietf-sr-topology 728 Registrant Contact: The IESG. 729 XML: N/A, the requested URI is an XML namespace. 730 -------------------------------------------------------------------- 732 -------------------------------------------------------------------- 733 URI: urn:ietf:params:xml:ns:yang:ietf-sr-topology-state 734 Registrant Contact: The IESG. 735 XML: N/A, the requested URI is an XML namespace. 736 -------------------------------------------------------------------- 738 This document registers the following YANG modules in the YANG Module 739 Names registry [RFC6020]: 741 -------------------------------------------------------------------- 742 name: ietf-sr-topology 743 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-topology 744 prefix: srt 745 reference: RFC XXXX 746 -------------------------------------------------------------------- 748 -------------------------------------------------------------------- 749 name: ietf-sr-topology-state 750 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-topology-state 751 prefix: srt-s 752 reference: RFC XXXX 753 -------------------------------------------------------------------- 755 6. Security Considerations 757 The YANG module specified in this document defines a schema for data 758 that is designed to be accessed via network management protocols such 759 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 760 is the secure transport layer, and the mandatory-to-implement secure 761 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 762 is HTTPS, and the mandatory-to-implement secure transport is TLS 763 [RFC8446]. 765 The Network Configuration Access Control Model (NACM) [RFC8341] 766 provides the means to restrict access for particular NETCONF or 767 RESTCONF users to a preconfigured subset of all available NETCONF or 768 RESTCONF protocol operations and content. 770 There are a number of data nodes defined in this YANG module that are 771 writable/creatable/deletable (i.e., config true, which is the 772 default). These data nodes may be considered sensitive or vulnerable 773 in some network environments. Write operations (e.g., edit-config) 774 to these data nodes without proper protection can have a negative 775 effect on network operations. These are the subtrees and data nodes 776 and their sensitivity/vulnerability: 778 nw:network-types/l3t:l3-unicast-topology/sr-mpls 779 This subtree specifies the SR topology type. Modifying the 780 configurations can make SR topology type invalid and cause 781 interruption to all SR networks. 783 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 784 This subtree specifies the topology-wide configurations, including 785 the SRGB (Segment Routing Global Block). Modifying the 786 configurations here can cause traffic disabled or rerouted in this 787 topology and the connected topologies. 789 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 790 This subtree specifies the SR configurations for nodes. Modifying 791 the configurations in this subtree can add, remove, or modify SR 792 nodes, causing traffic disabled or rerouted in the specified nodes 793 and the related TE topologies. 795 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 796 This subtree specifies the configurations for SR Adjacency 797 Segments. Modifying the configurations in this subtree can add, 798 remove, or modify SR Adjacency Segments causing traffic disabled 799 or rerouted on the specified SR adjacencies, the related nodes, 800 and the related SR topologies. 802 Some of the readable data nodes in this YANG module may be considered 803 sensitive or vulnerable in some network environments. It is thus 804 important to control read access (e.g., via get, get-config, or 805 notification) to these data nodes. These are the subtrees and data 806 nodes and their sensitivity/vulnerability: 808 nw:network-types/l3t:l3-unicast-topology/sr-mpls 809 Unauthorized access to this subtree can disclose the SR topology 810 type. 812 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 813 Unauthorized access to this subtree can disclose the topology-wide 814 configurations, including the SRGB (Segment Routing Global Block). 816 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 817 Unauthorized access to this subtree can disclose the operational 818 state information of the SR nodes. 820 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 821 Unauthorized access to this subtree can disclose the operational 822 state information of SR Adjacency Segments. 824 7. References 826 7.1. Normative References 828 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 829 Requirement Levels", BCP 14, RFC 2119, 830 DOI 10.17487/RFC2119, March 1997, 831 . 833 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 834 DOI 10.17487/RFC3688, January 2004, 835 . 837 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 838 the Network Configuration Protocol (NETCONF)", RFC 6020, 839 DOI 10.17487/RFC6020, October 2010, 840 . 842 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 843 and A. Bierman, Ed., "Network Configuration Protocol 844 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 845 . 847 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 848 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 849 . 851 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 852 RFC 7950, DOI 10.17487/RFC7950, August 2016, 853 . 855 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 856 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 857 . 859 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 860 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 861 May 2017, . 863 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 864 Access Control Model", STD 91, RFC 8341, 865 DOI 10.17487/RFC8341, March 2018, 866 . 868 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 869 and R. Wilton, "Network Management Datastore Architecture 870 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 871 . 873 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 874 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 875 . 877 7.2. Informative References 879 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 880 RFC 7951, DOI 10.17487/RFC7951, August 2016, 881 . 883 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 884 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 885 . 887 [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., 888 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 889 Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March 890 2018, . 892 [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X., 893 Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model 894 for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346, 895 March 2018, . 897 [I-D.ietf-teas-yang-te-topo] 898 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 899 O. Dios, "YANG Data Model for Traffic Engineering (TE) 900 Topologies", draft-ietf-teas-yang-te-topo-22 (work in 901 progress), June 2019. 903 [I-D.ietf-spring-sr-yang] 904 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 905 Tantsura, "YANG Data Model for Segment Routing", draft- 906 ietf-spring-sr-yang-13 (work in progress), July 2019. 908 Appendix A. Companion YANG Model for Non-NMDA Compliant Implementations 910 The YANG module ietf-sr-topology defined in this document is designed 911 to be used in conjunction with implementations that support the 912 Network Management Datastore Architecture (NMDA) defined in 913 [RFC8342]. In order to allow implementations to use the model even 914 in cases when NMDA is not supported, the following companion module, 915 ietf-sr-topology-state, is defined as state model, which mirrors the 916 module ietf-sr-topology defined earlier in this document. However, 917 all data nodes in the companion module are non-configurable, to 918 represent the applied configuration or the derived operational 919 states. 921 The companion module, ietf-sr-topology-state, is redundant and SHOULD 922 NOT be supported by implementations that support NMDA. 924 As the structure of the companion module mirrors that of the 925 coorespinding NMDA model, the YANG tree of the companion module is 926 not depicted separately. 928 A.1. SR Topology State Module 930 file "ietf-sr-topology-state@2019-11-02.yang" 931 module ietf-sr-topology-state { 932 yang-version 1.1; 933 namespace "urn:ietf:params:xml:ns:yang:ietf-sr-topology-state"; 934 prefix "srt-s"; 936 import ietf-sr-topology { 937 prefix "srt"; 938 } 939 import ietf-network-state { 940 prefix "nw-s"; 941 reference "RFC 8345: A YANG Data Model for Network Topologies"; 942 } 943 import ietf-network-topology-state { 944 prefix "nt-s"; 945 reference "RFC 8345: A YANG Data Model for Network Topologies"; 946 } 947 import ietf-l3-unicast-topology-state { 948 prefix "l3t-s"; 949 reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; 950 } 951 import ietf-segment-routing-common { 952 prefix "sr-cmn"; 953 reference 954 "I-D.ietf-spring-sr-yang: YANG Data Model for Segment Routing"; 956 } 958 organization 959 "IETF Traffic Engineering Architecture and Signaling (TEAS) 960 Working Group"; 962 contact 963 "WG Web: 964 WG List: 966 Editor: Xufeng Liu 967 969 Editor: Igor Bryskin 970 972 Editor: Vishnu Pavan Beeram 973 975 Editor: Tarek Saad 976 978 Editor: Himanshu Shah 979 981 Editor: Stephane Litkowski 982 "; 984 description 985 "YANG data model for representing operational state information 986 of Segment Routing Topologies, when NMDA is not supported. 988 Copyright (c) 2018 IETF Trust and the persons identified as 989 authors of the code. All rights reserved. 991 Redistribution and use in source and binary forms, with or 992 without modification, is permitted pursuant to, and subject to 993 the license terms contained in, the Simplified BSD License set 994 forth in Section 4.c of the IETF Trust's Legal Provisions 995 Relating to IETF Documents 996 (http://trustee.ietf.org/license-info). 998 This version of this YANG module is part of RFC XXXX; see the 999 RFC itself for full legal notices."; 1001 revision 2019-11-02 { 1002 description "Initial revision"; 1003 reference 1004 "RFC XXXX: YANG Data Model for SR and SR TE Topologies"; 1005 } 1007 augment "/nw-s:networks/nw-s:network/nw-s:network-types/" 1008 + "l3t-s:l3-unicast-topology" { 1009 description 1010 "Defines the SR topology type."; 1011 uses srt:sr-topology-type; 1012 } 1014 augment "/nw-s:networks/nw-s:network/" 1015 + "l3t-s:l3-topology-attributes" { 1016 when "../nw-s:network-types/l3t-s:l3-unicast-topology/" 1017 + "srt-s:sr-mpls" { 1018 description "Augment only for SR topology."; 1019 } 1020 description "Augment topology configuration"; 1021 uses srt:sr-topology-attributes; 1022 } 1024 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1025 + "l3t-s:l3-node-attributes" { 1026 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1027 + "srt-s:sr-mpls" { 1028 description "Augment only for SR topology."; 1029 } 1030 description "Augment node configuration."; 1031 uses srt:sr-node-attributes; 1032 } 1034 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1035 + "l3t-s:l3-node-attributes/l3t-s:prefix" { 1036 when "../../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1037 + "srt-s:sr-mpls" { 1038 description "Augment only for SR topology."; 1039 } 1040 description "Augment node prefix."; 1041 uses srt:sr-node-prefix-attributes; 1042 } 1044 augment "/nw-s:networks/nw-s:network/nt-s:link/" 1045 + "l3t-s:l3-link-attributes" { 1046 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1047 + "srt-s:sr-mpls" { 1048 description "Augment only for SR topology."; 1049 } 1050 description "Augment link configuration"; 1051 uses srt:sr-link-attributes; 1053 } 1055 grouping sr-topology-attributes { 1056 description "SR topology scope attributes."; 1057 container sr { 1058 description 1059 "Containing SR attributes."; 1060 uses sr-cmn:srgb; 1061 } // sr 1062 } // sr-topology-attributes 1063 } 1064 1066 Appendix B. Data Tree Example 1068 This section contains an example of an instance data tree in the JSON 1069 encoding [RFC7951]. The example instantiates "ietf-sr-topology" for 1070 the topology that is depicted in the following diagram. 1072 +------------+ +------------+ 1073 | D1 | | D2 | 1074 /-\ /-\ /-\ /-\ 1075 | | 1-0-1 | |---------------->| | 2-1-1 | | 1076 | | 1-2-1 | |<----------------| | 2-0-1 | | 1077 \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ 1078 | /----\ | | /----\ | 1079 +---| |---+ +---| |---+ 1080 \----/ \----/ 1081 A | A | 1082 | | | | 1083 | | | | 1084 | | +------------+ | | 1085 | | | D3 | | | 1086 | | /-\ /-\ | | 1087 | +----->| | 3-1-1 | |-------+ | 1088 +---------| | 3-2-1 | |<---------+ 1089 \-/ \-/ 1090 | | 1091 +------------+ 1093 The corresponding instance data tree is depicted below. Note that 1094 some lines have been wrapped to adhere to the 72-character line 1095 limitation of RFCs. 1097 { 1098 "ietf-network:networks": { 1099 "network": [ 1100 { 1101 "network-types": { 1102 "ietf-l3-unicast-topology:l3-unicast-topology": { 1103 "ietf-sr-topology:sr-mpls": {} 1104 } 1105 }, 1106 "network-id": "sr-topo-example", 1107 "ietf-l3-unicast-topology:l3-topology-attributes": { 1108 "ietf-sr-topology:sr": { 1109 "srgb": [ 1110 { 1111 "lower-bound": 16000, 1112 "upper-bound": 23999 1113 } 1114 ] 1115 } 1116 }, 1117 "node": [ 1118 { 1119 "node-id": "D1", 1120 "ietf-network-topology:termination-point": [ 1121 { 1122 "tp-id": "1-0-1", 1123 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1124 "unnumbered-id": 101 1125 } 1126 }, 1127 { 1128 "tp-id": "1-2-1", 1129 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1130 "unnumbered-id": 121 1131 } 1132 }, 1133 { 1134 "tp-id": "1-3-1", 1135 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1136 "unnumbered-id": 131 1137 } 1138 } 1139 ], 1140 "ietf-l3-unicast-topology:l3-node-attributes": { 1141 "router-id": ["203.0.113.1"], 1142 "prefix": [ 1143 { 1144 "prefix": "203.0.113.1/32", 1145 "ietf-sr-topology:sr": { 1146 "start-sid": 101, 1147 "range": 1, 1148 "is-local": false, 1149 "is-node": true 1150 } 1151 } 1152 ], 1153 "ietf-sr-topology:sr": { 1154 "srgb": [ 1155 { 1156 "lower-bound": 16000, 1157 "upper-bound": 23999 1158 } 1159 ], 1160 "srlb": [ 1161 { 1162 "lower-bound": 15000, 1163 "upper-bound": 15999 1164 } 1165 ] 1166 } 1167 } 1168 }, 1169 { 1170 "node-id": "D2", 1171 "ietf-network-topology:termination-point": [ 1172 { 1173 "tp-id": "2-0-1", 1174 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1175 "unnumbered-id": 201 1176 } 1177 }, 1178 { 1179 "tp-id": "2-1-1", 1180 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1181 "unnumbered-id": 211 1182 } 1183 }, 1184 { 1185 "tp-id": "2-3-1", 1186 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1187 "unnumbered-id": 231 1188 } 1189 } 1190 ], 1191 "ietf-l3-unicast-topology:l3-node-attributes": { 1192 "router-id": ["203.0.113.2"], 1193 "prefix": [ 1194 { 1195 "prefix": "203.0.113.2/32", 1196 "ietf-sr-topology:sr": { 1197 "start-sid": 102, 1198 "range": 1, 1199 "is-local": false, 1200 "is-node": true 1201 } 1202 } 1203 ], 1204 "ietf-sr-topology:sr": { 1205 "srgb": [ 1206 { 1207 "lower-bound": 16000, 1208 "upper-bound": 23999 1209 } 1210 ], 1211 "srlb": [ 1212 { 1213 "lower-bound": 15000, 1214 "upper-bound": 15999 1215 } 1216 ] 1217 } 1218 } 1219 }, 1220 { 1221 "node-id": "D3", 1222 "ietf-network-topology:termination-point": [ 1223 { 1224 "tp-id": "3-1-1", 1225 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1226 "unnumbered-id": 311 1227 } 1228 }, 1229 { 1230 "tp-id": "3-2-1", 1231 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1232 "unnumbered-id": 321 1233 } 1234 } 1235 ], 1236 "ietf-l3-unicast-topology:l3-node-attributes": { 1237 "router-id": ["203.0.113.3"], 1238 "prefix": [ 1239 { 1240 "prefix": "203.0.113.3/32", 1241 "ietf-sr-topology:sr": { 1242 "start-sid": 101, 1243 "range": 1, 1244 "is-local": false, 1245 "is-node": true 1246 } 1247 } 1248 ], 1249 "ietf-sr-topology:sr": { 1250 "srgb": [ 1251 { 1252 "lower-bound": 16000, 1253 "upper-bound": 23999 1254 } 1255 ], 1256 "srlb": [ 1257 { 1258 "lower-bound": 15000, 1259 "upper-bound": 15999 1260 } 1261 ] 1262 } 1263 } 1264 } 1265 ], 1266 "ietf-network-topology:link": [ 1267 { 1268 "link-id": "D1,1-2-1,D2,2-1-1", 1269 "source": { 1270 "source-node": "D1", 1271 "source-tp": "1-2-1" 1272 }, 1273 "destination": { 1274 "dest-node": "D2", 1275 "dest-tp": "2-1-1" 1276 }, 1277 "ietf-l3-unicast-topology:l3-link-attributes": { 1278 "metric1": "100", 1279 "ietf-sr-topology:sr": { 1280 "sid": 121, 1281 "is-local": true 1282 } 1283 } 1284 }, 1285 { 1286 "link-id": "D2,2-1-1,D1,1-2-1", 1287 "source": { 1288 "source-node": "D2", 1289 "source-tp": "2-1-1" 1290 }, 1291 "destination": { 1292 "dest-node": "D1", 1293 "dest-tp": "1-2-1" 1294 }, 1295 "ietf-l3-unicast-topology:l3-link-attributes": { 1296 "metric1": "100", 1297 "ietf-sr-topology:sr": { 1298 "sid": 211, 1299 "is-local": true 1300 } 1301 } 1302 }, 1303 { 1304 "link-id": "D1,1-3-1,D3,3-1-1", 1305 "source": { 1306 "source-node": "D1", 1307 "source-tp": "1-3-1" 1308 }, 1309 "destination": { 1310 "dest-node": "D3", 1311 "dest-tp": "3-1-1" 1312 }, 1313 "ietf-l3-unicast-topology:l3-link-attributes": { 1314 "metric1": "100", 1315 "ietf-sr-topology:sr": { 1316 "sid": 131, 1317 "is-local": true 1318 } 1319 } 1320 }, 1321 { 1322 "link-id": "D3,3-1-1,D1,1-3-1", 1323 "source": { 1324 "source-node": "D3", 1325 "source-tp": "3-1-1" 1326 }, 1327 "destination": { 1328 "dest-node": "D1", 1329 "dest-tp": "1-3-1" 1330 }, 1331 "ietf-l3-unicast-topology:l3-link-attributes": { 1332 "metric1": "100", 1333 "ietf-sr-topology:sr": { 1334 "sid": 311, 1335 "is-local": true 1336 } 1338 } 1339 }, 1340 { 1341 "link-id": "D2,2-3-1,D3,3-2-1", 1342 "source": { 1343 "source-node": "D2", 1344 "source-tp": "2-3-1" 1345 }, 1346 "destination": { 1347 "dest-node": "D3", 1348 "dest-tp": "3-2-1" 1349 }, 1350 "ietf-l3-unicast-topology:l3-link-attributes": { 1351 "metric1": "100", 1352 "ietf-sr-topology:sr": { 1353 "sid": 231, 1354 "is-local": true 1355 } 1356 } 1357 }, 1358 { 1359 "link-id": "D3,3-2-1,D2,2-3-1", 1360 "source": { 1361 "source-node": "D3", 1362 "source-tp": "3-2-1" 1363 }, 1364 "destination": { 1365 "dest-node": "D2", 1366 "dest-tp": "2-3-1" 1367 }, 1368 "ietf-l3-unicast-topology:l3-link-attributes": { 1369 "metric1": "100", 1370 "ietf-sr-topology:sr": { 1371 "sid": 321, 1372 "is-local": true 1373 } 1374 } 1375 } 1376 ] 1377 } 1378 ] 1379 } 1380 } 1382 Appendix C. Contributors 1384 Jeff Tantsura 1385 Email: jefftant.ietf@gmail.com 1387 Yingzhen Qu 1388 Email: yingzhen.qu@huawei.com 1390 Authors' Addresses 1392 Xufeng Liu 1393 Volta Networks 1395 EMail: xufeng.liu.ietf@gmail.com 1397 Igor Bryskin 1398 Individual 1400 EMail: i_bryskin@yahoo.com 1402 Vishnu Pavan Beeram 1403 Juniper Networks 1405 EMail: vbeeram@juniper.net 1407 Tarek Saad 1408 Juniper Networks 1410 EMail: tsaad@juniper.net 1412 Himanshu Shah 1413 Ciena 1415 EMail: hshah@ciena.com 1417 Stephane Litkowski 1418 Cisco 1420 EMail: slitkows.ietf@gmail.com