idnits 2.17.00 (12 Aug 2021) /tmp/idnits55783/draft-ietf-spring-sr-yang-21.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 156 has weird spacing: '...terface if:...' == Line 186 has weird spacing: '...r-bound uin...' == Line 187 has weird spacing: '...r-bound uin...' == Line 190 has weird spacing: '...r-bound uin...' == Line 191 has weird spacing: '...r-bound uin...' == (1 more instance...) -- The document date (August 25, 2020) is 634 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) ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 2 errors (**), 0 flaws (~~), 7 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 SPRING Working Group S. Litkowski 3 Internet-Draft Cisco Systems 4 Intended status: Standards Track Y. Qu 5 Expires: February 26, 2021 Futurewei 6 A. Lindem 7 Cisco Systems 8 P. Sarkar 9 Individual 10 J. Tantsura 11 Apstra 12 August 25, 2020 14 YANG Data Model for Segment Routing 15 draft-ietf-spring-sr-yang-21 17 Abstract 19 This document defines a YANG data model for segment routing 20 configuration and operation, which is to be augmented by different 21 segment routing data planes. The document also defines a YANG model 22 that is intended to be used on network elements to configure or 23 operate segment routing MPLS data plane, as well as some generic 24 containers to be reused by IGP protocol modules to support segment 25 routing. 27 Status of This Memo 29 This Internet-Draft is submitted in full conformance with the 30 provisions of BCP 78 and BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF). Note that other groups may also distribute 34 working documents as Internet-Drafts. The list of current Internet- 35 Drafts is at https://datatracker.ietf.org/drafts/current/. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 This Internet-Draft will expire on February 26, 2021. 44 Copyright Notice 46 Copyright (c) 2020 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (https://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with respect 54 to this document. Code Components extracted from this document must 55 include Simplified BSD License text as described in Section 4.e of 56 the Trust Legal Provisions and are provided without warranty as 57 described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 62 2. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 63 2.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 64 2.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 65 3. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 66 4. Configuration . . . . . . . . . . . . . . . . . . . . . . . . 6 67 5. IGP Control plane configuration . . . . . . . . . . . . . . . 6 68 5.1. IGP interface configuration . . . . . . . . . . . . . . . 7 69 5.1.1. Adjacency SID properties . . . . . . . . . . . . . . 7 70 5.1.1.1. Bundling . . . . . . . . . . . . . . . . . . . . 7 71 5.1.1.2. Protection . . . . . . . . . . . . . . . . . . . 8 72 6. State Data . . . . . . . . . . . . . . . . . . . . . . . . . 8 73 7. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 74 8. YANG Modules . . . . . . . . . . . . . . . . . . . . . . . . 8 75 9. Security Considerations . . . . . . . . . . . . . . . . . . . 28 76 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 77 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 78 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 79 12.1. Normative References . . . . . . . . . . . . . . . . . . 29 80 12.2. Informative References . . . . . . . . . . . . . . . . . 31 81 Appendix A. Configuration example . . . . . . . . . . . . . . . 32 82 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 84 1. Introduction 86 This document defines a YANG data model [RFC7950] for segment routing 87 [RFC8402] configuration and operation. The document also defines a 88 YANG model that is intended to be used on network elements to 89 configure or operate segment routing MPLS data plane [RFC8660]. This 90 document does not define the IGP extensions to support segment 91 routing but defines generic groupings that SHOULD be reused by IGP 92 extension modules. The reason of this design choice is to not 93 require implementations to support all IGP extensions. For example, 94 an implementation may support IS-IS extension but not OSPF. 96 The YANG modules in this document conform to the Network Management 97 Datastore Architecture (NMDA) [RFC8342]. 99 2. Terminology and Notation 101 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 102 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 103 "OPTIONAL" in this document are to be interpreted as described in BCP 104 14 [RFC2119] [RFC8174] when, and only when, they appear in all 105 capitals, as shown here. 107 2.1. Tree diagram 109 Tree diagrams used in this document follow the notation defined in 110 [RFC8340]. 112 2.2. Prefixes in Data Node Names 114 In this document, names of data nodes, actions, and other data model 115 objects are often used without a prefix, as long as it is clear from 116 the context in which YANG module each name is defined. Otherwise, 117 names are prefixed using the standard prefix associated with the 118 corresponding YANG module, as shown in Table 1. 120 +----------+--------------------+-----------+ 121 | Prefix | YANG module | Reference | 122 +----------+--------------------+-----------+ 123 | if | ietf-interfaces | [RFC8343] | 124 | rt | ietf-routing | [RFC8349] | 125 | rt-types | ietf-routing-types | [RFC8294] | 126 | yang | ietf-yang-types | [RFC6991] | 127 | inet | ietf-inet-types | [RFC6991] | 128 +----------+--------------------+-----------+ 130 Table 1: Prefixes and Corresponding YANG Modules 132 3. Design of the Data Model 134 Module ietf-segment-routing augments the routing container in the 135 ietf-routing model [RFC8349], and defines generic segment routing 136 configuration and operational state. This module is augmented by 137 modules supporting different data planes. 139 Module ietf-segment-routing-mpls augments ietf-segment-routing, and 140 supports SR MPLS data plane configuration and operational state. 142 module: ietf-segment-routing 143 augment /rt:routing: 145 +--rw segment-routing 147 module: ietf-segment-routing-mpls 148 augment /rt:routing/sr:segment-routing: 149 +--rw sr-mpls 150 +--ro node-capabilities 151 | +--ro entropy-readable-label-depth? uint8 152 +--rw msd {max-sid-depth}? 153 | +--rw node-msd? uint8 154 | +--rw link-msd 155 | +--rw link-msds* [interface] 156 | +--rw interface if:interface-ref 157 | +--rw msd? uint8 158 +--rw bindings 159 | +--rw mapping-server {mapping-server}? 160 | | +--rw policy* [name] 161 | | +--rw name string 162 | | +--rw entries 163 | | +--rw mapping-entry* [prefix algorithm] 164 | | +--rw prefix inet:ip-prefix 165 | | +--rw value-type? enumeration 166 | | +--rw start-sid uint32 167 | | +--rw range? uint32 168 | | +--rw algorithm identityref 169 | +--rw connected-prefix-sid-map 170 | | +--rw connected-prefix-sid* [prefix algorithm] 171 | | +--rw prefix inet:ip-prefix 172 | | +--rw value-type? enumeration 173 | | +--rw start-sid uint32 174 | | +--rw range? uint32 175 | | +--rw algorithm identityref 176 | | +--rw last-hop-behavior? enumeration 177 | +--rw local-prefix-sid 178 | +--rw local-prefix-sid* [prefix algorithm] 179 | +--rw prefix inet:ip-prefix 180 | +--rw value-type? enumeration 181 | +--rw start-sid uint32 182 | +--rw range? uint32 183 | +--rw algorithm identityref 184 +--rw global-srgb 185 | +--rw srgb* [lower-bound upper-bound] 186 | +--rw lower-bound uint32 187 | +--rw upper-bound uint32 188 +--rw srlb 189 | +--rw srlb* [lower-bound upper-bound] 190 | +--rw lower-bound uint32 191 | +--rw upper-bound uint32 192 +--ro label-blocks* [] 193 | +--ro lower-bound? uint32 194 | +--ro upper-bound? uint32 195 | +--ro size? uint32 196 | +--ro free? uint32 197 | +--ro used? uint32 198 | +--ro scope? enumeration 199 +--ro sid-db 200 +--ro sid* [target sid source source-protocol binding-type] 201 +--ro target string 202 +--ro sid uint32 203 +--ro algorithm? uint8 204 +--ro source inet:ip-address 205 +--ro used? boolean 206 +--ro source-protocol -> /rt:routing 207 /control-plane-protocols 208 /control-plane-protocol/name 209 +--ro binding-type enumeration 210 +--ro scope? enumeration 212 notifications: 213 +---n segment-routing-global-srgb-collision 214 | +--ro srgb-collisions* [] 215 | +--ro lower-bound? uint32 216 | +--ro upper-bound? uint32 217 | +--ro routing-protocol? -> /rt:routing 218 | /control-plane-protocols 219 | /control-plane-protocol/name 220 | +--ro originating-rtr-id? router-id 221 +---n segment-routing-global-sid-collision 222 | +--ro received-target? string 223 | +--ro new-sid-rtr-id? router-id 224 | +--ro original-target? string 225 | +--ro original-sid-rtr-id? router-id 226 | +--ro index? uint32 227 | +--ro routing-protocol? -> /rt:routing 228 | /control-plane-protocols 229 | /control-plane-protocol/name 230 +---n segment-routing-index-out-of-range 231 +--ro received-target? string 232 +--ro received-index? uint32 233 +--ro routing-protocol? -> /rt:routing 234 /control-plane-protocols 235 /control-plane-protocol/name 237 4. Configuration 239 The module ietf-segment-routing-mpls augments the "/rt:routing/ 240 sr:segment-routing:" with a sr-mpls container. This container 241 defines all the configuration parameters related to segment-routing 242 MPLS data plane. 244 The sr-mpls configuration is split in global configuration and 245 interface configuration. 247 The global configuration includes : 249 o bindings : Defines prefix to SID mappings. The operator can 250 control advertisement of Prefix-SID independently for IPv4 and 251 IPv6. Two types of mappings are available: 253 * Mapping-server : maps non local prefixes to a segment ID. 254 Configuration of bindings does not automatically allow 255 advertisement of those bindings. Advertisement must be 256 controlled by each routing-protocol instance (see Section 5). 257 Multiple mapping policies may be defined. 259 * Connected prefixes : maps connected prefixes to a segment ID. 260 Advertisement of the mapping will be done by IGP when enabled 261 for segment routing (see Section 5). The SID value can be 262 expressed as an index (default), or an absolute value. The 263 "last-hop-behavior" configuration dictates the PHP behavior: 264 "explicit-null", "php", or "non-php". 266 o SRGB (Segment Routing Global Block): Defines a list of label 267 blocks represented by a pair of lower-bound/upper-bound labels. 268 The SRGB is also agnostic to the control plane used. So all 269 routing-protocol instance will have to advertise the same SRGB. 271 o SRLB (Segment Routing Local Block): Defines a list of label blocks 272 represented by a pair of lower-bound/upper-bound labels, reserved 273 for lcoal SIDs. 275 5. IGP Control plane configuration 277 Support of segment-routing extensions for a particular IGP control 278 plane is done by augmenting routing-protocol configuration with 279 segment-routing extensions. This augmentation SHOULD be part of 280 separate YANG modules in order to not create any dependency for 281 implementations to support all protocol extensions. 283 This module defines groupings that SHOULD be used by IGP segment 284 routing modules. 286 The "controlplane-cfg" grouping defines the generic global 287 configuration for the IGP. 289 The "enabled" leaf enables segment-routing extensions for the 290 routing-protocol instance. 292 The "bindings" container controls the routing-protocol instance's 293 advertisement of local bindings and the processing of received 294 bindings. 296 5.1. IGP interface configuration 298 The interface configuration is part of the "igp-interface-cfg" 299 grouping and includes Adjacency SID properties. 301 5.1.1. Adjacency SID properties 303 5.1.1.1. Bundling 305 In case of parallel IP links between routers, an additional Adjacency 306 SID [RFC8402] may be advertised representing more than one adjacency 307 (i.e., a bundle of adjacencies). The "advertise-adj-group-sid" 308 configuration controls whether or not an additional adjacency SID is 309 advertised. 311 The "advertise-adj-group-sid" is a list of "group-id". The "group- 312 id" will identify interfaces that are bundled together. 314 +-------+ +------+ 315 | | ------- L1 ---- | | 316 | R1 | ------- L2 ---- | R2 | 317 | | ------- L3 ---- | | 318 | | ------- L4 ---- | | 319 +-------+ +------+ 321 In the figure above, R1 and R2 are interconnected by four links. A 322 routing protocol adjacency is established on each link. Operator 323 would like to create segment-routing Adj-SID that represent some 324 bundles of links. We can imagine two different bundles : L1/L2 and 325 L3/L4. To achieve this behavior, the service provider will configure 326 a "group-id" X for both interfaces L1 and L2 and a "group-id" Y for 327 both interfaces L3 and L4. This will result in R1 advertising an 328 additional Adj-SID for each adjacency, for example a Adj-SID with S 329 flag set and value of 400 will be added to L1 and L2. A Adj-SID with 330 S flag set and value of 500 will be added to L3 and L4. As L1/L2 and 331 L3/L4 does not share the same "group-id", a different SID value will 332 be allocated. 334 5.1.1.2. Protection 336 The "advertise-protection" defines how protection for an interface is 337 advertised. It does not control the activation or deactivation of 338 protection. If the "single" option is used, a single Adj-SID will be 339 advertised for the interface. If the interface is protected, the 340 B-Flag for the Adj-SID advertisement will be set. If the "dual" 341 option is used and if the interface is protected, two Adj-SIDs will 342 be advertised for the interface adjacencies. One Adj-SID will always 343 have the B-Flag set and the other will have the B-Flag clear. This 344 option is intended to be used in the case of traffic engineering 345 where a path must use either protected segments or non-protected 346 segments. 348 6. State Data 350 The operational states contains information reflecting the usage of 351 allocated SRGB labels. 353 It also includes a list of all global SIDs, their associated 354 bindings, and other information such as the source protocol and 355 algorithm. 357 7. Notifications 359 The model defines the following notifications for segment-routing. 361 o segment-routing-global-srgb-collision: Raised when a control plane 362 advertised SRGB blocks have conflicts. 364 o segment-routing-global-sid-collision: Raised when a control plane 365 advertised index is already associated with another target (in 366 this version, the only defined targets are IPv4 and IPv6 367 prefixes). 369 o segment-routing-index-out-of-range: Raised when a control plane 370 advertised index fall outside the range of SRGBs configured for 371 the network device. 373 8. YANG Modules 375 There are three modules included in this document: 377 o ietf-segment-routing.yang: This module defines a generic framework 378 for Segment Routing, and it is to be augmented by models for 379 different SR data planes. 381 o ietf-segment-routing-common.yang: This module defines a collection 382 of generic types and groupings for SR as defined in [RFC8402]. 384 o ietf-segment-routing-mpls.yang: This module defines the 385 configuration and operation states for Segment Routing MPLS data 386 plane. 388 The following RFCs and drafts are not referenced in the document text 389 but are referenced in the ietf-segment-routing-common.yang and/or 390 ietf-segment-routing.yang module: [RFC6991], [RFC8294], [RFC8476], 391 [RFC8491], [RFC8665], and [RFC8667]. 393 file "ietf-segment-routing@2020-08-17.yang" 394 module ietf-segment-routing { 395 yang-version 1.1; 396 namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing"; 397 prefix sr; 399 import ietf-routing { 400 prefix rt; 401 reference "RFC 8349: A YANG Data Model for Routing 402 Management (NMDA Version)"; 403 } 405 organization 406 "IETF SPRING - SPRING Working Group"; 407 contact 408 "WG Web: 409 WG List: 411 Author: Stephane Litkowski 412 413 Author: Yingzhen Qu 414 415 Author: Acee Lindem 416 417 Author: Pushpasis Sarkar 418 419 Author: Jeff Tantsura 420 422 "; 423 description 424 "The YANG module defines a generic framework for Segment 425 Routing. It is to be augmented by models for different 426 SR data planes. 428 This YANG model conforms to the Network Management 429 Datastore Architecture (NMDA) as described in RFC 8242. 431 Copyright (c) 2020 IETF Trust and the persons identified as 432 authors of the code. All rights reserved. 434 Redistribution and use in source and binary forms, with or 435 without modification, is permitted pursuant to, and subject 436 to the license terms contained in, the Simplified BSD License 437 set forth in Section 4.c of the IETF Trust's Legal Provisions 438 Relating to IETF Documents 439 (http://trustee.ietf.org/license-info). 441 This version of this YANG module is part of RFC XXXX; 442 see the RFC itself for full legal notices. 444 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 445 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 446 'MAY', and 'OPTIONAL' in this document are to be interpreted as 447 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 448 they appear in all capitals, as shown here."; 450 reference "RFC XXXX"; 452 revision 2020-08-17 { 453 description 454 "Initial Version"; 455 reference "RFC XXXX: YANG Data Model for Segment Routing."; 456 } 458 augment "/rt:routing" { 459 description 460 "This module augments routing data model (RFC 8349) 461 with Segment Routing (SR)."; 462 container segment-routing { 463 description 464 "Segment Routing configuration. This container 465 is to be augmented by models for different SR 466 data planes."; 467 reference "RFC 8402: Segment Routing Architecture."; 468 } 469 } 470 } 471 472 file "ietf-segment-routing-common@2020-08-17.yang" 473 module ietf-segment-routing-common { 474 yang-version 1.1; 475 namespace 476 "urn:ietf:params:xml:ns:yang:ietf-segment-routing-common"; 477 prefix sr-cmn; 479 import ietf-inet-types { 480 prefix inet; 481 reference "RFC 6991: Common YANG Data Types"; 482 } 484 organization 485 "IETF SPRING - SPRING Working Group"; 487 contact 488 "WG Web: 489 WG List: 491 Author: Stephane Litkowski 492 493 Author: Yingzhen Qu 494 495 Author: Acee Lindem 496 497 Author: Pushpasis Sarkar 498 499 Author: Jeff Tantsura 500 502 "; 503 description 504 "The YANG module defines a collection of generic types and 505 groupings for Segment Routing (SR) as described in RFC 8402. 507 This YANG model conforms to the Network Management 508 Datastore Architecture (NMDA) as described in RFC 8242. 510 Copyright (c) 2020 IETF Trust and the persons identified as 511 authors of the code. All rights reserved. 513 Redistribution and use in source and binary forms, with or 514 without modification, is permitted pursuant to, and subject 515 to the license terms contained in, the Simplified BSD License 516 set forth in Section 4.c of the IETF Trust's Legal Provisions 517 Relating to IETF Documents 518 (http://trustee.ietf.org/license-info). 520 This version of this YANG module is part of RFC XXXX; 521 see the RFC itself for full legal notices. 523 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 524 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 525 'MAY', and 'OPTIONAL' in this document are to be interpreted as 526 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 527 they appear in all capitals, as shown here."; 529 reference "RFC XXXX"; 531 revision 2020-08-17 { 532 description 533 "Initial version"; 534 reference "RFC XXXX: YANG Data Model for Segment Routing."; 535 } 537 feature sid-last-hop-behavior { 538 description 539 "Configurable last hop behavior."; 540 reference "RFC 8660: Segment Routing with the MPLS Data Plane"; 541 } 543 identity prefix-sid-algorithm { 544 description 545 "Base identity for prefix-sid algorithm."; 546 reference "RFC 8402: Segment Routing Architecture"; 547 } 549 identity prefix-sid-algorithm-shortest-path { 550 base prefix-sid-algorithm; 551 description 552 "Shortest Path First (SPF) prefix-sid algorithm. This 553 is the default algorithm."; 554 } 556 identity prefix-sid-algorithm-strict-spf { 557 base prefix-sid-algorithm; 558 description 559 "This algorithm mandates that the packet is forwarded 560 according to ECMP-aware SPF algorithm."; 561 } 563 grouping srlr { 564 description 565 "Grouping for SR Label Range configuration."; 566 leaf lower-bound { 567 type uint32; 568 description 569 "Lower value in the label range."; 570 } 571 leaf upper-bound { 572 type uint32; 573 must "../lower-bound < ../upper-bound" { 574 error-message 575 "The upper-bound must be larger than the lower-bound."; 576 description 577 "The value must be greater than 'lower-bound'."; 578 } 579 description 580 "Upper value in the label range."; 581 } 582 } 584 grouping srgb { 585 description 586 "Grouping for SR Global Label range."; 587 list srgb { 588 key "lower-bound upper-bound"; 589 ordered-by user; 590 description 591 "List of global blocks to be advertised."; 592 uses srlr; 593 } 594 } 596 grouping srlb { 597 description 598 "Grouping for SR Local Block range."; 599 list srlb { 600 key "lower-bound upper-bound"; 601 ordered-by user; 602 description 603 "List of SRLBs."; 604 uses srlr; 605 } 606 } 608 grouping sid-value-type { 609 description 610 "Defines how the SID value is expressed."; 611 leaf value-type { 612 type enumeration { 613 enum "index" { 614 description 615 "The value will be interpreted as an index."; 616 } 617 enum "absolute" { 618 description 619 "The value will become interpreted as an absolute 620 value."; 621 } 622 } 623 default "index"; 624 description 625 "This leaf defines how value must be interpreted."; 626 } 627 } 629 grouping prefix-sid { 630 description 631 "This grouping defines cfg of prefix SID."; 632 leaf prefix { 633 type inet:ip-prefix; 634 description 635 "connected prefix sid."; 636 } 637 uses prefix-sid-attributes; 638 } 640 grouping ipv4-sid { 641 description 642 "Grouping for an IPv4 prefix SID."; 643 leaf prefix { 644 type inet:ipv4-prefix; 645 description 646 "Connected IPv4 prefix sid."; 647 } 648 uses prefix-sid-attributes; 649 } 650 grouping ipv6-sid { 651 description 652 "Grouping for an IPv6 prefix SID."; 653 leaf prefix { 654 type inet:ipv6-prefix; 655 description 656 "Connected ipv6 prefix sid."; 657 } 658 uses prefix-sid-attributes; 659 } 661 grouping last-hop-behavior { 662 description 663 "Defines last hop behavior"; 664 leaf last-hop-behavior { 665 if-feature "sid-last-hop-behavior"; 666 type enumeration { 667 enum "explicit-null" { 668 description 669 "Use explicit-null for the SID."; 670 } 671 enum "no-php" { 672 description 673 "Do not use Penultimate Hop Popping (PHP) 674 for the SID."; 675 } 676 enum "php" { 677 description 678 "Use PHP for the SID."; 679 } 680 } 681 description 682 "Configure last hop behavior."; 683 } 684 } 686 grouping node-capabilities { 687 description 688 "Containing SR node capabilities."; 689 container node-capabilities { 690 config false; 691 description 692 "Shows the SR capability of the node."; 693 leaf entropy-readable-label-depth { 694 type uint8; 695 description 696 "Maximum label stack depth that a router can read."; 697 } 698 } 699 } 701 grouping prefix-sid-attributes { 702 description 703 "Grouping for Segment Routing (SR) prefix attributes."; 704 uses sid-value-type; 705 leaf start-sid { 706 type uint32; 707 mandatory true; 708 description 709 "Value associated with prefix. The value must be 710 interpreted in the context of value-type."; 711 } 712 leaf range { 713 type uint32; 714 description 715 "Indicates how many SIDs can be allocated."; 717 } 718 leaf algorithm { 719 type identityref { 720 base prefix-sid-algorithm; 721 } 722 description 723 "Prefix-sid algorithm."; 724 } 725 } 726 } 727 728 file "ietf-segment-routing-mpls@2020-08-17.yang" 729 module ietf-segment-routing-mpls { 730 yang-version 1.1; 731 namespace "urn:ietf:params:xml:ns:yang:ietf-segment-routing-mpls"; 732 prefix sr-mpls; 734 import ietf-inet-types { 735 prefix inet; 736 reference "RFC 6991: Common YANG Data Types"; 737 } 738 import ietf-routing { 739 prefix rt; 740 reference "RFC 8349: A YANG Data Model for Routing 741 Management (NMDA Version)"; 742 } 743 import ietf-interfaces { 744 prefix if; 745 reference "RFC 8343: A YANG Data Model for Interface 746 Management (NMDA Version)"; 747 } 748 import ietf-routing-types { 749 prefix rt-types; 750 reference "RFC 8294: Common YANG Data Types for the 751 Routing Area"; 752 } 753 import ietf-segment-routing { 754 prefix sr; 755 } 756 import ietf-segment-routing-common { 757 prefix sr-cmn; 758 } 760 organization 761 "IETF SPRING - SPRING Working Group"; 762 contact 763 "WG Web: 764 WG List: 765 Author: Stephane Litkowski 766 767 Author: Yingzhen Qu 768 769 Author: Acee Lindem 770 771 Author: Pushpasis Sarkar 772 773 Author: Jeff Tantsura 774 776 "; 777 description 778 "The YANG module defines a generic configuration model for 779 Segment Routing MPLS data plane. 781 This YANG model conforms to the Network Management 782 Datastore Architecture (NMDA) as described in RFC 8242. 784 Copyright (c) 2020 IETF Trust and the persons identified as 785 authors of the code. All rights reserved. 787 Redistribution and use in source and binary forms, with or 788 without modification, is permitted pursuant to, and subject 789 to the license terms contained in, the Simplified BSD License 790 set forth in Section 4.c of the IETF Trust's Legal Provisions 791 Relating to IETF Documents 792 (http://trustee.ietf.org/license-info). 794 This version of this YANG module is part of RFC XXXX; 795 see the RFC itself for full legal notices. 797 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL 798 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 799 'MAY', and 'OPTIONAL' in this document are to be interpreted as 800 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, 801 they appear in all capitals, as shown here."; 803 reference "RFC XXXX"; 805 revision 2020-08-17 { 806 description 807 "Initial Version"; 808 reference "RFC XXXX: YANG Data Model for Segment Routing."; 809 } 811 feature mapping-server { 812 description 813 "Support for Segment Routing Mapping Server (SRMS)."; 814 reference "RFC 8661: Segment Routing MPLS Interworking with LDP"; 815 } 817 feature protocol-srgb { 818 description 819 "Support for per-protocol Segment Routing Global Block 820 (SRGB) configuration."; 821 reference "RFC 8660: Segment Routing with the MPLS Data Plane"; 822 } 824 feature max-sid-depth { 825 description 826 "Support for signaling MSD (Maximum SID Depth) in IGP."; 827 reference "RFC 8476: Signaling Maximum SID Depth (MSD) 828 Using OSPF 829 RFC 8491: Signaling Maximum SID Depth (MSD) 830 Using IS-IS"; 831 } 833 typedef system-id { 834 type string { 835 pattern 836 '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; 837 } 838 description 839 "This type defines IS-IS system-id using pattern, 840 An example system-id is 0143.0438.AEF0"; 841 } 843 typedef router-id { 844 type union { 845 type system-id; 846 type rt-types:router-id; 847 } 848 description 849 "OSPF/BGP router-id or ISIS system ID."; 850 } 852 grouping sr-controlplane { 853 description 854 "Defines protocol configuration."; 855 container segment-routing { 856 description 857 "Segment Routing global configuration."; 858 leaf enabled { 859 type boolean; 860 default "false"; 861 description 862 "Enables segment-routing protocol extensions."; 863 } 864 container bindings { 865 if-feature mapping-server; 866 description 867 "Control of binding advertisement and reception."; 868 container advertise { 869 description 870 "Control advertisement of local mappings 871 in binding TLVs."; 872 leaf-list policies { 873 type leafref { 874 path "/rt:routing/sr:segment-routing/sr-mpls:sr-mpls" 875 + "/sr-mpls:bindings/sr-mpls:mapping-server" 876 + "/sr-mpls:policy/sr-mpls:name"; 877 } 878 description 879 "List of binding advertisement policies."; 880 } 881 } 882 leaf receive { 883 type boolean; 884 default "true"; 885 description 886 "Allow the reception and usage of binding TLVs."; 887 } 888 } 889 } 890 } 892 grouping igp-interface { 893 description 894 "Grouping for IGP interface configuration."; 895 container segment-routing { 896 description 897 "Container for SR interface configuration."; 898 container adjacency-sid { 899 description 900 "Adjacency SID configuration."; 901 reference "RFC 8660: Segment Routing with the MPLS 902 Data Plane"; 903 list adj-sids { 904 key "value"; 905 uses sr-cmn:sid-value-type; 906 leaf value { 907 type uint32; 908 description 909 "Value of the Adj-SID."; 910 } 911 leaf protected { 912 type boolean; 913 default false; 914 description 915 "It is used to protect the manual adj-SID."; 916 } 917 leaf weight { 918 type uint8; 919 description 920 "The load-balancing factor over parallel adjacencies."; 921 reference "RFC 8402: Segment Routing Architecture 922 RFC 8665: OSPF Extensions for Segment Routing 923 RFC 8667: IS-IS Extensions for Segment Routing"; 924 } 925 description 926 "List of adj-sid configuration."; 927 } 928 list advertise-adj-group-sid { 929 key "group-id"; 930 description 931 "Control advertisement of S flag. Enable advertisement 932 of a common Adj-SID for parallel links."; 933 leaf group-id { 934 type uint32; 935 description 936 "The value is an internal value to identify a 937 group-ID. Interfaces with the same group-ID will be 938 bundled together."; 939 } 940 } 941 leaf advertise-protection { 942 type enumeration { 943 enum "single" { 944 description 945 "A single Adj-SID is associated with the adjacency 946 and reflects the protection configuration."; 947 } 948 enum "dual" { 949 description 950 "Two Adj-SIDs will be associated with the adjacency 951 if the interface is protected. In this case, will 952 be advertised with backup flag set, the other will 953 be advertised with the backup flag clear. In case 954 protection is not configured, single Adj-SID will 955 be advertised with the backup flag clear."; 956 } 958 } 959 description 960 "If set, the Adj-SID refers to a protected adjacency."; 961 } 962 } 963 } 964 } 966 grouping max-sid-depth { 967 description 968 "Maximum SID Depth (MSD)D configuration grouping."; 969 leaf node-msd { 970 type uint8; 971 description 972 "Node MSD is the lowest MSD supported by the node."; 973 } 974 container link-msd { 975 description 976 "MSD supported by an individual interface."; 977 list link-msds { 978 key "interface"; 979 description 980 "List of link MSDs."; 981 leaf interface { 982 type if:interface-ref; 983 description 984 "Reference to device interface."; 985 } 986 leaf msd { 987 type uint8; 988 description 989 "MSD supported by the interface."; 990 } 991 } 992 } 993 } 995 augment "/rt:routing/sr:segment-routing" { 996 description 997 "This augments routing data model (RFC 8349) 998 with Segment Routing (SR)."; 999 container sr-mpls { 1000 description 1001 "Segment Routing global configuration."; 1002 uses sr-cmn:node-capabilities; 1003 container msd { 1004 if-feature "max-sid-depth"; 1005 description 1006 "MSD configuration."; 1007 uses max-sid-depth; 1008 } 1009 container bindings { 1010 description 1011 "List of bindings."; 1012 container mapping-server { 1013 if-feature "mapping-server"; 1014 description 1015 "Configuration of mapping-server local entries."; 1016 list policy { 1017 key "name"; 1018 description 1019 "List mapping-server policies."; 1020 leaf name { 1021 type string; 1022 description 1023 "Name of the mapping policy."; 1024 } 1025 container entries { 1026 description 1027 "IPv4/IPv6 mapping entries."; 1028 list mapping-entry { 1029 key "prefix algorithm"; 1030 description 1031 "Mapping entries."; 1032 uses sr-cmn:prefix-sid; 1033 } 1034 } 1035 } 1036 } 1037 container connected-prefix-sid-map { 1038 description 1039 "Prefix SID configuration."; 1040 list connected-prefix-sid { 1041 key "prefix algorithm"; 1042 description 1043 "List of prefix SID mapped to IPv4/IPv6 1044 local prefixes."; 1045 uses sr-cmn:prefix-sid; 1046 uses sr-cmn:last-hop-behavior; 1047 } 1048 } 1049 container local-prefix-sid { 1050 description 1051 "Local sid configuration."; 1052 list local-prefix-sid { 1053 key "prefix algorithm"; 1054 description 1055 "List of local IPv4/IPv6 prefix-sids."; 1056 uses sr-cmn:prefix-sid; 1057 } 1058 } 1059 } 1060 container global-srgb { 1061 description 1062 "Global SRGB configuration."; 1063 uses sr-cmn:srgb; 1064 } 1065 container srlb { 1066 description 1067 "Segment Routing Local Block (SRLB) configuration."; 1068 uses sr-cmn:srlb; 1069 } 1071 list label-blocks { 1072 config false; 1073 description 1074 "List of label blocks currently in use."; 1075 leaf lower-bound { 1076 type uint32; 1077 description 1078 "Lower bound of the label block."; 1079 } 1080 leaf upper-bound { 1081 type uint32; 1082 description 1083 "Upper bound of the label block."; 1084 } 1085 leaf size { 1086 type uint32; 1087 description 1088 "Number of indexes in the block."; 1089 } 1090 leaf free { 1091 type uint32; 1092 description 1093 "Number of free indexes in the block."; 1094 } 1095 leaf used { 1096 type uint32; 1097 description 1098 "Number of indexes in use in the block."; 1099 } 1100 leaf scope { 1101 type enumeration { 1102 enum "global" { 1103 description 1104 "Global SID."; 1105 } 1106 enum "local" { 1107 description 1108 "Local SID."; 1109 } 1110 } 1111 description 1112 "Scope of this label block."; 1113 } 1114 } 1115 container sid-db { 1116 config false; 1117 description 1118 "List of prefix and SID associations."; 1119 list sid { 1120 key "target sid source source-protocol binding-type"; 1121 ordered-by system; 1122 description 1123 "SID Binding."; 1124 leaf target { 1125 type string; 1126 description 1127 "Defines the target of the binding. It can be a 1128 prefix or something else."; 1129 } 1130 leaf sid { 1131 type uint32; 1132 description 1133 "Index associated with the prefix."; 1134 } 1135 leaf algorithm { 1136 type uint8; 1137 description 1138 "Algorithm to be used for the prefix SID."; 1139 reference "RFC 8665: OSPF Extensions for Segment Routing 1140 RFC 8667: IS-IS Extensions for Segment Routing"; 1141 } 1142 leaf source { 1143 type inet:ip-address; 1144 description 1145 "IP address of the router that owns the binding."; 1146 } 1147 leaf used { 1148 type boolean; 1149 description 1150 "Indicates if the binding is install in the 1151 forwarding plane."; 1152 } 1153 leaf source-protocol { 1154 type leafref { 1155 path "/rt:routing/rt:control-plane-protocols/" 1156 + "rt:control-plane-protocol/rt:name"; 1157 } 1158 description 1159 "Routing protocol that owns the binding"; 1160 } 1161 leaf binding-type { 1162 type enumeration { 1163 enum "prefix-sid" { 1164 description 1165 "Binding is learned from a prefix SID."; 1166 } 1167 enum "binding-tlv" { 1168 description 1169 "Binding is learned from a binding TLV."; 1170 } 1171 } 1172 description 1173 "Type of binding."; 1174 } 1175 leaf scope { 1176 type enumeration { 1177 enum "global" { 1178 description 1179 "Global SID."; 1180 } 1181 enum "local" { 1182 description 1183 "Local SID."; 1184 } 1185 } 1186 description 1187 "SID scoping."; 1188 } 1189 } 1190 } 1191 } 1192 } 1194 notification segment-routing-global-srgb-collision { 1195 description 1196 "This notification is sent when SRGB blocks received from 1197 routers conflict."; 1199 list srgb-collisions { 1200 description 1201 "List of SRGB blocks that conflict."; 1202 leaf lower-bound { 1203 type uint32; 1204 description 1205 "Lower value in the block."; 1206 } 1207 leaf upper-bound { 1208 type uint32; 1209 description 1210 "Upper value in the block."; 1211 } 1212 leaf routing-protocol { 1213 type leafref { 1214 path "/rt:routing/rt:control-plane-protocols/" 1215 + "rt:control-plane-protocol/rt:name"; 1216 } 1217 description 1218 "Routing protocol reference for SRGB collision."; 1219 } 1220 leaf originating-rtr-id { 1221 type router-id; 1222 description 1223 "Originating Router ID of this SRGB block."; 1224 } 1225 } 1226 } 1227 notification segment-routing-global-sid-collision { 1228 description 1229 "This notification is sent when a new mapping is learned 1230 containing s mapping where the SID is already used. 1231 The notification generation must be throttled with at least 1232 a 5 second gap between notifications."; 1233 leaf received-target { 1234 type string; 1235 description 1236 "Target received in the router advertisement that caused 1237 the SID collision."; 1238 } 1239 leaf new-sid-rtr-id { 1240 type router-id; 1241 description 1242 "Router ID that advertised the conflicting SID."; 1243 } 1244 leaf original-target { 1245 type string; 1246 description 1247 "Target already available in the database with the same SID 1248 as the received target."; 1249 } 1250 leaf original-sid-rtr-id { 1251 type router-id; 1252 description 1253 "Router-ID for the router that originally advertised the 1254 conflicting SID, i.e., the instance in the database."; 1255 } 1256 leaf index { 1257 type uint32; 1258 description 1259 "Value of the index used by two different prefixes."; 1260 } 1261 leaf routing-protocol { 1262 type leafref { 1263 path "/rt:routing/rt:control-plane-protocols/" 1264 + "rt:control-plane-protocol/rt:name"; 1265 } 1266 description 1267 "Routing protocol reference for conflicting SID."; 1268 } 1269 } 1270 notification segment-routing-index-out-of-range { 1271 description 1272 "This notification is sent when a binding is received 1273 containing a segment index which is out of the local 1274 configured ranges. The notification generation must be 1275 throttled with at least a 5 second gap between 1276 notifications."; 1277 leaf received-target { 1278 type string; 1279 description 1280 "Target received in the router advertisement with 1281 the out-of-range index."; 1282 } 1283 leaf received-index { 1284 type uint32; 1285 description 1286 "Value of the index received."; 1287 } 1288 leaf routing-protocol { 1289 type leafref { 1290 path "/rt:routing/rt:control-plane-protocols/" 1291 + "rt:control-plane-protocol/rt:name"; 1292 } 1293 description 1294 "Routing protocol reference for out-of-range indexd."; 1296 } 1297 } 1298 } 1299 1301 9. Security Considerations 1303 The YANG modules specified in this document define a schema for data 1304 that is designed to be accessed via network management protocols such 1305 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1306 is the secure transport layer, and the mandatory-to-implement secure 1307 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1308 is HTTPS, and the mandatory-to-implement secure transport is TLS 1309 [RFC5246]. 1311 The NETCONF access control model [RFC6536] provides the means to 1312 restrict access for particular NETCONF or RESTCONF users to a pre- 1313 configured subset of all available NETCONF or RESTCONF protocol 1314 operations and content. 1316 There are a number of data nodes defined in the modules that are 1317 writable/creatable/deletable (i.e., config true, which is the 1318 default). These data nodes may be considered sensitive or vulnerable 1319 in some network environments. Write operations (e.g., edit-config) 1320 to these data nodes without proper protection can have a negative 1321 effect on network operations. 1323 Some of the readable data nodes in the modules may be considered 1324 sensitive or vulnerable in some network environments. It is thus 1325 important to control read access (e.g., via get, get-config, or 1326 notification) to these data nodes. 1328 10. Acknowledgements 1330 Authors would like to thank Derek Yeung, Greg Hankins, Hannes 1331 Gredler, Uma Chunduri, Jeffrey Zhang, Shradda Hedge, Les Ginsberg for 1332 their contributions. 1334 11. IANA Considerations 1336 This document registers a URI in the IETF XML registry [RFC3688]. 1337 Following the format in [RFC3688], the following registration is 1338 requested to be made: 1340 URI: urn:ietf:params:xml:ns:yang:ietf-segment-routing-commmon 1341 Registrant Contact: The IESG. 1342 XML: N/A, the requested URI is an XML namespace. 1344 URI: urn:ietf:params:xml:ns:yang:ietf-segment-routing 1345 Registrant Contact: The IESG. 1346 XML: N/A, the requested URI is an XML namespace. 1348 URI: urn:ietf:params:xml:ns:yang:ietf-segment-routing-mpls 1349 Registrant Contact: The IESG. 1350 XML: N/A, the requested URI is an XML namespace. 1352 This document registers a YANG module in the YANG Module Names 1353 registry [RFC6020]. 1355 name: ietf-segment-routing-common 1356 namespace: urn:ietf:params:xml:ns:yang:ietf-segment-routing-common 1357 prefix: sr-cmn 1358 reference: RFC XXXX 1360 name: ietf-segment-routing 1361 namespace: urn:ietf:params:xml:ns:yang:ietf-segment-routing 1362 prefix: sr 1363 reference: RFC XXXX 1365 name: ietf-segment-routing 1366 namespace: urn:ietf:params:xml:ns:yang:ietf-segment-routing-mpls 1367 prefix: sr-mpls 1368 reference: RFC XXXX 1370 12. References 1372 12.1. Normative References 1374 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1375 Requirement Levels", BCP 14, RFC 2119, 1376 DOI 10.17487/RFC2119, March 1997, 1377 . 1379 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1380 DOI 10.17487/RFC3688, January 2004, 1381 . 1383 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1384 (TLS) Protocol Version 1.2", RFC 5246, 1385 DOI 10.17487/RFC5246, August 2008, 1386 . 1388 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1389 the Network Configuration Protocol (NETCONF)", RFC 6020, 1390 DOI 10.17487/RFC6020, October 2010, 1391 . 1393 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1394 and A. Bierman, Ed., "Network Configuration Protocol 1395 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1396 . 1398 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1399 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1400 . 1402 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1403 Protocol (NETCONF) Access Control Model", RFC 6536, 1404 DOI 10.17487/RFC6536, March 2012, 1405 . 1407 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 1408 RFC 6991, DOI 10.17487/RFC6991, July 2013, 1409 . 1411 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1412 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1413 . 1415 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1416 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1417 . 1419 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1420 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1421 May 2017, . 1423 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 1424 "Common YANG Data Types for the Routing Area", RFC 8294, 1425 DOI 10.17487/RFC8294, December 2017, 1426 . 1428 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1429 and R. Wilton, "Network Management Datastore Architecture 1430 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1431 . 1433 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 1434 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 1435 . 1437 [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for 1438 Routing Management (NMDA Version)", RFC 8349, 1439 DOI 10.17487/RFC8349, March 2018, 1440 . 1442 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 1443 Decraene, B., Litkowski, S., and R. Shakir, "Segment 1444 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 1445 July 2018, . 1447 [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, 1448 "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, 1449 DOI 10.17487/RFC8476, December 2018, 1450 . 1452 [RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, 1453 "Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491, 1454 DOI 10.17487/RFC8491, November 2018, 1455 . 1457 [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., 1458 Decraene, B., Litkowski, S., and R. Shakir, "Segment 1459 Routing with the MPLS Data Plane", RFC 8660, 1460 DOI 10.17487/RFC8660, December 2019, 1461 . 1463 [RFC8665] Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler, 1464 H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF 1465 Extensions for Segment Routing", RFC 8665, 1466 DOI 10.17487/RFC8665, December 2019, 1467 . 1469 [RFC8667] Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C., 1470 Bashandy, A., Gredler, H., and B. Decraene, "IS-IS 1471 Extensions for Segment Routing", RFC 8667, 1472 DOI 10.17487/RFC8667, December 2019, 1473 . 1475 12.2. Informative References 1477 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1478 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1479 . 1481 [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, 1482 "Handling Long Lines in Content of Internet-Drafts and 1483 RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, 1484 . 1486 Appendix A. Configuration example 1488 Note: '\' line wrapping per [RFC8792]. 1490 The following is an XML example using the SR MPLS YANG modules. 1492 1493 1495 1497 1498 5 1499 1500 1501 1502 1503 mapping 1 1504 1505 1506 198.51.100.0/24 1507 \ 1509 sr-cmn:prefix-sid-algorithm-shortest-path\ 1510 1511 200 1512 100 1513 1514 1515 1516 1517 1518 1519 192.0.2.0/24 1520 \ 1522 sr-cmn:prefix-sid-algorithm-strict-spf 1523 100 1524 1 1525 php 1526 1527 1528 1529 1530 1531 45000 1532 55000 1533 1534 1535 1536 1537 1538 The following is the same example using JSON format. 1540 { 1541 "ietf-routing:routing": { 1542 "ietf-segment-routing:segment-routing": { 1543 "ietf-segment-routing-mpls:sr-mpls": { 1544 "msd": { 1545 "node-msd": 5 1546 }, 1547 "bindings": { 1548 "mapping-server": { 1549 "policy": [ 1550 { 1551 "name": "mapping 1", 1552 "entries": { 1553 "mapping-entry": [ 1554 { 1555 "prefix": "198.51.100.0/24", 1556 "algorithm": "ietf-segment-routing-common:\ 1557 prefix-sid-algorithm-shortest-path", 1558 "start-sid": 200, 1559 "range": 100 1560 } 1561 ] 1562 } 1563 } 1564 ] 1565 }, 1566 "connected-prefix-sid-map": { 1567 "connected-prefix-sid": [ 1568 { 1569 "prefix": "192.0.2.0/24", 1570 "algorithm": "ietf-segment-routing-common:\ 1571 prefix-sid-algorithm-strict-spf", 1572 "start-sid": 100, 1573 "range": 1, 1574 "last-hop-behavior": "php" 1575 } 1576 ] 1577 } 1578 }, 1579 "global-srgb": { 1580 "srgb": [ 1581 { 1582 "lower-bound": 45000, 1583 "upper-bound": 55000 1584 } 1585 ] 1587 } 1588 } 1589 } 1590 } 1591 } 1593 Authors' Addresses 1595 Stephane Litkowski 1596 Cisco Systems 1598 Email: slitkows.ietf@gmail.com 1600 Yingzhen Qu 1601 Futurewei 1603 Email: yingzhen.qu@futurewei.com 1605 Acee Lindem 1606 Cisco Systems 1607 301 Mindenhall Way 1608 Cary, NC 27513 1609 US 1611 Email: acee@cisco.com 1613 Pushpasis Sarkar 1614 Individual 1616 Email: pushpasis.ietf@gmail.com 1618 Jeff Tantsura 1619 Apstra 1621 Email: jefftant.ietf@gmail.com