idnits 2.17.00 (12 Aug 2021) /tmp/idnits14600/draft-ietf-ospf-sr-yang-04.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 111 has weird spacing: '...r-bound uin...' == Line 112 has weird spacing: '...r-bound uin...' == Line 119 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 (March 3, 2018) is 1540 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Missing Reference: 'I-D.ietf-netmod-routing-cfg' is mentioned on line 919, but not defined == Unused Reference: 'RFC1793' is defined on line 933, but no explicit reference was found in the text == Unused Reference: 'RFC2328' is defined on line 942, but no explicit reference was found in the text == Unused Reference: 'RFC3101' is defined on line 946, but no explicit reference was found in the text == Unused Reference: 'RFC3623' is defined on line 950, but no explicit reference was found in the text == Unused Reference: 'RFC3630' is defined on line 954, but no explicit reference was found in the text == Unused Reference: 'RFC4577' is defined on line 959, but no explicit reference was found in the text == Unused Reference: 'RFC4750' is defined on line 964, but no explicit reference was found in the text == Unused Reference: 'RFC5187' is defined on line 969, but no explicit reference was found in the text == Unused Reference: 'RFC5340' is defined on line 973, but no explicit reference was found in the text == Unused Reference: 'RFC5643' is defined on line 977, but no explicit reference was found in the text == Unused Reference: 'RFC5838' is defined on line 981, but no explicit reference was found in the text == Unused Reference: 'RFC5880' is defined on line 986, but no explicit reference was found in the text == Unused Reference: 'RFC6565' is defined on line 1000, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1005, but no explicit reference was found in the text == Unused Reference: 'RFC8022' is defined on line 1013, but no explicit reference was found in the text ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-09 == Outdated reference: draft-ietf-spring-sr-yang has been published as RFC 9020 Summary: 3 errors (**), 0 flaws (~~), 23 warnings (==), 1 comment (--). 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: Informational Y. Qu 5 Expires: September 4, 2018 Huawei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 Jabil Circuit 10 A. Lindem 11 Cisco Systems 12 March 3, 2018 14 Yang Data Model for OSPF SR (Segment Routing) Protocol 15 draft-ietf-ospf-sr-yang-04 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage OSPF Segment Routing. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at https://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on September 4, 2018. 39 Copyright Notice 41 Copyright (c) 2018 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (https://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 57 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 58 2. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 2 59 3. OSPF Segment Routing Yang Module . . . . . . . . . . . . . . 7 60 4. Security Considerations . . . . . . . . . . . . . . . . . . . 20 61 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 62 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 63 6.1. Normative References . . . . . . . . . . . . . . . . . . 20 64 6.2. Informative References . . . . . . . . . . . . . . . . . 22 65 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 23 66 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 68 1. Overview 70 YANG [RFC6020] [RFC7950] is a data definition language used to 71 define the contents of a conceptual data store that allows networked 72 devices to be managed using NETCONF [RFC6241]. YANG is proving 73 relevant beyond its initial confines, as bindings to other interfaces 74 (e.g., ReST) and encodings other than XML (e.g., JSON) are being 75 defined. Furthermore, YANG data models can be used as the basis for 76 implementation of other interfaces, such as CLI and programmatic 77 APIs. 79 This document defines a YANG data model that can be used to configure 80 and manage OSPF Segment Routing and it is an augmentation to the OSPF 81 YANG data model. 83 1.1. Requirements Language 85 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 86 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 87 document are to be interpreted as described in [RFC2119]. 89 2. OSPF Segment Routing 91 This document defines a model for OSPF Segment Routing feature. It 92 is an augmentation of the OSPF base model. 94 The OSPF SR YANG module requires support for the base segment routing 95 module [I-D.ietf-spring-sr-yang], which defines the global segment 96 routing configuration independent of any specific routing protocol 97 configuration, and support of OSPF base model[I-D.ietf-ospf-yang] 98 which defines basic OSPF configuration and state. 100 module: ietf-ospf-sr 101 augment /rt:routing/rt:control-plane-protocols 102 /rt:control-plane-protocol/ospf:ospf: 103 +--rw segment-routing 104 | +--rw enabled? boolean 105 | +--rw bindings 106 | +--rw advertise 107 | | +--rw policies* string 108 | +--rw receive? boolean 109 +--rw protocol-srgb {sr:protocol-srgb}? 110 +--rw srgb* [lower-bound upper-bound] 111 +--rw lower-bound uint32 112 +--rw upper-bound uint32 113 augment /rt:routing/rt:control-plane-protocols 114 /rt:control-plane-protocol/ospf:ospf 115 /ospf:areas/ospf:area/ospf:interface: 116 +--rw segment-routing 117 +--rw adjacency-sid 118 +--rw advertise-adj-group-sid* [group-id] 119 | +--rw group-id uint32 120 +--rw advertise-protection? enumeration 121 augment /rt:routing/rt:control-plane-protocols 122 /rt:control-plane-protocol/ospf:ospf 123 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 124 /ospf:fast-reroute: 125 +--rw ti-lfa {ti-lfa}? 126 +--rw enable? boolean 127 augment /rt:routing/rt:control-plane-protocols 128 /rt:control-plane-protocol/ospf:ospf 129 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 130 /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas 131 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 132 /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs 133 /ospf:extended-prefix-tlv: 134 +--ro perfix-sid-sub-tlvs 135 +--ro prefix-sid-sub-tlv* 136 +--ro flags? bits 137 +--ro mt-id? uint8 138 +--ro algorithm? uint8 139 +--ro sid? uint32 140 augment /rt:routing/rt:control-plane-protocols 141 /rt:control-plane-protocol/ospf:ospf 142 /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type 143 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 144 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 145 /ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: 146 +--ro perfix-sid-sub-tlvs 147 +--ro prefix-sid-sub-tlv* 148 +--ro flags? bits 149 +--ro mt-id? uint8 150 +--ro algorithm? uint8 151 +--ro sid? uint32 152 augment /rt:routing/rt:control-plane-protocols 153 /rt:control-plane-protocol/ospf:ospf 154 /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas 155 /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 156 /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs 157 /ospf:extended-prefix-tlv: 158 +--ro perfix-sid-sub-tlvs 159 +--ro prefix-sid-sub-tlv* 160 +--ro flags? bits 161 +--ro mt-id? uint8 162 +--ro algorithm? uint8 163 +--ro sid? uint32 164 augment /rt:routing/rt:control-plane-protocols 165 /rt:control-plane-protocol/ospf:ospf 166 /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type 167 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 168 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 169 /ospf:extended-link-tlvs/ospf:extended-link-tlv: 170 +--ro adj-sid-sub-tlvs 171 | +--ro adj-sid-sub-tlv* 172 | +--ro flags? bits 173 | +--ro mt-id? uint8 174 | +--ro weight? uint8 175 | +--ro sid? uint32 176 +--ro lan-adj-sid-sub-tlvs 177 +--ro lan-adj-sid-sub-tlv* 178 +--ro flags? bits 179 +--ro mt-id? uint8 180 +--ro weight? uint8 181 +--ro neighbor-router-id? yang:dotted-quad 182 +--ro sid? uint32 183 augment /rt:routing/rt:control-plane-protocols 184 /rt:control-plane-protocol/ospf:ospf 185 /ospf:areas/ospf:area/ospf:interfaces/ospf:interface 186 /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas 187 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 188 /ospf:body/ospf:opaque: 189 +--ro extended-prefix-range-tlvs 190 | +--ro extended-prefix-range-tlv* 191 | +--ro range-size? uint16 192 | +--ro flags? bits 193 | +--ro prefix? inet:ip-prefix 194 | +--ro perfix-sid-sub-tlvs 195 | | +--ro prefix-sid-sub-tlv* 196 | | +--ro flags? bits 197 | | +--ro mt-id? uint8 198 | | +--ro algorithm? uint8 199 | | +--ro sid? uint32 200 | +--ro unknown-tlvs 201 | +--ro unknown-tlv* 202 | +--ro type? uint16 203 | +--ro length? uint16 204 | +--ro value? yang:hex-string 205 +--ro sr-algorithm-tlv 206 | +--ro sr-algorithm* uint8 207 +--ro sid-range-tlvs 208 | +--ro sid-range-tlv* 209 | +--ro range-size? ospf:uint24 210 | +--ro sid-sub-tlv 211 | +--ro sid? uint32 212 +--ro local-block-tlvs 213 | +--ro local-block-tlv* 214 | +--ro range-size? ospf:uint24 215 | +--ro sid-sub-tlv 216 | +--ro sid? uint32 217 +--ro srms-preference-tlv 218 +--ro preference? uint8 219 augment /rt:routing/rt:control-plane-protocols 220 /rt:control-plane-protocol/ospf:ospf 221 /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type 222 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 223 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 224 +--ro extended-prefix-range-tlvs 225 | +--ro extended-prefix-range-tlv* 226 | +--ro range-size? uint16 227 | +--ro flags? bits 228 | +--ro prefix? inet:ip-prefix 229 | +--ro perfix-sid-sub-tlvs 230 | | +--ro prefix-sid-sub-tlv* 231 | | +--ro flags? bits 232 | | +--ro mt-id? uint8 233 | | +--ro algorithm? uint8 234 | | +--ro sid? uint32 235 | +--ro unknown-tlvs 236 | +--ro unknown-tlv* 237 | +--ro type? uint16 238 | +--ro length? uint16 239 | +--ro value? yang:hex-string 240 +--ro sr-algorithm-tlv 241 | +--ro sr-algorithm* uint8 242 +--ro sid-range-tlvs 243 | +--ro sid-range-tlv* 244 | +--ro range-size? ospf:uint24 245 | +--ro sid-sub-tlv 246 | +--ro sid? uint32 247 +--ro local-block-tlvs 248 | +--ro local-block-tlv* 249 | +--ro range-size? ospf:uint24 250 | +--ro sid-sub-tlv 251 | +--ro sid? uint32 252 +--ro srms-preference-tlv 253 +--ro preference? uint8 254 augment /rt:routing/rt:control-plane-protocols 255 /rt:control-plane-protocol/ospf:ospf 256 /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas 257 /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 258 /ospf:body/ospf:opaque: 259 +--ro extended-prefix-range-tlvs 260 | +--ro extended-prefix-range-tlv* 261 | +--ro range-size? uint16 262 | +--ro flags? bits 263 | +--ro prefix? inet:ip-prefix 264 | +--ro perfix-sid-sub-tlvs 265 | | +--ro prefix-sid-sub-tlv* 266 | | +--ro flags? bits 267 | | +--ro mt-id? uint8 268 | | +--ro algorithm? uint8 269 | | +--ro sid? uint32 270 | +--ro unknown-tlvs 271 | +--ro unknown-tlv* 272 | +--ro type? uint16 273 | +--ro length? uint16 274 | +--ro value? yang:hex-string 275 +--ro sr-algorithm-tlv 276 | +--ro sr-algorithm* uint8 277 +--ro sid-range-tlvs 278 | +--ro sid-range-tlv* 279 | +--ro range-size? ospf:uint24 280 | +--ro sid-sub-tlv 281 | +--ro sid? uint32 282 +--ro local-block-tlvs 283 | +--ro local-block-tlv* 284 | +--ro range-size? ospf:uint24 285 | +--ro sid-sub-tlv 286 | +--ro sid? uint32 287 +--ro srms-preference-tlv 288 +--ro preference? uint8 290 3. OSPF Segment Routing Yang Module 292 file "ietf-ospf-sr@2018-03-03.yang" 293 module ietf-ospf-sr { 294 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; 296 prefix ospf-sr; 298 import ietf-inet-types { 299 prefix "inet"; 300 } 302 import ietf-yang-types { 303 prefix "yang"; 304 } 306 import ietf-routing { 307 prefix "rt"; 308 } 309 import ietf-segment-routing-common { 310 prefix "sr-cmn"; 311 } 312 import ietf-segment-routing { 313 prefix "sr"; 314 } 315 import ietf-ospf { 316 prefix "ospf"; 317 } 319 organization 320 "IETF OSPF - OSPF Working Group"; 322 contact 323 "WG Web: 324 WG List: 326 Editor: Derek Yeung 327 328 Author: Derek Yeung 329 330 Author: Yingzhen Qu 331 332 Author: Acee Lindem 333 334 Author: Jeffrey Zhang 335 336 Author: Ing-Wher Chen 337 339 Author: Greg Hankins 340 "; 342 description 343 "This YANG module defines the generic configuration 344 and operational state for OSPF Segment Routing, which is 345 common across all of the vendor implementations. It is 346 intended that the module will be extended by vendors to 347 define vendor-specific OSPF Segment Routing configuration 348 and operational parameters and policies. 350 Copyright (c) 2017 IETF Trust and the persons identified as 351 authors of the code. All rights reserved. 353 Redistribution and use in source and binary forms, with or 354 without modification, is permitted pursuant to, and subject 355 to the license terms contained in, the Simplified BSD License 356 set forth in Section 4.c of the IETF Trust's Legal Provisions 357 Relating to IETF Documents 358 (http://trustee.ietf.org/license-info). 360 This version of this YANG module is part of RFC XXXX; 361 see the RFC itself for full legal notices."; 363 reference "RFC XXXX"; 365 revision 2018-03-03 { 366 description 367 "* Remove OSPF instance."; 368 reference 369 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 370 } 372 revision 2017-12-28 { 373 description 374 ""; 375 reference 376 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 377 } 379 revision 2017-07-02 { 380 description 381 "* Implement NMDA model. 382 * Add local-block-tlvs and srms-preference-tlv. 383 * Remove sid-binding-sub-tlvs."; 384 reference 385 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 386 } 387 revision 2017-03-12 { 388 description 389 "* Add p-flag in adj-sid sub-tlv."; 390 reference 391 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 392 } 393 revision 2016-10-31 { 394 description 395 "* Update authors information. 396 * Add import of ietf-segment-routing-common module."; 397 reference 398 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 399 } 401 revision 2016-07-07 { 402 description 403 "* Change routing-protocol to control-plane-protocol."; 404 reference 405 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 406 } 408 revision 2016-03-20 { 409 description 410 "* Remove routing-instance."; 411 reference 412 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 413 } 415 revision 2015-10-19 { 416 description 417 "* Add per-protocol SRGB support. 418 * Editorial changes."; 419 reference 420 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 421 } 423 revision 2015-09-02 { 424 description 425 "* Author list update. 426 * Editorial changes."; 427 reference 428 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 429 } 431 revision 2015-07-06 { 432 description 433 "Initial revision."; 434 reference 435 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 436 } 438 feature ti-lfa { 439 description 440 "Topology-Independent Loop-Free Alternate (TI-LFA) 441 computation using segment routing."; 442 } 444 /* Groupings */ 445 grouping sid-sub-tlv { 446 description "SID/Label sub-TLV grouping."; 447 container sid-sub-tlv { 448 description 449 "Used to advertise the SID/Label associated with a 450 prefix or adjacency."; 451 leaf sid { 452 type uint32; 453 description 454 "Segment Identifier (SID) - A 20 bit label or 455 32 bit SID."; 456 } 457 } 458 } 460 grouping prefix-sid-sub-tlvs { 461 description "Prefix Segment ID (SID) sub-TLVs."; 462 container perfix-sid-sub-tlvs{ 463 description "Prefix SID sub-TLV."; 464 list prefix-sid-sub-tlv { 465 description "Prefix SID sub-TLV."; 466 leaf flags { 467 type bits { 468 bit NP { 469 position 1; 470 description 471 "No-PHP flag."; 472 } 473 bit M { 474 position 2; 475 description 476 "Mapping server flag."; 477 } 478 bit E { 479 position 3; 480 description 481 "Explicit-NULL flag."; 482 } 483 bit V { 484 position 4; 485 description 486 "Value/Index flag."; 487 } 488 bit L { 489 position 5; 490 description 491 "Local flag."; 492 } 493 } 494 description "Segment Identifier (SID) Flags."; 495 } 496 leaf mt-id { 497 type uint8; 498 description "Multi-topology ID."; 499 } 500 leaf algorithm { 501 type uint8; 502 description 503 "The algorithm associated with the prefix-SID."; 504 } 505 leaf sid { 506 type uint32; 507 description "An index or label."; 508 } 509 } 510 } 511 } 513 grouping extended-prefix-range-tlvs { 514 description "Extended prefix range TLV grouping."; 516 container extended-prefix-range-tlvs { 517 description "The list of range of prefixes."; 518 list extended-prefix-range-tlv { //type=2? 519 description "The range of prefixes."; 520 leaf range-size { 521 type uint16; 522 description "The number of prefixes covered by the 523 advertisement."; 524 } 525 leaf flags { 526 type bits { 527 bit IA { 528 position 0; 529 description 530 "Inter-Area flag."; 532 } 533 } 534 description "Flags."; 535 } 536 leaf prefix { 537 type inet:ip-prefix; 538 description "Address prefix."; 539 } 540 uses prefix-sid-sub-tlvs; 541 uses ospf:unknown-tlvs; 542 } 543 } 544 } 546 grouping sr-algorithm-tlv { 547 description "SR algorithm TLV grouping."; 548 container sr-algorithm-tlv { 549 description "All SR algorithm TLVs."; 550 leaf-list sr-algorithm { 551 type uint8; 552 description 553 "The Segment Routing (SR) algorithms that the router is 554 currently using."; 555 } 556 } 557 } 559 grouping sid-range-tlvs { 560 description "SID Range TLV grouping."; 561 container sid-range-tlvs { 562 description "List of SID range TLVs."; 563 list sid-range-tlv { 564 description "SID range TLV."; 565 leaf range-size { 566 type ospf:uint24; 567 description "The SID range."; 568 } 569 uses sid-sub-tlv; 570 } 571 } 572 } 574 grouping local-block-tlvs { 575 description "The SR local block TLV contains the 576 range of labels reserved for local SIDs."; 577 container local-block-tlvs { 578 description "List of SRLB TLVs."; 579 list local-block-tlv { 580 description "SRLB TLV."; 581 leaf range-size { 582 type ospf:uint24; 583 description "The SID range."; 584 } 585 uses sid-sub-tlv; 586 } 587 } 588 } 590 grouping srms-preference-tlv { 591 description "The SRMS preference TLV is used to advertise 592 a preference associated with the node that acts 593 as an SR Mapping Server."; 594 container srms-preference-tlv { 595 description "SRMS Preference TLV."; 596 leaf preference { 597 type uint8 { 598 range "0 .. 255"; 599 } 600 description "SRMS preference TLV, vlaue from 0 to 255."; 601 } 602 } 603 } 605 /* Configuration */ 606 augment "/rt:routing/rt:control-plane-protocols" 607 + "/rt:control-plane-protocol/ospf:ospf" { 608 when "../rt:type = 'ospf:ospfv2' or " 609 + "../rt:type = 'ospf:ospfv3'" { 610 description 611 "This augments the OSPF routing protocol when used."; 612 } 613 description 614 "This augments the OSPF protocol configuration 615 with segment routing."; 616 uses sr:controlplane-cfg; 617 container protocol-srgb { 618 if-feature sr:protocol-srgb; 619 uses sr-cmn:srgb-cfg; 620 description 621 "Per-protocol SRGB."; 622 } 623 } 625 augment "/rt:routing/rt:control-plane-protocols/" 626 + "rt:control-plane-protocol/ospf:ospf/" 627 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 629 when "../../../../../rt:type = 'ospf:ospfv2' or " 630 + "../../../../../rt:type = 'ospf:ospfv3'" { 631 description 632 "This augments the OSPF interface configuration 633 when used."; 634 } 635 description 636 "This augments the OSPF protocol interface 637 configuration with segment routing."; 639 uses sr:igp-interface-cfg; 640 } 642 augment "/rt:routing/rt:control-plane-protocols/" 643 + "rt:control-plane-protocol/ospf:ospf/" 644 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 645 + "ospf:fast-reroute" { 646 when "../../../../../../rt:type = 'ospf:ospfv2' or " 647 + "../../../../../../rt:type = 'ospf:ospfv3'" { 648 description 649 "This augments the OSPF routing protocol when used."; 650 } 651 description 652 "This augments the OSPF protocol IP-FRR with TI-LFA."; 654 container ti-lfa { 655 if-feature ti-lfa; 656 leaf enable { 657 type boolean; 658 description 659 "Enables TI-LFA computation."; 660 } 661 description 662 "Topology Independent Loop Free Alternate 663 (TI-LFA) support."; 664 } 665 } 667 /* Database */ 668 augment "/rt:routing/" 669 + "rt:control-plane-protocols/rt:control-plane-protocol/" 670 + "ospf:ospf/ospf:areas/ospf:area/" 671 + "ospf:interfaces/ospf:interface/ospf:database/" 672 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 673 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 674 + "ospf:ospfv2/ospf:body/ospf:opaque/" 675 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 676 when "../../../../../../../../../../../../../../" 677 + "rt:type = 'ospf:ospfv2'" { 678 description 679 "This augmentation is only valid for OSPFv2."; 680 } 681 description 682 "SR specific TLVs for OSPFv2 extended prefix TLV 683 in type 9 opaque LSA."; 684 uses prefix-sid-sub-tlvs; 685 } 687 augment "/rt:routing/" 688 + "rt:control-plane-protocols/rt:control-plane-protocol/" 689 + "ospf:ospf/ospf:areas/" 690 + "ospf:area/ospf:database/" 691 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 692 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 693 + "ospf:ospfv2/ospf:body/ospf:opaque/" 694 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 695 when "../../../../../../../../../../../../" 696 + "rt:type = 'ospf:ospfv2'" { 697 description 698 "This augmentation is only valid for OSPFv2."; 699 } 700 description 701 "SR specific TLVs for OSPFv2 extended prefix TLV 702 in type 10 opaque LSA."; 703 uses prefix-sid-sub-tlvs; 704 } 706 augment "/rt:routing/" 707 + "rt:control-plane-protocols/rt:control-plane-protocol/" 708 + "ospf:ospf/ospf:database/" 709 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 710 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 711 + "ospf:ospfv2/ospf:body/ospf:opaque/" 712 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 713 when "../../../../../../../../../../" 714 + "rt:type = 'ospf:ospfv2'" { 715 description 716 "This augmentation is only valid for OSPFv2."; 717 } 718 description 719 "SR specific TLVs for OSPFv2 extended prefix TLV 720 in type 11 opaque LSA."; 721 uses prefix-sid-sub-tlvs; 722 } 724 augment "/rt:routing/" 725 + "rt:control-plane-protocols/rt:control-plane-protocol/" 726 + "ospf:ospf/ospf:areas/" 727 + "ospf:area/ospf:database/" 728 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 729 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 730 + "ospf:ospfv2/ospf:body/ospf:opaque/" 731 + "ospf:extended-link-tlvs/ospf:extended-link-tlv" { 732 when "../../../../../../../../../../../../" 733 + "rt:type = 'ospf:ospfv2'" { 734 description 735 "This augmentation is only valid for OSPFv2."; 736 } 737 description 738 "SR specific TLVs for OSPFv2 extended link TLV 739 in type 10 opaque LSA."; 741 container adj-sid-sub-tlvs { 742 description "Adjacency SID optional sub-TLVs."; 743 list adj-sid-sub-tlv { 744 description "List of Adjacency SID sub-TLVs."; 745 leaf flags { 746 type bits { 747 bit B { 748 position 0; 749 description 750 "Backup flag."; 751 } 752 bit V { 753 position 1; 754 description 755 "Value/Index flag."; 756 } 757 bit L { 758 position 2; 759 description 760 "Local/Global flag."; 761 } 762 bit G { 763 position 3; 764 description 765 "Group flag."; 766 } 767 bit P { 768 position 4; 769 description 770 "Persistent flag."; 771 } 772 } 773 description "Flags."; 774 } 775 leaf mt-id { 776 type uint8; 777 description "Multi-topology ID."; 778 } 779 leaf weight { 780 type uint8; 781 description "Weight used for load-balancing."; 782 } 783 leaf sid { 784 type uint32; 785 description "Segment Identifier (SID) index/label."; 786 } 787 } 788 } 790 container lan-adj-sid-sub-tlvs { 791 description "LAN Adjacency SID optional sub-TLVs."; 792 list lan-adj-sid-sub-tlv { 793 description "List of LAN adjacency SID sub-TLVs."; 794 leaf flags { 795 type bits { 796 bit B { 797 position 0; 798 description 799 "Backup flag."; 800 } 801 bit V { 802 position 1; 803 description 804 "Value/Index flag."; 805 } 806 bit L { 807 position 2; 808 description 809 "Local/Global flag."; 810 } 811 bit G { 812 position 3; 813 description 814 "Group flag."; 815 } 816 bit P { 817 position 4; 818 description 819 "Persistent flag."; 820 } 822 } 823 description "Flags."; 824 } 825 leaf mt-id { 826 type uint8; 827 description "Multi-topology ID."; 828 } 829 leaf weight { 830 type uint8; 831 description "Weight used for load-balancing."; 832 } 833 leaf neighbor-router-id { 834 type yang:dotted-quad; 835 description "Neighbor router ID."; 836 } 837 leaf sid { 838 type uint32; 839 description "Segment Identifier (SID) index/label."; 840 } 841 } 842 } 843 } 845 augment "/rt:routing/" 846 + "rt:control-plane-protocols/rt:control-plane-protocol/" 847 + "ospf:ospf/ospf:areas/ospf:area/" 848 + "ospf:interfaces/ospf:interface/ospf:database/" 849 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 850 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 851 + "ospf:ospfv2/ospf:body/ospf:opaque" { 852 when "../../../../../../../../../../../../" 853 + "rt:type = 'ospf:ospfv2'" { 854 description 855 "This augmentation is only valid for OSPFv2."; 856 } 858 description 859 "SR specific TLVs for OSPFv2 type 9 opaque LSA."; 861 uses extended-prefix-range-tlvs; 862 uses sr-algorithm-tlv; 863 uses sid-range-tlvs; 864 uses local-block-tlvs; 865 uses srms-preference-tlv; 866 } 868 augment "/rt:routing/" 869 + "rt:control-plane-protocols/rt:control-plane-protocol/" 870 + "ospf:ospf/ospf:areas/" 871 + "ospf:area/ospf:database/" 872 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 873 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 874 + "ospf:ospfv2/ospf:body/ospf:opaque" { 875 when "../../../../../../../../../../" 876 + "rt:type = 'ospf:ospfv2'" { 877 description 878 "This augmentation is only valid for OSPFv2."; 879 } 881 description 882 "SR specific TLVs for OSPFv2 type 10 opaque LSA."; 884 uses extended-prefix-range-tlvs; 885 uses sr-algorithm-tlv; 886 uses sid-range-tlvs; 887 uses local-block-tlvs; 888 uses srms-preference-tlv; 889 } 891 augment "/rt:routing/" 892 + "rt:control-plane-protocols/rt:control-plane-protocol/" 893 + "ospf:ospf/ospf:database/" 894 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 895 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 896 + "ospf:ospfv2/ospf:body/ospf:opaque" { 897 when "../../../../../../../../" 898 + "rt:type = 'ospf:ospfv2'" { 899 description 900 "This augmentation is only valid for OSPFv2."; 901 } 902 description 903 "SR specific TLVs for OSPFv2 type 11 opaque LSA."; 905 uses extended-prefix-range-tlvs; 906 uses sr-algorithm-tlv; 907 uses sid-range-tlvs; 908 uses local-block-tlvs; 909 uses srms-preference-tlv; 910 } 911 } 912 914 4. Security Considerations 916 The data model defined does not create any security implications. 918 This draft does not change any underlying security issues inherent in 919 [I-D.ietf-netmod-routing-cfg]. 921 5. Acknowledgements 923 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 924 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 925 Alan Davey for their thorough reviews and helpful comments. 927 This document was produced using Marshall Rose's xml2rfc tool. 929 6. References 931 6.1. Normative References 933 [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", 934 RFC 1793, DOI 10.17487/RFC1793, April 1995, 935 . 937 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 938 Requirement Levels", BCP 14, RFC 2119, 939 DOI 10.17487/RFC2119, March 1997, 940 . 942 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 943 DOI 10.17487/RFC2328, April 1998, 944 . 946 [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", 947 RFC 3101, DOI 10.17487/RFC3101, January 2003, 948 . 950 [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF 951 Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, 952 . 954 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 955 (TE) Extensions to OSPF Version 2", RFC 3630, 956 DOI 10.17487/RFC3630, September 2003, 957 . 959 [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the 960 Provider/Customer Edge Protocol for BGP/MPLS IP Virtual 961 Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, 962 June 2006, . 964 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 965 Coltun, R., and F. Baker, "OSPF Version 2 Management 966 Information Base", RFC 4750, DOI 10.17487/RFC4750, 967 December 2006, . 969 [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful 970 Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, 971 . 973 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 974 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 975 . 977 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 978 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 979 2009, . 981 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 982 R. Aggarwal, "Support of Address Families in OSPFv3", 983 RFC 5838, DOI 10.17487/RFC5838, April 2010, 984 . 986 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 987 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 988 . 990 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 991 the Network Configuration Protocol (NETCONF)", RFC 6020, 992 DOI 10.17487/RFC6020, October 2010, 993 . 995 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 996 and A. Bierman, Ed., "Network Configuration Protocol 997 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 998 . 1000 [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and 1001 M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge 1002 (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, 1003 June 2012, . 1005 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1006 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1007 . 1009 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1010 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1011 . 1013 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1014 Management", RFC 8022, DOI 10.17487/RFC8022, November 1015 2016, . 1017 6.2. Informative References 1019 [I-D.ietf-ospf-yang] 1020 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1021 "Yang Data Model for OSPF Protocol", draft-ietf-ospf- 1022 yang-09 (work in progress), October 2017. 1024 [I-D.ietf-spring-sr-yang] 1025 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1026 Data Model for Segment Routing", draft-ietf-spring-sr- 1027 yang-08 (work in progress), December 2017. 1029 Appendix A. Contributors' Addreses 1031 Dean Bogdanovic 1032 Volta Networks, Inc. 1034 EMail: dean@voltanet.io 1036 Kiran Koushik Agrahara Sreenivasa 1037 Cisco Systems 1038 12515 Research Blvd, Bldg 4 1039 Austin, TX 78681 1040 USA 1042 EMail: kkoushik@cisco.com 1044 Authors' Addresses 1046 Derek Yeung 1047 Arrcus 1049 EMail: derek@arrcus.com 1051 Yingzhen Qu 1052 Huawei 1053 2330 Central Expressway 1054 Santa Clara, CA 95050 1055 USA 1057 EMail: yingzhen.qu@huawei.com 1059 Jeffrey Zhang 1060 Juniper Networks 1061 10 Technology Park Drive 1062 Westford, MA 01886 1063 USA 1065 EMail: zzhang@juniper.net 1067 Ing-Wher Chen 1068 Jabil Circuit 1070 EMail: Ing-Wher_chen@jabil.com 1071 Acee Lindem 1072 Cisco Systems 1073 301 Midenhall Way 1074 Cary, NC 27513 1076 EMail: acee@cisco.com