idnits 2.17.1 draft-ietf-teas-yang-sr-te-topo-10.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 288 has weird spacing: '...r-bound uin...' == Line 289 has weird spacing: '...r-bound uin...' == Line 310 has weird spacing: '...r-bound uin...' == Line 311 has weird spacing: '...r-bound uin...' == Line 313 has weird spacing: '...r-bound uin...' == (7 more instances...) -- The document date (July 6, 2021) is 1022 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 (-16) exists of draft-ietf-teas-yang-l3-te-topo-10 -- Obsolete informational reference (is this intentional?): RFC 7752 (Obsoleted by RFC 9552) Summary: 0 errors (**), 0 flaws (~~), 8 warnings (==), 2 comments (--). 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 7, 2022 Individual 6 V. Beeram 7 T. Saad 8 Juniper Networks 9 H. Shah 10 Ciena 11 S. Litkowski 12 Cisco 13 July 6, 2021 15 YANG Data Model for SR and SR TE Topologies on MPLS Data Plane 16 draft-ietf-teas-yang-sr-te-topo-10 18 Abstract 20 This document defines a YANG data model for Segment Routing (SR) 21 topology and Segment Routing (SR) traffic engineering (TE) topology, 22 using MPLS data plane. 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 January 7, 2022. 41 Copyright Notice 43 Copyright (c) 2021 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 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 62 2. Modeling Considerations . . . . . . . . . . . . . . . . . . . 3 63 2.1. Segment Routing (SR) MPLS Topology . . . . . . . . . . . 3 64 2.2. Segment Routing (SR) MPLS TE Topology . . . . . . . . . . 4 65 2.3. Relations to ietf-segment-routing . . . . . . . . . . . . 7 66 2.4. Topology Type Modeling . . . . . . . . . . . . . . . . . 7 67 2.5. Topology Attributes . . . . . . . . . . . . . . . . . . . 7 68 2.6. Node Attributes . . . . . . . . . . . . . . . . . . . . . 7 69 2.7. Link Attributes . . . . . . . . . . . . . . . . . . . . . 9 70 3. Model Structure . . . . . . . . . . . . . . . . . . . . . . . 10 71 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 11 72 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 73 6. Security Considerations . . . . . . . . . . . . . . . . . . . 21 74 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 75 7.1. Normative References . . . . . . . . . . . . . . . . . . 23 76 7.2. Informative References . . . . . . . . . . . . . . . . . 24 77 Appendix A. Companion YANG Model for Non-NMDA Compliant 78 Implementations . . . . . . . . . . . . . . . . . . 26 79 A.1. SR MPLS Topology State Module . . . . . . . . . . . . . . 26 80 Appendix B. Data Tree Example . . . . . . . . . . . . . . . . . 29 81 Appendix C. Contributors . . . . . . . . . . . . . . . . . . . . 36 82 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 84 1. Introduction 86 This document defines a YANG [RFC7950] data model for describing the 87 presentations of Segment Routing (SR) topology and Segment Routing 88 (SR) traffic engineering (TE) topology. The version of the model 89 limits the transport type to an MPLS dataplane. 91 1.1. Terminology 93 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 94 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 95 "OPTIONAL" in this document are to be interpreted as described in BCP 96 14 [RFC2119] [RFC8174] when, and only when, they appear in all 97 capitals, as shown here. 99 The following terms are defined in [RFC7950] and are not redefined 100 here: 102 o augment 104 o data model 106 o data node 108 1.2. Tree Diagrams 110 Tree diagrams used in this document follow the notation defined in 111 [RFC8340]. 113 1.3. Prefixes in Data Node Names 115 In this document, names of data nodes, actions, and other data model 116 objects are often used without a prefix, as long as it is clear from 117 the context in which YANG module each name is defined. Otherwise, 118 names are prefixed using the standard prefix associated with the 119 corresponding YANG module, as shown in Table 1. 121 +--------+--------------------------+-------------------------------+ 122 | Prefix | YANG module | Reference | 123 +--------+--------------------------+-------------------------------+ 124 | nw | ietf-network | [RFC8345] | 125 | nt | ietf-network-topology | [RFC8345] | 126 | l3t | ietf-l3-unicast-topology | [RFC8346] | 127 | sr-cmn | ietf-segment-routing- | [I-D.ietf-spring-sr-yang] | 128 | | common | | 129 | tet | ietf-te-topology | [RFC8795] | 130 | tet- | ietf-te-topology-packet | [I-D.ietf-teas-yang-l3-te-top | 131 | pkt | | o] | 132 +--------+--------------------------+-------------------------------+ 134 Table 1: Prefixes and Corresponding YANG Modules 136 2. Modeling Considerations 138 2.1. Segment Routing (SR) MPLS Topology 140 The Layer 3 network topology model is discussed in [RFC8346]. The 141 Segment Routing (SR) MPLS topology model proposed in this document 142 augments and uses the ietf-l3-unicast-topology module defined in 144 [RFC8346]. SR MPLS related attributes are covered in the ietf-sr- 145 mpls-topology module. 147 +------------------------------+ 148 | Layer 3 Network Topology | 149 | ietf-l3-unicast-topology | 150 +---------------^--------------+ 151 | 152 | 153 | 154 | 155 +------------^-----------+ 156 | SR MPLS Topology | 157 | ietf-sr-mpls-topology | 158 +------------------------+ 160 Figure 1: SR MPLS topology augmentation 162 2.2. Segment Routing (SR) MPLS TE Topology 164 A Segment Routing (SR) MPLS TE topology is an instance of SR MPLS 165 topology with TE enabled. In order to instantiate an SR MPLS TE 166 topology, the ietf-sr-mpls-topology module defined in this document 167 can be used together with the ietf-te-topology module defined in 168 [RFC8795] and the ietf-te-topology-packet module defined in 169 [I-D.ietf-teas-yang-l3-te-topo]. All these modules directly or 170 indirectly augment the ietf-network-topology module defind in 171 [RFC8345], as shown in Figure 2. 173 +---------------------------+ 174 | Network Topology | 175 | ietf-network-topology | 176 +-^-----------------------^-+ 177 / \ 178 / \ 179 / \ 180 / \ 181 +-------------^-------------+ +-------------^-------------+ 182 | Layer 3 Unicast Topology | | TE Topology | 183 | ietf-l3-unicast-topology | | ietf-te-topology | 184 +-------------^-------------+ +-------------^-------------+ 185 | | 186 | | 187 | | 188 | | 189 +-------------^-------------+ +-------------^-------------+ 190 | SR MPLS Topology | | TE Packet Topology | 191 | ietf-sr-mpls-topology | | ietf-te-topology-packet | 192 +---------------------------+ +---------------------------+ 194 Figure 2: SR TE topology instance inheritance relations 196 Figure 3 shows the data structure of an SR TE topology instance. 197 Because of the augmentation relationships shown in Figure 2, a data 198 instance of an SR MPLS TE topology contains the capabilities from all 199 these modules, so that the data includes the attributes from ietf- 200 network-topology, ietf-l3-unicast-topology, ietf-sr-mpls-topology, 201 ietf-te-topology, and ietf-te-topology-packet. 203 +--------------------------------------------------------+ 204 | ietf-network-topology: | 205 | network-id (key) | 206 | network-types: { | 207 | l3-unicast-topology: { | 208 | sr-mpls{} | 209 | } | 210 | te-topology: { | 211 | packet{} | 212 | } | 213 | } | 214 | | 215 +-----------------------------+--------------------------+ 216 | ietf-l3-unicast-topology: | ietf-te-topology: | 217 | | | 218 +-----------------------------+--------------------------+ 219 | ietf-sr-mpls-topology: | ietf-te-topology-packet: | 220 | | | 221 +-----------------------------+--------------------------+ 223 Figure 3: SR TE topology instance data structure 225 Each type of topology is indicated by a YANG presence container which 226 augments "network-types" as defined in [RFC8345].2 For the five types 227 of topologies above, the data representations are: 229 Base network topology [RFC8345]: 231 /nw:networks/nw:network/nw:network-types 233 Layer 3 Unicast Topology [RFC8346]: 235 /nw:networks/nw:network/nw:network-types/l3t:l3-unicast-topology 237 SR MPLS Topology (defined in this document): 239 /nw:networks/nw:network/nw:network-types/l3t:l3-unicast-topology/ 240 srmt:sr-mpls 242 TE Topology [RFC8795]: 244 /nw:networks/nw:network/nw:network-types/tet:te-topology 246 TE Packet Topology [I-D.ietf-teas-yang-l3-te-topo]: 248 /nw:networks/nw:network/nw:network-types/tet:te-topology/tet- 249 pkt:packet 251 2.3. Relations to ietf-segment-routing 253 [I-D.ietf-spring-sr-yang] defines ietf-segment-routing that is a 254 model intended to be used on network elements to configure or operate 255 segment routing; ietf-sr-mpls-topology defined in this document is 256 intended to be used on a controller for the network-wide operations 257 such as path computation. 259 SR MPLS topology model shares many modeling constructs defined in 260 ietf-segment-routing. The module ietf-sr-mpls-topology uses the 261 types and groupings defined in ietf-segment-routing. 263 2.4. Topology Type Modeling 265 A new topology type is defined in this document, to indicate a 266 topology that is a Segment Routing (SR) topology on an MPLS 267 dataplane. 269 augment /nw:networks/nw:network/nw:network-types 270 /l3t:l3-unicast-topology: 271 +--rw sr-mpls! 273 Section 4.4.8 of RFC 8345 describes how network types are represented 274 using nested presence container. In this document, the presence 275 container sr-mpls is used for such a purpose. 277 2.5. Topology Attributes 279 The Segment Routing attributes with topology-wide impacts are modeled 280 by augmenting the container "l3-topology-attributes" in the L3 281 topology model [RFC8346]. SRGB (Segment Routing Global Block) is 282 covered in this augmentation. A SR domain is mapped to a topology in 283 this model. 285 augment /nw:networks/nw:network/l3t:l3-topology-attributes: 286 +--rw sr-mpls 287 +--rw srgb* [lower-bound upper-bound] 288 +--rw lower-bound uint32 289 +--rw upper-bound uint32 291 2.6. Node Attributes 293 The Segment Routing attributes within the node scope are modeled by 294 augmenting the sub tree /nw:networks/nw:network/nw:node/ in the L3 295 topology model [RFC8346]. 297 The SR attributes that have node-scope impact are modeled by 298 augmenting the container "l3-node-attributes" in the L3 topology 299 model, including the SR capabilities, SRGB (Segment Routing Global 300 Block), and SRLB (Segment Routing Local Block) specified on this 301 mode. This model also provides the information about how these SR 302 attributes are learned: 304 The presence container sr-mpls is used to indicate that SR SMPL is 305 enabled on this node when the container is present. 307 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes: 308 +--rw sr-mpls! 309 +--rw srgb* [lower-bound upper-bound] 310 | +--rw lower-bound uint32 311 | +--rw upper-bound uint32 312 +--rw srlb* [lower-bound upper-bound] 313 | +--rw lower-bound uint32 314 | +--rw upper-bound uint32 315 +--rw msds {msd}? 316 | +--rw node-msd* [msd-type] 317 | +--rw msd-type identityref 318 | +--rw msd-value? uint8 319 +--ro information-source? enumeration 320 +--ro information-source-instance? string 321 +--ro information-source-state 322 +--ro credibility-preference? uint16 324 The SR attributes that are related to a IGP-Prefix segment are 325 modeled by augmenting the list entry "prefix" in the L3 topology 326 model: 328 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 329 /l3t:prefix: 330 +--rw sr-mpls! 331 +--rw sids 332 +--rw sid* [algorithm] 333 +--rw value-type? enumeration 334 +--rw start-sid uint32 335 +--rw range? uint32 336 +--rw algorithm identityref 337 +--rw last-hop-behavior? enumeration 338 | {sid-last-hop-behavior}? 339 +--rw is-local? boolean 340 +--rw is-node? boolean 341 +--ro is-readvertisment? boolean 343 2.7. Link Attributes 345 A link in the topology model connects the termination point on the 346 source node to the termination point on the destination node. When 347 such a link is instantiated, the bindings between the nodes and the 348 corresponding Adj-SIDs are formed, and the resulting FIB entries are 349 installed. 351 A link in the topology model is mapped to an SR Adjacency Segment, 352 formed by a pair of interfaces on two respective adjacent nodes. The 353 SR Adjacency Segment attributes are modeled by augmenting the link 354 attributes of the L3 topology model [RFC8346]. The modeling 355 structure is as follows: 357 augment /nw:networks/nw:network/nt:link/l3t:l3-link-attributes: 358 +--rw sr-mpls! 359 +--rw msds {msd}? 360 | +--rw link-msd* [msd-type] 361 | +--rw msd-type identityref 362 | +--rw msd-value? uint8 363 +--rw sids 364 | +--rw sid* [value-type sid] 365 | +--rw value-type enumeration 366 | +--rw sid uint32 367 | +--rw address-family? enumeration 368 | +--rw is-eligible-for-protection? boolean 369 | +--rw is-local? boolean 370 | +--rw is-part-of-set? boolean 371 | +--rw is-persistent? boolean 372 | +--rw is-on-lan? boolean 373 | +--rw weight? uint8 374 +--ro information-source? enumeration 375 +--ro information-source-instance? string 376 +--ro information-source-state 377 +--ro credibility-preference? uint16 379 IGPs [RFC8665] [RFC8666] [RFC8667] and BGP-LS [RFC7752] 380 [I-D.ietf-idr-bgp-ls-segment-routing-ext] can be supported by the 381 model, the leaf "information-source" is used to indicate where the 382 information is from. 384 The bundling capability of the Adjacency Segemnt is achieved by re- 385 using the existing modeling construct (i.e. "bundle-stack-level") 386 under /nw:networks/nw:network/nt:link/tet:te [RFC8795] 388 The presence container sr-mpls is used to indicate that SR SMPL is 389 enabled on this link when the container is present. 391 3. Model Structure 393 The model tree structure of the Segment Routing (SR) topology module 394 is as shown below: 396 module: ietf-sr-mpls-topology 397 augment /nw:networks/nw:network/nw:network-types 398 /l3t:l3-unicast-topology: 399 +--rw sr-mpls! 400 augment /nw:networks/nw:network/l3t:l3-topology-attributes: 401 +--rw sr-mpls 402 +--rw srgb* [lower-bound upper-bound] 403 +--rw lower-bound uint32 404 +--rw upper-bound uint32 405 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes: 406 +--rw sr-mpls! 407 +--rw srgb* [lower-bound upper-bound] 408 | +--rw lower-bound uint32 409 | +--rw upper-bound uint32 410 +--rw srlb* [lower-bound upper-bound] 411 | +--rw lower-bound uint32 412 | +--rw upper-bound uint32 413 +--rw msds {msd}? 414 | +--rw node-msd* [msd-type] 415 | +--rw msd-type identityref 416 | +--rw msd-value? uint8 417 +--ro information-source? enumeration 418 +--ro information-source-instance? string 419 +--ro information-source-state 420 +--ro credibility-preference? uint16 421 augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 422 /l3t:prefix: 423 +--rw sr-mpls! 424 +--rw sids 425 +--rw sid* [algorithm] 426 +--rw value-type? enumeration 427 +--rw start-sid uint32 428 +--rw range? uint32 429 +--rw algorithm identityref 430 +--rw last-hop-behavior? enumeration 431 | {sid-last-hop-behavior}? 432 +--rw is-local? boolean 433 +--rw is-node? boolean 434 +--ro is-readvertisment? boolean 435 augment /nw:networks/nw:network/nt:link/l3t:l3-link-attributes: 436 +--rw sr-mpls! 437 +--rw msds {msd}? 438 | +--rw link-msd* [msd-type] 439 | +--rw msd-type identityref 440 | +--rw msd-value? uint8 441 +--rw sids 442 | +--rw sid* [value-type sid] 443 | +--rw value-type enumeration 444 | +--rw sid uint32 445 | +--rw address-family? enumeration 446 | +--rw is-eligible-for-protection? boolean 447 | +--rw is-local? boolean 448 | +--rw is-part-of-set? boolean 449 | +--rw is-persistent? boolean 450 | +--rw is-on-lan? boolean 451 | +--rw weight? uint8 452 +--ro information-source? enumeration 453 +--ro information-source-instance? string 454 +--ro information-source-state 455 +--ro credibility-preference? uint16 457 4. YANG Module 459 This module references [RFC7752], [RFC8345], [RFC8346], [RFC8476], 460 [RFC8491], [RFC8665], [RFC8666], [RFC8667], [RFC8814], 461 [I-D.ietf-spring-sr-yang], and 462 [I-D.ietf-idr-bgp-ls-segment-routing-ext]. 464 file "ietf-sr-mpls-topology@2021-06-25.yang" 465 module ietf-sr-mpls-topology { 466 yang-version 1.1; 467 namespace "urn:ietf:params:xml:ns:yang:ietf-sr-mpls-topology"; 468 prefix "srmt"; 470 import ietf-network { 471 prefix "nw"; 472 reference "RFC 8345: A YANG Data Model for Network Topologies"; 473 } 474 import ietf-network-topology { 475 prefix "nt"; 476 reference "RFC 8345: A YANG Data Model for Network Topologies"; 477 } 478 import ietf-l3-unicast-topology { 479 prefix "l3t"; 480 reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; 481 } 482 import ietf-segment-routing-common { 483 prefix "sr-cmn"; 484 reference 485 "I-D.ietf-spring-sr-yang: YANG Data Model for Segment Routing"; 486 } 488 organization 489 "IETF Traffic Engineering Architecture and Signaling (TEAS) 490 Working Group"; 492 contact 493 "WG Web: 494 WG List: 496 Editor: Xufeng Liu 497 499 Editor: Igor Bryskin 500 502 Editor: Vishnu Pavan Beeram 503 505 Editor: Tarek Saad 506 508 Editor: Himanshu Shah 509 511 Editor: Stephane Litkowski 512 "; 514 description 515 "YANG data model for representing and manipulating Segment 516 Routing Topologies on MPLS Data Plane. 518 Copyright (c) 2021 IETF Trust and the persons identified as 519 authors of the code. All rights reserved. 521 Redistribution and use in source and binary forms, with or 522 without modification, is permitted pursuant to, and subject to 523 the license terms contained in, the Simplified BSD License set 524 forth in Section 4.c of the IETF Trust's Legal Provisions 525 Relating to IETF Documents 526 (http://trustee.ietf.org/license-info). 528 This version of this YANG module is part of RFC XXXX; see the 529 RFC itself for full legal notices."; 531 revision 2021-06-25 { 532 description "Initial revision"; 533 reference 534 "RFC XXXX: YANG Data Model for SR and SR TE Topologies on MPLS 535 Data Plane"; 536 } 538 identity msd-base-type { 539 description 540 "Base identity for MSD Type"; 541 } 543 identity base-mpls-msd { 544 base msd-base-type; 545 description 546 "Base MPLS Imposition MSD."; 547 reference 548 "RFC 8491: Singling MSD using IS-IS."; 549 } 551 identity erld-msd { 552 base msd-base-type; 553 description 554 "ERLD-MSD is defined to advertise the ERLD."; 555 reference 556 "RFC 8662: Entropy Label for Source Packet Routing in 557 Networking (SPRING) Tunnels"; 558 } 560 feature msd { 561 description 562 "Support of signaling MSD (Maximum SID Depth) in IGP."; 563 reference 564 "RFC 8476: Signaling Maximum SID Depth (MSD) Using OSPF. 565 RFC 8491: Signaling Maximum SID Depth (MSD) Using IS-IS. 566 RFC 8814: Signaling Maximum SID Depth (MSD) Using the Border 567 Gateway Protocol - Link State."; 568 } 570 grouping sr-mpls-topology-type { 571 description 572 "Identifies the SR-MPLS topology type. This type of network 573 topologies use Segment Routing (SR) technology over the MPLS 574 data plane"; 575 container sr-mpls { 576 presence "Indicates SR-MPLS topology"; 577 description 578 "Its presence identifies the SR MPLS topology type."; 580 } 581 } 583 augment "/nw:networks/nw:network/nw:network-types/" 584 + "l3t:l3-unicast-topology" { 585 description 586 "Defines the SR MPLS topology type."; 587 uses sr-mpls-topology-type; 588 } 590 augment "/nw:networks/nw:network/l3t:l3-topology-attributes" { 591 when "../nw:network-types/l3t:l3-unicast-topology/srmt:sr-mpls" { 592 description "Augment only for SR MPLS topology."; 593 } 594 description "Augment topology configuration"; 595 uses sr-mpls-topology-attributes; 596 } 598 augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" { 599 when "../../nw:network-types/l3t:l3-unicast-topology/" 600 + "srmt:sr-mpls" { 601 description "Augment only for SR MPLS topology."; 602 } 603 description "Augment node configuration."; 604 uses sr-node-attributes; 605 } 607 augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" 608 + "/l3t:prefix" { 609 when "../../../nw:network-types/l3t:l3-unicast-topology/" 610 + "srmt:sr-mpls" { 611 description "Augment only for SR MPLS topology."; 612 } 613 description "Augment node prefix."; 614 uses sr-node-prefix-attributes; 615 } 617 augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" { 618 when "../../nw:network-types/l3t:l3-unicast-topology/" 619 + "srmt:sr-mpls" { 620 description "Augment only for SR MPLS topology."; 621 } 622 description "Augment link configuration"; 623 uses sr-link-attributes; 624 } 626 grouping sr-mpls-topology-attributes { 627 description "SR MPLS topology scope attributes."; 628 container sr-mpls { 629 description 630 "Containing SR attributes."; 631 uses sr-cmn:srgb; 632 } // sr 633 } // sr-mpls-topology-attributes 635 grouping information-source-attributes { 636 description 637 "The attributes identifying source that has provided the 638 related information, and the source credibility."; 639 leaf information-source { 640 type enumeration { 641 enum "unknown" { 642 description "The source is unknown."; 643 } 644 enum "locally-configured" { 645 description "Configured entity."; 646 } 647 enum "ospfv2" { 648 description "OSPFv2."; 649 reference 650 "RFC 8665: OSPF Extensions for Segment Routing."; 651 } 652 enum "ospfv3" { 653 description "OSPFv3."; 654 reference 655 "RFC 8666: OSPFv3 Extensions for Segment Routing."; 656 } 657 enum "isis" { 658 description "ISIS."; 659 reference 660 "RFC 8667: IS-IS Extensions for Segment Routing."; 661 } 662 enum "bgp-ls" { 663 description "BGP-LS."; 664 reference 665 "RFC 7752: North-Bound Distribution of Link-State and 666 Traffic Engineering (TE) Information Using BGP. 667 I-D.ietf-idr-bgp-ls-segment-routing-ext: 668 BGP Link-State extensions for Segment Routing."; 669 } 670 enum "system-processed" { 671 description "System processed entity."; 672 } 673 enum "other" { 674 description "Other source."; 675 } 677 } 678 config false; 679 description 680 "Indicates the type of the information source."; 681 } 682 leaf information-source-instance { 683 type string; 684 config false; 685 description 686 "The name indicating the instance of the information 687 source."; 688 } 689 container information-source-state { 690 config false; 691 description 692 "The container contains state attributes related to 693 the information source."; 694 leaf credibility-preference { 695 type uint16; 696 description 697 "The preference value to calculate the traffic 698 engineering database credibility value used for 699 tie-break selection between different 700 information-source values. 701 Higher value is more preferable."; 702 } 703 } 704 } // information-source-attributes 706 grouping sr-node-attributes { 707 description "SR node scope attributes."; 708 container sr-mpls { 709 presence "Presence indicates SR is enabled."; 710 description 711 "Containing SR attributes."; 712 uses sr-cmn:srgb; 713 uses sr-cmn:srlb; 714 container msds { 715 if-feature "msd"; 716 description 717 "MSDs on the node."; 718 list node-msd { 719 key "msd-type"; 720 leaf msd-type { 721 type identityref { 722 base msd-base-type; 723 } 724 description 725 "MSD-Types"; 726 } 727 leaf msd-value { 728 type uint8; 729 description 730 "MSD value, in the range of 0-255. Node MSD is the 731 lowest MSD supported by the node."; 732 } 733 description 734 "List of node MSDs"; 735 } 736 } 737 // Operational state data 738 uses information-source-attributes; 739 } // sr 740 } // sr-node-attributes 742 grouping sr-node-prefix-attributes { 743 description "Containing SR attributes for a prefix."; 744 container sr-mpls { 745 presence "Presence indicates SR is enabled."; 746 description 747 "Containing SR attributes for a prefix."; 748 container sids { 749 description 750 "Containing Prefix SIDs assigned to this prefix."; 751 list sid { 752 key "algorithm"; 753 description 754 "A list of SIDs with their properties."; 755 uses sr-cmn:prefix-sid-attributes; 756 uses sr-cmn:last-hop-behavior; 757 leaf is-local { 758 type boolean; 759 default false; 760 description 761 "'true' if the SID is local."; 762 } 763 leaf is-node { 764 type boolean; 765 default false; 766 description 767 "'true' if the Prefix-SID refers to the router 768 identified by the prefix. Typically, the leaf 769 'is-node' (N-Flag) is set on Prefix-SIDs attached to a 770 router loopback address."; 771 } 772 leaf is-readvertisment { 773 type boolean; 774 config false; 775 description 776 "'true' if the prefix to which this Prefix-SID is 777 attached, has been propagated by the router from 778 another topology by redistribution."; 779 reference 780 "RFC 8667: IS-IS Extensions for Segment Routing. 781 Sec 2.1."; 782 } 783 } 784 } 785 } // sr 786 } // sr-node-prefix-attributes 788 grouping sr-link-attributes { 789 description "SR link scope attributes"; 790 container sr-mpls { 791 presence "Presence indicates SR is enabled."; 792 description 793 "Containing SR attributes."; 795 container msds { 796 if-feature "msd"; 797 description 798 "MSDs on the link."; 799 list link-msd { 800 key "msd-type"; 801 leaf msd-type { 802 type identityref { 803 base msd-base-type; 804 } 805 description 806 "MSD-Types"; 807 } 808 leaf msd-value { 809 type uint8; 810 description 811 "MSD value, in the range of 0-255."; 812 } 813 description 814 "List of link MSDs"; 815 } 816 } 817 container sids { 818 description 819 "Containing Adjacentcy SIDs assigned to this link."; 820 list sid { 821 key "value-type sid"; 822 description 823 "A list of SIDs with their properties."; 824 uses sr-cmn:sid-value-type; 825 leaf sid { 826 type uint32; 827 mandatory true; 828 description 829 "Adjacency SID, which can be either IGP-Adjacency SID 830 or BGP PeerAdj SID, depending on the context."; 831 } 832 leaf address-family { 833 type enumeration { 834 enum "ipv4" { 835 description 836 "The Adj-SID refers to an adjacency with outgoing 837 IPv4 encapsulation."; 838 } 839 enum "ipv6" { 840 description 841 "The Adj-SID refers to an adjacency with outgoing 842 IPv6 encapsulation."; 843 } 844 } 845 default "ipv4"; 846 description 847 "This leaf defines the F-Flag (Address-Family flag) of 848 the SID."; 849 } 850 leaf is-eligible-for-protection { 851 type boolean; 852 default false; 853 description 854 "'true' if the SID is is eligible for protection."; 855 reference 856 "RFC 8402: Segment Routing Architecture. Sec. 3.4."; 857 } 858 leaf is-local { 859 type boolean; 860 default false; 861 description 862 "'true' if the SID is local."; 863 } 864 leaf is-part-of-set { 865 type boolean; 866 default false; 867 description 868 "'true' if the SID is part of a set."; 870 } 871 leaf is-persistent { 872 type boolean; 873 default true; 874 description 875 "'true' if the SID is persistently allocated."; 876 } 877 leaf is-on-lan { 878 type boolean; 879 default false; 880 description 881 "'true' if on a lan."; 882 } 883 leaf weight { 884 type uint8; 885 description 886 "The value represents the weight of the SID for the 887 purpose of load balancing. The use of the weight 888 is defined in RFC 8402."; 889 reference 890 "RFC 8402: Segment Routing Architecture. Sec. 3.4."; 891 } 892 } 893 } 894 uses information-source-attributes; 895 } // sr 896 } // sr-tp-attributes 897 } 898 900 5. IANA Considerations 902 RFC Ed.: In this section, replace all occurrences of 'XXXX' with the 903 actual RFC number (and remove this note). 905 This document registers the following namespace URIs in the IETF XML 906 registry [RFC3688]: 908 -------------------------------------------------------------------- 909 URI: urn:ietf:params:xml:ns:yang:ietf-sr-mpls-topology 910 Registrant Contact: The IESG. 911 XML: N/A, the requested URI is an XML namespace. 912 -------------------------------------------------------------------- 913 -------------------------------------------------------------------- 914 URI: urn:ietf:params:xml:ns:yang:ietf-sr-mpls-topology-state 915 Registrant Contact: The IESG. 916 XML: N/A, the requested URI is an XML namespace. 917 -------------------------------------------------------------------- 919 This document registers the following YANG modules in the YANG Module 920 Names registry [RFC6020]: 922 -------------------------------------------------------------------- 923 name: ietf-sr-mpls-topology 924 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-mpls-topology 925 prefix: srmt 926 reference: RFC XXXX 927 -------------------------------------------------------------------- 929 -------------------------------------------------------------------- 930 name: ietf-sr-mpls-topology-state 931 namespace: urn:ietf:params:xml:ns:yang:ietf-sr-mpls-topology-state 932 prefix: srmt-s 933 reference: RFC XXXX 934 -------------------------------------------------------------------- 936 6. Security Considerations 938 The YANG module specified in this document defines a schema for data 939 that is designed to be accessed via network management protocols such 940 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 941 is the secure transport layer, and the mandatory-to-implement secure 942 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 943 is HTTPS, and the mandatory-to-implement secure transport is TLS 944 [RFC8446]. 946 The Network Configuration Access Control Model (NACM) [RFC8341] 947 provides the means to restrict access for particular NETCONF or 948 RESTCONF users to a preconfigured subset of all available NETCONF or 949 RESTCONF protocol operations and content. 951 There are a number of data nodes defined in this YANG module that are 952 writable/creatable/deletable (i.e., config true, which is the 953 default). These data nodes may be considered sensitive or vulnerable 954 in some network environments. Write operations (e.g., edit-config) 955 to these data nodes without proper protection can have a negative 956 effect on network operations. These are the subtrees and data nodes 957 and their sensitivity/vulnerability: 959 nw:network-types/l3t:l3-unicast-topology/sr-mpls 960 This subtree specifies the SR MPLS topology type. Modifying the 961 configurations can make SR MPLS topology type invalid and cause 962 interruption to all SR networks. 964 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 965 This subtree specifies the topology-wide configurations, including 966 the SRGB (Segment Routing Global Block). Modifying the 967 configurations here can cause traffic disabled or rerouted in this 968 topology and the connected topologies. 970 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 971 This subtree specifies the SR configurations for nodes. Modifying 972 the configurations in this subtree can add, remove, or modify SR 973 nodes, causing traffic disabled or rerouted in the specified nodes 974 and the related TE topologies. 976 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 977 This subtree specifies the configurations for SR Adjacency 978 Segments. Modifying the configurations in this subtree can add, 979 remove, or modify SR Adjacency Segments causing traffic disabled 980 or rerouted on the specified SR adjacencies, the related nodes, 981 and the related SR MPLS topologies. 983 Some of the readable data nodes in this YANG module may be considered 984 sensitive or vulnerable in some network environments. It is thus 985 important to control read access (e.g., via get, get-config, or 986 notification) to these data nodes. These are the subtrees and data 987 nodes and their sensitivity/vulnerability: 989 nw:network-types/l3t:l3-unicast-topology/sr-mpls 990 Unauthorized access to this subtree can disclose the SR MPLS 991 topology type. 993 /nw:networks/nw:network/l3t:l3-topology-attributes/sr 994 Unauthorized access to this subtree can disclose the topology-wide 995 configurations, including the SRGB (Segment Routing Global Block). 997 /nw:networks/nw:network/nw:node/l3t:l3-node-attributes 998 Unauthorized access to this subtree can disclose the operational 999 state information of the SR nodes. 1001 /nw:networks/nw:network/nt:link/l3t:l3-link-attributes/sr 1002 Unauthorized access to this subtree can disclose the operational 1003 state information of SR Adjacency Segments. 1005 7. References 1007 7.1. Normative References 1009 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1010 Requirement Levels", BCP 14, RFC 2119, 1011 DOI 10.17487/RFC2119, March 1997, 1012 . 1014 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1015 DOI 10.17487/RFC3688, January 2004, 1016 . 1018 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1019 the Network Configuration Protocol (NETCONF)", RFC 6020, 1020 DOI 10.17487/RFC6020, October 2010, 1021 . 1023 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1024 and A. Bierman, Ed., "Network Configuration Protocol 1025 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1026 . 1028 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1029 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1030 . 1032 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1033 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1034 . 1036 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1037 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1038 . 1040 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1041 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1042 May 2017, . 1044 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1045 Access Control Model", STD 91, RFC 8341, 1046 DOI 10.17487/RFC8341, March 2018, 1047 . 1049 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1050 and R. Wilton, "Network Management Datastore Architecture 1051 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1052 . 1054 [RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., 1055 Ananthakrishnan, H., and X. Liu, "A YANG Data Model for 1056 Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March 1057 2018, . 1059 [RFC8346] Clemm, A., Medved, J., Varga, R., Liu, X., 1060 Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model 1061 for Layer 3 Topologies", RFC 8346, DOI 10.17487/RFC8346, 1062 March 2018, . 1064 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1065 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 1066 . 1068 [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, 1069 "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, 1070 DOI 10.17487/RFC8476, December 2018, 1071 . 1073 [RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, 1074 "Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491, 1075 DOI 10.17487/RFC8491, November 2018, 1076 . 1078 [RFC8814] Tantsura, J., Chunduri, U., Talaulikar, K., Mirsky, G., 1079 and N. Triantafillis, "Signaling Maximum SID Depth (MSD) 1080 Using the Border Gateway Protocol - Link State", RFC 8814, 1081 DOI 10.17487/RFC8814, August 2020, 1082 . 1084 [I-D.ietf-spring-sr-yang] 1085 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 1086 Tantsura, "YANG Data Model for Segment Routing", draft- 1087 ietf-spring-sr-yang-30 (work in progress), January 2021. 1089 [I-D.ietf-teas-yang-l3-te-topo] 1090 Liu, X., Bryskin, I., Beeram, V. P., Saad, T., Shah, H., 1091 and O. G. D. Dios, "YANG Data Model for Layer 3 TE 1092 Topologies", draft-ietf-teas-yang-l3-te-topo-10 (work in 1093 progress), February 2021. 1095 7.2. Informative References 1097 [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and 1098 S. Ray, "North-Bound Distribution of Link-State and 1099 Traffic Engineering (TE) Information Using BGP", RFC 7752, 1100 DOI 10.17487/RFC7752, March 2016, 1101 . 1103 [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", 1104 RFC 7951, DOI 10.17487/RFC7951, August 2016, 1105 . 1107 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1108 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1109 . 1111 [RFC8665] Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler, 1112 H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF 1113 Extensions for Segment Routing", RFC 8665, 1114 DOI 10.17487/RFC8665, December 2019, 1115 . 1117 [RFC8666] Psenak, P., Ed. and S. Previdi, Ed., "OSPFv3 Extensions 1118 for Segment Routing", RFC 8666, DOI 10.17487/RFC8666, 1119 December 2019, . 1121 [RFC8667] Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C., 1122 Bashandy, A., Gredler, H., and B. Decraene, "IS-IS 1123 Extensions for Segment Routing", RFC 8667, 1124 DOI 10.17487/RFC8667, December 2019, 1125 . 1127 [RFC8795] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 1128 O. Gonzalez de Dios, "YANG Data Model for Traffic 1129 Engineering (TE) Topologies", RFC 8795, 1130 DOI 10.17487/RFC8795, August 2020, 1131 . 1133 [I-D.ietf-idr-bgp-ls-segment-routing-ext] 1134 Previdi, S., Talaulikar, K., Filsfils, C., Gredler, H., 1135 and M. Chen, "BGP Link-State extensions for Segment 1136 Routing", draft-ietf-idr-bgp-ls-segment-routing-ext-18 1137 (work in progress), April 2021. 1139 Appendix A. Companion YANG Model for Non-NMDA Compliant Implementations 1141 The YANG module ietf-sr-mpls-topology defined in this document is 1142 designed to be used in conjunction with implementations that support 1143 the Network Management Datastore Architecture (NMDA) defined in 1144 [RFC8342]. In order to allow implementations to use the model even 1145 in cases when NMDA is not supported, the following companion module, 1146 ietf-sr-mpls-topology-state, is defined as state model, which mirrors 1147 the module ietf-sr-mpls-topology defined earlier in this document. 1148 However, all data nodes in the companion module are non-configurable, 1149 to represent the applied configuration or the derived operational 1150 states. 1152 The companion module, ietf-sr-mpls-topology-state, is redundant and 1153 SHOULD NOT be supported by implementations that support NMDA. 1155 As the structure of the companion module mirrors that of the 1156 coorespinding NMDA model, the YANG tree of the companion module is 1157 not depicted separately. 1159 A.1. SR MPLS Topology State Module 1161 This module references [RFC8345] and [RFC8346]. 1163 file "ietf-sr-mpls-topology-state@2021-06-25.yang" 1164 module ietf-sr-mpls-topology-state { 1165 yang-version 1.1; 1166 namespace 1167 "urn:ietf:params:xml:ns:yang:ietf-sr-mpls-topology-state"; 1168 prefix "srmt-s"; 1170 import ietf-sr-mpls-topology { 1171 prefix "srmt"; 1172 } 1173 import ietf-network-state { 1174 prefix "nw-s"; 1175 reference "RFC 8345: A YANG Data Model for Network Topologies"; 1176 } 1177 import ietf-network-topology-state { 1178 prefix "nt-s"; 1179 reference "RFC 8345: A YANG Data Model for Network Topologies"; 1180 } 1181 import ietf-l3-unicast-topology-state { 1182 prefix "l3t-s"; 1183 reference "RFC 8346: A YANG Data Model for Layer 3 Topologies"; 1184 } 1185 import ietf-segment-routing-common { 1186 prefix "sr-cmn"; 1187 reference 1188 "I-D.ietf-spring-sr-yang: YANG Data Model for Segment Routing"; 1189 } 1191 organization 1192 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1193 Working Group"; 1195 contact 1196 "WG Web: 1197 WG List: 1199 Editor: Xufeng Liu 1200 1202 Editor: Igor Bryskin 1203 1205 Editor: Vishnu Pavan Beeram 1206 1208 Editor: Tarek Saad 1209 1211 Editor: Himanshu Shah 1212 1214 Editor: Stephane Litkowski 1215 "; 1217 description 1218 "YANG data model for representing operational state information 1219 of Segment Routing Topologies on MPLS data plane, when NMDA is 1220 not supported. 1222 Copyright (c) 2021 IETF Trust and the persons identified as 1223 authors of the code. All rights reserved. 1225 Redistribution and use in source and binary forms, with or 1226 without modification, is permitted pursuant to, and subject to 1227 the license terms contained in, the Simplified BSD License set 1228 forth in Section 4.c of the IETF Trust's Legal Provisions 1229 Relating to IETF Documents 1230 (http://trustee.ietf.org/license-info). 1232 This version of this YANG module is part of RFC XXXX; see the 1233 RFC itself for full legal notices."; 1235 revision 2021-06-25 { 1236 description "Initial revision"; 1237 reference 1238 "RFC XXXX: YANG Data Model for SR and SR TE Topologies on MPLS 1239 Data Plane"; 1240 } 1242 augment "/nw-s:networks/nw-s:network/nw-s:network-types/" 1243 + "l3t-s:l3-unicast-topology" { 1244 description 1245 "Defines the SR MPLS topology type."; 1246 uses srmt:sr-mpls-topology-type; 1247 } 1249 augment "/nw-s:networks/nw-s:network/" 1250 + "l3t-s:l3-topology-attributes" { 1251 when "../nw-s:network-types/l3t-s:l3-unicast-topology/" 1252 + "srmt-s:sr-mpls" { 1253 description "Augment only for SR MPLS topology."; 1254 } 1255 description "Augment topology configuration"; 1256 uses srmt:sr-mpls-topology-attributes; 1257 } 1259 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1260 + "l3t-s:l3-node-attributes" { 1261 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1262 + "srmt-s:sr-mpls" { 1263 description "Augment only for SR MPLS topology."; 1264 } 1265 description "Augment node configuration."; 1266 uses srmt:sr-node-attributes; 1267 } 1269 augment "/nw-s:networks/nw-s:network/nw-s:node/" 1270 + "l3t-s:l3-node-attributes/l3t-s:prefix" { 1271 when "../../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1272 + "srmt-s:sr-mpls" { 1273 description "Augment only for SR MPLS topology."; 1274 } 1275 description "Augment node prefix."; 1276 uses srmt:sr-node-prefix-attributes; 1277 } 1279 augment "/nw-s:networks/nw-s:network/nt-s:link/" 1280 + "l3t-s:l3-link-attributes" { 1281 when "../../nw-s:network-types/l3t-s:l3-unicast-topology/" 1282 + "srmt-s:sr-mpls" { 1283 description "Augment only for SR MPLS topology."; 1284 } 1285 description "Augment link configuration"; 1286 uses srmt:sr-link-attributes; 1287 } 1289 grouping sr-mpls-topology-attributes { 1290 description "SR MPLS topology scope attributes."; 1291 container sr-mpls { 1292 description 1293 "Containing SR attributes."; 1294 uses sr-cmn:srgb; 1295 } // sr 1296 } // sr-mpls-topology-attributes 1297 } 1298 1300 Appendix B. Data Tree Example 1302 This section contains an example of an instance data tree in the JSON 1303 encoding [RFC7951]. The example instantiates "ietf-sr-mpls-topology" 1304 for the topology that is depicted in the following diagram. 1306 +------------+ +------------+ 1307 | D1 | | D2 | 1308 /-\ /-\ /-\ /-\ 1309 | | 1-0-1 | |---------------->| | 2-1-1 | | 1310 | | 1-2-1 | |<----------------| | 2-0-1 | | 1311 \-/ 1-3-1 \-/ \-/ 2-3-1 \-/ 1312 | /----\ | | /----\ | 1313 +---| |---+ +---| |---+ 1314 \----/ \----/ 1315 A | A | 1316 | | | | 1317 | | | | 1318 | | +------------+ | | 1319 | | | D3 | | | 1320 | | /-\ /-\ | | 1321 | +----->| | 3-1-1 | |-------+ | 1322 +---------| | 3-2-1 | |<---------+ 1323 \-/ \-/ 1324 | | 1325 +------------+ 1327 The corresponding instance data tree is depicted below. Note that 1328 some lines have been wrapped to adhere to the 72-character line 1329 limitation of RFCs. 1331 { 1332 "ietf-network:networks": { 1333 "network": [ 1334 { 1335 "network-types": { 1336 "ietf-l3-unicast-topology:l3-unicast-topology": { 1337 "ietf-sr-mpls-topology:sr-mpls": {} 1338 } 1339 }, 1340 "network-id": "sr-topo-example", 1341 "ietf-l3-unicast-topology:l3-topology-attributes": { 1342 "ietf-sr-mpls-topology:sr-mpls": { 1343 "srgb": [ 1344 { 1345 "lower-bound": 16000, 1346 "upper-bound": 23999 1347 } 1348 ] 1349 } 1350 }, 1351 "node": [ 1352 { 1353 "node-id": "D1", 1354 "ietf-network-topology:termination-point": [ 1355 { 1356 "tp-id": "1-0-1", 1357 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1358 "unnumbered-id": 101 1359 } 1360 }, 1361 { 1362 "tp-id": "1-2-1", 1363 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1364 "unnumbered-id": 121 1365 } 1366 }, 1367 { 1368 "tp-id": "1-3-1", 1369 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1370 "unnumbered-id": 131 1371 } 1372 } 1373 ], 1374 "ietf-l3-unicast-topology:l3-node-attributes": { 1375 "router-id": ["203.0.113.1"], 1376 "prefix": [ 1377 { 1378 "prefix": "203.0.113.1/32", 1379 "ietf-sr-mpls-topology:sr-mpls": { 1380 "start-sid": 101, 1381 "range": 1, 1382 "is-local": false, 1383 "is-node": true 1384 } 1385 } 1386 ], 1387 "ietf-sr-mpls-topology:sr-mpls": { 1388 "srgb": [ 1389 { 1390 "lower-bound": 16000, 1391 "upper-bound": 23999 1392 } 1393 ], 1394 "srlb": [ 1395 { 1396 "lower-bound": 15000, 1397 "upper-bound": 15999 1398 } 1399 ] 1400 } 1401 } 1402 }, 1403 { 1404 "node-id": "D2", 1405 "ietf-network-topology:termination-point": [ 1406 { 1407 "tp-id": "2-0-1", 1408 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1409 "unnumbered-id": 201 1410 } 1411 }, 1412 { 1413 "tp-id": "2-1-1", 1414 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1415 "unnumbered-id": 211 1416 } 1417 }, 1418 { 1419 "tp-id": "2-3-1", 1420 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1421 "unnumbered-id": 231 1422 } 1424 } 1425 ], 1426 "ietf-l3-unicast-topology:l3-node-attributes": { 1427 "router-id": ["203.0.113.2"], 1428 "prefix": [ 1429 { 1430 "prefix": "203.0.113.2/32", 1431 "ietf-sr-mpls-topology:sr-mpls": { 1432 "start-sid": 102, 1433 "range": 1, 1434 "is-local": false, 1435 "is-node": true 1436 } 1437 } 1438 ], 1439 "ietf-sr-mpls-topology:sr-mpls": { 1440 "srgb": [ 1441 { 1442 "lower-bound": 16000, 1443 "upper-bound": 23999 1444 } 1445 ], 1446 "srlb": [ 1447 { 1448 "lower-bound": 15000, 1449 "upper-bound": 15999 1450 } 1451 ] 1452 } 1453 } 1454 }, 1455 { 1456 "node-id": "D3", 1457 "ietf-network-topology:termination-point": [ 1458 { 1459 "tp-id": "3-1-1", 1460 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1461 "unnumbered-id": 311 1462 } 1463 }, 1464 { 1465 "tp-id": "3-2-1", 1466 "ietf-l3-unicast-topology:l3-termination-point-attributes": { 1467 "unnumbered-id": 321 1468 } 1469 } 1470 ], 1471 "ietf-l3-unicast-topology:l3-node-attributes": { 1472 "router-id": ["203.0.113.3"], 1473 "prefix": [ 1474 { 1475 "prefix": "203.0.113.3/32", 1476 "ietf-sr-mpls-topology:sr-mpls": { 1477 "start-sid": 101, 1478 "range": 1, 1479 "is-local": false, 1480 "is-node": true 1481 } 1482 } 1483 ], 1484 "ietf-sr-mpls-topology:sr-mpls": { 1485 "srgb": [ 1486 { 1487 "lower-bound": 16000, 1488 "upper-bound": 23999 1489 } 1490 ], 1491 "srlb": [ 1492 { 1493 "lower-bound": 15000, 1494 "upper-bound": 15999 1495 } 1496 ] 1497 } 1498 } 1499 } 1500 ], 1501 "ietf-network-topology:link": [ 1502 { 1503 "link-id": "D1,1-2-1,D2,2-1-1", 1504 "source": { 1505 "source-node": "D1", 1506 "source-tp": "1-2-1" 1507 }, 1508 "destination": { 1509 "dest-node": "D2", 1510 "dest-tp": "2-1-1" 1511 }, 1512 "ietf-l3-unicast-topology:l3-link-attributes": { 1513 "metric1": "100", 1514 "ietf-sr-mpls-topology:sr-mpls": { 1515 "sid": 121, 1516 "is-local": true 1517 } 1518 } 1519 }, 1520 { 1521 "link-id": "D2,2-1-1,D1,1-2-1", 1522 "source": { 1523 "source-node": "D2", 1524 "source-tp": "2-1-1" 1525 }, 1526 "destination": { 1527 "dest-node": "D1", 1528 "dest-tp": "1-2-1" 1529 }, 1530 "ietf-l3-unicast-topology:l3-link-attributes": { 1531 "metric1": "100", 1532 "ietf-sr-mpls-topology:sr-mpls": { 1533 "sid": 211, 1534 "is-local": true 1535 } 1536 } 1537 }, 1538 { 1539 "link-id": "D1,1-3-1,D3,3-1-1", 1540 "source": { 1541 "source-node": "D1", 1542 "source-tp": "1-3-1" 1543 }, 1544 "destination": { 1545 "dest-node": "D3", 1546 "dest-tp": "3-1-1" 1547 }, 1548 "ietf-l3-unicast-topology:l3-link-attributes": { 1549 "metric1": "100", 1550 "ietf-sr-mpls-topology:sr-mpls": { 1551 "sid": 131, 1552 "is-local": true 1553 } 1554 } 1555 }, 1556 { 1557 "link-id": "D3,3-1-1,D1,1-3-1", 1558 "source": { 1559 "source-node": "D3", 1560 "source-tp": "3-1-1" 1561 }, 1562 "destination": { 1563 "dest-node": "D1", 1564 "dest-tp": "1-3-1" 1565 }, 1566 "ietf-l3-unicast-topology:l3-link-attributes": { 1567 "metric1": "100", 1568 "ietf-sr-mpls-topology:sr-mpls": { 1569 "sid": 311, 1570 "is-local": true 1571 } 1572 } 1573 }, 1574 { 1575 "link-id": "D2,2-3-1,D3,3-2-1", 1576 "source": { 1577 "source-node": "D2", 1578 "source-tp": "2-3-1" 1579 }, 1580 "destination": { 1581 "dest-node": "D3", 1582 "dest-tp": "3-2-1" 1583 }, 1584 "ietf-l3-unicast-topology:l3-link-attributes": { 1585 "metric1": "100", 1586 "ietf-sr-mpls-topology:sr-mpls": { 1587 "sid": 231, 1588 "is-local": true 1589 } 1590 } 1591 }, 1592 { 1593 "link-id": "D3,3-2-1,D2,2-3-1", 1594 "source": { 1595 "source-node": "D3", 1596 "source-tp": "3-2-1" 1597 }, 1598 "destination": { 1599 "dest-node": "D2", 1600 "dest-tp": "2-3-1" 1601 }, 1602 "ietf-l3-unicast-topology:l3-link-attributes": { 1603 "metric1": "100", 1604 "ietf-sr-mpls-topology:sr-mpls": { 1605 "sid": 321, 1606 "is-local": true 1607 } 1608 } 1609 } 1610 ] 1611 } 1612 ] 1613 } 1614 } 1616 Appendix C. Contributors 1618 Jeff Tantsura 1619 Email: jefftant.ietf@gmail.com 1621 Yingzhen Qu 1622 Email: yingzhen.qu@huawei.com 1624 Authors' Addresses 1626 Xufeng Liu 1627 Volta Networks 1629 EMail: xufeng.liu.ietf@gmail.com 1631 Igor Bryskin 1632 Individual 1634 EMail: i_bryskin@yahoo.com 1636 Vishnu Pavan Beeram 1637 Juniper Networks 1639 EMail: vbeeram@juniper.net 1641 Tarek Saad 1642 Juniper Networks 1644 EMail: tsaad@juniper.net 1646 Himanshu Shah 1647 Ciena 1649 EMail: hshah@ciena.com 1651 Stephane Litkowski 1652 Cisco 1654 EMail: slitkows.ietf@gmail.com