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