idnits 2.17.1 draft-ietf-ospf-sr-yang-10.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 123 has weird spacing: '...r-bound uin...' == Line 124 has weird spacing: '...r-bound uin...' == Line 135 has weird spacing: '...roup-id uin...' == Line 561 has weird spacing: '...dentity b-bit...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (August 13, 2019) is 1717 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'I-D.ietf-netmod-routing-cfg' is mentioned on line 1016, but not defined == Unused Reference: 'I-D.ietf-ospf-ospfv3-segment-routing-extensions' is defined on line 1037, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-ospf-segment-routing-extensions' is defined on line 1042, but no explicit reference was found in the text == Unused Reference: 'RFC2328' is defined on line 1063, but no explicit reference was found in the text == Unused Reference: 'RFC4750' is defined on line 1067, but no explicit reference was found in the text == Unused Reference: 'RFC5340' is defined on line 1072, but no explicit reference was found in the text == Unused Reference: 'RFC5643' is defined on line 1076, but no explicit reference was found in the text == Unused Reference: 'RFC5838' is defined on line 1080, but no explicit reference was found in the text == Unused Reference: 'RFC7223' is defined on line 1095, but no explicit reference was found in the text == Unused Reference: 'RFC8022' is defined on line 1105, but no explicit reference was found in the text == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-26 == Outdated reference: A later version (-30) exists of draft-ietf-spring-sr-yang-13 ** 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 (~~), 18 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet D. Yeung 3 Internet-Draft Arrcus 4 Intended status: Standards Track Y. Qu 5 Expires: February 14, 2020 Futurewei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 The MITRE Corporation 10 A. Lindem 11 Cisco Systems 12 August 13, 2019 14 YANG Data Model for OSPF SR (Segment Routing) Protocol 15 draft-ietf-ospf-sr-yang-10 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage OSPF Segment Routing. The model is based on YANG 1.1 as 21 defined in RFC 7950 and conforms to the Network Management Datastore 22 Architecture (NDMA) as described in RFC 8342. 24 Status of This Memo 26 This Internet-Draft is submitted in full conformance with the 27 provisions of BCP 78 and BCP 79. 29 Internet-Drafts are working documents of the Internet Engineering 30 Task Force (IETF). Note that other groups may also distribute 31 working documents as Internet-Drafts. The list of current Internet- 32 Drafts is at https://datatracker.ietf.org/drafts/current/. 34 Internet-Drafts are draft documents valid for a maximum of six months 35 and may be updated, replaced, or obsoleted by other documents at any 36 time. It is inappropriate to use Internet-Drafts as reference 37 material or to cite them other than as "work in progress." 39 This Internet-Draft will expire on February 14, 2020. 41 Copyright Notice 43 Copyright (c) 2019 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (https://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the Simplified BSD License. 56 Table of Contents 58 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 59 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 60 2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 3 61 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 3 62 4. OSPF Segment Routing YANG Module . . . . . . . . . . . . . . 7 63 5. Security Considerations . . . . . . . . . . . . . . . . . . . 22 64 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 65 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 66 7.1. Normative References . . . . . . . . . . . . . . . . . . 22 67 7.2. Informative References . . . . . . . . . . . . . . . . . 24 68 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 25 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 71 1. Overview 73 YANG [RFC6020] [RFC7950] is a data definition language used to define 74 the contents of a conceptual data store that allows networked devices 75 to be managed using NETCONF [RFC6241]. YANG is proving relevant 76 beyond its initial confines, as bindings to other interfaces (e.g., 77 ReST) and encodings other than XML (e.g., JSON) are being defined. 78 Furthermore, YANG data models can be used as the basis for 79 implementation of other interfaces, such as CLI and programmatic 80 APIs. 82 This document defines a YANG data model that can be used to configure 83 and manage OSPF Segment Routing and it is an augmentation to the OSPF 84 YANG data model. 86 The YANG modules in this document conform to the Network Management 87 Datastore Architecture (NMDA) [RFC8342]. 89 1.1. Requirements Language 91 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 92 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 93 document are to be interpreted as described in [RFC2119]. 95 2. Tree Diagrams 97 This document uses the graphical representation of data models 98 defined in [RFC8340]. 100 3. OSPF Segment Routing 102 This document defines a model for OSPF Segment Routing feature [I-D.i 103 etf-ospf-segment-routing-extensions][I-D.ietf-ospf-ospfv3-segment-rou 104 ting-extensions]. It is an augmentation of the OSPF base model. 106 The OSPF SR YANG module requires support for the base segment routing 107 module [I-D.ietf-spring-sr-yang], which defines the global segment 108 routing configuration independent of any specific routing protocol 109 configuration, and support of OSPF base model[I-D.ietf-ospf-yang] 110 which defines basic OSPF configuration and state. 112 module: ietf-ospf-sr 113 augment /rt:routing/rt:control-plane-protocols 114 /rt:control-plane-protocol/ospf:ospf: 115 +--rw segment-routing 116 | +--rw enabled? boolean 117 | +--rw bindings 118 | +--rw advertise 119 | | +--rw policies* string 120 | +--rw receive? boolean 121 +--rw protocol-srgb {sr:protocol-srgb}? 122 +--rw srgb* [lower-bound upper-bound] 123 +--rw lower-bound uint32 124 +--rw upper-bound uint32 125 augment /rt:routing/rt:control-plane-protocols 126 /rt:control-plane-protocol/ospf:ospf/ospf:areas 127 /ospf:area/ospf:interfaces/ospf:interface: 128 +--rw segment-routing 129 +--rw adjacency-sid 130 +--rw adj-sids* [value] 131 | +--rw value-type? enumeration 132 | +--rw value uint32 133 | +--rw protected? boolean 134 +--rw advertise-adj-group-sid* [group-id] 135 | +--rw group-id uint32 136 +--rw advertise-protection? enumeration 137 augment /rt:routing/rt:control-plane-protocols 138 /rt:control-plane-protocol/ospf:ospf/ospf:areas 139 /ospf:area/ospf:interfaces/ospf:interface/ospf:fast-reroute: 140 +--rw ti-lfa {ti-lfa}? 141 +--rw enable? boolean 142 augment /rt:routing/rt:control-plane-protocols 143 /rt:control-plane-protocol/ospf:ospf/ospf:areas 144 /ospf:area/ospf:interfaces/ospf:interface/ospf:database 145 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 146 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 147 /ospf:body/ospf:opaque/ospf:extended-prefix-opaque 148 /ospf:extended-prefix-tlv: 149 +--ro perfix-sid-sub-tlvs 150 +--ro prefix-sid-sub-tlv* 151 +--ro prefix-sid-flags 152 | +--ro bits* identityref 153 +--ro mt-id? uint8 154 +--ro algorithm? uint8 155 +--ro sid? uint32 156 augment /rt:routing/rt:control-plane-protocols 157 /rt:control-plane-protocol/ospf:ospf/ospf:areas 158 /ospf:area/ospf:database/ospf:area-scope-lsa-type 159 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 160 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 161 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 162 +--ro perfix-sid-sub-tlvs 163 +--ro prefix-sid-sub-tlv* 164 +--ro prefix-sid-flags 165 | +--ro bits* identityref 166 +--ro mt-id? uint8 167 +--ro algorithm? uint8 168 +--ro sid? uint32 169 augment /rt:routing/rt:control-plane-protocols 170 /rt:control-plane-protocol/ospf:ospf/ospf:database 171 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 172 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 173 /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: 174 +--ro perfix-sid-sub-tlvs 175 +--ro prefix-sid-sub-tlv* 176 +--ro prefix-sid-flags 177 | +--ro bits* identityref 178 +--ro mt-id? uint8 179 +--ro algorithm? uint8 180 +--ro sid? uint32 181 augment /rt:routing/rt:control-plane-protocols 182 /rt:control-plane-protocol/ospf:ospf/ospf:areas 183 /ospf:area/ospf:database/ospf:area-scope-lsa-type 184 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 185 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 186 /ospf:extended-link-opaque/ospf:extended-link-tlv: 187 +--ro adj-sid-sub-tlvs 188 | +--ro adj-sid-sub-tlv* 189 | +--ro adj-sid-flags 190 | | +--ro bits* identityref 191 | +--ro mt-id? uint8 192 | +--ro weight? uint8 193 | +--ro sid? uint32 194 +--ro lan-adj-sid-sub-tlvs 195 +--ro lan-adj-sid-sub-tlv* 196 +--ro lan-adj-sid-flags 197 | +--ro bits* identityref 198 +--ro mt-id? uint8 199 +--ro weight? uint8 200 +--ro neighbor-router-id? yang:dotted-quad 201 +--ro sid? uint32 202 augment /rt:routing/rt:control-plane-protocols 203 /rt:control-plane-protocol/ospf:ospf/ospf:areas 204 /ospf:area/ospf:interfaces/ospf:interface/ospf:database 205 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 206 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 207 /ospf:body/ospf:opaque: 208 +--ro extended-prefix-range-tlvs 209 | +--ro extended-prefix-range-tlv* 210 | +--ro prefix-length? uint8 211 | +--ro af? uint8 212 | +--ro range-size? uint16 213 | +--ro extended-prefix-range-flags 214 | | +--ro bits* identityref 215 | +--ro prefix? inet:ip-prefix 216 | +--ro perfix-sid-sub-tlvs 217 | | +--ro prefix-sid-sub-tlv* 218 | | +--ro prefix-sid-flags 219 | | | +--ro bits* identityref 220 | | +--ro mt-id? uint8 221 | | +--ro algorithm? uint8 222 | | +--ro sid? uint32 223 | +--ro unknown-tlvs 224 | +--ro unknown-tlv* 225 | +--ro type? uint16 226 | +--ro length? uint16 227 | +--ro value? yang:hex-string 228 +--ro sr-algorithm-tlv 229 | +--ro sr-algorithm* uint8 230 +--ro sid-range-tlvs 231 | +--ro sid-range-tlv* 232 | +--ro range-size? uint24 233 | +--ro sid-sub-tlv 234 | +--ro sid? uint32 235 +--ro local-block-tlvs 236 | +--ro local-block-tlv* 237 | +--ro range-size? uint24 238 | +--ro sid-sub-tlv 239 | +--ro sid? uint32 240 +--ro srms-preference-tlv 241 +--ro preference? uint8 242 augment /rt:routing/rt:control-plane-protocols 243 /rt:control-plane-protocol/ospf:ospf/ospf:areas 244 /ospf:area/ospf:database/ospf:area-scope-lsa-type 245 /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version 246 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 247 +--ro extended-prefix-range-tlvs 248 | +--ro extended-prefix-range-tlv* 249 | +--ro prefix-length? uint8 250 | +--ro af? uint8 251 | +--ro range-size? uint16 252 | +--ro extended-prefix-range-flags 253 | | +--ro bits* identityref 254 | +--ro prefix? inet:ip-prefix 255 | +--ro perfix-sid-sub-tlvs 256 | | +--ro prefix-sid-sub-tlv* 257 | | +--ro prefix-sid-flags 258 | | | +--ro bits* identityref 259 | | +--ro mt-id? uint8 260 | | +--ro algorithm? uint8 261 | | +--ro sid? uint32 262 | +--ro unknown-tlvs 263 | +--ro unknown-tlv* 264 | +--ro type? uint16 265 | +--ro length? uint16 266 | +--ro value? yang:hex-string 267 +--ro sr-algorithm-tlv 268 | +--ro sr-algorithm* uint8 269 +--ro sid-range-tlvs 270 | +--ro sid-range-tlv* 271 | +--ro range-size? uint24 272 | +--ro sid-sub-tlv 273 | +--ro sid? uint32 274 +--ro local-block-tlvs 275 | +--ro local-block-tlv* 276 | +--ro range-size? uint24 277 | +--ro sid-sub-tlv 278 | +--ro sid? uint32 279 +--ro srms-preference-tlv 280 +--ro preference? uint8 281 augment /rt:routing/rt:control-plane-protocols 282 /rt:control-plane-protocol/ospf:ospf/ospf:database 283 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 284 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: 285 +--ro extended-prefix-range-tlvs 286 | +--ro extended-prefix-range-tlv* 287 | +--ro prefix-length? uint8 288 | +--ro af? uint8 289 | +--ro range-size? uint16 290 | +--ro extended-prefix-range-flags 291 | | +--ro bits* identityref 292 | +--ro prefix? inet:ip-prefix 293 | +--ro perfix-sid-sub-tlvs 294 | | +--ro prefix-sid-sub-tlv* 295 | | +--ro prefix-sid-flags 296 | | | +--ro bits* identityref 297 | | +--ro mt-id? uint8 298 | | +--ro algorithm? uint8 299 | | +--ro sid? uint32 300 | +--ro unknown-tlvs 301 | +--ro unknown-tlv* 302 | +--ro type? uint16 303 | +--ro length? uint16 304 | +--ro value? yang:hex-string 305 +--ro sr-algorithm-tlv 306 | +--ro sr-algorithm* uint8 307 +--ro sid-range-tlvs 308 | +--ro sid-range-tlv* 309 | +--ro range-size? uint24 310 | +--ro sid-sub-tlv 311 | +--ro sid? uint32 312 +--ro local-block-tlvs 313 | +--ro local-block-tlv* 314 | +--ro range-size? uint24 315 | +--ro sid-sub-tlv 316 | +--ro sid? uint32 317 +--ro srms-preference-tlv 318 +--ro preference? uint8 320 4. OSPF Segment Routing YANG Module 322 file "ietf-ospf-sr@2019-08-13.yang" 323 module ietf-ospf-sr { 324 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; 326 prefix ospf-sr; 328 import ietf-inet-types { 329 prefix "inet"; 330 } 332 import ietf-yang-types { 333 prefix "yang"; 335 } 337 import ietf-routing { 338 prefix "rt"; 339 } 340 import ietf-segment-routing-common { 341 prefix "sr-cmn"; 342 } 343 import ietf-segment-routing { 344 prefix "sr"; 345 } 346 import ietf-ospf { 347 prefix "ospf"; 348 } 350 organization 351 "IETF LSR - Link State Routing Working Group"; 353 contact 354 "WG Web: 355 WG List: 357 Editor: Derek Yeung 358 359 Author: Derek Yeung 360 361 Author: Yingzhen Qu 362 363 Author: Acee Lindem 364 365 Author: Jeffrey Zhang 366 367 Author: Ing-Wher Chen 368 369 Author: Greg Hankins 370 "; 372 description 373 "This YANG module defines the generic configuration 374 and operational state for OSPF Segment Routing, which is 375 common across all of the vendor implementations. It is 376 intended that the module will be extended by vendors to 377 define vendor-specific OSPF Segment Routing configuration 378 and operational parameters and policies. 380 Copyright (c) 2017 IETF Trust and the persons identified as 381 authors of the code. All rights reserved. 383 Redistribution and use in source and binary forms, with or 384 without modification, is permitted pursuant to, and subject 385 to the license terms contained in, the Simplified BSD License 386 set forth in Section 4.c of the IETF Trust's Legal Provisions 387 Relating to IETF Documents 388 (http://trustee.ietf.org/license-info). 390 This version of this YANG module is part of RFC XXXX; 391 see the RFC itself for full legal notices."; 393 reference "RFC XXXX"; 395 revision 2019-08-13 { 396 description 397 ""; 398 reference 399 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 400 } 402 revision 2019-08-07 { 403 description 404 ""; 405 reference 406 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 407 } 409 revision 2019-07-07 { 410 description 411 ""; 412 reference 413 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 414 } 416 revision 2019-03-05 { 417 description 418 ""; 419 reference 420 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 421 } 423 revision 2018-06-25 { 424 description 425 ""; 426 reference 427 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 428 } 430 revision 2018-03-03 { 431 description 432 "* Remove OSPF instance."; 433 reference 434 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 435 } 437 revision 2017-12-28 { 438 description 439 ""; 440 reference 441 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 442 } 444 revision 2017-07-02 { 445 description 446 "* Implement NMDA model. 447 * Add local-block-tlvs and srms-preference-tlv. 448 * Remove sid-binding-sub-tlvs."; 449 reference 450 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 451 } 453 revision 2017-03-12 { 454 description 455 "* Add p-flag in adj-sid sub-tlv."; 456 reference 457 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 458 } 459 revision 2016-10-31 { 460 description 461 "* Update authors information. 462 * Add import of ietf-segment-routing-common module."; 463 reference 464 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 465 } 467 revision 2016-07-07 { 468 description 469 "* Change routing-protocol to control-plane-protocol."; 470 reference 471 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 472 } 474 revision 2016-03-20 { 475 description 476 "* Remove routing-instance."; 477 reference 478 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 480 } 482 revision 2015-10-19 { 483 description 484 "* Add per-protocol SRGB support. 485 * Editorial changes."; 486 reference 487 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 488 } 490 revision 2015-09-02 { 491 description 492 "* Author list update. 493 * Editorial changes."; 494 reference 495 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 496 } 498 revision 2015-07-06 { 499 description 500 "Initial revision."; 501 reference 502 "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; 503 } 505 feature ti-lfa { 506 description 507 "Topology-Independent Loop-Free Alternate (TI-LFA) 508 computation using segment routing."; 509 } 511 identity prefix-sid-bit { 512 description 513 "Base identity for prefix sid sub-tlv bits."; 514 } 516 identity np-bit { 517 base prefix-sid-bit; 518 description 519 "No-PHP flag."; 520 } 522 identity m-bit { 523 base prefix-sid-bit; 524 description 525 "Mapping server flag."; 526 } 527 identity e-bit { 528 base prefix-sid-bit; 529 description 530 "Explicit-NULL flag."; 531 } 533 identity v-bit { 534 base prefix-sid-bit; 535 description 536 "Value/Index flag."; 537 } 539 identity l-bit { 540 base prefix-sid-bit; 541 description 542 "Local flag."; 543 } 545 identity extended-prefix-range-bit { 546 description 547 "Base identity for extended prefix range TLV bits."; 548 } 550 identity ia-bit { 551 base extended-prefix-range-bit; 552 description 553 "Inter-Area flag. If set, advertisement is of inter-area type."; 554 } 556 identity adj-sid-bit { 557 description 558 "Base identity for adj sid sub-tlv bits."; 559 } 561 identity b-bit { 562 base adj-sid-bit; 563 description 564 "Backup flag."; 565 } 567 identity vi-bit { 568 base adj-sid-bit; 569 description 570 "Value/Index flag."; 571 } 573 identity lo-bit { 574 base adj-sid-bit; 575 description 576 "Local/Global flag."; 577 } 579 identity g-bit { 580 base adj-sid-bit; 581 description 582 "Group flag."; 583 } 585 identity p-bit { 586 base adj-sid-bit; 587 description 588 "Persistent flag."; 589 } 591 typedef uint24 { 592 type uint32 { 593 range "0 .. 16777215"; 594 } 595 description 596 "24-bit unsigned integer."; 597 } 599 /* Groupings */ 600 grouping sid-sub-tlv { 601 description "SID/Label sub-TLV grouping."; 602 container sid-sub-tlv { 603 description 604 "Used to advertise the SID/Label associated with a 605 prefix or adjacency."; 606 leaf sid { 607 type uint32; 608 description 609 "Segment Identifier (SID) - A 20 bit label or 610 32 bit SID."; 611 } 612 } 613 } 615 grouping prefix-sid-sub-tlvs { 616 description "Prefix Segment ID (SID) sub-TLVs."; 617 container perfix-sid-sub-tlvs{ 618 description "Prefix SID sub-TLV."; 619 list prefix-sid-sub-tlv { 620 description "Prefix SID sub-TLV."; 621 container prefix-sid-flags { 622 leaf-list bits { 623 type identityref { 624 base prefix-sid-bit; 625 } 626 description 627 "Prefix SID Sub-TLV flag bits list."; 628 } 629 description "Segment Identifier (SID) Flags."; 630 } 631 leaf mt-id { 632 type uint8; 633 description "Multi-topology ID."; 634 } 635 leaf algorithm { 636 type uint8; 637 description 638 "The algorithm associated with the prefix-SID."; 639 } 640 leaf sid { 641 type uint32; 642 description "An index or label."; 643 } 644 } 645 } 646 } 648 grouping extended-prefix-range-tlvs { 649 description "Extended prefix range TLV grouping."; 651 container extended-prefix-range-tlvs { 652 description "The list of range of prefixes."; 653 list extended-prefix-range-tlv { //type=2? 654 description "The range of prefixes."; 655 leaf prefix-length { 656 type uint8; 657 description "Length of prefix in bits."; 658 } 659 leaf af { 660 type uint8; 661 description "Address family for the prefix."; 662 } 663 leaf range-size { 664 type uint16; 665 description "The number of prefixes covered by the 666 advertisement."; 667 } 668 container extended-prefix-range-flags { 669 leaf-list bits { 670 type identityref { 671 base extended-prefix-range-bit; 672 } 673 description "Extended prefix range TLV flags list."; 674 } 675 description "Extended Prefix Range TLV flags."; 676 } 677 leaf prefix { 678 type inet:ip-prefix; 679 description "Address prefix."; 680 } 681 uses prefix-sid-sub-tlvs; 682 uses ospf:unknown-tlvs; 683 } 684 } 685 } 687 grouping sr-algorithm-tlv { 688 description "SR algorithm TLV grouping."; 689 container sr-algorithm-tlv { 690 description "All SR algorithm TLVs."; 691 leaf-list sr-algorithm { 692 type uint8; 693 description 694 "The Segment Routing (SR) algorithms that the router is 695 currently using."; 696 } 697 } 698 } 700 grouping sid-range-tlvs { 701 description "SID Range TLV grouping."; 702 container sid-range-tlvs { 703 description "List of SID range TLVs."; 704 list sid-range-tlv { 705 description "SID range TLV."; 706 leaf range-size { 707 type uint24; 708 description "The SID range."; 709 } 710 uses sid-sub-tlv; 711 } 712 } 713 } 715 grouping local-block-tlvs { 716 description "The SR local block TLV contains the 717 range of labels reserved for local SIDs."; 718 container local-block-tlvs { 719 description "List of SRLB TLVs."; 720 list local-block-tlv { 721 description "SRLB TLV."; 722 leaf range-size { 723 type uint24; 724 description "The SID range."; 725 } 726 uses sid-sub-tlv; 727 } 728 } 729 } 731 grouping srms-preference-tlv { 732 description "The SRMS preference TLV is used to advertise 733 a preference associated with the node that acts 734 as an SR Mapping Server."; 735 container srms-preference-tlv { 736 description "SRMS Preference TLV."; 737 leaf preference { 738 type uint8 { 739 range "0 .. 255"; 740 } 741 description "SRMS preference TLV, vlaue from 0 to 255."; 742 } 743 } 744 } 746 /* Configuration */ 747 augment "/rt:routing/rt:control-plane-protocols" 748 + "/rt:control-plane-protocol/ospf:ospf" { 749 when "../rt:type = 'ospf:ospfv2' or " 750 + "../rt:type = 'ospf:ospfv3'" { 751 description 752 "This augments the OSPF routing protocol when used."; 753 } 754 description 755 "This augments the OSPF protocol configuration 756 with segment routing."; 757 uses sr:sr-controlplane; 758 container protocol-srgb { 759 if-feature sr:protocol-srgb; 760 uses sr-cmn:srgb; 761 description 762 "Per-protocol SRGB."; 763 } 764 } 766 augment "/rt:routing/rt:control-plane-protocols/" 767 + "rt:control-plane-protocol/ospf:ospf/" 768 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 769 when "../../../../../rt:type = 'ospf:ospfv2' or " 770 + "../../../../../rt:type = 'ospf:ospfv3'" { 771 description 772 "This augments the OSPF interface configuration 773 when used."; 774 } 775 description 776 "This augments the OSPF protocol interface 777 configuration with segment routing."; 779 uses sr:igp-interface; 780 } 782 augment "/rt:routing/rt:control-plane-protocols/" 783 + "rt:control-plane-protocol/ospf:ospf/" 784 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" 785 + "ospf:fast-reroute" { 786 when "../../../../../../rt:type = 'ospf:ospfv2' or " 787 + "../../../../../../rt:type = 'ospf:ospfv3'" { 788 description 789 "This augments the OSPF routing protocol when used."; 790 } 791 description 792 "This augments the OSPF protocol IP-FRR with TI-LFA."; 794 container ti-lfa { 795 if-feature ti-lfa; 796 leaf enable { 797 type boolean; 798 description 799 "Enables TI-LFA computation."; 800 } 801 description 802 "Topology Independent Loop Free Alternate 803 (TI-LFA) support."; 804 } 805 } 807 /* Database */ 808 augment "/rt:routing/" 809 + "rt:control-plane-protocols/rt:control-plane-protocol/" 810 + "ospf:ospf/ospf:areas/ospf:area/" 811 + "ospf:interfaces/ospf:interface/ospf:database/" 812 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 813 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 814 + "ospf:ospfv2/ospf:body/ospf:opaque/" 815 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 816 when "../../../../../../../../../../../../../../" 817 + "rt:type = 'ospf:ospfv2'" { 818 description 819 "This augmentation is only valid for OSPFv2."; 820 } 821 description 822 "SR specific TLVs for OSPFv2 extended prefix TLV 823 in type 9 opaque LSA."; 824 uses prefix-sid-sub-tlvs; 825 } 827 augment "/rt:routing/" 828 + "rt:control-plane-protocols/rt:control-plane-protocol/" 829 + "ospf:ospf/ospf:areas/" 830 + "ospf:area/ospf:database/" 831 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 832 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 833 + "ospf:ospfv2/ospf:body/ospf:opaque/" 834 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 835 when "../../../../../../../../../../../../" 836 + "rt:type = 'ospf:ospfv2'" { 837 description 838 "This augmentation is only valid for OSPFv2."; 839 } 840 description 841 "SR specific TLVs for OSPFv2 extended prefix TLV 842 in type 10 opaque LSA."; 843 uses prefix-sid-sub-tlvs; 844 } 846 augment "/rt:routing/" 847 + "rt:control-plane-protocols/rt:control-plane-protocol/" 848 + "ospf:ospf/ospf:database/" 849 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 850 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 851 + "ospf:ospfv2/ospf:body/ospf:opaque/" 852 + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { 853 when "../../../../../../../../../../" 854 + "rt:type = 'ospf:ospfv2'" { 855 description 856 "This augmentation is only valid for OSPFv2."; 857 } 858 description 859 "SR specific TLVs for OSPFv2 extended prefix TLV 860 in type 11 opaque LSA."; 861 uses prefix-sid-sub-tlvs; 862 } 863 augment "/rt:routing/" 864 + "rt:control-plane-protocols/rt:control-plane-protocol/" 865 + "ospf:ospf/ospf:areas/" 866 + "ospf:area/ospf:database/" 867 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 868 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 869 + "ospf:ospfv2/ospf:body/ospf:opaque/" 870 + "ospf:extended-link-opaque/ospf:extended-link-tlv" { 871 when "../../../../../../../../../../../../" 872 + "rt:type = 'ospf:ospfv2'" { 873 description 874 "This augmentation is only valid for OSPFv2."; 875 } 876 description 877 "SR specific TLVs for OSPFv2 extended link TLV 878 in type 10 opaque LSA."; 880 container adj-sid-sub-tlvs { 881 description "Adjacency SID optional sub-TLVs."; 882 list adj-sid-sub-tlv { 883 description "List of Adjacency SID sub-TLVs."; 884 container adj-sid-flags { 885 leaf-list bits { 886 type identityref { 887 base adj-sid-bit; 888 } 889 description "Adj sid sub-tlv flags list."; 890 } 891 description "Adj-sid sub-tlv flags."; 892 } 893 leaf mt-id { 894 type uint8; 895 description "Multi-topology ID."; 896 } 897 leaf weight { 898 type uint8; 899 description "Weight used for load-balancing."; 900 } 901 leaf sid { 902 type uint32; 903 description "Segment Identifier (SID) index/label."; 904 } 905 } 906 } 908 container lan-adj-sid-sub-tlvs { 909 description "LAN Adjacency SID optional sub-TLVs."; 910 list lan-adj-sid-sub-tlv { 911 description "List of LAN adjacency SID sub-TLVs."; 912 container lan-adj-sid-flags { 913 leaf-list bits { 914 type identityref { 915 base adj-sid-bit; 916 } 917 description "LAN adj sid sub-tlv flags list."; 918 } 919 description "LAN adj-sid sub-tlv flags."; 920 } 921 leaf mt-id { 922 type uint8; 923 description "Multi-topology ID."; 924 } 925 leaf weight { 926 type uint8; 927 description "Weight used for load-balancing."; 928 } 929 leaf neighbor-router-id { 930 type yang:dotted-quad; 931 description "Neighbor router ID."; 932 } 933 leaf sid { 934 type uint32; 935 description "Segment Identifier (SID) index/label."; 936 } 937 } 938 } 939 } 941 augment "/rt:routing/" 942 + "rt:control-plane-protocols/rt:control-plane-protocol/" 943 + "ospf:ospf/ospf:areas/ospf:area/" 944 + "ospf:interfaces/ospf:interface/ospf:database/" 945 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 946 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 947 + "ospf:ospfv2/ospf:body/ospf:opaque" { 948 when "../../../../../../../../../../../../" 949 + "rt:type = 'ospf:ospfv2'" { 950 description 951 "This augmentation is only valid for OSPFv2."; 952 } 954 description 955 "SR specific TLVs for OSPFv2 type 9 opaque LSA."; 957 uses extended-prefix-range-tlvs; 958 uses sr-algorithm-tlv; 959 uses sid-range-tlvs; 960 uses local-block-tlvs; 961 uses srms-preference-tlv; 962 } 964 augment "/rt:routing/" 965 + "rt:control-plane-protocols/rt:control-plane-protocol/" 966 + "ospf:ospf/ospf:areas/" 967 + "ospf:area/ospf:database/" 968 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 969 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 970 + "ospf:ospfv2/ospf:body/ospf:opaque" { 971 when "../../../../../../../../../../" 972 + "rt:type = 'ospf:ospfv2'" { 973 description 974 "This augmentation is only valid for OSPFv2."; 975 } 977 description 978 "SR specific TLVs for OSPFv2 type 10 opaque LSA."; 980 uses extended-prefix-range-tlvs; 981 uses sr-algorithm-tlv; 982 uses sid-range-tlvs; 983 uses local-block-tlvs; 984 uses srms-preference-tlv; 985 } 987 augment "/rt:routing/" 988 + "rt:control-plane-protocols/rt:control-plane-protocol/" 989 + "ospf:ospf/ospf:database/" 990 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 991 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 992 + "ospf:ospfv2/ospf:body/ospf:opaque" { 993 when "../../../../../../../../" 994 + "rt:type = 'ospf:ospfv2'" { 995 description 996 "This augmentation is only valid for OSPFv2."; 997 } 998 description 999 "SR specific TLVs for OSPFv2 type 11 opaque LSA."; 1001 uses extended-prefix-range-tlvs; 1002 uses sr-algorithm-tlv; 1003 uses sid-range-tlvs; 1004 uses local-block-tlvs; 1005 uses srms-preference-tlv; 1006 } 1008 } 1009 1011 5. Security Considerations 1013 The data model defined does not create any security implications. 1015 This draft does not change any underlying security issues inherent in 1016 [I-D.ietf-netmod-routing-cfg]. 1018 6. Acknowledgements 1020 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 1021 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 1022 Alan Davey for their thorough reviews and helpful comments. 1024 This document was produced using Marshall Rose's xml2rfc tool. 1026 Author affiliation with The MITRE Corporation is provided for 1027 identification purposes only, and is not intended to convey or imply 1028 MITRE's concurrence with, or support for, the positions, opinions or 1029 viewpoints expressed. MITRE has approved this document for Public 1030 Release, Distribution Unlimited, with Public Release Case Number 1031 18-3281. 1033 7. References 1035 7.1. Normative References 1037 [I-D.ietf-ospf-ospfv3-segment-routing-extensions] 1038 Psenak, P. and S. Previdi, "OSPFv3 Extensions for Segment 1039 Routing", draft-ietf-ospf-ospfv3-segment-routing- 1040 extensions-23 (work in progress), January 2019. 1042 [I-D.ietf-ospf-segment-routing-extensions] 1043 Psenak, P., Previdi, S., Filsfils, C., Gredler, H., 1044 Shakir, R., Henderickx, W., and J. Tantsura, "OSPF 1045 Extensions for Segment Routing", draft-ietf-ospf-segment- 1046 routing-extensions-27 (work in progress), December 2018. 1048 [I-D.ietf-ospf-yang] 1049 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 1050 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 1051 yang-26 (work in progress), August 2019. 1053 [I-D.ietf-spring-sr-yang] 1054 Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. 1055 Tantsura, "YANG Data Model for Segment Routing", draft- 1056 ietf-spring-sr-yang-13 (work in progress), July 2019. 1058 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1059 Requirement Levels", BCP 14, RFC 2119, 1060 DOI 10.17487/RFC2119, March 1997, 1061 . 1063 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 1064 DOI 10.17487/RFC2328, April 1998, 1065 . 1067 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 1068 Coltun, R., and F. Baker, "OSPF Version 2 Management 1069 Information Base", RFC 4750, DOI 10.17487/RFC4750, 1070 December 2006, . 1072 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 1073 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 1074 . 1076 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 1077 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 1078 2009, . 1080 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 1081 R. Aggarwal, "Support of Address Families in OSPFv3", 1082 RFC 5838, DOI 10.17487/RFC5838, April 2010, 1083 . 1085 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1086 the Network Configuration Protocol (NETCONF)", RFC 6020, 1087 DOI 10.17487/RFC6020, October 2010, 1088 . 1090 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1091 and A. Bierman, Ed., "Network Configuration Protocol 1092 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1093 . 1095 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 1096 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 1097 . 1099 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1100 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1101 . 1103 7.2. Informative References 1105 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 1106 Management", RFC 8022, DOI 10.17487/RFC8022, November 1107 2016, . 1109 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1110 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1111 . 1113 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1114 and R. Wilton, "Network Management Datastore Architecture 1115 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1116 . 1118 Appendix A. Contributors' Addreses 1120 Dean Bogdanovic 1121 Volta Networks, Inc. 1123 EMail: dean@voltanet.io 1125 Kiran Koushik Agrahara Sreenivasa 1126 Cisco Systems 1127 12515 Research Blvd, Bldg 4 1128 Austin, TX 78681 1129 USA 1131 EMail: kkoushik@cisco.com 1133 Authors' Addresses 1135 Derek Yeung 1136 Arrcus 1138 EMail: derek@arrcus.com 1140 Yingzhen Qu 1141 Futurewei 1142 2330 Central Expressway 1143 Santa Clara, CA 95050 1144 USA 1146 EMail: yingzhen.qu@futurewei.com 1148 Jeffrey Zhang 1149 Juniper Networks 1150 10 Technology Park Drive 1151 Westford, MA 01886 1152 USA 1154 EMail: zzhang@juniper.net 1156 Ing-Wher Chen 1157 The MITRE Corporation 1159 EMail: ingwherchen@mitre.org 1160 Acee Lindem 1161 Cisco Systems 1162 301 Midenhall Way 1163 Cary, NC 27513 1165 EMail: acee@cisco.com