idnits 2.17.1 draft-ietf-ospf-sr-yang-08.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 123 has weird spacing: '...r-bound uin...' == Line 124 has weird spacing: '...r-bound uin...' == Line 135 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 (July 7, 2019) is 1754 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 973, but not defined == Unused Reference: 'I-D.ietf-ospf-ospfv3-segment-routing-extensions' is defined on line 994, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-ospf-segment-routing-extensions' is defined on line 999, but no explicit reference was found in the text == Unused Reference: 'RFC2328' is defined on line 1020, but no explicit reference was found in the text == Unused Reference: 'RFC4750' is defined on line 1024, but no explicit reference was found in the text == Unused Reference: 'RFC5340' is defined on line 1029, but no explicit reference was found in the text == Unused Reference: 'RFC5643' is defined on line 1033, but no explicit reference was found in the text == Unused Reference: 'RFC5838' is defined on line 1037, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1052, but no explicit reference was found in the text == Unused Reference: 'RFC8022' is defined on line 1062, but no explicit reference was found in the text == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-23 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-12 ** 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: January 8, 2020 Futurewei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 The MITRE Corporation 10 A. Lindem 11 Cisco Systems 12 July 7, 2019 14 YANG Data Model for OSPF SR (Segment Routing) Protocol 15 draft-ietf-ospf-sr-yang-08 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 January 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 augment /rt:routing/rt:control-plane-protocols 114 /rt:control-plane-protocol/ospf:ospf: 115 +--rw segment-routing 116 | +--rw enabled? boolean 117 | +--rw bindings 118 | +--rw advertise 119 | | +--rw policies* string 120 | +--rw receive? boolean 121 +--rw protocol-srgb {sr:protocol-srgb}? 122 +--rw srgb* [lower-bound upper-bound] 123 +--rw lower-bound uint32 124 +--rw upper-bound uint32 125 augment /rt:routing/rt:control-plane-protocols 126 /rt:control-plane-protocol/ospf:ospf 127 /ospf:areas/ospf:area/ospf:interface: 128 +--rw segment-routing 129 +--rw adjacency-sid 130 +--rw adj-sids* [value] 131 | +--rw value-type? enumeration 132 | +--rw value uint32 133 | +--rw protected? boolean 134 +--rw advertise-adj-group-sid* [group-id] 135 | +--rw group-id uint32 136 +--rw advertise-protection? enumeration 137 augment /rt:routing/rt:control-plane-protocols 138 /rt:control-plane-protocol/ospf:ospf 139 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 140 /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 146 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 147 /ospf:database/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-tlvs 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 159 /ospf:areas/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-tlvs/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 171 /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas 172 /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 173 /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs 174 /ospf:extended-prefix-tlv: 175 +--ro perfix-sid-sub-tlvs 176 +--ro prefix-sid-sub-tlv* 177 +--ro flags? bits 178 +--ro mt-id? uint8 179 +--ro algorithm? uint8 180 +--ro sid? uint32 181 augment /rt:routing/rt:control-plane-protocols 182 /rt:control-plane-protocol/ospf:ospf 183 /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type 184 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 185 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 186 /ospf:extended-link-tlvs/ospf:extended-link-tlv: 187 +--ro adj-sid-sub-tlvs 188 | +--ro adj-sid-sub-tlv* 189 | +--ro flags? bits 190 | +--ro mt-id? uint8 191 | +--ro weight? uint8 192 | +--ro sid? uint32 193 +--ro lan-adj-sid-sub-tlvs 194 +--ro lan-adj-sid-sub-tlv* 195 +--ro flags? bits 196 +--ro mt-id? uint8 197 +--ro weight? uint8 198 +--ro neighbor-router-id? yang:dotted-quad 199 +--ro sid? uint32 200 augment /rt:routing/rt:control-plane-protocols 201 /rt:control-plane-protocol/ospf:ospf 202 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 203 /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas 204 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 205 /ospf:body/ospf:opaque: 206 +--ro extended-prefix-range-tlvs 207 | +--ro extended-prefix-range-tlv* 208 | +--ro range-size? uint16 209 | +--ro flags? bits 210 | +--ro prefix? inet:ip-prefix 211 | +--ro perfix-sid-sub-tlvs 212 | | +--ro prefix-sid-sub-tlv* 213 | | +--ro flags? bits 214 | | +--ro mt-id? uint8 215 | | +--ro algorithm? uint8 216 | | +--ro sid? uint32 217 | +--ro unknown-tlvs 218 | +--ro unknown-tlv* 219 | +--ro type? uint16 220 | +--ro length? uint16 221 | +--ro value? yang:hex-string 222 +--ro sr-algorithm-tlv 223 | +--ro sr-algorithm* uint8 224 +--ro sid-range-tlvs 225 | +--ro sid-range-tlv* 226 | +--ro range-size? uint24 227 | +--ro sid-sub-tlv 228 | +--ro sid? uint32 229 +--ro local-block-tlvs 230 | +--ro local-block-tlv* 231 | +--ro range-size? uint24 232 | +--ro sid-sub-tlv 233 | +--ro sid? uint32 234 +--ro srms-preference-tlv 235 +--ro preference? uint8 236 augment /rt:routing/rt:control-plane-protocols 237 /rt:control-plane-protocol/ospf:ospf 238 /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type 239 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 240 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 241 +--ro extended-prefix-range-tlvs 242 | +--ro extended-prefix-range-tlv* 243 | +--ro range-size? uint16 244 | +--ro flags? bits 245 | +--ro prefix? inet:ip-prefix 246 | +--ro perfix-sid-sub-tlvs 247 | | +--ro prefix-sid-sub-tlv* 248 | | +--ro flags? bits 249 | | +--ro mt-id? uint8 250 | | +--ro algorithm? uint8 251 | | +--ro sid? uint32 252 | +--ro unknown-tlvs 253 | +--ro unknown-tlv* 254 | +--ro type? uint16 255 | +--ro length? uint16 256 | +--ro value? yang:hex-string 257 +--ro sr-algorithm-tlv 258 | +--ro sr-algorithm* uint8 259 +--ro sid-range-tlvs 260 | +--ro sid-range-tlv* 261 | +--ro range-size? uint24 262 | +--ro sid-sub-tlv 263 | +--ro sid? uint32 264 +--ro local-block-tlvs 265 | +--ro local-block-tlv* 266 | +--ro range-size? uint24 267 | +--ro sid-sub-tlv 268 | +--ro sid? uint32 269 +--ro srms-preference-tlv 270 +--ro preference? uint8 271 augment /rt:routing/rt:control-plane-protocols 272 /rt:control-plane-protocol/ospf:ospf 273 /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas 274 /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 275 /ospf:body/ospf:opaque: 276 +--ro extended-prefix-range-tlvs 277 | +--ro extended-prefix-range-tlv* 278 | +--ro range-size? uint16 279 | +--ro flags? bits 280 | +--ro prefix? inet:ip-prefix 281 | +--ro perfix-sid-sub-tlvs 282 | | +--ro prefix-sid-sub-tlv* 283 | | +--ro flags? bits 284 | | +--ro mt-id? uint8 285 | | +--ro algorithm? uint8 286 | | +--ro sid? uint32 287 | +--ro unknown-tlvs 288 | +--ro unknown-tlv* 289 | +--ro type? uint16 290 | +--ro length? uint16 291 | +--ro value? yang:hex-string 292 +--ro sr-algorithm-tlv 293 | +--ro sr-algorithm* uint8 294 +--ro sid-range-tlvs 295 | +--ro sid-range-tlv* 296 | +--ro range-size? uint24 297 | +--ro sid-sub-tlv 298 | +--ro sid? uint32 299 +--ro local-block-tlvs 300 | +--ro local-block-tlv* 301 | +--ro range-size? uint24 302 | +--ro sid-sub-tlv 303 | +--ro sid? uint32 304 +--ro srms-preference-tlv 305 +--ro preference? uint8 307 4. OSPF Segment Routing YANG Module 309 file "ietf-ospf-sr@2019-07-07.yang" 310 module ietf-ospf-sr { 311 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; 313 prefix ospf-sr; 315 import ietf-inet-types { 316 prefix "inet"; 317 } 319 import ietf-yang-types { 320 prefix "yang"; 321 } 323 import ietf-routing { 324 prefix "rt"; 325 } 326 import ietf-segment-routing-common { 327 prefix "sr-cmn"; 328 } 329 import ietf-segment-routing { 330 prefix "sr"; 331 } 332 import ietf-ospf { 333 prefix "ospf"; 334 } 335 organization 336 "IETF OSPF - OSPF Working Group"; 338 contact 339 "WG Web: 340 WG List: 342 Editor: Derek Yeung 343 344 Author: Derek Yeung 345 346 Author: Yingzhen Qu 347 348 Author: Acee Lindem 349 350 Author: Jeffrey Zhang 351 352 Author: Ing-Wher Chen 353 354 Author: Greg Hankins 355 "; 357 description 358 "This YANG module defines the generic configuration 359 and operational state for OSPF Segment Routing, which is 360 common across all of the vendor implementations. It is 361 intended that the module will be extended by vendors to 362 define vendor-specific OSPF Segment Routing configuration 363 and operational parameters and policies. 365 Copyright (c) 2017 IETF Trust and the persons identified as 366 authors of the code. All rights reserved. 368 Redistribution and use in source and binary forms, with or 369 without modification, is permitted pursuant to, and subject 370 to the license terms contained in, the Simplified BSD License 371 set forth in Section 4.c of the IETF Trust's Legal Provisions 372 Relating to IETF Documents 373 (http://trustee.ietf.org/license-info). 375 This version of this YANG module is part of RFC XXXX; 376 see the RFC itself for full legal notices."; 378 reference "RFC XXXX"; 380 revision 2019-07-07 { 381 description 382 ""; 384 reference 385 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 386 } 388 revision 2019-03-05 { 389 description 390 ""; 391 reference 392 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 393 } 395 revision 2018-06-25 { 396 description 397 ""; 398 reference 399 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 400 } 402 revision 2018-03-03 { 403 description 404 "* Remove OSPF instance."; 405 reference 406 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 407 } 409 revision 2017-12-28 { 410 description 411 ""; 412 reference 413 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 414 } 416 revision 2017-07-02 { 417 description 418 "* Implement NMDA model. 419 * Add local-block-tlvs and srms-preference-tlv. 420 * Remove sid-binding-sub-tlvs."; 421 reference 422 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 423 } 425 revision 2017-03-12 { 426 description 427 "* Add p-flag in adj-sid sub-tlv."; 428 reference 429 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 430 } 431 revision 2016-10-31 { 432 description 433 "* Update authors information. 434 * Add import of ietf-segment-routing-common module."; 435 reference 436 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 437 } 439 revision 2016-07-07 { 440 description 441 "* Change routing-protocol to control-plane-protocol."; 442 reference 443 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 444 } 446 revision 2016-03-20 { 447 description 448 "* Remove routing-instance."; 449 reference 450 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 451 } 453 revision 2015-10-19 { 454 description 455 "* Add per-protocol SRGB support. 456 * Editorial changes."; 457 reference 458 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 459 } 461 revision 2015-09-02 { 462 description 463 "* Author list update. 464 * Editorial changes."; 465 reference 466 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 467 } 469 revision 2015-07-06 { 470 description 471 "Initial revision."; 472 reference 473 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 474 } 476 feature ti-lfa { 477 description 478 "Topology-Independent Loop-Free Alternate (TI-LFA) 479 computation using segment routing."; 481 } 483 typedef uint24 { 484 type uint32 { 485 range "0 .. 16777215"; 486 } 487 description 488 "24-bit unsigned integer."; 489 } 491 /* Groupings */ 492 grouping sid-sub-tlv { 493 description "SID/Label sub-TLV grouping."; 494 container sid-sub-tlv { 495 description 496 "Used to advertise the SID/Label associated with a 497 prefix or adjacency."; 498 leaf sid { 499 type uint32; 500 description 501 "Segment Identifier (SID) - A 20 bit label or 502 32 bit SID."; 503 } 504 } 505 } 507 grouping prefix-sid-sub-tlvs { 508 description "Prefix Segment ID (SID) sub-TLVs."; 509 container perfix-sid-sub-tlvs{ 510 description "Prefix SID sub-TLV."; 511 list prefix-sid-sub-tlv { 512 description "Prefix SID sub-TLV."; 513 leaf flags { 514 type bits { 515 bit NP { 516 position 1; 517 description 518 "No-PHP flag."; 519 } 520 bit M { 521 position 2; 522 description 523 "Mapping server flag."; 524 } 525 bit E { 526 position 3; 527 description 528 "Explicit-NULL flag."; 530 } 531 bit V { 532 position 4; 533 description 534 "Value/Index flag."; 535 } 536 bit L { 537 position 5; 538 description 539 "Local flag."; 540 } 541 } 542 description "Segment Identifier (SID) Flags."; 543 } 544 leaf mt-id { 545 type uint8; 546 description "Multi-topology ID."; 547 } 548 leaf algorithm { 549 type uint8; 550 description 551 "The algorithm associated with the prefix-SID."; 552 } 553 leaf sid { 554 type uint32; 555 description "An index or label."; 556 } 557 } 558 } 559 } 561 grouping extended-prefix-range-tlvs { 562 description "Extended prefix range TLV grouping."; 564 container extended-prefix-range-tlvs { 565 description "The list of range of prefixes."; 566 list extended-prefix-range-tlv { //type=2? 567 description "The range of prefixes."; 568 leaf prefix-length { 569 type uint8; 570 description "Length of prefix in bits."; 571 } 572 leaf af { 573 type uint8; 574 description "Address family for the prefix."; 575 } 576 leaf range-size { 577 type uint16; 578 description "The number of prefixes covered by the 579 advertisement."; 580 } 581 leaf flags { 582 type bits { 583 bit IA { 584 position 0; 585 description 586 "Inter-Area flag."; 587 } 588 } 589 description "Flags."; 590 } 591 leaf prefix { 592 type inet:ip-prefix; 593 description "Address prefix."; 594 } 595 uses prefix-sid-sub-tlvs; 596 uses ospf:unknown-tlvs; 597 } 598 } 599 } 601 grouping sr-algorithm-tlv { 602 description "SR algorithm TLV grouping."; 603 container sr-algorithm-tlv { 604 description "All SR algorithm TLVs."; 605 leaf-list sr-algorithm { 606 type uint8; 607 description 608 "The Segment Routing (SR) algorithms that the router is 609 currently using."; 610 } 611 } 612 } 614 grouping sid-range-tlvs { 615 description "SID Range TLV grouping."; 616 container sid-range-tlvs { 617 description "List of SID range TLVs."; 618 list sid-range-tlv { 619 description "SID range TLV."; 620 leaf range-size { 621 type uint24; 622 description "The SID range."; 623 } 624 uses sid-sub-tlv; 625 } 627 } 628 } 630 grouping local-block-tlvs { 631 description "The SR local block TLV contains the 632 range of labels reserved for local SIDs."; 633 container local-block-tlvs { 634 description "List of SRLB TLVs."; 635 list local-block-tlv { 636 description "SRLB TLV."; 637 leaf range-size { 638 type uint24; 639 description "The SID range."; 640 } 641 uses sid-sub-tlv; 642 } 643 } 644 } 646 grouping srms-preference-tlv { 647 description "The SRMS preference TLV is used to advertise 648 a preference associated with the node that acts 649 as an SR Mapping Server."; 650 container srms-preference-tlv { 651 description "SRMS Preference TLV."; 652 leaf preference { 653 type uint8 { 654 range "0 .. 255"; 655 } 656 description "SRMS preference TLV, vlaue from 0 to 255."; 657 } 658 } 659 } 661 /* Configuration */ 662 augment "/rt:routing/rt:control-plane-protocols" 663 + "/rt:control-plane-protocol/ospf:ospf" { 664 when "../rt:type = 'ospf:ospfv2' or " 665 + "../rt:type = 'ospf:ospfv3'" { 666 description 667 "This augments the OSPF routing protocol when used."; 668 } 669 description 670 "This augments the OSPF protocol configuration 671 with segment routing."; 672 uses sr:sr-controlplane; 673 container protocol-srgb { 674 if-feature sr:protocol-srgb; 675 uses sr-cmn:srgb; 676 description 677 "Per-protocol SRGB."; 678 } 679 } 681 augment "/rt:routing/rt:control-plane-protocols/" 682 + "rt:control-plane-protocol/ospf:ospf/" 683 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 684 when "../../../../../rt:type = 'ospf:ospfv2' or " 685 + "../../../../../rt:type = 'ospf:ospfv3'" { 686 description 687 "This augments the OSPF interface configuration 688 when used."; 689 } 690 description 691 "This augments the OSPF protocol interface 692 configuration with segment routing."; 694 uses sr:igp-interface; 695 } 697 augment "/rt:routing/rt:control-plane-protocols/" 698 + "rt:control-plane-protocol/ospf:ospf/" 699 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 700 + "ospf:fast-reroute" { 701 when "../../../../../../rt:type = 'ospf:ospfv2' or " 702 + "../../../../../../rt:type = 'ospf:ospfv3'" { 703 description 704 "This augments the OSPF routing protocol when used."; 705 } 706 description 707 "This augments the OSPF protocol IP-FRR with TI-LFA."; 709 container ti-lfa { 710 if-feature ti-lfa; 711 leaf enable { 712 type boolean; 713 description 714 "Enables TI-LFA computation."; 715 } 716 description 717 "Topology Independent Loop Free Alternate 718 (TI-LFA) support."; 719 } 720 } 722 /* Database */ 723 augment "/rt:routing/" 724 + "rt:control-plane-protocols/rt:control-plane-protocol/" 725 + "ospf:ospf/ospf:areas/ospf:area/" 726 + "ospf:interfaces/ospf:interface/ospf:database/" 727 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 728 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 729 + "ospf:ospfv2/ospf:body/ospf:opaque/" 730 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 731 when "../../../../../../../../../../../../../../" 732 + "rt:type = 'ospf:ospfv2'" { 733 description 734 "This augmentation is only valid for OSPFv2."; 735 } 736 description 737 "SR specific TLVs for OSPFv2 extended prefix TLV 738 in type 9 opaque LSA."; 739 uses prefix-sid-sub-tlvs; 740 } 742 augment "/rt:routing/" 743 + "rt:control-plane-protocols/rt:control-plane-protocol/" 744 + "ospf:ospf/ospf:areas/" 745 + "ospf:area/ospf:database/" 746 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 747 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 748 + "ospf:ospfv2/ospf:body/ospf:opaque/" 749 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 750 when "../../../../../../../../../../../../" 751 + "rt:type = 'ospf:ospfv2'" { 752 description 753 "This augmentation is only valid for OSPFv2."; 754 } 755 description 756 "SR specific TLVs for OSPFv2 extended prefix TLV 757 in type 10 opaque LSA."; 758 uses prefix-sid-sub-tlvs; 759 } 761 augment "/rt:routing/" 762 + "rt:control-plane-protocols/rt:control-plane-protocol/" 763 + "ospf:ospf/ospf:database/" 764 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 765 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 766 + "ospf:ospfv2/ospf:body/ospf:opaque/" 767 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 768 when "../../../../../../../../../../" 769 + "rt:type = 'ospf:ospfv2'" { 770 description 771 "This augmentation is only valid for OSPFv2."; 772 } 773 description 774 "SR specific TLVs for OSPFv2 extended prefix TLV 775 in type 11 opaque LSA."; 776 uses prefix-sid-sub-tlvs; 777 } 779 augment "/rt:routing/" 780 + "rt:control-plane-protocols/rt:control-plane-protocol/" 781 + "ospf:ospf/ospf:areas/" 782 + "ospf:area/ospf:database/" 783 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 784 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 785 + "ospf:ospfv2/ospf:body/ospf:opaque/" 786 + "ospf:extended-link-tlvs/ospf:extended-link-tlv" { 787 when "../../../../../../../../../../../../" 788 + "rt:type = 'ospf:ospfv2'" { 789 description 790 "This augmentation is only valid for OSPFv2."; 791 } 792 description 793 "SR specific TLVs for OSPFv2 extended link TLV 794 in type 10 opaque LSA."; 796 container adj-sid-sub-tlvs { 797 description "Adjacency SID optional sub-TLVs."; 798 list adj-sid-sub-tlv { 799 description "List of Adjacency SID sub-TLVs."; 800 leaf flags { 801 type bits { 802 bit B { 803 position 0; 804 description 805 "Backup flag."; 806 } 807 bit V { 808 position 1; 809 description 810 "Value/Index flag."; 811 } 812 bit L { 813 position 2; 814 description 815 "Local/Global flag."; 816 } 817 bit G { 818 position 3; 819 description 820 "Group flag."; 821 } 822 bit P { 823 position 4; 824 description 825 "Persistent flag."; 826 } 827 } 828 description "Flags."; 829 } 830 leaf mt-id { 831 type uint8; 832 description "Multi-topology ID."; 833 } 834 leaf weight { 835 type uint8; 836 description "Weight used for load-balancing."; 837 } 838 leaf sid { 839 type uint32; 840 description "Segment Identifier (SID) index/label."; 841 } 842 } 843 } 845 container lan-adj-sid-sub-tlvs { 846 description "LAN Adjacency SID optional sub-TLVs."; 847 list lan-adj-sid-sub-tlv { 848 description "List of LAN adjacency SID sub-TLVs."; 849 leaf flags { 850 type bits { 851 bit B { 852 position 0; 853 description 854 "Backup flag."; 855 } 856 bit V { 857 position 1; 858 description 859 "Value/Index flag."; 860 } 861 bit L { 862 position 2; 863 description 864 "Local/Global flag."; 865 } 866 bit G { 867 position 3; 868 description 869 "Group flag."; 870 } 871 bit P { 872 position 4; 873 description 874 "Persistent flag."; 875 } 876 } 877 description "Flags."; 878 } 879 leaf mt-id { 880 type uint8; 881 description "Multi-topology ID."; 882 } 883 leaf weight { 884 type uint8; 885 description "Weight used for load-balancing."; 886 } 887 leaf neighbor-router-id { 888 type yang:dotted-quad; 889 description "Neighbor router ID."; 890 } 891 leaf sid { 892 type uint32; 893 description "Segment Identifier (SID) index/label."; 894 } 895 } 896 } 897 } 899 augment "/rt:routing/" 900 + "rt:control-plane-protocols/rt:control-plane-protocol/" 901 + "ospf:ospf/ospf:areas/ospf:area/" 902 + "ospf:interfaces/ospf:interface/ospf:database/" 903 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 904 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 905 + "ospf:ospfv2/ospf:body/ospf:opaque" { 906 when "../../../../../../../../../../../../" 907 + "rt:type = 'ospf:ospfv2'" { 908 description 909 "This augmentation is only valid for OSPFv2."; 910 } 912 description 913 "SR specific TLVs for OSPFv2 type 9 opaque LSA."; 915 uses extended-prefix-range-tlvs; 916 uses sr-algorithm-tlv; 917 uses sid-range-tlvs; 918 uses local-block-tlvs; 919 uses srms-preference-tlv; 920 } 922 augment "/rt:routing/" 923 + "rt:control-plane-protocols/rt:control-plane-protocol/" 924 + "ospf:ospf/ospf:areas/" 925 + "ospf:area/ospf:database/" 926 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 927 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 928 + "ospf:ospfv2/ospf:body/ospf:opaque" { 929 when "../../../../../../../../../../" 930 + "rt:type = 'ospf:ospfv2'" { 931 description 932 "This augmentation is only valid for OSPFv2."; 933 } 935 description 936 "SR specific TLVs for OSPFv2 type 10 opaque LSA."; 938 uses extended-prefix-range-tlvs; 939 uses sr-algorithm-tlv; 940 uses sid-range-tlvs; 941 uses local-block-tlvs; 942 uses srms-preference-tlv; 943 } 945 augment "/rt:routing/" 946 + "rt:control-plane-protocols/rt:control-plane-protocol/" 947 + "ospf:ospf/ospf:database/" 948 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 949 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 950 + "ospf:ospfv2/ospf:body/ospf:opaque" { 951 when "../../../../../../../../" 952 + "rt:type = 'ospf:ospfv2'" { 953 description 954 "This augmentation is only valid for OSPFv2."; 955 } 956 description 957 "SR specific TLVs for OSPFv2 type 11 opaque LSA."; 959 uses extended-prefix-range-tlvs; 960 uses sr-algorithm-tlv; 961 uses sid-range-tlvs; 962 uses local-block-tlvs; 963 uses srms-preference-tlv; 964 } 965 } 966 968 5. Security Considerations 970 The data model defined does not create any security implications. 972 This draft does not change any underlying security issues inherent in 973 [I-D.ietf-netmod-routing-cfg]. 975 6. Acknowledgements 977 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 978 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 979 Alan Davey for their thorough reviews and helpful comments. 981 This document was produced using Marshall Rose's xml2rfc tool. 983 Author affiliation with The MITRE Corporation is provided for 984 identification purposes only, and is not intended to convey or imply 985 MITRE's concurrence with, or support for, the positions, opinions or 986 viewpoints expressed. MITRE has approved this document for Public 987 Release, Distribution Unlimited, with Public Release Case Number 988 18-3281. 990 7. References 992 7.1. Normative References 994 [I-D.ietf-ospf-ospfv3-segment-routing-extensions] 995 Psenak, P. and S. Previdi, "OSPFv3 Extensions for Segment 996 Routing", draft-ietf-ospf-ospfv3-segment-routing- 997 extensions-23 (work in progress), January 2019. 999 [I-D.ietf-ospf-segment-routing-extensions] 1000 Psenak, P., Previdi, S., Filsfils, C., Gredler, H., 1001 Shakir, R., Henderickx, W., and J. Tantsura, "OSPF 1002 Extensions for Segment Routing", draft-ietf-ospf-segment- 1003 routing-extensions-27 (work in progress), December 2018. 1005 [I-D.ietf-ospf-yang] 1006 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1007 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 1008 yang-23 (work in progress), July 2019. 1010 [I-D.ietf-spring-sr-yang] 1011 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 1012 Tantsura, "YANG Data Model for Segment Routing", draft- 1013 ietf-spring-sr-yang-12 (work in progress), February 2019. 1015 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1016 Requirement Levels", BCP 14, RFC 2119, 1017 DOI 10.17487/RFC2119, March 1997, 1018 . 1020 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 1021 DOI 10.17487/RFC2328, April 1998, 1022 . 1024 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 1025 Coltun, R., and F. Baker, "OSPF Version 2 Management 1026 Information Base", RFC 4750, DOI 10.17487/RFC4750, 1027 December 2006, . 1029 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 1030 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 1031 . 1033 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 1034 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 1035 2009, . 1037 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 1038 R. Aggarwal, "Support of Address Families in OSPFv3", 1039 RFC 5838, DOI 10.17487/RFC5838, April 2010, 1040 . 1042 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1043 the Network Configuration Protocol (NETCONF)", RFC 6020, 1044 DOI 10.17487/RFC6020, October 2010, 1045 . 1047 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1048 and A. Bierman, Ed., "Network Configuration Protocol 1049 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1050 . 1052 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1053 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1054 . 1056 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1057 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1058 . 1060 7.2. Informative References 1062 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1063 Management", RFC 8022, DOI 10.17487/RFC8022, November 1064 2016, . 1066 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1067 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1068 . 1070 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1071 and R. Wilton, "Network Management Datastore Architecture 1072 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1073 . 1075 Appendix A. Contributors' Addreses 1077 Dean Bogdanovic 1078 Volta Networks, Inc. 1080 EMail: dean@voltanet.io 1082 Kiran Koushik Agrahara Sreenivasa 1083 Cisco Systems 1084 12515 Research Blvd, Bldg 4 1085 Austin, TX 78681 1086 USA 1088 EMail: kkoushik@cisco.com 1090 Authors' Addresses 1092 Derek Yeung 1093 Arrcus 1095 EMail: derek@arrcus.com 1097 Yingzhen Qu 1098 Futurewei 1099 2330 Central Expressway 1100 Santa Clara, CA 95050 1101 USA 1103 EMail: yingzhen.qu@futurewei.com 1105 Jeffrey Zhang 1106 Juniper Networks 1107 10 Technology Park Drive 1108 Westford, MA 01886 1109 USA 1111 EMail: zzhang@juniper.net 1113 Ing-Wher Chen 1114 The MITRE Corporation 1116 EMail: ingwherchen@mitre.org 1117 Acee Lindem 1118 Cisco Systems 1119 301 Midenhall Way 1120 Cary, NC 27513 1122 EMail: acee@cisco.com