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