idnits 2.17.1 draft-ietf-teas-yang-sr-te-topo-03.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 (October 22, 2018) is 2010 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 711, but not defined == Missing Reference: 'RFC6020' is mentioned on line 726, 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-18 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-09 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: April 25, 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 October 22, 2018 16 YANG Data Model for SR and SR TE Topologies 17 draft-ietf-teas-yang-sr-te-topo-03 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 April 25, 2019. 41 Copyright Notice 43 Copyright (c) 2018 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 . . . . . . . . . . . . . . . . . . . . . . . . . 8 71 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 72 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 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 . . . . . . . . . . . . . . . . . . 20 78 A.1. SR Topology State Module . . . . . . . . . . . . . . . . 20 79 Appendix B. Data Tree Example . . . . . . . . . . . . . . . . . 23 80 Appendix C. Contributors . . . . . . . . . . . . . . . . . . . . 30 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 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-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-state 357 +--ro credibility-preference? uint16 359 4. YANG Module 361 file "ietf-sr-topology@2018-10-03.yang" 362 module ietf-sr-topology { 363 yang-version 1.1; 364 namespace "urn:ietf:params:xml:ns:yang:ietf-sr-topology"; 365 prefix "srt"; 367 import ietf-network { 368 prefix "nw"; 369 reference "RFC 8345: A YANG Data Model for Network Topologies"; 370 } 371 import ietf-network-topology { 372 prefix "nt"; 373 reference "RFC 8345: A YANG Data Model for Network Topologies"; 374 } 375 import ietf-l3-unicast-topology { 376 prefix "l3t"; 377 reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; 378 } 379 import ietf-segment-routing-common { 380 prefix "sr-cmn"; 381 reference 382 "I-D.ietf-spring-sr-yang: YANG Data Model for Segment Routing"; 383 } 385 organization 386 "IETF Traffic Engineering Architecture and Signaling (TEAS) 387 Working Group"; 389 contact 390 "WG Web: 391 WG List: 393 Editor: Xufeng Liu 394 396 Editor: Igor Bryskin 397 399 Editor: Vishnu Pavan Beeram 400 402 Editor: Tarek Saad 403 405 Editor: Himanshu Shah 406 408 Editor: Stephane Litkowski 409 "; 411 description 412 "YANG data model for representing and manipulating Segment 413 Routing Topologies. 415 Copyright (c) 2018 IETF Trust and the persons identified as 416 authors of the code. All rights reserved. 418 Redistribution and use in source and binary forms, with or 419 without modification, is permitted pursuant to, and subject to 420 the license terms contained in, the Simplified BSD License set 421 forth in Section 4.c of the IETF Trust's Legal Provisions 422 Relating to IETF Documents 423 (http://trustee.ietf.org/license-info). 425 This version of this YANG module is part of RFC XXXX; see the 426 RFC itself for full legal notices."; 428 revision 2018-10-03 { 429 description "Initial revision"; 430 reference 431 "RFC XXXX: YANG Data Model for SR and SR TE Topologies"; 432 } 434 feature msd { 435 description 436 "Support of signaling MSD (Maximum SID Depth) in IGP."; 437 } 439 grouping sr-topology-type { 440 description 441 "Identifies the SR-MPLS topology type. This type of network 442 toplogies use Segment Routing (SR) technology over the MPLS 443 data plane"; 444 container sr-mpls { 445 presence "Indiates SR-MPLS topology"; 446 description 447 "Its presence identifies the SR topology type."; 448 } 449 } 451 augment "/nw:networks/nw:network/nw:network-types/" 452 + "l3t:l3-unicast-topology" { 453 description 454 "Defines the SR topology type."; 455 uses sr-topology-type; 456 } 458 augment "/nw:networks/nw:network/l3t:l3-topology-attributes" { 459 when "../nw:network-types/l3t:l3-unicast-topology/srt:sr-mpls" { 460 description "Augment only for SR topology."; 461 } 462 description "Augment topology configuration"; 463 uses sr-topology-attributes; 464 } 466 augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" { 467 when "../../nw:network-types/l3t:l3-unicast-topology/" 468 + "srt:sr-mpls" { 469 description "Augment only for SR topology."; 470 } 471 description "Augment node configuration."; 472 uses sr-node-attributes; 473 } 475 augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" 476 + "/l3t:prefix" { 477 when "../../../nw:network-types/l3t:l3-unicast-topology/" 478 + "srt:sr-mpls" { 479 description "Augment only for SR topology."; 480 } 481 description "Augment node prefix."; 482 uses sr-node-prefix-attributes; 483 } 485 augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" { 486 when "../../nw:network-types/l3t:l3-unicast-topology/" 487 + "srt:sr-mpls" { 488 description "Augment only for SR topology."; 489 } 490 description "Augment link configuration"; 491 uses sr-link-attributes; 492 } 494 grouping sr-topology-attributes { 495 description "SR topology scope attributes."; 496 container sr { 497 description 498 "Containing SR attributes."; 499 uses sr-cmn:srgb-cfg; 500 } // sr 501 } // 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 "system-processed" { 525 description "System processed entity."; 526 } 527 enum "other" { 528 description "Other source."; 529 } 530 } 531 config false; 532 description 533 "Indicates the source of the information."; 534 } 535 container information-source-state { 536 config false; 537 description 538 "The container contains state attributes related to 539 the information source."; 540 leaf credibility-preference { 541 type uint16; 542 description 543 "The preference value to calculate the traffic 544 engineering database credibility value used for 545 tie-break selection between different 546 information-source values. 547 Higher value is more preferable."; 548 } 549 } 550 } // information-source-attributes 552 grouping sr-node-attributes { 553 description "SR node scope attributes."; 554 container sr { 555 description 556 "Containing SR attributes."; 557 uses sr-cmn:srgb-cfg; 558 uses sr-cmn:srlb-cfg; 559 uses sr-cmn:node-capabilities; 560 leaf msd { 561 if-feature "msd"; 562 type uint8; 563 description 564 "Node MSD is the lowest MSD supported by the node."; 565 } 566 // Operational state data 567 uses information-source-attributes; 568 } // sr 569 } // sr-node-attributes 571 grouping sr-node-prefix-attributes { 572 description "Containing SR attributes for a prefix."; 573 container sr { 574 presence "Presence indicates SR is enabled."; 575 description 576 "Containing SR attributes for a prefix."; 577 uses sr-cmn:prefix-sid-attributes; 578 uses sr-cmn:last-hop-behavior; 579 leaf is-local { 580 type boolean; 581 default false; 582 description 583 "'true' if the SID is local."; 584 } 585 leaf is-node { 586 type boolean; 587 default false; 588 description 589 "'true' if the Prefix-SID refers to the router identified 590 by the prefix. Typically, the leaf 'is-node' (N-Flag) 591 is set on Prefix-SIDs attached to a router loopback 592 address."; 593 } 594 leaf is-readvertisment { 595 type boolean; 596 config false; 597 description 598 "'true' if the prefix to which this Prefix-SID is attached, 599 has been propagated by the router from another 600 topology by redistribution."; 601 } 602 } // sr 603 } // sr-node-prefix-attributes 604 grouping sr-link-attributes { 605 description "SR link scope attributes"; 606 container sr { 607 presence "Presence indicates SR is enabled."; 608 description 609 "Containing SR attributes."; 610 uses sr-cmn:sid-value-type; 611 leaf sid { 612 type uint32; 613 mandatory true; 614 description 615 "Adjacency SID, which can be either IGP-Adjacency SID 616 or BGP PeerAdj SID, depending on the context."; 617 } 618 leaf advertise-protection { 619 type enumeration { 620 enum "single" { 621 description 622 "A single Adj-SID is associated 623 with the adjacency and reflects 624 the protection configuration."; 625 } 626 enum "dual" { 627 description 628 "Two Adj-SIDs will be associated 629 with the adjacency if interface 630 is protected. In this case 631 one will be enforced with 632 backup flag set, the other 633 will be enforced to backup flag unset. 634 In case, protection is not configured, 635 a single Adj-SID will be advertised 636 with backup flag unset."; 637 } 638 } 639 default "single"; 640 description 641 "If set, the Adj-SID refers to an 642 adjacency being protected."; 643 } 644 leaf is-local { 645 type boolean; 646 default false; 647 description 648 "'true' if the SID is local."; 649 } 650 leaf msd { 651 if-feature "msd"; 652 type uint8; 653 description 654 "SID depth of the interface associated with the link."; 655 } 656 leaf address-family { 657 type enumeration { 658 enum "ipv4" { 659 description 660 "The Adj-SID refers to an adjacency with outgoing IPv4 661 encapsulation."; 662 } 663 enum "ipv6" { 664 description 665 "The Adj-SID refers to an adjacency with outgoing IPv6 666 encapsulation."; 667 } 668 } 669 default "ipv4"; 670 description 671 "This leaf defines the F-Flag (Address-Family flag) of the 672 SID."; 673 } 674 leaf is-backup { 675 type boolean; 676 default false; 677 description 678 "'true' if the SID is a backup."; 679 } 680 leaf is-part-of-set { 681 type boolean; 682 default false; 683 description 684 "'true' if the SID is part of a set."; 685 } 686 leaf is-persistent { 687 type boolean; 688 default true; 689 description 690 "'true' if the SID is persistently allocated."; 691 } 692 leaf is-on-lan { 693 type boolean; 694 default false; 695 description 696 "'true' if on a lan."; 697 } 698 uses information-source-attributes; 699 } // sr 701 } // sr-tp-attributes 702 } 703 705 5. IANA Considerations 707 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 708 actual RFC number (and remove this note). 710 This document registers the following namespace URIs in the IETF XML 711 registry [RFC3688]: 713 -------------------------------------------------------------------- 714 URI: urn:ietf:params:xml:ns:yang:ietf-sr-topology 715 Registrant Contact: The IESG. 716 XML: N/A, the requested URI is an XML namespace. 717 -------------------------------------------------------------------- 719 -------------------------------------------------------------------- 720 URI: urn:ietf:params:xml:ns:yang:ietf-sr-topology-state 721 Registrant Contact: The IESG. 722 XML: N/A, the requested URI is an XML namespace. 723 -------------------------------------------------------------------- 725 This document registers the following YANG modules in the YANG Module 726 Names registry [RFC6020]: 728 -------------------------------------------------------------------- 729 name: ietf-sr-topology 730 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-topology 731 prefix: srt 732 reference: RFC XXXX 733 -------------------------------------------------------------------- 735 -------------------------------------------------------------------- 736 name: ietf-sr-topology-state 737 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-topology-state 738 prefix: srt-s 739 reference: RFC XXXX 740 -------------------------------------------------------------------- 742 6. Security Considerations 744 The YANG module specified in this document defines a schema for data 745 that is designed to be accessed via network management protocols such 746 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 747 is the secure transport layer, and the mandatory-to-implement secure 748 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 749 is HTTPS, and the mandatory-to-implement secure transport is TLS 750 [RFC5246]. 752 The NETCONF access control model [RFC6536] provides the means to 753 restrict access for particular NETCONF or RESTCONF users to a 754 preconfigured subset of all available NETCONF or RESTCONF protocol 755 operations and content. 757 There are a number of data nodes defined in this YANG module that are 758 writable/creatable/deletable (i.e., config true, which is the 759 default). These data nodes may be considered sensitive or vulnerable 760 in some network environments. Write operations (e.g., edit-config) 761 to these data nodes without proper protection can have a negative 762 effect on network operations. These are the subtrees and data nodes 763 and their sensitivity/vulnerability: 765 nw:network-types/l3t:l3-unicast-topology/sr-mpls 766 This subtree specifies the SR topology type. Modifying the 767 configurations can make SR topology type invalid and cause 768 interruption to all SR networks. 770 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 771 This subtree specifies the topology-wide configurations, including 772 the SRGB (Segment Routing Global Block). Modifying the 773 configurations here can cause traffic disabled or rerouted in this 774 topology and the connected topologies. 776 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 777 This subtree specifies the SR configurations for nodes. Modifying 778 the configurations in this subtree can add, remove, or modify SR 779 nodes, causing traffic disabled or rerouted in the specified nodes 780 and the related TE topologies. 782 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 783 This subtree specifies the configurations for SR Adjacency 784 Segments. Modifying the configurations in this subtree can add, 785 remove, or modify SR Adjacency Segments causing traffic disabled 786 or rerouted on the specified SR adjacencies, the related nodes, 787 and the related SR topologies. 789 Some of the readable data nodes in this YANG module may be considered 790 sensitive or vulnerable in some network environments. It is thus 791 important to control read access (e.g., via get, get-config, or 792 notification) to these data nodes. These are the subtrees and data 793 nodes and their sensitivity/vulnerability: 795 nw:network-types/l3t:l3-unicast-topology/sr-mpls 796 Unauthorized access to this subtree can disclose the SR topology 797 type. 799 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 800 Unauthorized access to this subtree can disclose the topology-wide 801 configurations, including the SRGB (Segment Routing Global Block). 803 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 804 Unauthorized access to this subtree can disclose the operational 805 state information of the SR nodes. 807 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 808 Unauthorized access to this subtree can disclose the operational 809 state information of SR Adjacency Segments. 811 7. References 813 7.1. Normative References 815 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 816 Requirement Levels", BCP 14, RFC 2119, 817 DOI 10.17487/RFC2119, March 1997, 818 . 820 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 821 (TLS) Protocol Version 1.2", RFC 5246, 822 DOI 10.17487/RFC5246, August 2008, 823 . 825 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 826 and A. Bierman, Ed., "Network Configuration Protocol 827 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 828 . 830 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 831 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 832 . 834 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 835 Protocol (NETCONF) Access Control Model", RFC 6536, 836 DOI 10.17487/RFC6536, March 2012, 837 . 839 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 840 RFC 7950, DOI 10.17487/RFC7950, August 2016, 841 . 843 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 844 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 845 . 847 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 848 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 849 May 2017, . 851 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 852 and R. Wilton, "Network Management Datastore Architecture 853 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 854 . 856 7.2. Informative References 858 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 859 RFC 7951, DOI 10.17487/RFC7951, August 2016, 860 . 862 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 863 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 864 . 866 [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., 867 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 868 Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March 869 2018, . 871 [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X., 872 Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model 873 for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346, 874 March 2018, . 876 [I-D.ietf-teas-yang-te-topo] 877 Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 878 O. Dios, "YANG Data Model for Traffic Engineering (TE) 879 Topologies", draft-ietf-teas-yang-te-topo-18 (work in 880 progress), June 2018. 882 [I-D.ietf-spring-sr-yang] 883 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 884 Data Model for Segment Routing", draft-ietf-spring-sr- 885 yang-09 (work in progress), June 2018. 887 Appendix A. Companion YANG Model for Non-NMDA Compliant Implementations 889 The YANG module ietf-sr-topology defined in this document is designed 890 to be used in conjunction with implementations that support the 891 Network Management Datastore Architecture (NMDA) defined in 892 [RFC8342]. In order to allow implementations to use the model even 893 in cases when NMDA is not supported, the following companion module, 894 ietf-sr-topology-state, is defined as state model, which mirrors the 895 module ietf-sr-topology defined earlier in this document. However, 896 all data nodes in the companion module are non-configurable, to 897 represent the applied configuration or the derived operational 898 states. 900 The companion module, ietf-sr-topology-state, is redundant and SHOULD 901 NOT be supported by implementations that support NMDA. 903 As the structure of the companion module mirrors that of the 904 coorespinding NMDA model, the YANG tree of the companion module is 905 not depicted separately. 907 A.1. SR Topology State Module 909 file "ietf-sr-topology-state@2018-10-03.yang" 910 module ietf-sr-topology-state { 911 yang-version 1.1; 912 namespace "urn:ietf:params:xml:ns:yang:ietf-sr-topology-state"; 913 prefix "srt-s"; 915 import ietf-sr-topology { 916 prefix "srt"; 917 } 918 import ietf-network-state { 919 prefix "nw-s"; 920 reference "RFC 8345: A YANG Data Model for Network Topologies"; 921 } 922 import ietf-network-topology-state { 923 prefix "nt-s"; 924 reference "RFC 8345: A YANG Data Model for Network Topologies"; 925 } 926 import ietf-l3-unicast-topology-state { 927 prefix "l3t-s"; 928 reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; 929 } 930 import ietf-segment-routing-common { 931 prefix "sr-cmn"; 932 reference 933 "I-D.ietf-spring-sr-yang: YANG Data Model for Segment Routing"; 935 } 937 organization 938 "IETF Traffic Engineering Architecture and Signaling (TEAS) 939 Working Group"; 941 contact 942 "WG Web: 943 WG List: 945 Editor: Xufeng Liu 946 948 Editor: Igor Bryskin 949 951 Editor: Vishnu Pavan Beeram 952 954 Editor: Tarek Saad 955 957 Editor: Himanshu Shah 958 960 Editor: Stephane Litkowski 961 "; 963 description 964 "YANG data model for representing operational state information 965 of Segment Routing Topologies, when NMDA is not supported. 967 Copyright (c) 2018 IETF Trust and the persons identified as 968 authors of the code. All rights reserved. 970 Redistribution and use in source and binary forms, with or 971 without modification, is permitted pursuant to, and subject to 972 the license terms contained in, the Simplified BSD License set 973 forth in Section 4.c of the IETF Trust's Legal Provisions 974 Relating to IETF Documents 975 (http://trustee.ietf.org/license-info). 977 This version of this YANG module is part of RFC XXXX; see the 978 RFC itself for full legal notices."; 980 revision 2018-10-03 { 981 description "Initial revision"; 982 reference 983 "RFC XXXX: YANG Data Model for SR and SR TE Topologies"; 984 } 986 augment "/nw-s:networks/nw-s:network/nw-s:network-types/" 987 + "l3t-s:l3-unicast-topology" { 988 description 989 "Defines the SR topology type."; 990 uses srt:sr-topology-type; 991 } 993 augment "/nw-s:networks/nw-s:network/" 994 + "l3t-s:l3-topology-attributes" { 995 when "../nw-s:network-types/l3t-s:l3-unicast-topology/" 996 + "srt-s:sr-mpls" { 997 description "Augment only for SR topology."; 998 } 999 description "Augment topology configuration"; 1000 uses srt:sr-topology-attributes; 1001 } 1003 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1004 + "l3t-s:l3-node-attributes" { 1005 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1006 + "srt-s:sr-mpls" { 1007 description "Augment only for SR topology."; 1008 } 1009 description "Augment node configuration."; 1010 uses srt:sr-node-attributes; 1011 } 1013 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1014 + "l3t-s:l3-node-attributes/l3t-s:prefix" { 1015 when "../../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1016 + "srt-s:sr-mpls" { 1017 description "Augment only for SR topology."; 1018 } 1019 description "Augment node prefix."; 1020 uses srt:sr-node-prefix-attributes; 1021 } 1023 augment "/nw-s:networks/nw-s:network/nt-s:link/" 1024 + "l3t-s:l3-link-attributes" { 1025 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1026 + "srt-s:sr-mpls" { 1027 description "Augment only for SR topology."; 1028 } 1029 description "Augment link configuration"; 1030 uses srt:sr-link-attributes; 1032 } 1034 grouping sr-topology-attributes { 1035 description "SR topology scope attributes."; 1036 container sr { 1037 description 1038 "Containing SR attributes."; 1039 uses sr-cmn:srgb-cfg; 1040 } // sr 1041 } // sr-topology-attributes 1042 } 1043 1045 Appendix B. Data Tree Example 1047 This section contains an example of an instance data tree in the JSON 1048 encoding [RFC7951]. The example instantiates "ietf-sr-topology" for 1049 the topology that is depicted in the following diagram. 1051 +------------+ +------------+ 1052 | D1 | | D2 | 1053 /-\ /-\ /-\ /-\ 1054 | | 1-0-1 | |---------------->| | 2-1-1 | | 1055 | | 1-2-1 | |<----------------| | 2-0-1 | | 1056 \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ 1057 | /----\ | | /----\ | 1058 +---| |---+ +---| |---+ 1059 \----/ \----/ 1060 A | A | 1061 | | | | 1062 | | | | 1063 | | +------------+ | | 1064 | | | D3 | | | 1065 | | /-\ /-\ | | 1066 | +----->| | 3-1-1 | |-------+ | 1067 +---------| | 3-2-1 | |<---------+ 1068 \-/ \-/ 1069 | | 1070 +------------+ 1072 The corresponding instance data tree is depicted below. Note that 1073 some lines have been wrapped to adhere to the 72-character line 1074 limitation of RFCs. 1076 { 1077 "ietf-network:networks": { 1078 "network": [ 1079 { 1080 "network-types": { 1081 "ietf-l3-unicast-topology:l3-unicast-topology": { 1082 "ietf-sr-topology:sr-mpls": {} 1083 } 1084 }, 1085 "network-id": "sr-topo-example", 1086 "ietf-l3-unicast-topology:l3-topology-attributes": { 1087 "ietf-sr-topology:sr": { 1088 "srgb": [ 1089 { 1090 "lower-bound": 16000, 1091 "upper-bound": 23999 1092 } 1093 ] 1094 } 1095 }, 1096 "node": [ 1097 { 1098 "node-id": "D1", 1099 "ietf-network-topology:termination-point": [ 1100 { 1101 "tp-id": "1-0-1", 1102 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1103 "unnumbered-id": 101 1104 } 1105 }, 1106 { 1107 "tp-id": "1-2-1", 1108 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1109 "unnumbered-id": 121 1110 } 1111 }, 1112 { 1113 "tp-id": "1-3-1", 1114 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1115 "unnumbered-id": 131 1116 } 1117 } 1118 ], 1119 "ietf-l3-unicast-topology:l3-node-attributes": { 1120 "router-id": ["203.0.113.1"], 1121 "prefix": [ 1122 { 1123 "prefix": "203.0.113.1/32", 1124 "ietf-sr-topology:sr": { 1125 "start-sid": 101, 1126 "range": 1, 1127 "is-local": false, 1128 "is-node": true 1129 } 1130 } 1131 ], 1132 "ietf-sr-topology:sr": { 1133 "srgb": [ 1134 { 1135 "lower-bound": 16000, 1136 "upper-bound": 23999 1137 } 1138 ], 1139 "srlb": [ 1140 { 1141 "lower-bound": 15000, 1142 "upper-bound": 15999 1143 } 1144 ] 1145 } 1146 } 1147 }, 1148 { 1149 "node-id": "D2", 1150 "ietf-network-topology:termination-point": [ 1151 { 1152 "tp-id": "2-0-1", 1153 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1154 "unnumbered-id": 201 1155 } 1156 }, 1157 { 1158 "tp-id": "2-1-1", 1159 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1160 "unnumbered-id": 211 1161 } 1162 }, 1163 { 1164 "tp-id": "2-3-1", 1165 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1166 "unnumbered-id": 231 1167 } 1168 } 1169 ], 1170 "ietf-l3-unicast-topology:l3-node-attributes": { 1171 "router-id": ["203.0.113.2"], 1172 "prefix": [ 1173 { 1174 "prefix": "203.0.113.2/32", 1175 "ietf-sr-topology:sr": { 1176 "start-sid": 102, 1177 "range": 1, 1178 "is-local": false, 1179 "is-node": true 1180 } 1181 } 1182 ], 1183 "ietf-sr-topology:sr": { 1184 "srgb": [ 1185 { 1186 "lower-bound": 16000, 1187 "upper-bound": 23999 1188 } 1189 ], 1190 "srlb": [ 1191 { 1192 "lower-bound": 15000, 1193 "upper-bound": 15999 1194 } 1195 ] 1196 } 1197 } 1198 }, 1199 { 1200 "node-id": "D3", 1201 "ietf-network-topology:termination-point": [ 1202 { 1203 "tp-id": "3-1-1", 1204 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1205 "unnumbered-id": 311 1206 } 1207 }, 1208 { 1209 "tp-id": "3-2-1", 1210 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1211 "unnumbered-id": 321 1212 } 1213 } 1214 ], 1215 "ietf-l3-unicast-topology:l3-node-attributes": { 1216 "router-id": ["203.0.113.3"], 1217 "prefix": [ 1218 { 1219 "prefix": "203.0.113.3/32", 1220 "ietf-sr-topology:sr": { 1221 "start-sid": 101, 1222 "range": 1, 1223 "is-local": false, 1224 "is-node": true 1225 } 1226 } 1227 ], 1228 "ietf-sr-topology:sr": { 1229 "srgb": [ 1230 { 1231 "lower-bound": 16000, 1232 "upper-bound": 23999 1233 } 1234 ], 1235 "srlb": [ 1236 { 1237 "lower-bound": 15000, 1238 "upper-bound": 15999 1239 } 1240 ] 1241 } 1242 } 1243 } 1244 ], 1245 "ietf-network-topology:link": [ 1246 { 1247 "link-id": "D1,1-2-1,D2,2-1-1", 1248 "source": { 1249 "source-node": "D1", 1250 "source-tp": "1-2-1" 1251 }, 1252 "destination": { 1253 "dest-node": "D2", 1254 "dest-tp": "2-1-1" 1255 }, 1256 "ietf-l3-unicast-topology:l3-link-attributes": { 1257 "metric1": "100", 1258 "ietf-sr-topology:sr": { 1259 "sid": 121, 1260 "is-local": true 1261 } 1262 } 1263 }, 1264 { 1265 "link-id": "D2,2-1-1,D1,1-2-1", 1266 "source": { 1267 "source-node": "D2", 1268 "source-tp": "2-1-1" 1269 }, 1270 "destination": { 1271 "dest-node": "D1", 1272 "dest-tp": "1-2-1" 1273 }, 1274 "ietf-l3-unicast-topology:l3-link-attributes": { 1275 "metric1": "100", 1276 "ietf-sr-topology:sr": { 1277 "sid": 211, 1278 "is-local": true 1279 } 1280 } 1281 }, 1282 { 1283 "link-id": "D1,1-3-1,D3,3-1-1", 1284 "source": { 1285 "source-node": "D1", 1286 "source-tp": "1-3-1" 1287 }, 1288 "destination": { 1289 "dest-node": "D3", 1290 "dest-tp": "3-1-1" 1291 }, 1292 "ietf-l3-unicast-topology:l3-link-attributes": { 1293 "metric1": "100", 1294 "ietf-sr-topology:sr": { 1295 "sid": 131, 1296 "is-local": true 1297 } 1298 } 1299 }, 1300 { 1301 "link-id": "D3,3-1-1,D1,1-3-1", 1302 "source": { 1303 "source-node": "D3", 1304 "source-tp": "3-1-1" 1305 }, 1306 "destination": { 1307 "dest-node": "D1", 1308 "dest-tp": "1-3-1" 1309 }, 1310 "ietf-l3-unicast-topology:l3-link-attributes": { 1311 "metric1": "100", 1312 "ietf-sr-topology:sr": { 1313 "sid": 311, 1314 "is-local": true 1315 } 1317 } 1318 }, 1319 { 1320 "link-id": "D2,2-3-1,D3,3-2-1", 1321 "source": { 1322 "source-node": "D2", 1323 "source-tp": "2-3-1" 1324 }, 1325 "destination": { 1326 "dest-node": "D3", 1327 "dest-tp": "3-2-1" 1328 }, 1329 "ietf-l3-unicast-topology:l3-link-attributes": { 1330 "metric1": "100", 1331 "ietf-sr-topology:sr": { 1332 "sid": 231, 1333 "is-local": true 1334 } 1335 } 1336 }, 1337 { 1338 "link-id": "D3,3-2-1,D2,2-3-1", 1339 "source": { 1340 "source-node": "D3", 1341 "source-tp": "3-2-1" 1342 }, 1343 "destination": { 1344 "dest-node": "D2", 1345 "dest-tp": "2-3-1" 1346 }, 1347 "ietf-l3-unicast-topology:l3-link-attributes": { 1348 "metric1": "100", 1349 "ietf-sr-topology:sr": { 1350 "sid": 321, 1351 "is-local": true 1352 } 1353 } 1354 } 1355 ] 1356 } 1357 ] 1358 } 1359 } 1361 Appendix C. Contributors 1363 Jeff Tantsura 1364 Email: jefftant.ietf@gmail.com 1366 Yingzhen Qu 1367 Email: yingzhen.qu@huawei.com 1369 Authors' Addresses 1371 Xufeng Liu 1372 Volta Networks 1374 EMail: xufeng.liu.ietf@gmail.com 1376 Igor Bryskin 1377 Huawei Technologies 1379 EMail: Igor.Bryskin@huawei.com 1381 Vishnu Pavan Beeram 1382 Juniper Networks 1384 EMail: vbeeram@juniper.net 1386 Tarek Saad 1387 Cisco Systems Inc 1389 EMail: tsaad@cisco.com 1391 Himanshu Shah 1392 Ciena 1394 EMail: hshah@ciena.com 1396 Stephane Litkowski 1397 Orange Business Service 1399 EMail: stephane.litkowski@orange.com