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