idnits 2.17.1 draft-ietf-teas-yang-sr-te-topo-05.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 (July 8, 2019) is 1747 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: January 9, 2020 Futurewei 6 V. Beeram 7 T. Saad 8 Juniper Networks 9 H. Shah 10 Ciena 11 S. Litkowski 12 Orange Business Service 13 July 8, 2019 15 YANG Data Model for SR and SR TE Topologies 16 draft-ietf-teas-yang-sr-te-topo-05 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 January 9, 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 . . . . . . . . . . . . . . . . . . . . . 17 71 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17 72 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 73 7.1. Normative References . . . . . . . . . . . . . . . . . . 19 74 7.2. Informative References . . . . . . . . . . . . . . . . . 20 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-06-28.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-06-28 { 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 refine srgb { 502 must "lower-bound <= upper-bound" { 503 error-message 504 "lower-bound must not be greater than upper-bound."; 505 } 506 } 507 } 508 } // sr 509 } // sr-topology-attributes 511 grouping information-source-attributes { 512 description 513 "The attributes identifying source that has provided the 514 related information, and the source credibility."; 515 leaf information-source { 516 type enumeration { 517 enum "unknown" { 518 description "The source is unknown."; 519 } 520 enum "locally-configured" { 521 description "Configured entity."; 522 } 523 enum "ospfv2" { 524 description "OSPFv2."; 525 } 526 enum "ospfv3" { 527 description "OSPFv3."; 528 } 529 enum "isis" { 530 description "ISIS."; 531 } 532 enum "bgp-ls" { 533 description "BGP-LS."; 534 reference 535 "RFC 7752: North-Bound Distribution of Link-State and 536 Traffic Engineering (TE) Information Using BGP"; 537 } 538 enum "system-processed" { 539 description "System processed entity."; 540 } 541 enum "other" { 542 description "Other source."; 543 } 544 } 545 config false; 546 description 547 "Indicates the type of the information source."; 548 } 549 leaf information-source-instance { 550 type string; 551 config false; 552 description 553 "The name indicating the instance of the information 554 source."; 555 } 556 container information-source-state { 557 config false; 558 description 559 "The container contains state attributes related to 560 the information source."; 561 leaf credibility-preference { 562 type uint16; 563 description 564 "The preference value to calculate the traffic 565 engineering database credibility value used for 566 tie-break selection between different 567 information-source values. 568 Higher value is more preferable."; 569 } 570 } 571 } // information-source-attributes 573 grouping sr-node-attributes { 574 description "SR node scope attributes."; 575 container sr { 576 description 577 "Containing SR attributes."; 578 uses sr-cmn:srgb { 579 refine srgb { 580 must "lower-bound <= upper-bound" { 581 error-message 582 "lower-bound must not be greater than upper-bound."; 583 } 584 } 585 } 586 uses sr-cmn:srlb { 587 refine srlb { 588 must "lower-bound <= upper-bound" { 589 error-message 590 "lower-bound must not be greater than upper-bound."; 591 } 592 } 593 } 594 uses sr-cmn:node-capabilities; 595 leaf msd { 596 if-feature "msd"; 597 type uint8; 598 description 599 "Node MSD is the lowest MSD supported by the node."; 600 } 601 // Operational state data 602 uses information-source-attributes; 603 } // sr 604 } // sr-node-attributes 606 grouping sr-node-prefix-attributes { 607 description "Containing SR attributes for a prefix."; 608 container sr { 609 presence "Presence indicates SR is enabled."; 610 description 611 "Containing SR attributes for a prefix."; 612 uses sr-cmn:prefix-sid-attributes; 613 uses sr-cmn:last-hop-behavior; 614 leaf is-local { 615 type boolean; 616 default false; 617 description 618 "'true' if the SID is local."; 619 } 620 leaf is-node { 621 type boolean; 622 default false; 623 description 624 "'true' if the Prefix-SID refers to the router identified 625 by the prefix. Typically, the leaf 'is-node' (N-Flag) 626 is set on Prefix-SIDs attached to a router loopback 627 address."; 628 } 629 leaf is-readvertisment { 630 type boolean; 631 config false; 632 description 633 "'true' if the prefix to which this Prefix-SID is attached, 634 has been propagated by the router from another 635 topology by redistribution."; 636 } 637 } // sr 638 } // sr-node-prefix-attributes 640 grouping sr-link-attributes { 641 description "SR link scope attributes"; 642 container sr { 643 presence "Presence indicates SR is enabled."; 644 description 645 "Containing SR attributes."; 646 uses sr-cmn:sid-value-type; 647 leaf sid { 648 type uint32; 649 mandatory true; 650 description 651 "Adjacency SID, which can be either IGP-Adjacency SID 652 or BGP PeerAdj SID, depending on the context."; 653 } 654 leaf advertise-protection { 655 type enumeration { 656 enum "single" { 657 description 658 "A single Adj-SID is associated 659 with the adjacency and reflects 660 the protection configuration."; 661 } 662 enum "dual" { 663 description 664 "Two Adj-SIDs will be associated 665 with the adjacency if interface 666 is protected. In this case 667 one will be enforced with 668 backup flag set, the other 669 will be enforced to backup flag unset. 670 In case, protection is not configured, 671 a single Adj-SID will be advertised 672 with backup flag unset."; 673 } 674 } 675 default "single"; 676 description 677 "If set, the Adj-SID refers to an 678 adjacency being protected."; 679 } 680 leaf is-local { 681 type boolean; 682 default false; 683 description 684 "'true' if the SID is local."; 685 } 686 leaf msd { 687 if-feature "msd"; 688 type uint8; 689 description 690 "SID depth of the interface associated with the link."; 691 } 692 leaf address-family { 693 type enumeration { 694 enum "ipv4" { 695 description 696 "The Adj-SID refers to an adjacency with outgoing IPv4 697 encapsulation."; 698 } 699 enum "ipv6" { 700 description 701 "The Adj-SID refers to an adjacency with outgoing IPv6 702 encapsulation."; 703 } 704 } 705 default "ipv4"; 706 description 707 "This leaf defines the F-Flag (Address-Family flag) of the 708 SID."; 709 } 710 leaf is-backup { 711 type boolean; 712 default false; 713 description 714 "'true' if the SID is a backup."; 715 } 716 leaf is-part-of-set { 717 type boolean; 718 default false; 719 description 720 "'true' if the SID is part of a set."; 721 } 722 leaf is-persistent { 723 type boolean; 724 default true; 725 description 726 "'true' if the SID is persistently allocated."; 727 } 728 leaf is-on-lan { 729 type boolean; 730 default false; 731 description 732 "'true' if on a lan."; 733 } 734 uses information-source-attributes; 735 } // sr 736 } // sr-tp-attributes 737 } 738 740 5. IANA Considerations 742 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 743 actual RFC number (and remove this note). 745 This document registers the following namespace URIs in the IETF XML 746 registry [RFC3688]: 748 -------------------------------------------------------------------- 749 URI: urn:ietf:params:xml:ns:yang:ietf-sr-topology 750 Registrant Contact: The IESG. 751 XML: N/A, the requested URI is an XML namespace. 752 -------------------------------------------------------------------- 754 -------------------------------------------------------------------- 755 URI: urn:ietf:params:xml:ns:yang:ietf-sr-topology-state 756 Registrant Contact: The IESG. 757 XML: N/A, the requested URI is an XML namespace. 758 -------------------------------------------------------------------- 760 This document registers the following YANG modules in the YANG Module 761 Names registry [RFC6020]: 763 -------------------------------------------------------------------- 764 name: ietf-sr-topology 765 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-topology 766 prefix: srt 767 reference: RFC XXXX 768 -------------------------------------------------------------------- 770 -------------------------------------------------------------------- 771 name: ietf-sr-topology-state 772 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-topology-state 773 prefix: srt-s 774 reference: RFC XXXX 775 -------------------------------------------------------------------- 777 6. Security Considerations 779 The YANG module specified in this document defines a schema for data 780 that is designed to be accessed via network management protocols such 781 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 782 is the secure transport layer, and the mandatory-to-implement secure 783 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 784 is HTTPS, and the mandatory-to-implement secure transport is TLS 785 [RFC8446]. 787 The Network Configuration Access Control Model (NACM) [RFC8341] 788 provides the means to restrict access for particular NETCONF or 789 RESTCONF users to a preconfigured subset of all available NETCONF or 790 RESTCONF protocol operations and content. 792 There are a number of data nodes defined in this YANG module that are 793 writable/creatable/deletable (i.e., config true, which is the 794 default). These data nodes may be considered sensitive or vulnerable 795 in some network environments. Write operations (e.g., edit-config) 796 to these data nodes without proper protection can have a negative 797 effect on network operations. These are the subtrees and data nodes 798 and their sensitivity/vulnerability: 800 nw:network-types/l3t:l3-unicast-topology/sr-mpls 801 This subtree specifies the SR topology type. Modifying the 802 configurations can make SR topology type invalid and cause 803 interruption to all SR networks. 805 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 806 This subtree specifies the topology-wide configurations, including 807 the SRGB (Segment Routing Global Block). Modifying the 808 configurations here can cause traffic disabled or rerouted in this 809 topology and the connected topologies. 811 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 812 This subtree specifies the SR configurations for nodes. Modifying 813 the configurations in this subtree can add, remove, or modify SR 814 nodes, causing traffic disabled or rerouted in the specified nodes 815 and the related TE topologies. 817 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 818 This subtree specifies the configurations for SR Adjacency 819 Segments. Modifying the configurations in this subtree can add, 820 remove, or modify SR Adjacency Segments causing traffic disabled 821 or rerouted on the specified SR adjacencies, the related nodes, 822 and the related SR topologies. 824 Some of the readable data nodes in this YANG module may be considered 825 sensitive or vulnerable in some network environments. It is thus 826 important to control read access (e.g., via get, get-config, or 827 notification) to these data nodes. These are the subtrees and data 828 nodes and their sensitivity/vulnerability: 830 nw:network-types/l3t:l3-unicast-topology/sr-mpls 831 Unauthorized access to this subtree can disclose the SR topology 832 type. 834 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 835 Unauthorized access to this subtree can disclose the topology-wide 836 configurations, including the SRGB (Segment Routing Global Block). 838 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 839 Unauthorized access to this subtree can disclose the operational 840 state information of the SR nodes. 842 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 843 Unauthorized access to this subtree can disclose the operational 844 state information of SR Adjacency Segments. 846 7. References 848 7.1. Normative References 850 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 851 Requirement Levels", BCP 14, RFC 2119, 852 DOI 10.17487/RFC2119, March 1997, 853 . 855 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 856 DOI 10.17487/RFC3688, January 2004, 857 . 859 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 860 the Network Configuration Protocol (NETCONF)", RFC 6020, 861 DOI 10.17487/RFC6020, October 2010, 862 . 864 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 865 and A. Bierman, Ed., "Network Configuration Protocol 866 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 867 . 869 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 870 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 871 . 873 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 874 RFC 7950, DOI 10.17487/RFC7950, August 2016, 875 . 877 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 878 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 879 . 881 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 882 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 883 May 2017, . 885 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 886 Access Control Model", STD 91, RFC 8341, 887 DOI 10.17487/RFC8341, March 2018, 888 . 890 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 891 and R. Wilton, "Network Management Datastore Architecture 892 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 893 . 895 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 896 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 897 . 899 7.2. Informative References 901 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 902 RFC 7951, DOI 10.17487/RFC7951, August 2016, 903 . 905 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 906 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 907 . 909 [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., 910 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 911 Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March 912 2018, . 914 [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X., 915 Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model 916 for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346, 917 March 2018, . 919 [I-D.ietf-teas-yang-te-topo] 920 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 921 O. Dios, "YANG Data Model for Traffic Engineering (TE) 922 Topologies", draft-ietf-teas-yang-te-topo-22 (work in 923 progress), June 2019. 925 [I-D.ietf-spring-sr-yang] 926 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 927 Tantsura, "YANG Data Model for Segment Routing", draft- 928 ietf-spring-sr-yang-13 (work in progress), July 2019. 930 Appendix A. Companion YANG Model for Non-NMDA Compliant Implementations 932 The YANG module ietf-sr-topology defined in this document is designed 933 to be used in conjunction with implementations that support the 934 Network Management Datastore Architecture (NMDA) defined in 935 [RFC8342]. In order to allow implementations to use the model even 936 in cases when NMDA is not supported, the following companion module, 937 ietf-sr-topology-state, is defined as state model, which mirrors the 938 module ietf-sr-topology defined earlier in this document. However, 939 all data nodes in the companion module are non-configurable, to 940 represent the applied configuration or the derived operational 941 states. 943 The companion module, ietf-sr-topology-state, is redundant and SHOULD 944 NOT be supported by implementations that support NMDA. 946 As the structure of the companion module mirrors that of the 947 coorespinding NMDA model, the YANG tree of the companion module is 948 not depicted separately. 950 A.1. SR Topology State Module 952 file "ietf-sr-topology-state@2019-06-28.yang" 953 module ietf-sr-topology-state { 954 yang-version 1.1; 955 namespace "urn:ietf:params:xml:ns:yang:ietf-sr-topology-state"; 956 prefix "srt-s"; 958 import ietf-sr-topology { 959 prefix "srt"; 960 } 961 import ietf-network-state { 962 prefix "nw-s"; 963 reference "RFC 8345: A YANG Data Model for Network Topologies"; 964 } 965 import ietf-network-topology-state { 966 prefix "nt-s"; 967 reference "RFC 8345: A YANG Data Model for Network Topologies"; 968 } 969 import ietf-l3-unicast-topology-state { 970 prefix "l3t-s"; 971 reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; 972 } 973 import ietf-segment-routing-common { 974 prefix "sr-cmn"; 975 reference 976 "I-D.ietf-spring-sr-yang: YANG Data Model for Segment Routing"; 978 } 980 organization 981 "IETF Traffic Engineering Architecture and Signaling (TEAS) 982 Working Group"; 984 contact 985 "WG Web: 986 WG List: 988 Editor: Xufeng Liu 989 991 Editor: Igor Bryskin 992 994 Editor: Vishnu Pavan Beeram 995 997 Editor: Tarek Saad 998 1000 Editor: Himanshu Shah 1001 1003 Editor: Stephane Litkowski 1004 "; 1006 description 1007 "YANG data model for representing operational state information 1008 of Segment Routing Topologies, when NMDA is not supported. 1010 Copyright (c) 2018 IETF Trust and the persons identified as 1011 authors of the code. All rights reserved. 1013 Redistribution and use in source and binary forms, with or 1014 without modification, is permitted pursuant to, and subject to 1015 the license terms contained in, the Simplified BSD License set 1016 forth in Section 4.c of the IETF Trust's Legal Provisions 1017 Relating to IETF Documents 1018 (http://trustee.ietf.org/license-info). 1020 This version of this YANG module is part of RFC XXXX; see the 1021 RFC itself for full legal notices."; 1023 revision 2019-06-28 { 1024 description "Initial revision"; 1025 reference 1026 "RFC XXXX: YANG Data Model for SR and SR TE Topologies"; 1027 } 1029 augment "/nw-s:networks/nw-s:network/nw-s:network-types/" 1030 + "l3t-s:l3-unicast-topology" { 1031 description 1032 "Defines the SR topology type."; 1033 uses srt:sr-topology-type; 1034 } 1036 augment "/nw-s:networks/nw-s:network/" 1037 + "l3t-s:l3-topology-attributes" { 1038 when "../nw-s:network-types/l3t-s:l3-unicast-topology/" 1039 + "srt-s:sr-mpls" { 1040 description "Augment only for SR topology."; 1041 } 1042 description "Augment topology configuration"; 1043 uses srt:sr-topology-attributes; 1044 } 1046 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1047 + "l3t-s:l3-node-attributes" { 1048 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1049 + "srt-s:sr-mpls" { 1050 description "Augment only for SR topology."; 1051 } 1052 description "Augment node configuration."; 1053 uses srt:sr-node-attributes; 1054 } 1056 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1057 + "l3t-s:l3-node-attributes/l3t-s:prefix" { 1058 when "../../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1059 + "srt-s:sr-mpls" { 1060 description "Augment only for SR topology."; 1061 } 1062 description "Augment node prefix."; 1063 uses srt:sr-node-prefix-attributes; 1064 } 1066 augment "/nw-s:networks/nw-s:network/nt-s:link/" 1067 + "l3t-s:l3-link-attributes" { 1068 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1069 + "srt-s:sr-mpls" { 1070 description "Augment only for SR topology."; 1071 } 1072 description "Augment link configuration"; 1073 uses srt:sr-link-attributes; 1075 } 1077 grouping sr-topology-attributes { 1078 description "SR topology scope attributes."; 1079 container sr { 1080 description 1081 "Containing SR attributes."; 1082 uses sr-cmn:srgb; 1083 } // sr 1084 } // sr-topology-attributes 1085 } 1086 1088 Appendix B. Data Tree Example 1090 This section contains an example of an instance data tree in the JSON 1091 encoding [RFC7951]. The example instantiates "ietf-sr-topology" for 1092 the topology that is depicted in the following diagram. 1094 +------------+ +------------+ 1095 | D1 | | D2 | 1096 /-\ /-\ /-\ /-\ 1097 | | 1-0-1 | |---------------->| | 2-1-1 | | 1098 | | 1-2-1 | |<----------------| | 2-0-1 | | 1099 \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ 1100 | /----\ | | /----\ | 1101 +---| |---+ +---| |---+ 1102 \----/ \----/ 1103 A | A | 1104 | | | | 1105 | | | | 1106 | | +------------+ | | 1107 | | | D3 | | | 1108 | | /-\ /-\ | | 1109 | +----->| | 3-1-1 | |-------+ | 1110 +---------| | 3-2-1 | |<---------+ 1111 \-/ \-/ 1112 | | 1113 +------------+ 1115 The corresponding instance data tree is depicted below. Note that 1116 some lines have been wrapped to adhere to the 72-character line 1117 limitation of RFCs. 1119 { 1120 "ietf-network:networks": { 1121 "network": [ 1122 { 1123 "network-types": { 1124 "ietf-l3-unicast-topology:l3-unicast-topology": { 1125 "ietf-sr-topology:sr-mpls": {} 1126 } 1127 }, 1128 "network-id": "sr-topo-example", 1129 "ietf-l3-unicast-topology:l3-topology-attributes": { 1130 "ietf-sr-topology:sr": { 1131 "srgb": [ 1132 { 1133 "lower-bound": 16000, 1134 "upper-bound": 23999 1135 } 1136 ] 1137 } 1138 }, 1139 "node": [ 1140 { 1141 "node-id": "D1", 1142 "ietf-network-topology:termination-point": [ 1143 { 1144 "tp-id": "1-0-1", 1145 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1146 "unnumbered-id": 101 1147 } 1148 }, 1149 { 1150 "tp-id": "1-2-1", 1151 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1152 "unnumbered-id": 121 1153 } 1154 }, 1155 { 1156 "tp-id": "1-3-1", 1157 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1158 "unnumbered-id": 131 1159 } 1160 } 1161 ], 1162 "ietf-l3-unicast-topology:l3-node-attributes": { 1163 "router-id": ["203.0.113.1"], 1164 "prefix": [ 1165 { 1166 "prefix": "203.0.113.1/32", 1167 "ietf-sr-topology:sr": { 1168 "start-sid": 101, 1169 "range": 1, 1170 "is-local": false, 1171 "is-node": true 1172 } 1173 } 1174 ], 1175 "ietf-sr-topology:sr": { 1176 "srgb": [ 1177 { 1178 "lower-bound": 16000, 1179 "upper-bound": 23999 1180 } 1181 ], 1182 "srlb": [ 1183 { 1184 "lower-bound": 15000, 1185 "upper-bound": 15999 1186 } 1187 ] 1188 } 1189 } 1190 }, 1191 { 1192 "node-id": "D2", 1193 "ietf-network-topology:termination-point": [ 1194 { 1195 "tp-id": "2-0-1", 1196 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1197 "unnumbered-id": 201 1198 } 1199 }, 1200 { 1201 "tp-id": "2-1-1", 1202 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1203 "unnumbered-id": 211 1204 } 1205 }, 1206 { 1207 "tp-id": "2-3-1", 1208 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1209 "unnumbered-id": 231 1210 } 1211 } 1212 ], 1213 "ietf-l3-unicast-topology:l3-node-attributes": { 1214 "router-id": ["203.0.113.2"], 1215 "prefix": [ 1216 { 1217 "prefix": "203.0.113.2/32", 1218 "ietf-sr-topology:sr": { 1219 "start-sid": 102, 1220 "range": 1, 1221 "is-local": false, 1222 "is-node": true 1223 } 1224 } 1225 ], 1226 "ietf-sr-topology:sr": { 1227 "srgb": [ 1228 { 1229 "lower-bound": 16000, 1230 "upper-bound": 23999 1231 } 1232 ], 1233 "srlb": [ 1234 { 1235 "lower-bound": 15000, 1236 "upper-bound": 15999 1237 } 1238 ] 1239 } 1240 } 1241 }, 1242 { 1243 "node-id": "D3", 1244 "ietf-network-topology:termination-point": [ 1245 { 1246 "tp-id": "3-1-1", 1247 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1248 "unnumbered-id": 311 1249 } 1250 }, 1251 { 1252 "tp-id": "3-2-1", 1253 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1254 "unnumbered-id": 321 1255 } 1256 } 1257 ], 1258 "ietf-l3-unicast-topology:l3-node-attributes": { 1259 "router-id": ["203.0.113.3"], 1260 "prefix": [ 1261 { 1262 "prefix": "203.0.113.3/32", 1263 "ietf-sr-topology:sr": { 1264 "start-sid": 101, 1265 "range": 1, 1266 "is-local": false, 1267 "is-node": true 1268 } 1269 } 1270 ], 1271 "ietf-sr-topology:sr": { 1272 "srgb": [ 1273 { 1274 "lower-bound": 16000, 1275 "upper-bound": 23999 1276 } 1277 ], 1278 "srlb": [ 1279 { 1280 "lower-bound": 15000, 1281 "upper-bound": 15999 1282 } 1283 ] 1284 } 1285 } 1286 } 1287 ], 1288 "ietf-network-topology:link": [ 1289 { 1290 "link-id": "D1,1-2-1,D2,2-1-1", 1291 "source": { 1292 "source-node": "D1", 1293 "source-tp": "1-2-1" 1294 }, 1295 "destination": { 1296 "dest-node": "D2", 1297 "dest-tp": "2-1-1" 1298 }, 1299 "ietf-l3-unicast-topology:l3-link-attributes": { 1300 "metric1": "100", 1301 "ietf-sr-topology:sr": { 1302 "sid": 121, 1303 "is-local": true 1304 } 1305 } 1306 }, 1307 { 1308 "link-id": "D2,2-1-1,D1,1-2-1", 1309 "source": { 1310 "source-node": "D2", 1311 "source-tp": "2-1-1" 1312 }, 1313 "destination": { 1314 "dest-node": "D1", 1315 "dest-tp": "1-2-1" 1316 }, 1317 "ietf-l3-unicast-topology:l3-link-attributes": { 1318 "metric1": "100", 1319 "ietf-sr-topology:sr": { 1320 "sid": 211, 1321 "is-local": true 1322 } 1323 } 1324 }, 1325 { 1326 "link-id": "D1,1-3-1,D3,3-1-1", 1327 "source": { 1328 "source-node": "D1", 1329 "source-tp": "1-3-1" 1330 }, 1331 "destination": { 1332 "dest-node": "D3", 1333 "dest-tp": "3-1-1" 1334 }, 1335 "ietf-l3-unicast-topology:l3-link-attributes": { 1336 "metric1": "100", 1337 "ietf-sr-topology:sr": { 1338 "sid": 131, 1339 "is-local": true 1340 } 1341 } 1342 }, 1343 { 1344 "link-id": "D3,3-1-1,D1,1-3-1", 1345 "source": { 1346 "source-node": "D3", 1347 "source-tp": "3-1-1" 1348 }, 1349 "destination": { 1350 "dest-node": "D1", 1351 "dest-tp": "1-3-1" 1352 }, 1353 "ietf-l3-unicast-topology:l3-link-attributes": { 1354 "metric1": "100", 1355 "ietf-sr-topology:sr": { 1356 "sid": 311, 1357 "is-local": true 1358 } 1360 } 1361 }, 1362 { 1363 "link-id": "D2,2-3-1,D3,3-2-1", 1364 "source": { 1365 "source-node": "D2", 1366 "source-tp": "2-3-1" 1367 }, 1368 "destination": { 1369 "dest-node": "D3", 1370 "dest-tp": "3-2-1" 1371 }, 1372 "ietf-l3-unicast-topology:l3-link-attributes": { 1373 "metric1": "100", 1374 "ietf-sr-topology:sr": { 1375 "sid": 231, 1376 "is-local": true 1377 } 1378 } 1379 }, 1380 { 1381 "link-id": "D3,3-2-1,D2,2-3-1", 1382 "source": { 1383 "source-node": "D3", 1384 "source-tp": "3-2-1" 1385 }, 1386 "destination": { 1387 "dest-node": "D2", 1388 "dest-tp": "2-3-1" 1389 }, 1390 "ietf-l3-unicast-topology:l3-link-attributes": { 1391 "metric1": "100", 1392 "ietf-sr-topology:sr": { 1393 "sid": 321, 1394 "is-local": true 1395 } 1396 } 1397 } 1398 ] 1399 } 1400 ] 1401 } 1402 } 1404 Appendix C. Contributors 1406 Jeff Tantsura 1407 Email: jefftant.ietf@gmail.com 1409 Yingzhen Qu 1410 Email: yingzhen.qu@huawei.com 1412 Authors' Addresses 1414 Xufeng Liu 1415 Volta Networks 1417 EMail: xufeng.liu.ietf@gmail.com 1419 Igor Bryskin 1420 Futurewei 1422 EMail: igor.bryskin@futurewei.com 1424 Vishnu Pavan Beeram 1425 Juniper Networks 1427 EMail: vbeeram@juniper.net 1429 Tarek Saad 1430 Juniper Networks 1432 EMail: tsaad@juniper.net 1434 Himanshu Shah 1435 Ciena 1437 EMail: hshah@ciena.com 1439 Stephane Litkowski 1440 Orange Business Service 1442 EMail: stephane.litkowski@orange.com