idnits 2.17.1 draft-ietf-ospf-sr-yang-09.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 : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 124 has weird spacing: '...r-bound uin...' == Line 125 has weird spacing: '...r-bound uin...' == Line 136 has weird spacing: '...roup-id uin...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (August 7, 2019) is 1724 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'I-D.ietf-netmod-routing-cfg' is mentioned on line 984, but not defined == Unused Reference: 'I-D.ietf-ospf-ospfv3-segment-routing-extensions' is defined on line 1005, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-ospf-segment-routing-extensions' is defined on line 1010, but no explicit reference was found in the text == Unused Reference: 'RFC2328' is defined on line 1031, but no explicit reference was found in the text == Unused Reference: 'RFC4750' is defined on line 1035, but no explicit reference was found in the text == Unused Reference: 'RFC5340' is defined on line 1040, but no explicit reference was found in the text == Unused Reference: 'RFC5643' is defined on line 1044, but no explicit reference was found in the text == Unused Reference: 'RFC5838' is defined on line 1048, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1063, but no explicit reference was found in the text == Unused Reference: 'RFC8022' is defined on line 1073, but no explicit reference was found in the text == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-25 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-13 ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) -- Obsolete informational reference (is this intentional?): RFC 8022 (Obsoleted by RFC 8349) Summary: 2 errors (**), 0 flaws (~~), 17 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet D. Yeung 3 Internet-Draft Arrcus 4 Intended status: Standards Track Y. Qu 5 Expires: February 8, 2020 Futurewei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 The MITRE Corporation 10 A. Lindem 11 Cisco Systems 12 August 7, 2019 14 YANG Data Model for OSPF SR (Segment Routing) Protocol 15 draft-ietf-ospf-sr-yang-09 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage OSPF Segment Routing. The model is based on YANG 1.1 as 21 defined in RFC 7950 and conforms to the Network Management Datastore 22 Architecture (NDMA) as described in RFC 8342. 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 February 8, 2020. 41 Copyright Notice 43 Copyright (c) 2019 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (https://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 59 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 60 2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 3 61 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 3 62 4. OSPF Segment Routing YANG Module . . . . . . . . . . . . . . 7 63 5. Security Considerations . . . . . . . . . . . . . . . . . . . 21 64 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 65 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 66 7.1. Normative References . . . . . . . . . . . . . . . . . . 21 67 7.2. Informative References . . . . . . . . . . . . . . . . . 23 68 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 24 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 71 1. Overview 73 YANG [RFC6020] [RFC7950] is a data definition language used to define 74 the contents of a conceptual data store that allows networked devices 75 to be managed using NETCONF [RFC6241]. YANG is proving relevant 76 beyond its initial confines, as bindings to other interfaces (e.g., 77 ReST) and encodings other than XML (e.g., JSON) are being defined. 78 Furthermore, YANG data models can be used as the basis for 79 implementation of other interfaces, such as CLI and programmatic 80 APIs. 82 This document defines a YANG data model that can be used to configure 83 and manage OSPF Segment Routing and it is an augmentation to the OSPF 84 YANG data model. 86 The YANG modules in this document conform to the Network Management 87 Datastore Architecture (NMDA) [RFC8342]. 89 1.1. Requirements Language 91 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 92 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 93 document are to be interpreted as described in [RFC2119]. 95 2. Tree Diagrams 97 This document uses the graphical representation of data models 98 defined in [RFC8340]. 100 3. OSPF Segment Routing 102 This document defines a model for OSPF Segment Routing feature [I-D.i 103 etf-ospf-segment-routing-extensions][I-D.ietf-ospf-ospfv3-segment-rou 104 ting-extensions]. It is an augmentation of the OSPF base model. 106 The OSPF SR YANG module requires support for the base segment routing 107 module [I-D.ietf-spring-sr-yang], which defines the global segment 108 routing configuration independent of any specific routing protocol 109 configuration, and support of OSPF base model[I-D.ietf-ospf-yang] 110 which defines basic OSPF configuration and state. 112 module: ietf-ospf-sr 113 module: ietf-ospf-sr 114 augment /rt:routing/rt:control-plane-protocols 115 /rt:control-plane-protocol/ospf:ospf: 116 +--rw segment-routing 117 | +--rw enabled? boolean 118 | +--rw bindings 119 | +--rw advertise 120 | | +--rw policies* string 121 | +--rw receive? boolean 122 +--rw protocol-srgb {sr:protocol-srgb}? 123 +--rw srgb* [lower-bound upper-bound] 124 +--rw lower-bound uint32 125 +--rw upper-bound uint32 126 augment /rt:routing/rt:control-plane-protocols 127 /rt:control-plane-protocol/ospf:ospf/ospf:areas 128 /ospf:area/ospf:interfaces/ospf:interface: 129 +--rw segment-routing 130 +--rw adjacency-sid 131 +--rw adj-sids* [value] 132 | +--rw value-type? enumeration 133 | +--rw value uint32 134 | +--rw protected? boolean 135 +--rw advertise-adj-group-sid* [group-id] 136 | +--rw group-id uint32 137 +--rw advertise-protection? enumeration 138 augment /rt:routing/rt:control-plane-protocols 139 /rt:control-plane-protocol/ospf:ospf/ospf:areas 140 /ospf:area/ospf:interfaces/ospf:interface/ospf:fast-reroute: 141 +--rw ti-lfa {ti-lfa}? 142 +--rw enable? boolean 144 augment /rt:routing/rt:control-plane-protocols 145 /rt:control-plane-protocol/ospf:ospf/ospf:areas 146 /ospf:area/ospf:interfaces/ospf:interface/ospf:database 147 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 148 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 149 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 150 /ospf:extended-prefix-tlv: 151 +--ro perfix-sid-sub-tlvs 152 +--ro prefix-sid-sub-tlv* 153 +--ro flags? bits 154 +--ro mt-id? uint8 155 +--ro algorithm? uint8 156 +--ro sid? uint32 157 augment /rt:routing/rt:control-plane-protocols 158 /rt:control-plane-protocol/ospf:ospf/ospf:areas 159 /ospf:area/ospf:database/ospf:area-scope-lsa-type 160 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 161 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 162 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 163 +--ro perfix-sid-sub-tlvs 164 +--ro prefix-sid-sub-tlv* 165 +--ro flags? bits 166 +--ro mt-id? uint8 167 +--ro algorithm? uint8 168 +--ro sid? uint32 169 augment /rt:routing/rt:control-plane-protocols 170 /rt:control-plane-protocol/ospf:ospf/ospf:database 171 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 172 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 173 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 174 +--ro perfix-sid-sub-tlvs 175 +--ro prefix-sid-sub-tlv* 176 +--ro flags? bits 177 +--ro mt-id? uint8 178 +--ro algorithm? uint8 179 +--ro sid? uint32 180 augment /rt:routing/rt:control-plane-protocols 181 /rt:control-plane-protocol/ospf:ospf/ospf:areas 182 /ospf:area/ospf:database/ospf:area-scope-lsa-type 183 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 184 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 185 /ospf:extended-link-opaque/ospf:extended-link-tlv: 186 +--ro adj-sid-sub-tlvs 187 | +--ro adj-sid-sub-tlv* 188 | +--ro flags? bits 189 | +--ro mt-id? uint8 190 | +--ro weight? uint8 191 | +--ro sid? uint32 192 +--ro lan-adj-sid-sub-tlvs 193 +--ro lan-adj-sid-sub-tlv* 194 +--ro flags? bits 195 +--ro mt-id? uint8 196 +--ro weight? uint8 197 +--ro neighbor-router-id? yang:dotted-quad 198 +--ro sid? uint32 199 augment /rt:routing/rt:control-plane-protocols 200 /rt:control-plane-protocol/ospf:ospf/ospf:areas 201 /ospf:area/ospf:interfaces/ospf:interface/ospf:database 202 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 203 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 204 /ospf:body/ospf:opaque: 205 +--ro extended-prefix-range-tlvs 206 | +--ro extended-prefix-range-tlv* 207 | +--ro prefix-length? uint8 208 | +--ro af? uint8 209 | +--ro range-size? uint16 210 | +--ro flags? bits 211 | +--ro prefix? inet:ip-prefix 212 | +--ro perfix-sid-sub-tlvs 213 | | +--ro prefix-sid-sub-tlv* 214 | | +--ro flags? bits 215 | | +--ro mt-id? uint8 216 | | +--ro algorithm? uint8 217 | | +--ro sid? uint32 218 | +--ro unknown-tlvs 219 | +--ro unknown-tlv* 220 | +--ro type? uint16 221 | +--ro length? uint16 222 | +--ro value? yang:hex-string 223 +--ro sr-algorithm-tlv 224 | +--ro sr-algorithm* uint8 225 +--ro sid-range-tlvs 226 | +--ro sid-range-tlv* 227 | +--ro range-size? uint24 228 | +--ro sid-sub-tlv 229 | +--ro sid? uint32 230 +--ro local-block-tlvs 231 | +--ro local-block-tlv* 232 | +--ro range-size? uint24 233 | +--ro sid-sub-tlv 234 | +--ro sid? uint32 235 +--ro srms-preference-tlv 236 +--ro preference? uint8 237 augment /rt:routing/rt:control-plane-protocols 238 /rt:control-plane-protocol/ospf:ospf/ospf:areas 239 /ospf:area/ospf:database/ospf:area-scope-lsa-type 240 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 241 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 242 +--ro extended-prefix-range-tlvs 243 | +--ro extended-prefix-range-tlv* 244 | +--ro prefix-length? uint8 245 | +--ro af? uint8 246 | +--ro range-size? uint16 247 | +--ro flags? bits 248 | +--ro prefix? inet:ip-prefix 249 | +--ro perfix-sid-sub-tlvs 250 | | +--ro prefix-sid-sub-tlv* 251 | | +--ro flags? bits 252 | | +--ro mt-id? uint8 253 | | +--ro algorithm? uint8 254 | | +--ro sid? uint32 255 | +--ro unknown-tlvs 256 | +--ro unknown-tlv* 257 | +--ro type? uint16 258 | +--ro length? uint16 259 | +--ro value? yang:hex-string 260 +--ro sr-algorithm-tlv 261 | +--ro sr-algorithm* uint8 262 +--ro sid-range-tlvs 263 | +--ro sid-range-tlv* 264 | +--ro range-size? uint24 265 | +--ro sid-sub-tlv 266 | +--ro sid? uint32 267 +--ro local-block-tlvs 268 | +--ro local-block-tlv* 269 | +--ro range-size? uint24 270 | +--ro sid-sub-tlv 271 | +--ro sid? uint32 272 +--ro srms-preference-tlv 273 +--ro preference? uint8 274 augment /rt:routing/rt:control-plane-protocols 275 /rt:control-plane-protocol/ospf:ospf/ospf:database 276 /ospf:as-scope-lsa-type/ospf:as-scope-lsas 277 /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 278 /ospf:body/ospf:opaque: 279 +--ro extended-prefix-range-tlvs 280 | +--ro extended-prefix-range-tlv* 281 | +--ro prefix-length? uint8 282 | +--ro af? uint8 283 | +--ro range-size? uint16 284 | +--ro flags? bits 285 | +--ro prefix? inet:ip-prefix 286 | +--ro perfix-sid-sub-tlvs 287 | | +--ro prefix-sid-sub-tlv* 288 | | +--ro flags? bits 289 | | +--ro mt-id? uint8 290 | | +--ro algorithm? uint8 291 | | +--ro sid? uint32 292 | +--ro unknown-tlvs 293 | +--ro unknown-tlv* 294 | +--ro type? uint16 295 | +--ro length? uint16 296 | +--ro value? yang:hex-string 297 +--ro sr-algorithm-tlv 298 | +--ro sr-algorithm* uint8 299 +--ro sid-range-tlvs 300 | +--ro sid-range-tlv* 301 | +--ro range-size? uint24 302 | +--ro sid-sub-tlv 303 | +--ro sid? uint32 304 +--ro local-block-tlvs 305 | +--ro local-block-tlv* 306 | +--ro range-size? uint24 307 | +--ro sid-sub-tlv 308 | +--ro sid? uint32 309 +--ro srms-preference-tlv 310 +--ro preference? uint8 312 4. OSPF Segment Routing YANG Module 314 file "ietf-ospf-sr@2019-08-07.yang" 315 module ietf-ospf-sr { 316 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; 318 prefix ospf-sr; 320 import ietf-inet-types { 321 prefix "inet"; 322 } 324 import ietf-yang-types { 325 prefix "yang"; 326 } 328 import ietf-routing { 329 prefix "rt"; 330 } 331 import ietf-segment-routing-common { 332 prefix "sr-cmn"; 333 } 334 import ietf-segment-routing { 335 prefix "sr"; 337 } 338 import ietf-ospf { 339 prefix "ospf"; 340 } 342 organization 343 "IETF LSR - Link State Routing Working Group"; 345 contact 346 "WG Web: 347 WG List: 349 Editor: Derek Yeung 350 351 Author: Derek Yeung 352 353 Author: Yingzhen Qu 354 355 Author: Acee Lindem 356 357 Author: Jeffrey Zhang 358 359 Author: Ing-Wher Chen 360 361 Author: Greg Hankins 362 "; 364 description 365 "This YANG module defines the generic configuration 366 and operational state for OSPF Segment Routing, which is 367 common across all of the vendor implementations. It is 368 intended that the module will be extended by vendors to 369 define vendor-specific OSPF Segment Routing configuration 370 and operational parameters and policies. 372 Copyright (c) 2017 IETF Trust and the persons identified as 373 authors of the code. All rights reserved. 375 Redistribution and use in source and binary forms, with or 376 without modification, is permitted pursuant to, and subject 377 to the license terms contained in, the Simplified BSD License 378 set forth in Section 4.c of the IETF Trust's Legal Provisions 379 Relating to IETF Documents 380 (http://trustee.ietf.org/license-info). 382 This version of this YANG module is part of RFC XXXX; 383 see the RFC itself for full legal notices."; 385 reference "RFC XXXX"; 387 revision 2019-08-07 { 388 description 389 ""; 390 reference 391 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 392 } 394 revision 2019-07-07 { 395 description 396 ""; 397 reference 398 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 399 } 401 revision 2019-03-05 { 402 description 403 ""; 404 reference 405 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 406 } 408 revision 2018-06-25 { 409 description 410 ""; 411 reference 412 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 413 } 415 revision 2018-03-03 { 416 description 417 "* Remove OSPF instance."; 418 reference 419 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 420 } 422 revision 2017-12-28 { 423 description 424 ""; 425 reference 426 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 427 } 429 revision 2017-07-02 { 430 description 431 "* Implement NMDA model. 432 * Add local-block-tlvs and srms-preference-tlv. 434 * Remove sid-binding-sub-tlvs."; 435 reference 436 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 437 } 439 revision 2017-03-12 { 440 description 441 "* Add p-flag in adj-sid sub-tlv."; 442 reference 443 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 444 } 445 revision 2016-10-31 { 446 description 447 "* Update authors information. 448 * Add import of ietf-segment-routing-common module."; 449 reference 450 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 451 } 453 revision 2016-07-07 { 454 description 455 "* Change routing-protocol to control-plane-protocol."; 456 reference 457 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 458 } 460 revision 2016-03-20 { 461 description 462 "* Remove routing-instance."; 463 reference 464 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 465 } 467 revision 2015-10-19 { 468 description 469 "* Add per-protocol SRGB support. 470 * Editorial changes."; 471 reference 472 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 473 } 475 revision 2015-09-02 { 476 description 477 "* Author list update. 478 * Editorial changes."; 479 reference 480 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 481 } 482 revision 2015-07-06 { 483 description 484 "Initial revision."; 485 reference 486 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 487 } 489 feature ti-lfa { 490 description 491 "Topology-Independent Loop-Free Alternate (TI-LFA) 492 computation using segment routing."; 493 } 495 typedef uint24 { 496 type uint32 { 497 range "0 .. 16777215"; 498 } 499 description 500 "24-bit unsigned integer."; 501 } 503 /* Groupings */ 504 grouping sid-sub-tlv { 505 description "SID/Label sub-TLV grouping."; 506 container sid-sub-tlv { 507 description 508 "Used to advertise the SID/Label associated with a 509 prefix or adjacency."; 510 leaf sid { 511 type uint32; 512 description 513 "Segment Identifier (SID) - A 20 bit label or 514 32 bit SID."; 515 } 516 } 517 } 519 grouping prefix-sid-sub-tlvs { 520 description "Prefix Segment ID (SID) sub-TLVs."; 521 container perfix-sid-sub-tlvs{ 522 description "Prefix SID sub-TLV."; 523 list prefix-sid-sub-tlv { 524 description "Prefix SID sub-TLV."; 525 leaf flags { 526 type bits { 527 bit NP { 528 position 1; 529 description 530 "No-PHP flag."; 531 } 532 bit M { 533 position 2; 534 description 535 "Mapping server flag."; 536 } 537 bit E { 538 position 3; 539 description 540 "Explicit-NULL flag."; 541 } 542 bit V { 543 position 4; 544 description 545 "Value/Index flag."; 546 } 547 bit L { 548 position 5; 549 description 550 "Local flag."; 551 } 552 } 553 description "Segment Identifier (SID) Flags."; 554 } 555 leaf mt-id { 556 type uint8; 557 description "Multi-topology ID."; 558 } 559 leaf algorithm { 560 type uint8; 561 description 562 "The algorithm associated with the prefix-SID."; 563 } 564 leaf sid { 565 type uint32; 566 description "An index or label."; 567 } 568 } 569 } 570 } 572 grouping extended-prefix-range-tlvs { 573 description "Extended prefix range TLV grouping."; 575 container extended-prefix-range-tlvs { 576 description "The list of range of prefixes."; 577 list extended-prefix-range-tlv { //type=2? 578 description "The range of prefixes."; 579 leaf prefix-length { 580 type uint8; 581 description "Length of prefix in bits."; 582 } 583 leaf af { 584 type uint8; 585 description "Address family for the prefix."; 586 } 587 leaf range-size { 588 type uint16; 589 description "The number of prefixes covered by the 590 advertisement."; 591 } 592 leaf flags { 593 type bits { 594 bit IA { 595 position 0; 596 description 597 "Inter-Area flag."; 598 } 599 } 600 description "Flags."; 601 } 602 leaf prefix { 603 type inet:ip-prefix; 604 description "Address prefix."; 605 } 606 uses prefix-sid-sub-tlvs; 607 uses ospf:unknown-tlvs; 608 } 609 } 610 } 612 grouping sr-algorithm-tlv { 613 description "SR algorithm TLV grouping."; 614 container sr-algorithm-tlv { 615 description "All SR algorithm TLVs."; 616 leaf-list sr-algorithm { 617 type uint8; 618 description 619 "The Segment Routing (SR) algorithms that the router is 620 currently using."; 621 } 622 } 623 } 625 grouping sid-range-tlvs { 626 description "SID Range TLV grouping."; 627 container sid-range-tlvs { 628 description "List of SID range TLVs."; 629 list sid-range-tlv { 630 description "SID range TLV."; 631 leaf range-size { 632 type uint24; 633 description "The SID range."; 634 } 635 uses sid-sub-tlv; 636 } 637 } 638 } 640 grouping local-block-tlvs { 641 description "The SR local block TLV contains the 642 range of labels reserved for local SIDs."; 643 container local-block-tlvs { 644 description "List of SRLB TLVs."; 645 list local-block-tlv { 646 description "SRLB TLV."; 647 leaf range-size { 648 type uint24; 649 description "The SID range."; 650 } 651 uses sid-sub-tlv; 652 } 653 } 654 } 656 grouping srms-preference-tlv { 657 description "The SRMS preference TLV is used to advertise 658 a preference associated with the node that acts 659 as an SR Mapping Server."; 660 container srms-preference-tlv { 661 description "SRMS Preference TLV."; 662 leaf preference { 663 type uint8 { 664 range "0 .. 255"; 665 } 666 description "SRMS preference TLV, vlaue from 0 to 255."; 667 } 668 } 669 } 671 /* Configuration */ 672 augment "/rt:routing/rt:control-plane-protocols" 673 + "/rt:control-plane-protocol/ospf:ospf" { 675 when "../rt:type = 'ospf:ospfv2' or " 676 + "../rt:type = 'ospf:ospfv3'" { 677 description 678 "This augments the OSPF routing protocol when used."; 679 } 680 description 681 "This augments the OSPF protocol configuration 682 with segment routing."; 683 uses sr:sr-controlplane; 684 container protocol-srgb { 685 if-feature sr:protocol-srgb; 686 uses sr-cmn:srgb; 687 description 688 "Per-protocol SRGB."; 689 } 690 } 692 augment "/rt:routing/rt:control-plane-protocols/" 693 + "rt:control-plane-protocol/ospf:ospf/" 694 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 695 when "../../../../../rt:type = 'ospf:ospfv2' or " 696 + "../../../../../rt:type = 'ospf:ospfv3'" { 697 description 698 "This augments the OSPF interface configuration 699 when used."; 700 } 701 description 702 "This augments the OSPF protocol interface 703 configuration with segment routing."; 705 uses sr:igp-interface; 706 } 708 augment "/rt:routing/rt:control-plane-protocols/" 709 + "rt:control-plane-protocol/ospf:ospf/" 710 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 711 + "ospf:fast-reroute" { 712 when "../../../../../../rt:type = 'ospf:ospfv2' or " 713 + "../../../../../../rt:type = 'ospf:ospfv3'" { 714 description 715 "This augments the OSPF routing protocol when used."; 716 } 717 description 718 "This augments the OSPF protocol IP-FRR with TI-LFA."; 720 container ti-lfa { 721 if-feature ti-lfa; 722 leaf enable { 723 type boolean; 724 description 725 "Enables TI-LFA computation."; 726 } 727 description 728 "Topology Independent Loop Free Alternate 729 (TI-LFA) support."; 730 } 731 } 733 /* Database */ 734 augment "/rt:routing/" 735 + "rt:control-plane-protocols/rt:control-plane-protocol/" 736 + "ospf:ospf/ospf:areas/ospf:area/" 737 + "ospf:interfaces/ospf:interface/ospf:database/" 738 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 739 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 740 + "ospf:ospfv2/ospf:body/ospf:opaque/" 741 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 742 when "../../../../../../../../../../../../../../" 743 + "rt:type = 'ospf:ospfv2'" { 744 description 745 "This augmentation is only valid for OSPFv2."; 746 } 747 description 748 "SR specific TLVs for OSPFv2 extended prefix TLV 749 in type 9 opaque LSA."; 750 uses prefix-sid-sub-tlvs; 751 } 753 augment "/rt:routing/" 754 + "rt:control-plane-protocols/rt:control-plane-protocol/" 755 + "ospf:ospf/ospf:areas/" 756 + "ospf:area/ospf:database/" 757 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 758 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 759 + "ospf:ospfv2/ospf:body/ospf:opaque/" 760 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 761 when "../../../../../../../../../../../../" 762 + "rt:type = 'ospf:ospfv2'" { 763 description 764 "This augmentation is only valid for OSPFv2."; 765 } 766 description 767 "SR specific TLVs for OSPFv2 extended prefix TLV 768 in type 10 opaque LSA."; 769 uses prefix-sid-sub-tlvs; 770 } 771 augment "/rt:routing/" 772 + "rt:control-plane-protocols/rt:control-plane-protocol/" 773 + "ospf:ospf/ospf:database/" 774 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 775 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 776 + "ospf:ospfv2/ospf:body/ospf:opaque/" 777 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 778 when "../../../../../../../../../../" 779 + "rt:type = 'ospf:ospfv2'" { 780 description 781 "This augmentation is only valid for OSPFv2."; 782 } 783 description 784 "SR specific TLVs for OSPFv2 extended prefix TLV 785 in type 11 opaque LSA."; 786 uses prefix-sid-sub-tlvs; 787 } 789 augment "/rt:routing/" 790 + "rt:control-plane-protocols/rt:control-plane-protocol/" 791 + "ospf:ospf/ospf:areas/" 792 + "ospf:area/ospf:database/" 793 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 794 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 795 + "ospf:ospfv2/ospf:body/ospf:opaque/" 796 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 797 when "../../../../../../../../../../../../" 798 + "rt:type = 'ospf:ospfv2'" { 799 description 800 "This augmentation is only valid for OSPFv2."; 801 } 802 description 803 "SR specific TLVs for OSPFv2 extended link TLV 804 in type 10 opaque LSA."; 806 container adj-sid-sub-tlvs { 807 description "Adjacency SID optional sub-TLVs."; 808 list adj-sid-sub-tlv { 809 description "List of Adjacency SID sub-TLVs."; 810 leaf flags { 811 type bits { 812 bit B { 813 position 0; 814 description 815 "Backup flag."; 816 } 817 bit V { 818 position 1; 819 description 820 "Value/Index flag."; 821 } 822 bit L { 823 position 2; 824 description 825 "Local/Global flag."; 826 } 827 bit G { 828 position 3; 829 description 830 "Group flag."; 831 } 832 bit P { 833 position 4; 834 description 835 "Persistent flag."; 836 } 837 } 838 description "Flags."; 839 } 840 leaf mt-id { 841 type uint8; 842 description "Multi-topology ID."; 843 } 844 leaf weight { 845 type uint8; 846 description "Weight used for load-balancing."; 847 } 848 leaf sid { 849 type uint32; 850 description "Segment Identifier (SID) index/label."; 851 } 852 } 853 } 855 container lan-adj-sid-sub-tlvs { 856 description "LAN Adjacency SID optional sub-TLVs."; 857 list lan-adj-sid-sub-tlv { 858 description "List of LAN adjacency SID sub-TLVs."; 859 leaf flags { 860 type bits { 861 bit B { 862 position 0; 863 description 864 "Backup flag."; 865 } 866 bit V { 867 position 1; 868 description 869 "Value/Index flag."; 870 } 871 bit L { 872 position 2; 873 description 874 "Local/Global flag."; 875 } 876 bit G { 877 position 3; 878 description 879 "Group flag."; 880 } 881 bit P { 882 position 4; 883 description 884 "Persistent flag."; 885 } 886 } 887 description "Flags."; 888 } 889 leaf mt-id { 890 type uint8; 891 description "Multi-topology ID."; 892 } 893 leaf weight { 894 type uint8; 895 description "Weight used for load-balancing."; 896 } 897 leaf neighbor-router-id { 898 type yang:dotted-quad; 899 description "Neighbor router ID."; 900 } 901 leaf sid { 902 type uint32; 903 description "Segment Identifier (SID) index/label."; 904 } 905 } 906 } 907 } 909 augment "/rt:routing/" 910 + "rt:control-plane-protocols/rt:control-plane-protocol/" 911 + "ospf:ospf/ospf:areas/ospf:area/" 912 + "ospf:interfaces/ospf:interface/ospf:database/" 913 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 914 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 915 + "ospf:ospfv2/ospf:body/ospf:opaque" { 916 when "../../../../../../../../../../../../" 917 + "rt:type = 'ospf:ospfv2'" { 918 description 919 "This augmentation is only valid for OSPFv2."; 920 } 922 description 923 "SR specific TLVs for OSPFv2 type 9 opaque LSA."; 925 uses extended-prefix-range-tlvs; 926 uses sr-algorithm-tlv; 927 uses sid-range-tlvs; 928 uses local-block-tlvs; 929 uses srms-preference-tlv; 930 } 932 augment "/rt:routing/" 933 + "rt:control-plane-protocols/rt:control-plane-protocol/" 934 + "ospf:ospf/ospf:areas/" 935 + "ospf:area/ospf:database/" 936 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 937 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 938 + "ospf:ospfv2/ospf:body/ospf:opaque" { 939 when "../../../../../../../../../../" 940 + "rt:type = 'ospf:ospfv2'" { 941 description 942 "This augmentation is only valid for OSPFv2."; 943 } 945 description 946 "SR specific TLVs for OSPFv2 type 10 opaque LSA."; 948 uses extended-prefix-range-tlvs; 949 uses sr-algorithm-tlv; 950 uses sid-range-tlvs; 951 uses local-block-tlvs; 952 uses srms-preference-tlv; 953 } 955 augment "/rt:routing/" 956 + "rt:control-plane-protocols/rt:control-plane-protocol/" 957 + "ospf:ospf/ospf:database/" 958 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 959 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 960 + "ospf:ospfv2/ospf:body/ospf:opaque" { 961 when "../../../../../../../../" 962 + "rt:type = 'ospf:ospfv2'" { 964 description 965 "This augmentation is only valid for OSPFv2."; 966 } 967 description 968 "SR specific TLVs for OSPFv2 type 11 opaque LSA."; 970 uses extended-prefix-range-tlvs; 971 uses sr-algorithm-tlv; 972 uses sid-range-tlvs; 973 uses local-block-tlvs; 974 uses srms-preference-tlv; 975 } 976 } 977 979 5. Security Considerations 981 The data model defined does not create any security implications. 983 This draft does not change any underlying security issues inherent in 984 [I-D.ietf-netmod-routing-cfg]. 986 6. Acknowledgements 988 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 989 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 990 Alan Davey for their thorough reviews and helpful comments. 992 This document was produced using Marshall Rose's xml2rfc tool. 994 Author affiliation with The MITRE Corporation is provided for 995 identification purposes only, and is not intended to convey or imply 996 MITRE's concurrence with, or support for, the positions, opinions or 997 viewpoints expressed. MITRE has approved this document for Public 998 Release, Distribution Unlimited, with Public Release Case Number 999 18-3281. 1001 7. References 1003 7.1. Normative References 1005 [I-D.ietf-ospf-ospfv3-segment-routing-extensions] 1006 Psenak, P. and S. Previdi, "OSPFv3 Extensions for Segment 1007 Routing", draft-ietf-ospf-ospfv3-segment-routing- 1008 extensions-23 (work in progress), January 2019. 1010 [I-D.ietf-ospf-segment-routing-extensions] 1011 Psenak, P., Previdi, S., Filsfils, C., Gredler, H., 1012 Shakir, R., Henderickx, W., and J. Tantsura, "OSPF 1013 Extensions for Segment Routing", draft-ietf-ospf-segment- 1014 routing-extensions-27 (work in progress), December 2018. 1016 [I-D.ietf-ospf-yang] 1017 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1018 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 1019 yang-25 (work in progress), August 2019. 1021 [I-D.ietf-spring-sr-yang] 1022 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 1023 Tantsura, "YANG Data Model for Segment Routing", draft- 1024 ietf-spring-sr-yang-13 (work in progress), July 2019. 1026 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1027 Requirement Levels", BCP 14, RFC 2119, 1028 DOI 10.17487/RFC2119, March 1997, 1029 . 1031 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 1032 DOI 10.17487/RFC2328, April 1998, 1033 . 1035 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 1036 Coltun, R., and F. Baker, "OSPF Version 2 Management 1037 Information Base", RFC 4750, DOI 10.17487/RFC4750, 1038 December 2006, . 1040 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 1041 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 1042 . 1044 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 1045 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 1046 2009, . 1048 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 1049 R. Aggarwal, "Support of Address Families in OSPFv3", 1050 RFC 5838, DOI 10.17487/RFC5838, April 2010, 1051 . 1053 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1054 the Network Configuration Protocol (NETCONF)", RFC 6020, 1055 DOI 10.17487/RFC6020, October 2010, 1056 . 1058 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1059 and A. Bierman, Ed., "Network Configuration Protocol 1060 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1061 . 1063 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1064 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1065 . 1067 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1068 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1069 . 1071 7.2. Informative References 1073 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1074 Management", RFC 8022, DOI 10.17487/RFC8022, November 1075 2016, . 1077 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1078 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1079 . 1081 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1082 and R. Wilton, "Network Management Datastore Architecture 1083 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1084 . 1086 Appendix A. Contributors' Addreses 1088 Dean Bogdanovic 1089 Volta Networks, Inc. 1091 EMail: dean@voltanet.io 1093 Kiran Koushik Agrahara Sreenivasa 1094 Cisco Systems 1095 12515 Research Blvd, Bldg 4 1096 Austin, TX 78681 1097 USA 1099 EMail: kkoushik@cisco.com 1101 Authors' Addresses 1103 Derek Yeung 1104 Arrcus 1106 EMail: derek@arrcus.com 1108 Yingzhen Qu 1109 Futurewei 1110 2330 Central Expressway 1111 Santa Clara, CA 95050 1112 USA 1114 EMail: yingzhen.qu@futurewei.com 1116 Jeffrey Zhang 1117 Juniper Networks 1118 10 Technology Park Drive 1119 Westford, MA 01886 1120 USA 1122 EMail: zzhang@juniper.net 1124 Ing-Wher Chen 1125 The MITRE Corporation 1127 EMail: ingwherchen@mitre.org 1128 Acee Lindem 1129 Cisco Systems 1130 301 Midenhall Way 1131 Cary, NC 27513 1133 EMail: acee@cisco.com