idnits 2.17.1 draft-ietf-ospf-sr-yang-02.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 (July 2, 2017) is 2483 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 907, but not defined == Unused Reference: 'RFC1793' is defined on line 921, but no explicit reference was found in the text == Unused Reference: 'RFC2328' is defined on line 930, but no explicit reference was found in the text == Unused Reference: 'RFC3101' is defined on line 934, but no explicit reference was found in the text == Unused Reference: 'RFC3623' is defined on line 938, but no explicit reference was found in the text == Unused Reference: 'RFC3630' is defined on line 942, but no explicit reference was found in the text == Unused Reference: 'RFC4577' is defined on line 947, but no explicit reference was found in the text == Unused Reference: 'RFC4750' is defined on line 952, but no explicit reference was found in the text == Unused Reference: 'RFC5187' is defined on line 957, but no explicit reference was found in the text == Unused Reference: 'RFC5340' is defined on line 961, but no explicit reference was found in the text == Unused Reference: 'RFC5643' is defined on line 965, but no explicit reference was found in the text == Unused Reference: 'RFC5838' is defined on line 969, but no explicit reference was found in the text == Unused Reference: 'RFC5880' is defined on line 974, but no explicit reference was found in the text == Unused Reference: 'RFC6565' is defined on line 988, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 993, but no explicit reference was found in the text == Unused Reference: 'RFC8022' is defined on line 1001, 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-08 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-07 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: January 3, 2018 Huawei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 Jabil Circuit 10 A. Lindem 11 Cisco Systems 12 July 2, 2017 14 Yang Data Model for OSPF SR (Segment Routing) Protocol 15 draft-ietf-ospf-sr-yang-02 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 http://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 January 3, 2018. 39 Copyright Notice 41 Copyright (c) 2017 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 (http://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 . . . . . . . . . . . . . . . . . . . 19 61 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 62 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 63 6.1. Normative References . . . . . . . . . . . . . . . . . . 20 64 6.2. Informative References . . . . . . . . . . . . . . . . . 21 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/ospf:instance: 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/ospf:instance 115 /ospf:areas/ospf:area/ospf:interfaces/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/ospf:instance 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/ospf:instance 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/ospf:instance 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/ospf:instance 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/ospf:instance 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/ospf:instance 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/ospf:instance 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/ospf:instance 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@2017-07-02.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 2017-07-02 { 366 description 367 "* Implement NMDA model. 368 * Add local-block-tlvs and srms-preference-tlv. 369 * Remove sid-binding-sub-tlvs."; 370 reference 371 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 372 } 374 revision 2017-03-12 { 375 description 376 "* Add p-flag in adj-sid sub-tlv."; 377 reference 378 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 379 } 381 revision 2016-10-31 { 382 description 383 "* Update authors information. 384 * Add import of ietf-segment-routing-common module."; 385 reference 386 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 388 } 390 revision 2016-07-07 { 391 description 392 "* Change routing-protocol to control-plane-protocol."; 393 reference 394 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 395 } 397 revision 2016-03-20 { 398 description 399 "* Remove routing-instance."; 400 reference 401 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 402 } 404 revision 2015-10-19 { 405 description 406 "* Add per-protocol SRGB support. 407 * Editorial changes."; 408 reference 409 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 410 } 412 revision 2015-09-02 { 413 description 414 "* Author list update. 415 * Editorial changes."; 416 reference 417 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 418 } 420 revision 2015-07-06 { 421 description 422 "Initial revision."; 423 reference 424 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 425 } 427 feature ti-lfa { 428 description 429 "Topology-Independent Loop-Free Alternate (TI-LFA) 430 computation using segment routing."; 431 } 433 /* Groupings */ 434 grouping sid-sub-tlv { 435 description "SID/Label sub-TLV grouping."; 436 container sid-sub-tlv { 437 description 438 "Used to advertise the SID/Label associated with a 439 prefix or adjacency."; 440 leaf sid { 441 type uint32; 442 description 443 "Segment Identifier (SID) - A 20 bit label or 444 32 bit SID."; 445 } 446 } 447 } 449 grouping prefix-sid-sub-tlvs { 450 description "Prefix Segment ID (SID) sub-TLVs."; 451 container perfix-sid-sub-tlvs{ 452 description "Prefix SID sub-TLV."; 453 list prefix-sid-sub-tlv { 454 description "Prefix SID sub-TLV."; 455 leaf flags { 456 type bits { 457 bit NP { 458 position 1; 459 description 460 "No-PHP flag."; 461 } 462 bit M { 463 position 2; 464 description 465 "Mapping server flag."; 466 } 467 bit E { 468 position 3; 469 description 470 "Explicit-NULL flag."; 471 } 472 bit V { 473 position 4; 474 description 475 "Value/Index flag."; 476 } 477 bit L { 478 position 5; 479 description 480 "Local flag."; 481 } 482 } 483 description "Segment Identifier (SID) Flags."; 485 } 486 leaf mt-id { 487 type uint8; 488 description "Multi-topology ID."; 489 } 490 leaf algorithm { 491 type uint8; 492 description 493 "The algorithm associated with the prefix-SID."; 494 } 495 leaf sid { 496 type uint32; 497 description "An index or label."; 498 } 499 } 500 } 501 } 503 grouping extended-prefix-range-tlvs { 504 description "Extended prefix range TLV grouping."; 506 container extended-prefix-range-tlvs { 507 description "The list of range of prefixes."; 508 list extended-prefix-range-tlv { //type=2? 509 description "The range of prefixes."; 510 leaf range-size { 511 type uint16; 512 description "The number of prefixes covered by the 513 advertisement."; 514 } 515 leaf flags { 516 type bits { 517 bit IA { 518 position 0; 519 description 520 "Inter-Area flag."; 521 } 522 } 523 description "Flags."; 524 } 525 leaf prefix { 526 type inet:ip-prefix; 527 description "Address prefix."; 528 } 529 uses prefix-sid-sub-tlvs; 530 uses ospf:unknown-tlvs; 531 } 532 } 534 } 536 grouping sr-algorithm-tlv { 537 description "SR algorithm TLV grouping."; 538 container sr-algorithm-tlv { 539 description "All SR algorithm TLVs."; 540 leaf-list sr-algorithm { 541 type uint8; 542 description 543 "The Segment Routing (SR) algorithms that the router is 544 currently using."; 545 } 546 } 547 } 549 grouping sid-range-tlvs { 550 description "SID Range TLV grouping."; 551 container sid-range-tlvs { 552 description "List of SID range TLVs."; 553 list sid-range-tlv { 554 description "SID range TLV."; 555 leaf range-size { 556 type ospf:uint24; 557 description "The SID range."; 558 } 559 uses sid-sub-tlv; 560 } 561 } 562 } 564 grouping local-block-tlvs { 565 description "The SR local block TLV contains the 566 range of labels reserved for local SIDs."; 567 container local-block-tlvs { 568 description "List of SRLB TLVs."; 569 list local-block-tlv { 570 description "SRLB TLV."; 571 leaf range-size { 572 type ospf:uint24; 573 description "The SID range."; 574 } 575 uses sid-sub-tlv; 576 } 577 } 578 } 580 grouping srms-preference-tlv { 581 description "The SRMS preference TLV is used to advertise 582 a preference associated with the node that acts 583 as an SR Mapping Server."; 584 container srms-preference-tlv { 585 description "SRMS Preference TLV."; 586 leaf preference { 587 type uint8 { 588 range "0 .. 255"; 589 } 590 description "SRMS preference TLV, vlaue from 0 to 255."; 591 } 592 } 593 } 595 /* Configuration */ 596 augment "/rt:routing/rt:control-plane-protocols" 597 + "/rt:control-plane-protocol/ospf:ospf/ospf:instance" { 598 when "../../rt:type = 'ospf:ospfv2' or " 599 + "../../rt:type = 'ospf:ospfv3'" { 600 description 601 "This augments the OSPF routing protocol when used."; 602 } 603 description 604 "This augments the OSPF protocol configuration 605 with segment routing."; 606 uses sr:controlplane-cfg; 607 container protocol-srgb { 608 if-feature sr:protocol-srgb; 609 uses sr-cmn:srgb-cfg; 610 description 611 "Per-protocol SRGB."; 612 } 613 } 615 augment "/rt:routing/rt:control-plane-protocols/" 616 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 617 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 618 when "../../../../../../rt:type = 'ospf:ospfv2' or " 619 + "../../../../../../rt:type = 'ospf:ospfv3'" { 620 description 621 "This augments the OSPF interface configuration 622 when used."; 623 } 624 description 625 "This augments the OSPF protocol interface 626 configuration with segment routing."; 628 uses sr:igp-interface-cfg; 629 } 630 augment "/rt:routing/rt:control-plane-protocols/" 631 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 632 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 633 + "ospf:fast-reroute" { 634 when "../../../../../../../rt:type = 'ospf:ospfv2' or " 635 + "../../../../../../../rt:type = 'ospf:ospfv3'" { 636 description 637 "This augments the OSPF routing protocol when used."; 638 } 639 description 640 "This augments the OSPF protocol IP-FRR with TI-LFA."; 642 container ti-lfa { 643 if-feature ti-lfa; 644 leaf enable { 645 type boolean; 646 description 647 "Enables TI-LFA computation."; 648 } 649 description 650 "Topology Independent Loop Free Alternate 651 (TI-LFA) support."; 652 } 653 } 655 /* Database */ 656 augment "/rt:routing/" 657 + "rt:control-plane-protocols/rt:control-plane-protocol/" 658 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 659 + "ospf:interfaces/ospf:interface/ospf:database/" 660 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 661 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 662 + "ospf:ospfv2/ospf:body/ospf:opaque/" 663 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 664 when "../../../../../../../../../../../../../../../" 665 + "rt:type = 'ospf:ospfv2'" { 666 description 667 "This augmentation is only valid for OSPFv2."; 668 } 669 description 670 "SR specific TLVs for OSPFv2 extended prefix TLV 671 in type 9 opaque LSA."; 672 uses prefix-sid-sub-tlvs; 673 } 675 augment "/rt:routing/" 676 + "rt:control-plane-protocols/rt:control-plane-protocol/" 677 + "ospf:ospf/ospf:instance/ospf:areas/" 678 + "ospf:area/ospf:database/" 679 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 680 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 681 + "ospf:ospfv2/ospf:body/ospf:opaque/" 682 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 683 when "../../../../../../../../../../../../../" 684 + "rt:type = 'ospf:ospfv2'" { 685 description 686 "This augmentation is only valid for OSPFv2."; 687 } 688 description 689 "SR specific TLVs for OSPFv2 extended prefix TLV 690 in type 10 opaque LSA."; 691 uses prefix-sid-sub-tlvs; 692 } 694 augment "/rt:routing/" 695 + "rt:control-plane-protocols/rt:control-plane-protocol/" 696 + "ospf:ospf/ospf:instance/ospf:database/" 697 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 698 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 699 + "ospf:ospfv2/ospf:body/ospf:opaque/" 700 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 701 when "../../../../../../../../../../../" 702 + "rt:type = 'ospf:ospfv2'" { 703 description 704 "This augmentation is only valid for OSPFv2."; 705 } 706 description 707 "SR specific TLVs for OSPFv2 extended prefix TLV 708 in type 11 opaque LSA."; 709 uses prefix-sid-sub-tlvs; 710 } 712 augment "/rt:routing/" 713 + "rt:control-plane-protocols/rt:control-plane-protocol/" 714 + "ospf:ospf/ospf:instance/ospf:areas/" 715 + "ospf:area/ospf:database/" 716 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 717 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 718 + "ospf:ospfv2/ospf:body/ospf:opaque/" 719 + "ospf:extended-link-tlvs/ospf:extended-link-tlv" { 720 when "../../../../../../../../../../../../../" 721 + "rt:type = 'ospf:ospfv2'" { 722 description 723 "This augmentation is only valid for OSPFv2."; 724 } 725 description 726 "SR specific TLVs for OSPFv2 extended link TLV 727 in type 10 opaque LSA."; 729 container adj-sid-sub-tlvs { 730 description "Adjacency SID optional sub-TLVs."; 731 list adj-sid-sub-tlv { 732 description "List of Adjacency SID sub-TLVs."; 733 leaf flags { 734 type bits { 735 bit B { 736 position 0; 737 description 738 "Backup flag."; 739 } 740 bit V { 741 position 1; 742 description 743 "Value/Index flag."; 744 } 745 bit L { 746 position 2; 747 description 748 "Local/Global flag."; 749 } 750 bit G { 751 position 3; 752 description 753 "Group flag."; 754 } 755 bit P { 756 position 4; 757 description 758 "Persistent flag."; 759 } 760 } 761 description "Flags."; 762 } 763 leaf mt-id { 764 type uint8; 765 description "Multi-topology ID."; 766 } 767 leaf weight { 768 type uint8; 769 description "Weight used for load-balancing."; 770 } 771 leaf sid { 772 type uint32; 773 description "Segment Identifier (SID) index/label."; 775 } 776 } 777 } 779 container lan-adj-sid-sub-tlvs { 780 description "LAN Adjacency SID optional sub-TLVs."; 781 list lan-adj-sid-sub-tlv { 782 description "List of LAN adjacency SID sub-TLVs."; 783 leaf flags { 784 type bits { 785 bit B { 786 position 0; 787 description 788 "Backup flag."; 789 } 790 bit V { 791 position 1; 792 description 793 "Value/Index flag."; 794 } 795 bit L { 796 position 2; 797 description 798 "Local/Global flag."; 799 } 800 bit G { 801 position 3; 802 description 803 "Group flag."; 804 } 805 bit P { 806 position 4; 807 description 808 "Persistent flag."; 809 } 810 } 811 description "Flags."; 812 } 813 leaf mt-id { 814 type uint8; 815 description "Multi-topology ID."; 816 } 817 leaf weight { 818 type uint8; 819 description "Weight used for load-balancing."; 820 } 821 leaf neighbor-router-id { 822 type yang:dotted-quad; 823 description "Neighbor router ID."; 824 } 825 leaf sid { 826 type uint32; 827 description "Segment Identifier (SID) index/label."; 828 } 829 } 830 } 831 } 833 augment "/rt:routing/" 834 + "rt:control-plane-protocols/rt:control-plane-protocol/" 835 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 836 + "ospf:interfaces/ospf:interface/ospf:database/" 837 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 838 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 839 + "ospf:ospfv2/ospf:body/ospf:opaque" { 840 when "../../../../../../../../../../../../../" 841 + "rt:type = 'ospf:ospfv2'" { 842 description 843 "This augmentation is only valid for OSPFv2."; 844 } 846 description 847 "SR specific TLVs for OSPFv2 type 9 opaque LSA."; 849 uses extended-prefix-range-tlvs; 850 uses sr-algorithm-tlv; 851 uses sid-range-tlvs; 852 uses local-block-tlvs; 853 uses srms-preference-tlv; 854 } 856 augment "/rt:routing/" 857 + "rt:control-plane-protocols/rt:control-plane-protocol/" 858 + "ospf:ospf/ospf:instance/ospf:areas/" 859 + "ospf:area/ospf:database/" 860 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 861 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 862 + "ospf:ospfv2/ospf:body/ospf:opaque" { 863 when "../../../../../../../../../../../" 864 + "rt:type = 'ospf:ospfv2'" { 865 description 866 "This augmentation is only valid for OSPFv2."; 867 } 869 description 870 "SR specific TLVs for OSPFv2 type 10 opaque LSA."; 872 uses extended-prefix-range-tlvs; 873 uses sr-algorithm-tlv; 874 uses sid-range-tlvs; 875 uses local-block-tlvs; 876 uses srms-preference-tlv; 877 } 879 augment "/rt:routing/" 880 + "rt:control-plane-protocols/rt:control-plane-protocol/" 881 + "ospf:ospf/ospf:instance/ospf:database/" 882 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 883 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 884 + "ospf:ospfv2/ospf:body/ospf:opaque" { 885 when "../../../../../../../../../" 886 + "rt:type = 'ospf:ospfv2'" { 887 description 888 "This augmentation is only valid for OSPFv2."; 889 } 890 description 891 "SR specific TLVs for OSPFv2 type 11 opaque LSA."; 893 uses extended-prefix-range-tlvs; 894 uses sr-algorithm-tlv; 895 uses sid-range-tlvs; 896 uses local-block-tlvs; 897 uses srms-preference-tlv; 898 } 899 } 900 902 4. Security Considerations 904 The data model defined does not create any security implications. 906 This draft does not change any underlying security issues inherent in 907 [I-D.ietf-netmod-routing-cfg]. 909 5. Acknowledgements 911 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 912 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 913 Alan Davey for their thorough reviews and helpful comments. 915 This document was produced using Marshall Rose's xml2rfc tool. 917 6. References 919 6.1. Normative References 921 [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", 922 RFC 1793, DOI 10.17487/RFC1793, April 1995, 923 . 925 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 926 Requirement Levels", BCP 14, RFC 2119, 927 DOI 10.17487/RFC2119, March 1997, 928 . 930 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 931 DOI 10.17487/RFC2328, April 1998, 932 . 934 [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", 935 RFC 3101, DOI 10.17487/RFC3101, January 2003, 936 . 938 [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF 939 Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, 940 . 942 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 943 (TE) Extensions to OSPF Version 2", RFC 3630, 944 DOI 10.17487/RFC3630, September 2003, 945 . 947 [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the 948 Provider/Customer Edge Protocol for BGP/MPLS IP Virtual 949 Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, 950 June 2006, . 952 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 953 Coltun, R., and F. Baker, "OSPF Version 2 Management 954 Information Base", RFC 4750, DOI 10.17487/RFC4750, 955 December 2006, . 957 [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful 958 Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, 959 . 961 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 962 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 963 . 965 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 966 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 967 2009, . 969 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 970 R. Aggarwal, "Support of Address Families in OSPFv3", 971 RFC 5838, DOI 10.17487/RFC5838, April 2010, 972 . 974 [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection 975 (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, 976 . 978 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 979 the Network Configuration Protocol (NETCONF)", RFC 6020, 980 DOI 10.17487/RFC6020, October 2010, 981 . 983 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 984 and A. Bierman, Ed., "Network Configuration Protocol 985 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 986 . 988 [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and 989 M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge 990 (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, 991 June 2012, . 993 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 994 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 995 . 997 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 998 RFC 7950, DOI 10.17487/RFC7950, August 2016, 999 . 1001 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1002 Management", RFC 8022, DOI 10.17487/RFC8022, November 1003 2016, . 1005 6.2. Informative References 1007 [I-D.ietf-ospf-yang] 1008 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1009 "Yang Data Model for OSPF Protocol", draft-ietf-ospf- 1010 yang-08 (work in progress), July 2017. 1012 [I-D.ietf-spring-sr-yang] 1013 Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG 1014 Data Model for Segment Routing", draft-ietf-spring-sr- 1015 yang-07 (work in progress), July 2017. 1017 Appendix A. Contributors' Addreses 1019 Dean Bogdanovic 1020 Volta Networks, Inc. 1022 EMail: dean@voltanet.io 1024 Kiran Koushik Agrahara Sreenivasa 1025 Cisco Systems 1026 12515 Research Blvd, Bldg 4 1027 Austin, TX 78681 1028 USA 1030 EMail: kkoushik@cisco.com 1032 Authors' Addresses 1034 Derek Yeung 1035 Arrcus 1037 EMail: derek@arrcus.com 1039 Yingzhen Qu 1040 Huawei 1041 2330 Central Expressway 1042 Santa Clara, CA 95050 1043 USA 1045 EMail: yingzhen.qu@huawei.com 1047 Jeffrey Zhang 1048 Juniper Networks 1049 10 Technology Park Drive 1050 Westford, MA 01886 1051 USA 1053 EMail: zzhang@juniper.net 1055 Ing-Wher Chen 1056 Jabil Circuit 1058 EMail: Ing-Wher_chen@jabil.com 1059 Acee Lindem 1060 Cisco Systems 1061 301 Midenhall Way 1062 Cary, NC 27513 1064 EMail: acee@cisco.com