idnits 2.17.1 draft-qct-lsr-ppr-yang-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([I-D.chunduri-lsr-isis-preferred-path-routing], [I-D.chunduri-lsr-ospf-preferred-path-routing]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 144 has weird spacing: '... pde-id ine...' -- The document date (July 7, 2019) is 1748 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) == Outdated reference: A later version (-08) exists of draft-chunduri-lsr-isis-preferred-path-routing-03 == Outdated reference: A later version (-04) exists of draft-chunduri-lsr-ospf-preferred-path-routing-03 == Outdated reference: A later version (-42) exists of draft-ietf-isis-yang-isis-cfg-35 == Outdated reference: A later version (-29) exists of draft-ietf-ospf-yang-23 ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 3 errors (**), 0 flaws (~~), 6 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 LSR Working Group Y. Qu 3 Internet-Draft U. Chunduri 4 Intended status: Standards Track Futurewei 5 Expires: January 8, 2020 J. Tantsura 6 Apstra 7 July 7, 2019 9 YANG Data Model for Preferred Path Routing 10 draft-qct-lsr-ppr-yang-02 12 Abstract 14 This document defines YANG data modules for preferred path routing 15 ([I-D.chunduri-lsr-isis-preferred-path-routing], 16 [I-D.chunduri-lsr-ospf-preferred-path-routing]) configuration and 17 operation. The YANG modules are intended to be used on network 18 elements to manage the configurations and operations of preferred 19 path routing. 21 Requirements Language 23 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 24 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 25 document are to be interpreted as described in [RFC2119]. 27 Status of This Memo 29 This Internet-Draft is submitted in full conformance with the 30 provisions of BCP 78 and BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF). Note that other groups may also distribute 34 working documents as Internet-Drafts. The list of current Internet- 35 Drafts is at https://datatracker.ietf.org/drafts/current/. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 This Internet-Draft will expire on January 8, 2020. 44 Copyright Notice 46 Copyright (c) 2019 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (https://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with respect 54 to this document. Code Components extracted from this document must 55 include Simplified BSD License text as described in Section 4.e of 56 the Trust Legal Provisions and are provided without warranty as 57 described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 62 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 2 63 2. PPR YANG Module . . . . . . . . . . . . . . . . . . . . . . . 2 64 3. ISIS PPR YANG Module . . . . . . . . . . . . . . . . . . . . 11 65 4. OSPF PPR YANG Module . . . . . . . . . . . . . . . . . . . . 22 66 5. Security Considerations . . . . . . . . . . . . . . . . . . . 57 67 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 58 68 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 58 69 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 58 70 8.1. Normative References . . . . . . . . . . . . . . . . . . 58 71 8.2. Informative References . . . . . . . . . . . . . . . . . 59 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59 74 1. Introduction 76 This document defines YANG data modules ([RFC6020], [RFC7950]) for 77 preferred path routing configuration and operation. 79 There are three YANG modules defined in this document. Module ietf- 80 ppr.yang defined the protocol independent part of configuration and 81 operations. Two IGP modules are defined as ietf-isis-ppr.yang and 82 ietf-ospf-ppr.yang. 84 1.1. Tree diagram 86 Tree diagrams used in this document follow the notation defined in 87 [I-D.ietf-netmod-yang-tree-diagrams]. 89 2. PPR YANG Module 91 This YANG module defines protocol independent part of configuration 92 and operation of preferred path routing (PPR) as defined in 93 ([I-D.chunduri-lsr-isis-preferred-path-routing]). 95 module: ietf-ppr 96 augment /rt:routing: 98 +--rw preferred-path-routing 99 +--rw preferred-path-lists* [name] 100 +--rw name string 101 +--rw preferred-path-mpls* [ppr-id] 102 | +--rw ppr-prefix? inet:ip-prefix 103 | +--rw ppr-id uint32 104 | +--rw algo? uint8 105 | +--rw ppr-pde* [pde-id] 106 | | +--rw pde-id uint32 107 | | +--rw pde-id-type? ppr-pde-id-type 108 | | +--rw loose? boolean 109 | | +--rw pde-type? ppr-pde-type 110 | +--rw attributes 111 | +--rw count-packets? boolean 112 | +--rw count-bytes? boolean 113 | +--rw ppr-metric? uint32 114 +--rw preferred-path-ipv4* [ppr-id] 115 | +--rw ppr-prefix? inet:ipv4-prefix 116 | +--rw ppr-id inet:ipv4-prefix 117 | +--rw algo? uint8 118 | +--rw ppr-pde* [pde-id] 119 | | +--rw pde-id inet:ipv4-address 120 | | +--rw pde-id-type? ppr-pde-id-type 121 | | +--rw loose? boolean 122 | | +--rw pde-type? ppr-pde-type 123 | +--rw attributes 124 | +--rw count-packets? boolean 125 | +--rw count-bytes? boolean 126 | +--rw ppr-metric? uint32 127 +--rw preferred-path-ipv6* [ppr-id] 128 | +--rw ppr-id inet:ipv6-prefix 129 | +--rw algo? uint8 130 | +--rw ppr-prefix? inet:ipv6-prefix 131 | +--rw ppr-pde* [pde-id] 132 | | +--rw pde-id inet:ipv6-prefix 133 | | +--rw pde-id-type? ppr-pde-id-type 134 | | +--rw loose? boolean 135 | | +--rw pde-type? ppr-pde-type 136 | +--rw attributes 137 | +--rw count-packets? boolean 138 | +--rw count-bytes? boolean 139 | +--rw ppr-metric? uint32 140 +--rw preferred-path-srv6* [ppr-id] 141 +--rw ppr-id inet:ipv6-prefix 142 +--rw algo? uint8 143 +--rw ppr-pde* [pde-id] 144 | +--rw pde-id inet:ipv6-address 145 +--rw pde-id-type? ppr-pde-id-type 146 +--rw loose? boolean 147 +--rw pde-type? ppr-pde-type 148 +--rw attributes 149 +--rw count-packets? boolean 150 +--rw count-bytes? boolean 151 +--rw ppr-metric? uint32 153 file "ietf-ppr@2019-07-07.yang" 154 module ietf-ppr { 155 yang-version 1.1; 156 namespace "urn:ietf:params:xml:ns:yang:ietf-ppr"; 158 prefix ppr; 160 import ietf-inet-types { 161 prefix inet; 162 } 164 import ietf-routing { 165 prefix rt; 166 } 168 organization 169 "IETF LSR - Link State Routing Working Group"; 171 contact 172 "WG Web: 173 WG List: 175 Author: Yingzhen Qu 176 177 Uma Chunduri 178 "; 179 description 180 "This Yang module defines the configuration and operational 181 state for Preferred Path Routing common to all vendor 182 implementations. 184 This YANG model conforms to the Network Management 185 Datastore Architecture (NDMA) as described in RFC XXXX. 187 Copyright (c) 2019 IETF Trust and the persons identified as 188 authors of the code. All rights reserved. 190 Redistribution and use in source and binary forms, with or 191 without modification, is permitted pursuant to, and subject 192 to the license terms contained in, the Simplified BSD License 193 set forth in Section 4.c of the IETF Trust's Legal Provisions 194 Relating to IETF Documents 195 (http://trustee.ietf.org/license-info). 197 This version of this YANG module is part of RFC XXXX; 198 see the RFC itself for full legal notices."; 200 reference "RFC XXXX"; 202 revision 2019-07-07 { 203 description 204 "Initial revision."; 205 reference 206 "RFC XXXX: A YANG Data Model for PPR."; 207 } 209 typedef ppr-pde-type { 210 type enumeration { 211 enum topological { 212 value "1"; 213 description "Topological PPR PDE."; 214 } 215 enum non-topological { 216 value "2"; 217 description "Non-Topological PPR PED."; 218 } 219 } 220 description 221 "PPR PDE type."; 222 } 224 typedef ppr-pde-id-type { 225 type enumeration { 226 enum sidlabel { 227 value "1"; 228 description 229 "PPR ID in mpls label format."; 230 } 231 enum prefix-sid { 232 value "2"; 233 description 234 "SR-MPLS prefix SID."; 235 } 236 enum adj-sid { 237 value "3"; 238 description 239 "SR-MPLS adjacency SID."; 240 } 241 enum ipv4-node { 242 value "4"; 243 description 244 "IPv4 node address."; 245 } 246 enum ipv4-p2p { 247 value "5"; 248 description 249 "IPv5 P2P interface address."; 250 } 251 enum ipv4-lan { 252 value "6"; 253 description 254 "IPv4 Lan interface address."; 255 } 256 enum ipv6-node { 257 value "7"; 258 description 259 "IPv6 node address."; 260 } 261 enum ipv6-p2p { 262 value "8"; 263 description 264 "IPv6 P2P interface address."; 265 } 266 enum ipv6-lan { 267 value "9"; 268 description 269 "IPv6 LAN interface address."; 270 } 271 enum srv6-node-sid { 272 value "10"; 273 description 274 "PDE ID in SRv6 node SID format."; 275 } 276 enum srv6-adj-sid { 277 value "11"; 278 description 279 "PDE ID in SRv6 node SID format."; 280 } 281 } 282 description "Type of PPR ID."; 283 } 285 /* Groupings*/ 286 grouping ppr-attributes { 287 leaf count-packets { 288 type boolean; 289 description 290 "create a counter to count number of packets 291 forwarded on this PPR-ID on each node in the 292 path description."; 293 } 294 leaf count-bytes { 295 type boolean; 296 description 297 "create a conter to count number of bytes."; 298 } 299 leaf ppr-metric { 300 type uint32; 301 description 302 "Metric of the path prepsented by the PPR-ID."; 303 } 304 description 305 "Groupings for PPR attributes."; 306 } 308 grouping pde-attributes { 309 leaf pde-id-type { 310 type ppr-pde-id-type; 311 description 312 "PDE forwarding identifier type."; 313 } 314 leaf loose { 315 type boolean; 316 default "true"; 317 description 318 "If set, the next topological PDE is loose."; 319 } 320 leaf pde-type { 321 type ppr-pde-type; 322 description "PPR PDE type."; 323 } 324 description 325 "Groupings for PDE attributes."; 326 } 328 augment "/rt:routing" { 329 description 330 "This module augments routing-instace configuration 331 with preferred path routing."; 332 container preferred-path-routing { 333 description 334 "preferred path routing configuration."; 336 list preferred-path-lists { 337 key "name"; 338 description 339 "Preferred path lists."; 341 leaf name { 342 type string; 343 description "PPR path list ID."; 344 } 346 list preferred-path-mpls { 347 key "ppr-id"; 348 description 349 "List of preferred path using MPLS data plane."; 350 leaf ppr-prefix { 351 type inet:ip-prefix; 352 description 353 "PPR Prefix representing the destination of the path."; 354 } 355 leaf ppr-id { 356 type uint32; 357 description 358 "PPR ID, A 20 bit label or 32 bit SID."; 359 } 360 leaf algo { 361 type uint8; 362 description 363 "SPF algorithm."; 364 } 365 list ppr-pde { 366 key "pde-id"; 367 leaf pde-id { 368 type uint32; 369 description 370 "PDE identifiler."; 371 } 372 uses pde-attributes; 373 description 374 "List of PPR Path Description Element (PDE)."; 375 } 376 container attributes { 377 uses ppr-attributes; 378 description "PPR attributes."; 379 } 380 } 382 list preferred-path-ipv4 { 383 key "ppr-id"; 384 description 385 "List of preferred path using IPv4 data plane."; 387 leaf ppr-prefix { 388 type inet:ipv4-prefix; 389 description 390 "PPR Prefix representing the destination of the path."; 391 } 392 leaf ppr-id { 393 type inet:ipv4-prefix; 394 description 395 "PPR ID, IPv4 address format."; 396 } 397 leaf algo { 398 type uint8; 399 description 400 "SPF algorithm."; 401 } 402 list ppr-pde { 403 key "pde-id"; 404 leaf pde-id { 405 type inet:ipv4-address; 406 description 407 "PDE identifier."; 408 } 409 uses pde-attributes; 410 description 411 "List of PPR Path Description Element (PDE)."; 412 } 413 container attributes { 414 uses ppr-attributes; 415 description "PPR attributes."; 416 } 417 } 419 list preferred-path-ipv6 { 420 key "ppr-id"; 421 description 422 "List of preferred path using IPv6 data plane."; 423 leaf ppr-id { 424 type inet:ipv6-prefix; 425 description 426 "PPR ID, IPv6 address format."; 427 } 428 leaf algo { 429 type uint8; 430 description 431 "SPF algorithm."; 432 } 433 leaf ppr-prefix { 434 type inet:ipv6-prefix; 435 description 436 "The prefix at the tail-end of the advertised PPR."; 437 } 439 list ppr-pde { 440 key "pde-id"; 441 leaf pde-id { 442 type inet:ipv6-prefix; 443 description 444 "PDE identifier."; 445 } 446 uses pde-attributes; 447 description 448 "List of PPR Path Description Element (PDE)."; 449 } 450 container attributes { 451 uses ppr-attributes; 452 description "PPR attributes."; 453 } 454 } 456 list preferred-path-srv6 { 457 key "ppr-id"; 458 description 459 "List of preferred path using SRv6 data plane."; 460 leaf ppr-id { 461 type inet:ipv6-prefix; 462 description 463 "PPR ID, SRv6 SID format."; 464 } 465 leaf algo { 466 type uint8; 467 description 468 "SPF algorithm."; 469 } 470 list ppr-pde { 471 key "pde-id"; 472 leaf pde-id { 473 type inet:ipv6-address; 474 description 475 "PDE identifier."; 476 } 477 description 478 "List of PPR Path Description Element (PDE)."; 479 } 480 uses pde-attributes; 481 container attributes { 482 uses ppr-attributes; 483 description "PPR attributes."; 484 } 486 } 488 } 490 } 491 } 492 } 493 495 3. ISIS PPR YANG Module 497 This YANG module defines ISIS configuration and operation of 498 preferred path routing (PPR) as defined in 499 ([I-D.chunduri-lsr-isis-preferred-path-routing]). It augments base 500 ISIS module defined in [I-D.ietf-isis-yang-isis-cfg]. 502 module: ietf-isis-ppr 503 augment /rt:routing/rt:control-plane-protocols 504 /rt:control-plane-protocol/isis:isis: 505 +--rw ppr 506 +--rw ppr-enable* [name] 507 +--rw enable? boolean 508 +--rw name -> /rt:routing/ppr:preferred-path-routing 509 /preferred-path-lists/name 510 augment /rt:routing/rt:control-plane-protocols 511 /rt:control-plane-protocol/isis:isis/isis:database 512 /isis:levels/isis:lsp: 513 +--ro ppr-tlvs 514 +--ro ppr-tlv* 515 +--ro flags? bits 516 +--ro fragment-id? uint8 517 +--ro mt-id? uint16 518 +--ro algorithm? uint8 519 +--ro ppr-prefix-sub-tlv 520 | +--ro prefix-len? uint8 521 | +--ro mask-len? uint8 522 | +--ro isis-prefix? inet:ip-address 523 | +--ro ppr-prefix-sub-sub-tlvs 524 | +--ro unknown-tlv* 525 | +--ro type? uint8 526 | +--ro length? uint8 527 | +--ro value? yang:hex-string 528 +--ro ppr-id-sub-tlv 529 | +--ro ppr-id-type? enumeration 530 | +--ro ppr-id-len? uint8 531 | +--ro ppr-id-mask-len? uint8 532 | +--ro (ppr-id)? 533 | +--:(mpls-id) 534 | | +--ro mpls-id? uint32 535 | +--:(ipv4-id) 536 | | +--ro ipv4-id? inet:ipv4-prefix 537 | +--:(srv6-ipv6-id) 538 | +--ro srv6-ipv6-id? inet:ipv6-prefix 539 +--ro ppr-pde-sub-tlvs* 540 | +--ro pde-type? enumeration 541 | +--ro ppr-pde-flags? bits 542 | +--ro pde-id-type? ppr:ppr-pde-id-type 543 | +--ro pde-id-len? uint8 544 | +--ro (pde-id)? 545 | | +--:(mpls-id) 546 | | | +--ro mpls-id? uint32 547 | | +--:(ipv4-id) 548 | | | +--ro ipv4-id? inet:ipv4-prefix 549 | | +--:(srv6-ipv6-id) 550 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 551 | +--ro sub-tlv-length? uint8 552 | +--ro ppr-pde-sub-sub-tlvs 553 | +--ro unknown-tlv* 554 | +--ro type? uint8 555 | +--ro length? uint8 556 | +--ro value? yang:hex-string 557 +--ro ppr-attribute-sub-tlv 558 +--ro traffic-accounting-sub-tlv 559 | +--ro type? uint8 560 +--ro traffic-statis-sub-tlv 561 | +--ro type? uint8 562 +--ro ipv4-routerid-sub-tlv 563 | +--ro type? uint8 564 | +--ro length? uint8 565 | +--ro value? inet:ipv4-address 566 +--ro ipv6-routerid-sub-tlv 567 | +--ro type? uint8 568 | +--ro length? uint8 569 | +--ro value? inet:ipv6-address 570 +--ro ppr-metric-sub-tlv 571 +--ro type? uint8 572 +--ro length? uint8 573 +--ro value? uint32 575 file "ietf-isis-ppr@2019-07-07.yang" 576 module ietf-isis-ppr { 577 yang-version 1.1; 578 namespace "urn:ietf:params:xml:ns:yang:ietf-isis-ppr"; 579 prefix isis-ppr; 581 import ietf-inet-types { 582 prefix inet; 583 } 585 import ietf-yang-types { 586 prefix "yang"; 587 } 589 import ietf-routing { 590 prefix rt; 591 } 593 import ietf-isis { 594 prefix "isis"; 595 } 597 import ietf-ppr { 598 prefix "ppr"; 599 } 601 organization 602 "IETF LSR - Link State Routing Working Group"; 604 contact 605 "WG Web: 606 WG List: 608 Author: Yingzhen Qu 609 610 Uma Chunduri 611 "; 612 description 613 "This Yang module defines the configuration and operational 614 state for Preferred Path Routing common to all vendor 615 implementations. 617 This YANG model conforms to the Network Management 618 Datastore Architecture (NDMA) as described in RFC XXXX. 620 Copyright (c) 2019 IETF Trust and the persons identified as 621 authors of the code. All rights reserved. 623 Redistribution and use in source and binary forms, with or 624 without modification, is permitted pursuant to, and subject 625 to the license terms contained in, the Simplified BSD License 626 set forth in Section 4.c of the IETF Trust's Legal Provisions 627 Relating to IETF Documents 628 (http://trustee.ietf.org/license-info). 630 This version of this YANG module is part of RFC XXXX; 631 see the RFC itself for full legal notices."; 633 reference "RFC XXXX"; 635 revision 2019-07-07 { 636 description 637 "Initial revision."; 638 reference 639 "RFC XXXX: A YANG Data Model for ISIS PPR."; 640 } 642 /* Groupings */ 643 grouping tlv { 644 description 645 "TLV"; 646 leaf type { 647 type uint8; 648 description "TLV type."; 649 } 650 leaf length { 651 type uint8; 652 description "TLV length (octets)."; 653 } 654 leaf value { 655 type yang:hex-string; 656 description "TLV value."; 657 } 658 } 660 grouping general-tlvs { 661 description 662 "Unknown TLVs grouping - Used for unknown TLVs or 663 unknown sub-TLVs."; 665 list unknown-tlv { 666 description "General TLV."; 667 uses tlv; 668 } 669 } 671 grouping ppr-prefix-sub-tlv { 672 description "ISIS destination prefix."; 673 container ppr-prefix-sub-tlv { 674 leaf prefix-len { 675 type uint8; 676 description "The length of the profix in bytes."; 677 } 678 leaf mask-len { 679 type uint8; 680 description "The length of the profix in bits."; 681 } 682 leaf isis-prefix { 683 type inet:ip-address; 684 description "FEC Prefix."; 685 } 686 container ppr-prefix-sub-sub-tlvs { 687 uses general-tlvs; 688 description "PPR Prefix sub sub-tlvs."; 689 } 690 description 691 "PPR Prefix sub-tlv."; 692 } 693 } 695 grouping ppr-id-sub-tlv { 696 description 697 "PPR ID: the actual data plane identifier in the packet header."; 699 container ppr-id-sub-tlv { 700 leaf ppr-id-type { 701 type enumeration { 702 enum mpls { 703 value 1; 704 description 705 "PPR ID in mpls label format."; 706 } 707 enum ipv4 { 708 value 2; 709 description 710 "PPR ID in IPv4 address format."; 711 } 712 enum ipv6 { 713 value 3; 714 description 715 "PPR ID in ipv6 address format."; 716 } 717 enum srv6 { 718 value 4; 719 description 720 "PPR ID in SRv6 SID format."; 722 } 723 } 724 description "Type of PPR ID."; 725 } 726 leaf ppr-id-len { 727 type uint8; 728 description 729 "Length of the PPR ID."; 730 } 731 leaf ppr-id-mask-len { 732 type uint8; 733 description "The length of the profix in bits."; 734 } 735 choice ppr-id { 736 leaf mpls-id { 737 type uint32; 738 description "MPLS Label format."; 739 } 740 leaf ipv4-id { 741 type inet:ipv4-prefix; 742 description "IPv4 format."; 743 } 744 leaf srv6-ipv6-id { 745 type inet:ipv6-prefix; 746 description "SRv6 or IPv6 format."; 747 } 748 description "Preferred Path ID."; 749 } 750 description "PPR ID sub tlv."; 751 } 753 } 755 grouping ppr-pde-sub-tlv { 756 description 757 "This sub-tlv represents the PPR Path Description Element (PDE)."; 759 list ppr-pde-sub-tlvs { 760 description "PPR PDE sub tlvs."; 761 leaf pde-type { 762 type enumeration { 763 enum topological { 764 value 1; 765 description 766 "Topological PDE."; 767 } 768 enum non-topological { 769 value 2; 770 description 771 "Non-topological PDE."; 772 } 773 } 774 description "Type of PDE."; 775 } 776 leaf ppr-pde-flags { 777 type bits { 778 bit L { 779 position 0; 780 description 781 "If set, the PPR path is a Loose-PPR."; 782 } 783 bit N { 784 position 1; 785 description 786 "If set, the PDE is topological and this PDE represents 787 the node PPR-prfix"; 788 } 789 bit E { 790 position 2; 791 description 792 "Egress Bit. By default this bit MUST be unset."; 793 } 794 } 795 description "Flags."; 796 } 797 leaf pde-id-type { 798 type ppr:ppr-pde-id-type; 799 description "Type of PPR PDE ID."; 800 } 801 leaf pde-id-len { 802 type uint8; 803 description 804 "Length of the PDE ID."; 805 } 806 choice pde-id { 807 leaf mpls-id { 808 type uint32; 809 description "MPLS Label format."; 810 } 811 leaf ipv4-id { 812 type inet:ipv4-prefix; 813 description "IPv4 format."; 814 } 815 leaf srv6-ipv6-id { 816 type inet:ipv6-prefix; 817 description "SRv6 or IPv6 format."; 819 } 820 description "Preferred Path ID."; 821 } 822 leaf sub-tlv-length{ 823 type uint8; 824 description 825 "Length of all sub-TLVs followed."; 826 } 827 container ppr-pde-sub-sub-tlvs { 828 uses general-tlvs; 829 description "PPR PDE sub sub-tlvs."; 830 } 831 } 832 } 834 grouping ppr-attribute-sub-tlv { 835 description "Grouping for PPR attribute sub-tlvs."; 837 container ppr-attribute-sub-tlv { 838 description "PPR attribute sub-tlv."; 840 container traffic-accounting-sub-tlv { 841 description 842 "packet traffic acccounting sub-tlv. Specifies to create 843 a counter to count number of packets forwarded to this 844 PPR-ID on each node in the path description."; 845 leaf type { 846 type uint8; 847 default 1; 848 description "Type 1 sub-tlv."; 849 } 850 } 851 container traffic-statis-sub-tlv { 852 description 853 "Specifies to create a counter to count number of bytes 854 forwarded on this PPR-ID specified in the network header 855 (e.g. IPv4, IPv6) on each node in the path description."; 856 leaf type { 857 type uint8; 858 default 2; 859 description "Traffic statistics in bytes sub-tlv."; 860 } 861 } 862 container ipv4-routerid-sub-tlv { 863 description "PPR-prefix originating node's IPv4 router ID."; 864 leaf type { 865 type uint8; 866 default 3; 867 description "PPR-prefix originating node's IPv4 router ID."; 868 } 869 leaf length { 870 type uint8; 871 default 4; 872 description "Lenght is 4 bytes."; 873 } 874 leaf value { 875 type inet:ipv4-address; 876 description "IPv4 router ID."; 877 } 878 } 879 container ipv6-routerid-sub-tlv { 880 description "PPR-prefix originating node's IPv6 router ID."; 881 leaf type { 882 type uint8; 883 default 4; 884 description "PPR-prefix originating node's IPv6 router ID."; 885 } 886 leaf length { 887 type uint8; 888 default 16; 889 description "Length is 16 bytes."; 890 } 891 leaf value { 892 type inet:ipv6-address; 893 description "IPv6 router ID."; 894 } 895 } 896 container ppr-metric-sub-tlv { 897 description 898 "The metric of this path represented through the PPR-ID."; 899 leaf type { 900 type uint8; 901 default 5; 902 description "Metric sub-tlv."; 903 } 904 leaf length { 905 type uint8; 906 default 4; 907 description "4 bytes."; 908 } 909 leaf value { 910 type uint32; 911 description "Metirc of the PPR-ID."; 912 } 913 } 914 } 916 } 918 grouping ppr-tlvs { 919 description "PPR TLV encodings."; 921 container ppr-tlvs { 922 description "List of PPR TLVs."; 923 list ppr-tlv { 924 description "List of PPR TLVs."; 925 leaf flags { 926 type bits { 927 bit F { 928 position 0; 929 description 930 "If set, the PPR TLV must be flooded across 931 the entire routing domain."; 932 } 933 bit D { 934 position 1; 935 description 936 "If set, the PPR TLV is leaked from ISIS level-2 937 to level-1."; 938 } 939 bit A { 940 position 2; 941 description 942 "If set, it is to signal that the prefixes and PPR IDs 943 advertised in this TLV are directly connected to 944 their originators."; 945 } 946 bit U { 947 position 3; 948 description 949 "U bit MUST be set if a path has only one fragment or 950 if it is the last Fragment of the path."; 951 } 952 } 953 description "Flags."; 954 } 955 leaf fragment-id { 956 type uint8 { 957 range "0 .. 127"; 958 } 959 description 960 "Identifiler of the fragment."; 961 } 962 leaf mt-id { 963 type uint16 { 964 range "0 .. 4095"; 965 } 966 description 967 "This leaf defines the identifier 968 of a topology as in RFC 5120."; 969 } 970 leaf algorithm { 971 type uint8; 972 description 973 "The SPF algorithm."; 974 } 975 uses ppr-prefix-sub-tlv; 976 uses ppr-id-sub-tlv; 977 uses ppr-pde-sub-tlv; 978 uses ppr-attribute-sub-tlv; 979 } 980 } 981 } 983 /* Configuration */ 984 augment "/rt:routing/rt:control-plane-protocols" 985 + "/rt:control-plane-protocol/isis:isis" { 986 when "../rt:type = 'isis:isis'" { 987 description 988 "This augments the ISIS routing protocol when used."; 989 } 990 description 991 "This augments the ISIS protocol configuration 992 with preferred path routing."; 994 container ppr { 995 description 996 "ISIS PPR."; 997 leaf enable { 998 type boolean; 999 default false; 1000 description 1001 "Enable PPR."; 1002 } 1003 list ppr-advertise { 1004 key "name"; 1005 leaf name { 1006 type leafref { 1007 path "/rt:routing/ppr:preferred-path-routing/" 1008 + "ppr:preferred-path-lists/ppr:name"; 1009 } 1010 description 1011 "PPR path list name."; 1012 } 1013 description 1014 "Enable PPR path advertisement."; 1015 } 1016 } 1017 } 1019 /* Database */ 1020 augment "/rt:routing/" 1021 + "rt:control-plane-protocols/rt:control-plane-protocol" 1022 + "/isis:isis/isis:database/isis:levels/isis:lsp" { 1023 when "/rt:routing/rt:control-plane-protocols/"+ 1024 "rt:control-plane-protocol/rt:type = 'isis:isis'" { 1025 description 1026 "This augment ISIS routing protocol when used"; 1027 } 1028 description 1029 "This augments ISIS protocol LSDB."; 1030 uses ppr-tlvs; 1032 } 1033 } 1034 1036 4. OSPF PPR YANG Module 1038 This YANG module defines OSPF configuration and operation of 1039 preferred path routing (PPR) as defined in 1040 ([I-D.chunduri-lsr-ospf-preferred-path-routing]). It augments the 1041 base OSPF module defined in [I-D.ietf-ospf-yang]. Both OSPFv2 and 1042 OSPFv3 are included. 1044 module: ietf-ospf-ppr 1045 augment /rt:routing/rt:control-plane-protocols 1046 /rt:control-plane-protocol/ospf:ospf: 1047 +--rw ppr 1048 +--rw ppr-enable* [name] 1049 +--rw enable? boolean 1050 +--rw name -> /rt:routing/ppr:preferred-path-routing 1051 /preferred-path-lists/name 1052 augment /rt:routing/rt:control-plane-protocols 1053 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1054 /ospf:interfaces/ospf:interface/ospf:database 1055 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1056 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1057 /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs 1058 /ospf:extended-prefix-tlv: 1060 +--ro ppr-tlvs 1061 +--ro ppr-tlv* 1062 +--ro flags? bits 1063 +--ro af? iana-rt-types:address-family 1064 +--ro ppr-prefix-sub-tlv 1065 | +--ro mt-id? uint8 1066 | +--ro prefix-len? uint8 1067 | +--ro mask-len? uint8 1068 | +--ro ospf-prefix? inet:ip-address 1069 | +--ro ppr-prefix-sub-sub-tlvs 1070 | +--ro unknown-tlvs 1071 | +--ro unknown-tlv* 1072 | +--ro type? uint16 1073 | +--ro length? uint16 1074 | +--ro value? yang:hex-string 1075 +--ro ppr-id-sub-tlv 1076 | +--ro ppr-id-type? enumeration 1077 | +--ro ppr-id-len? uint8 1078 | +--ro ppr-id-mask-len? uint8 1079 | +--ro ppr-id-algo? uint8 1080 | +--ro (ppr-id)? 1081 | +--:(mpls-id) 1082 | | +--ro mpls-id? uint32 1083 | +--:(ipv4-id) 1084 | | +--ro ipv4-id? inet:ipv4-prefix 1085 | +--:(srv6-ipv6-id) 1086 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1087 +--ro ppr-pde-sub-tlvs* 1088 | +--ro pde-type? enumeration 1089 | +--ro ppr-pde-flags? bits 1090 | +--ro pde-id-type? ppr:ppr-pde-id-type 1091 | +--ro pde-id-len? uint8 1092 | +--ro (pde-id)? 1093 | | +--:(mpls-id) 1094 | | | +--ro mpls-id? uint32 1095 | | +--:(ipv4-id) 1096 | | | +--ro ipv4-id? inet:ipv4-prefix 1097 | | +--:(srv6-ipv6-id) 1098 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1099 | +--ro ppr-pde-sub-sub-tlvs 1100 | +--ro unknown-tlvs 1101 | +--ro unknown-tlv* 1102 | +--ro type? uint16 1103 | +--ro length? uint16 1104 | +--ro value? yang:hex-string 1105 +--ro ppr-attribute-sub-tlv 1106 +--ro traffic-accounting-sub-tlv 1107 | +--ro type? uint8 1108 +--ro traffic-statis-sub-tlv 1109 | +--ro type? uint8 1110 +--ro ipv4-routerid-sub-tlv 1111 | +--ro type? uint8 1112 | +--ro length? uint8 1113 | +--ro value? inet:ipv4-address 1114 +--ro ipv6-routerid-sub-tlv 1115 | +--ro type? uint8 1116 | +--ro length? uint8 1117 | +--ro value? inet:ipv6-address 1118 +--ro ppr-metric-sub-tlv 1119 +--ro type? uint8 1120 +--ro length? uint8 1121 +--ro value? uint32 1122 augment /rt:routing/rt:control-plane-protocols 1123 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1124 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1125 /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 1126 /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs 1127 /ospf:extended-prefix-tlv: 1128 +--ro ppr-tlvs 1129 +--ro ppr-tlv* 1130 +--ro flags? bits 1131 +--ro af? iana-rt-types:address-family 1132 +--ro ppr-prefix-sub-tlv 1133 | +--ro mt-id? uint8 1134 | +--ro prefix-len? uint8 1135 | +--ro mask-len? uint8 1136 | +--ro ospf-prefix? inet:ip-address 1137 | +--ro ppr-prefix-sub-sub-tlvs 1138 | +--ro unknown-tlvs 1139 | +--ro unknown-tlv* 1140 | +--ro type? uint16 1141 | +--ro length? uint16 1142 | +--ro value? yang:hex-string 1143 +--ro ppr-id-sub-tlv 1144 | +--ro ppr-id-type? enumeration 1145 | +--ro ppr-id-len? uint8 1146 | +--ro ppr-id-mask-len? uint8 1147 | +--ro ppr-id-algo? uint8 1148 | +--ro (ppr-id)? 1149 | +--:(mpls-id) 1150 | | +--ro mpls-id? uint32 1151 | +--:(ipv4-id) 1152 | | +--ro ipv4-id? inet:ipv4-prefix 1153 | +--:(srv6-ipv6-id) 1154 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1155 +--ro ppr-pde-sub-tlvs* 1156 | +--ro pde-type? enumeration 1157 | +--ro ppr-pde-flags? bits 1158 | +--ro pde-id-type? ppr:ppr-pde-id-type 1159 | +--ro pde-id-len? uint8 1160 | +--ro (pde-id)? 1161 | | +--:(mpls-id) 1162 | | | +--ro mpls-id? uint32 1163 | | +--:(ipv4-id) 1164 | | | +--ro ipv4-id? inet:ipv4-prefix 1165 | | +--:(srv6-ipv6-id) 1166 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1167 | +--ro ppr-pde-sub-sub-tlvs 1168 | +--ro unknown-tlvs 1169 | +--ro unknown-tlv* 1170 | +--ro type? uint16 1171 | +--ro length? uint16 1172 | +--ro value? yang:hex-string 1173 +--ro ppr-attribute-sub-tlv 1174 +--ro traffic-accounting-sub-tlv 1175 | +--ro type? uint8 1176 +--ro traffic-statis-sub-tlv 1177 | +--ro type? uint8 1178 +--ro ipv4-routerid-sub-tlv 1179 | +--ro type? uint8 1180 | +--ro length? uint8 1181 | +--ro value? inet:ipv4-address 1182 +--ro ipv6-routerid-sub-tlv 1183 | +--ro type? uint8 1184 | +--ro length? uint8 1185 | +--ro value? inet:ipv6-address 1186 +--ro ppr-metric-sub-tlv 1187 +--ro type? uint8 1188 +--ro length? uint8 1189 +--ro value? uint32 1190 augment /rt:routing/rt:control-plane-protocols 1191 /rt:control-plane-protocol/ospf:ospf/ospf:database 1192 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1193 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque 1194 /ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: 1195 +--ro ppr-tlvs 1196 +--ro ppr-tlv* 1197 +--ro flags? bits 1198 +--ro af? iana-rt-types:address-family 1199 +--ro ppr-prefix-sub-tlv 1200 | +--ro mt-id? uint8 1201 | +--ro prefix-len? uint8 1202 | +--ro mask-len? uint8 1203 | +--ro ospf-prefix? inet:ip-address 1204 | +--ro ppr-prefix-sub-sub-tlvs 1205 | +--ro unknown-tlvs 1206 | +--ro unknown-tlv* 1207 | +--ro type? uint16 1208 | +--ro length? uint16 1209 | +--ro value? yang:hex-string 1210 +--ro ppr-id-sub-tlv 1211 | +--ro ppr-id-type? enumeration 1212 | +--ro ppr-id-len? uint8 1213 | +--ro ppr-id-mask-len? uint8 1214 | +--ro ppr-id-algo? uint8 1215 | +--ro (ppr-id)? 1216 | +--:(mpls-id) 1217 | | +--ro mpls-id? uint32 1218 | +--:(ipv4-id) 1219 | | +--ro ipv4-id? inet:ipv4-prefix 1220 | +--:(srv6-ipv6-id) 1221 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1222 +--ro ppr-pde-sub-tlvs* 1223 | +--ro pde-type? enumeration 1224 | +--ro ppr-pde-flags? bits 1225 | +--ro pde-id-type? ppr:ppr-pde-id-type 1226 | +--ro pde-id-len? uint8 1227 | +--ro (pde-id)? 1228 | | +--:(mpls-id) 1229 | | | +--ro mpls-id? uint32 1230 | | +--:(ipv4-id) 1231 | | | +--ro ipv4-id? inet:ipv4-prefix 1232 | | +--:(srv6-ipv6-id) 1233 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1234 | +--ro ppr-pde-sub-sub-tlvs 1235 | +--ro unknown-tlvs 1236 | +--ro unknown-tlv* 1237 | +--ro type? uint16 1238 | +--ro length? uint16 1239 | +--ro value? yang:hex-string 1240 +--ro ppr-attribute-sub-tlv 1241 +--ro traffic-accounting-sub-tlv 1242 | +--ro type? uint8 1243 +--ro traffic-statis-sub-tlv 1244 | +--ro type? uint8 1245 +--ro ipv4-routerid-sub-tlv 1246 | +--ro type? uint8 1247 | +--ro length? uint8 1248 | +--ro value? inet:ipv4-address 1249 +--ro ipv6-routerid-sub-tlv 1250 | +--ro type? uint8 1251 | +--ro length? uint8 1252 | +--ro value? inet:ipv6-address 1253 +--ro ppr-metric-sub-tlv 1254 +--ro type? uint8 1255 +--ro length? uint8 1256 +--ro value? uint32 1257 augment /rt:routing/rt:control-plane-protocols 1258 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1259 /ospf:interfaces/ospf:interface/ospf:database 1260 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1261 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1262 /ospf:body/ospf:inter-area-prefix: 1263 +--ro ppr-tlvs 1264 +--ro ppr-tlv* 1265 +--ro flags? bits 1266 +--ro af? iana-rt-types:address-family 1267 +--ro ppr-prefix-sub-tlv 1268 | +--ro mt-id? uint8 1269 | +--ro prefix-len? uint8 1270 | +--ro mask-len? uint8 1271 | +--ro ospf-prefix? inet:ip-address 1272 | +--ro ppr-prefix-sub-sub-tlvs 1273 | +--ro unknown-tlvs 1274 | +--ro unknown-tlv* 1275 | +--ro type? uint16 1276 | +--ro length? uint16 1277 | +--ro value? yang:hex-string 1278 +--ro ppr-id-sub-tlv 1279 | +--ro ppr-id-type? enumeration 1280 | +--ro ppr-id-len? uint8 1281 | +--ro ppr-id-mask-len? uint8 1282 | +--ro ppr-id-algo? uint8 1283 | +--ro (ppr-id)? 1284 | +--:(mpls-id) 1285 | | +--ro mpls-id? uint32 1286 | +--:(ipv4-id) 1287 | | +--ro ipv4-id? inet:ipv4-prefix 1288 | +--:(srv6-ipv6-id) 1289 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1290 +--ro ppr-pde-sub-tlvs* 1291 | +--ro pde-type? enumeration 1292 | +--ro ppr-pde-flags? bits 1293 | +--ro pde-id-type? ppr:ppr-pde-id-type 1294 | +--ro pde-id-len? uint8 1295 | +--ro (pde-id)? 1296 | | +--:(mpls-id) 1297 | | | +--ro mpls-id? uint32 1298 | | +--:(ipv4-id) 1299 | | | +--ro ipv4-id? inet:ipv4-prefix 1300 | | +--:(srv6-ipv6-id) 1301 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1302 | +--ro ppr-pde-sub-sub-tlvs 1303 | +--ro unknown-tlvs 1304 | +--ro unknown-tlv* 1305 | +--ro type? uint16 1306 | +--ro length? uint16 1307 | +--ro value? yang:hex-string 1308 +--ro ppr-attribute-sub-tlv 1309 +--ro traffic-accounting-sub-tlv 1310 | +--ro type? uint8 1311 +--ro traffic-statis-sub-tlv 1312 | +--ro type? uint8 1313 +--ro ipv4-routerid-sub-tlv 1314 | +--ro type? uint8 1315 | +--ro length? uint8 1316 | +--ro value? inet:ipv4-address 1317 +--ro ipv6-routerid-sub-tlv 1318 | +--ro type? uint8 1319 | +--ro length? uint8 1320 | +--ro value? inet:ipv6-address 1321 +--ro ppr-metric-sub-tlv 1322 +--ro type? uint8 1323 +--ro length? uint8 1324 +--ro value? uint32 1325 augment /rt:routing/rt:control-plane-protocols 1326 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1327 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1328 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1329 /ospf:body/ospf:inter-area-prefix: 1330 +--ro ppr-tlvs 1331 +--ro ppr-tlv* 1332 +--ro flags? bits 1333 +--ro af? iana-rt-types:address-family 1334 +--ro ppr-prefix-sub-tlv 1335 | +--ro mt-id? uint8 1336 | +--ro prefix-len? uint8 1337 | +--ro mask-len? uint8 1338 | +--ro ospf-prefix? inet:ip-address 1339 | +--ro ppr-prefix-sub-sub-tlvs 1340 | +--ro unknown-tlvs 1341 | +--ro unknown-tlv* 1342 | +--ro type? uint16 1343 | +--ro length? uint16 1344 | +--ro value? yang:hex-string 1345 +--ro ppr-id-sub-tlv 1346 | +--ro ppr-id-type? enumeration 1347 | +--ro ppr-id-len? uint8 1348 | +--ro ppr-id-mask-len? uint8 1349 | +--ro ppr-id-algo? uint8 1350 | +--ro (ppr-id)? 1351 | +--:(mpls-id) 1352 | | +--ro mpls-id? uint32 1353 | +--:(ipv4-id) 1354 | | +--ro ipv4-id? inet:ipv4-prefix 1355 | +--:(srv6-ipv6-id) 1356 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1357 +--ro ppr-pde-sub-tlvs* 1358 | +--ro pde-type? enumeration 1359 | +--ro ppr-pde-flags? bits 1360 | +--ro pde-id-type? ppr:ppr-pde-id-type 1361 | +--ro pde-id-len? uint8 1362 | +--ro (pde-id)? 1363 | | +--:(mpls-id) 1364 | | | +--ro mpls-id? uint32 1365 | | +--:(ipv4-id) 1366 | | | +--ro ipv4-id? inet:ipv4-prefix 1367 | | +--:(srv6-ipv6-id) 1368 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1369 | +--ro ppr-pde-sub-sub-tlvs 1370 | +--ro unknown-tlvs 1371 | +--ro unknown-tlv* 1372 | +--ro type? uint16 1373 | +--ro length? uint16 1374 | +--ro value? yang:hex-string 1375 +--ro ppr-attribute-sub-tlv 1376 +--ro traffic-accounting-sub-tlv 1377 | +--ro type? uint8 1378 +--ro traffic-statis-sub-tlv 1379 | +--ro type? uint8 1380 +--ro ipv4-routerid-sub-tlv 1381 | +--ro type? uint8 1382 | +--ro length? uint8 1383 | +--ro value? inet:ipv4-address 1384 +--ro ipv6-routerid-sub-tlv 1385 | +--ro type? uint8 1386 | +--ro length? uint8 1387 | +--ro value? inet:ipv6-address 1388 +--ro ppr-metric-sub-tlv 1389 +--ro type? uint8 1390 +--ro length? uint8 1391 +--ro value? uint32 1392 augment /rt:routing/rt:control-plane-protocols 1393 /rt:control-plane-protocol/ospf:ospf/ospf:database 1394 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1395 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1396 /ospf:inter-area-prefix: 1397 +--ro ppr-tlvs 1398 +--ro ppr-tlv* 1399 +--ro flags? bits 1400 +--ro af? iana-rt-types:address-family 1401 +--ro ppr-prefix-sub-tlv 1402 | +--ro mt-id? uint8 1403 | +--ro prefix-len? uint8 1404 | +--ro mask-len? uint8 1405 | +--ro ospf-prefix? inet:ip-address 1406 | +--ro ppr-prefix-sub-sub-tlvs 1407 | +--ro unknown-tlvs 1408 | +--ro unknown-tlv* 1409 | +--ro type? uint16 1410 | +--ro length? uint16 1411 | +--ro value? yang:hex-string 1412 +--ro ppr-id-sub-tlv 1413 | +--ro ppr-id-type? enumeration 1414 | +--ro ppr-id-len? uint8 1415 | +--ro ppr-id-mask-len? uint8 1416 | +--ro ppr-id-algo? uint8 1417 | +--ro (ppr-id)? 1418 | +--:(mpls-id) 1419 | | +--ro mpls-id? uint32 1420 | +--:(ipv4-id) 1421 | | +--ro ipv4-id? inet:ipv4-prefix 1422 | +--:(srv6-ipv6-id) 1423 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1424 +--ro ppr-pde-sub-tlvs* 1425 | +--ro pde-type? enumeration 1426 | +--ro ppr-pde-flags? bits 1427 | +--ro pde-id-type? ppr:ppr-pde-id-type 1428 | +--ro pde-id-len? uint8 1429 | +--ro (pde-id)? 1430 | | +--:(mpls-id) 1431 | | | +--ro mpls-id? uint32 1432 | | +--:(ipv4-id) 1433 | | | +--ro ipv4-id? inet:ipv4-prefix 1434 | | +--:(srv6-ipv6-id) 1435 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1436 | +--ro ppr-pde-sub-sub-tlvs 1437 | +--ro unknown-tlvs 1438 | +--ro unknown-tlv* 1439 | +--ro type? uint16 1440 | +--ro length? uint16 1441 | +--ro value? yang:hex-string 1442 +--ro ppr-attribute-sub-tlv 1443 +--ro traffic-accounting-sub-tlv 1444 | +--ro type? uint8 1445 +--ro traffic-statis-sub-tlv 1446 | +--ro type? uint8 1447 +--ro ipv4-routerid-sub-tlv 1448 | +--ro type? uint8 1449 | +--ro length? uint8 1450 | +--ro value? inet:ipv4-address 1451 +--ro ipv6-routerid-sub-tlv 1452 | +--ro type? uint8 1453 | +--ro length? uint8 1454 | +--ro value? inet:ipv6-address 1455 +--ro ppr-metric-sub-tlv 1456 +--ro type? uint8 1457 +--ro length? uint8 1458 +--ro value? uint32 1459 augment /rt:routing/rt:control-plane-protocols 1460 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1461 /ospf:interfaces/ospf:interface/ospf:database 1462 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1463 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1464 /ospf:body/ospf:intra-area-prefix: 1465 +--ro ppr-tlvs 1466 +--ro ppr-tlv* 1467 +--ro flags? bits 1468 +--ro af? iana-rt-types:address-family 1469 +--ro ppr-prefix-sub-tlv 1470 | +--ro mt-id? uint8 1471 | +--ro prefix-len? uint8 1472 | +--ro mask-len? uint8 1473 | +--ro ospf-prefix? inet:ip-address 1474 | +--ro ppr-prefix-sub-sub-tlvs 1475 | +--ro unknown-tlvs 1476 | +--ro unknown-tlv* 1477 | +--ro type? uint16 1478 | +--ro length? uint16 1479 | +--ro value? yang:hex-string 1480 +--ro ppr-id-sub-tlv 1481 | +--ro ppr-id-type? enumeration 1482 | +--ro ppr-id-len? uint8 1483 | +--ro ppr-id-mask-len? uint8 1484 | +--ro ppr-id-algo? uint8 1485 | +--ro (ppr-id)? 1486 | +--:(mpls-id) 1487 | | +--ro mpls-id? uint32 1488 | +--:(ipv4-id) 1489 | | +--ro ipv4-id? inet:ipv4-prefix 1490 | +--:(srv6-ipv6-id) 1491 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1492 +--ro ppr-pde-sub-tlvs* 1493 | +--ro pde-type? enumeration 1494 | +--ro ppr-pde-flags? bits 1495 | +--ro pde-id-type? ppr:ppr-pde-id-type 1496 | +--ro pde-id-len? uint8 1497 | +--ro (pde-id)? 1498 | | +--:(mpls-id) 1499 | | | +--ro mpls-id? uint32 1500 | | +--:(ipv4-id) 1501 | | | +--ro ipv4-id? inet:ipv4-prefix 1502 | | +--:(srv6-ipv6-id) 1503 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1504 | +--ro ppr-pde-sub-sub-tlvs 1505 | +--ro unknown-tlvs 1506 | +--ro unknown-tlv* 1507 | +--ro type? uint16 1508 | +--ro length? uint16 1509 | +--ro value? yang:hex-string 1510 +--ro ppr-attribute-sub-tlv 1511 +--ro traffic-accounting-sub-tlv 1512 | +--ro type? uint8 1513 +--ro traffic-statis-sub-tlv 1514 | +--ro type? uint8 1515 +--ro ipv4-routerid-sub-tlv 1516 | +--ro type? uint8 1517 | +--ro length? uint8 1518 | +--ro value? inet:ipv4-address 1519 +--ro ipv6-routerid-sub-tlv 1520 | +--ro type? uint8 1521 | +--ro length? uint8 1522 | +--ro value? inet:ipv6-address 1523 +--ro ppr-metric-sub-tlv 1524 +--ro type? uint8 1525 +--ro length? uint8 1526 +--ro value? uint32 1527 augment /rt:routing/rt:control-plane-protocols 1528 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1529 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1530 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1531 /ospf:body/ospf:intra-area-prefix: 1532 +--ro ppr-tlvs 1533 +--ro ppr-tlv* 1534 +--ro flags? bits 1535 +--ro af? iana-rt-types:address-family 1536 +--ro ppr-prefix-sub-tlv 1537 | +--ro mt-id? uint8 1538 | +--ro prefix-len? uint8 1539 | +--ro mask-len? uint8 1540 | +--ro ospf-prefix? inet:ip-address 1541 | +--ro ppr-prefix-sub-sub-tlvs 1542 | +--ro unknown-tlvs 1543 | +--ro unknown-tlv* 1544 | +--ro type? uint16 1545 | +--ro length? uint16 1546 | +--ro value? yang:hex-string 1547 +--ro ppr-id-sub-tlv 1548 | +--ro ppr-id-type? enumeration 1549 | +--ro ppr-id-len? uint8 1550 | +--ro ppr-id-mask-len? uint8 1551 | +--ro ppr-id-algo? uint8 1552 | +--ro (ppr-id)? 1553 | +--:(mpls-id) 1554 | | +--ro mpls-id? uint32 1555 | +--:(ipv4-id) 1556 | | +--ro ipv4-id? inet:ipv4-prefix 1557 | +--:(srv6-ipv6-id) 1558 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1559 +--ro ppr-pde-sub-tlvs* 1560 | +--ro pde-type? enumeration 1561 | +--ro ppr-pde-flags? bits 1562 | +--ro pde-id-type? ppr:ppr-pde-id-type 1563 | +--ro pde-id-len? uint8 1564 | +--ro (pde-id)? 1565 | | +--:(mpls-id) 1566 | | | +--ro mpls-id? uint32 1567 | | +--:(ipv4-id) 1568 | | | +--ro ipv4-id? inet:ipv4-prefix 1569 | | +--:(srv6-ipv6-id) 1570 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1571 | +--ro ppr-pde-sub-sub-tlvs 1572 | +--ro unknown-tlvs 1573 | +--ro unknown-tlv* 1574 | +--ro type? uint16 1575 | +--ro length? uint16 1576 | +--ro value? yang:hex-string 1577 +--ro ppr-attribute-sub-tlv 1578 +--ro traffic-accounting-sub-tlv 1579 | +--ro type? uint8 1580 +--ro traffic-statis-sub-tlv 1581 | +--ro type? uint8 1582 +--ro ipv4-routerid-sub-tlv 1583 | +--ro type? uint8 1584 | +--ro length? uint8 1585 | +--ro value? inet:ipv4-address 1586 +--ro ipv6-routerid-sub-tlv 1587 | +--ro type? uint8 1588 | +--ro length? uint8 1589 | +--ro value? inet:ipv6-address 1590 +--ro ppr-metric-sub-tlv 1591 +--ro type? uint8 1592 +--ro length? uint8 1593 +--ro value? uint32 1594 augment /rt:routing/rt:control-plane-protocols 1595 /rt:control-plane-protocol/ospf:ospf/ospf:database 1596 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1597 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1598 /ospf:intra-area-prefix: 1599 +--ro ppr-tlvs 1600 +--ro ppr-tlv* 1601 +--ro flags? bits 1602 +--ro af? iana-rt-types:address-family 1603 +--ro ppr-prefix-sub-tlv 1604 | +--ro mt-id? uint8 1605 | +--ro prefix-len? uint8 1606 | +--ro mask-len? uint8 1607 | +--ro ospf-prefix? inet:ip-address 1608 | +--ro ppr-prefix-sub-sub-tlvs 1609 | +--ro unknown-tlvs 1610 | +--ro unknown-tlv* 1611 | +--ro type? uint16 1612 | +--ro length? uint16 1613 | +--ro value? yang:hex-string 1614 +--ro ppr-id-sub-tlv 1615 | +--ro ppr-id-type? enumeration 1616 | +--ro ppr-id-len? uint8 1617 | +--ro ppr-id-mask-len? uint8 1618 | +--ro ppr-id-algo? uint8 1619 | +--ro (ppr-id)? 1620 | +--:(mpls-id) 1621 | | +--ro mpls-id? uint32 1622 | +--:(ipv4-id) 1623 | | +--ro ipv4-id? inet:ipv4-prefix 1624 | +--:(srv6-ipv6-id) 1625 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1626 +--ro ppr-pde-sub-tlvs* 1627 | +--ro pde-type? enumeration 1628 | +--ro ppr-pde-flags? bits 1629 | +--ro pde-id-type? ppr:ppr-pde-id-type 1630 | +--ro pde-id-len? uint8 1631 | +--ro (pde-id)? 1632 | | +--:(mpls-id) 1633 | | | +--ro mpls-id? uint32 1634 | | +--:(ipv4-id) 1635 | | | +--ro ipv4-id? inet:ipv4-prefix 1636 | | +--:(srv6-ipv6-id) 1637 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1638 | +--ro ppr-pde-sub-sub-tlvs 1639 | +--ro unknown-tlvs 1640 | +--ro unknown-tlv* 1641 | +--ro type? uint16 1642 | +--ro length? uint16 1643 | +--ro value? yang:hex-string 1644 +--ro ppr-attribute-sub-tlv 1645 +--ro traffic-accounting-sub-tlv 1646 | +--ro type? uint8 1647 +--ro traffic-statis-sub-tlv 1648 | +--ro type? uint8 1649 +--ro ipv4-routerid-sub-tlv 1650 | +--ro type? uint8 1651 | +--ro length? uint8 1652 | +--ro value? inet:ipv4-address 1653 +--ro ipv6-routerid-sub-tlv 1654 | +--ro type? uint8 1655 | +--ro length? uint8 1656 | +--ro value? inet:ipv6-address 1657 +--ro ppr-metric-sub-tlv 1658 +--ro type? uint8 1659 +--ro length? uint8 1660 +--ro value? uint32 1661 augment /rt:routing/rt:control-plane-protocols 1662 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1663 /ospf:interfaces/ospf:interface/ospf:database 1664 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1665 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1666 /ospf:body/ospf:as-external: 1667 +--ro ppr-tlvs 1668 +--ro ppr-tlv* 1669 +--ro flags? bits 1670 +--ro af? iana-rt-types:address-family 1671 +--ro ppr-prefix-sub-tlv 1672 | +--ro mt-id? uint8 1673 | +--ro prefix-len? uint8 1674 | +--ro mask-len? uint8 1675 | +--ro ospf-prefix? inet:ip-address 1676 | +--ro ppr-prefix-sub-sub-tlvs 1677 | +--ro unknown-tlvs 1678 | +--ro unknown-tlv* 1679 | +--ro type? uint16 1680 | +--ro length? uint16 1681 | +--ro value? yang:hex-string 1682 +--ro ppr-id-sub-tlv 1683 | +--ro ppr-id-type? enumeration 1684 | +--ro ppr-id-len? uint8 1685 | +--ro ppr-id-mask-len? uint8 1686 | +--ro ppr-id-algo? uint8 1687 | +--ro (ppr-id)? 1688 | +--:(mpls-id) 1689 | | +--ro mpls-id? uint32 1690 | +--:(ipv4-id) 1691 | | +--ro ipv4-id? inet:ipv4-prefix 1692 | +--:(srv6-ipv6-id) 1693 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1694 +--ro ppr-pde-sub-tlvs* 1695 | +--ro pde-type? enumeration 1696 | +--ro ppr-pde-flags? bits 1697 | +--ro pde-id-type? ppr:ppr-pde-id-type 1698 | +--ro pde-id-len? uint8 1699 | +--ro (pde-id)? 1700 | | +--:(mpls-id) 1701 | | | +--ro mpls-id? uint32 1702 | | +--:(ipv4-id) 1703 | | | +--ro ipv4-id? inet:ipv4-prefix 1704 | | +--:(srv6-ipv6-id) 1705 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1706 | +--ro ppr-pde-sub-sub-tlvs 1707 | +--ro unknown-tlvs 1708 | +--ro unknown-tlv* 1709 | +--ro type? uint16 1710 | +--ro length? uint16 1711 | +--ro value? yang:hex-string 1712 +--ro ppr-attribute-sub-tlv 1713 +--ro traffic-accounting-sub-tlv 1714 | +--ro type? uint8 1715 +--ro traffic-statis-sub-tlv 1716 | +--ro type? uint8 1717 +--ro ipv4-routerid-sub-tlv 1718 | +--ro type? uint8 1719 | +--ro length? uint8 1720 | +--ro value? inet:ipv4-address 1721 +--ro ipv6-routerid-sub-tlv 1722 | +--ro type? uint8 1723 | +--ro length? uint8 1724 | +--ro value? inet:ipv6-address 1725 +--ro ppr-metric-sub-tlv 1726 +--ro type? uint8 1727 +--ro length? uint8 1728 +--ro value? uint32 1729 augment /rt:routing/rt:control-plane-protocols 1730 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1731 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1732 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1733 /ospf:body/ospf:as-external: 1734 +--ro ppr-tlvs 1735 +--ro ppr-tlv* 1736 +--ro flags? bits 1737 +--ro af? iana-rt-types:address-family 1738 +--ro ppr-prefix-sub-tlv 1739 | +--ro mt-id? uint8 1740 | +--ro prefix-len? uint8 1741 | +--ro mask-len? uint8 1742 | +--ro ospf-prefix? inet:ip-address 1743 | +--ro ppr-prefix-sub-sub-tlvs 1744 | +--ro unknown-tlvs 1745 | +--ro unknown-tlv* 1746 | +--ro type? uint16 1747 | +--ro length? uint16 1748 | +--ro value? yang:hex-string 1749 +--ro ppr-id-sub-tlv 1750 | +--ro ppr-id-type? enumeration 1751 | +--ro ppr-id-len? uint8 1752 | +--ro ppr-id-mask-len? uint8 1753 | +--ro ppr-id-algo? uint8 1754 | +--ro (ppr-id)? 1755 | +--:(mpls-id) 1756 | | +--ro mpls-id? uint32 1757 | +--:(ipv4-id) 1758 | | +--ro ipv4-id? inet:ipv4-prefix 1759 | +--:(srv6-ipv6-id) 1760 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1761 +--ro ppr-pde-sub-tlvs* 1762 | +--ro pde-type? enumeration 1763 | +--ro ppr-pde-flags? bits 1764 | +--ro pde-id-type? ppr:ppr-pde-id-type 1765 | +--ro pde-id-len? uint8 1766 | +--ro (pde-id)? 1767 | | +--:(mpls-id) 1768 | | | +--ro mpls-id? uint32 1769 | | +--:(ipv4-id) 1770 | | | +--ro ipv4-id? inet:ipv4-prefix 1771 | | +--:(srv6-ipv6-id) 1772 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1773 | +--ro ppr-pde-sub-sub-tlvs 1774 | +--ro unknown-tlvs 1775 | +--ro unknown-tlv* 1776 | +--ro type? uint16 1777 | +--ro length? uint16 1778 | +--ro value? yang:hex-string 1779 +--ro ppr-attribute-sub-tlv 1780 +--ro traffic-accounting-sub-tlv 1781 | +--ro type? uint8 1782 +--ro traffic-statis-sub-tlv 1783 | +--ro type? uint8 1784 +--ro ipv4-routerid-sub-tlv 1785 | +--ro type? uint8 1786 | +--ro length? uint8 1787 | +--ro value? inet:ipv4-address 1788 +--ro ipv6-routerid-sub-tlv 1789 | +--ro type? uint8 1790 | +--ro length? uint8 1791 | +--ro value? inet:ipv6-address 1792 +--ro ppr-metric-sub-tlv 1793 +--ro type? uint8 1794 +--ro length? uint8 1795 +--ro value? uint32 1796 augment /rt:routing/rt:control-plane-protocols 1797 /rt:control-plane-protocol/ospf:ospf/ospf:database 1798 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 1799 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body 1800 /ospf:as-external: 1801 +--ro ppr-tlvs 1802 +--ro ppr-tlv* 1803 +--ro flags? bits 1804 +--ro af? iana-rt-types:address-family 1805 +--ro ppr-prefix-sub-tlv 1806 | +--ro mt-id? uint8 1807 | +--ro prefix-len? uint8 1808 | +--ro mask-len? uint8 1809 | +--ro ospf-prefix? inet:ip-address 1810 | +--ro ppr-prefix-sub-sub-tlvs 1811 | +--ro unknown-tlvs 1812 | +--ro unknown-tlv* 1813 | +--ro type? uint16 1814 | +--ro length? uint16 1815 | +--ro value? yang:hex-string 1816 +--ro ppr-id-sub-tlv 1817 | +--ro ppr-id-type? enumeration 1818 | +--ro ppr-id-len? uint8 1819 | +--ro ppr-id-mask-len? uint8 1820 | +--ro ppr-id-algo? uint8 1821 | +--ro (ppr-id)? 1822 | +--:(mpls-id) 1823 | | +--ro mpls-id? uint32 1824 | +--:(ipv4-id) 1825 | | +--ro ipv4-id? inet:ipv4-prefix 1826 | +--:(srv6-ipv6-id) 1827 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1828 +--ro ppr-pde-sub-tlvs* 1829 | +--ro pde-type? enumeration 1830 | +--ro ppr-pde-flags? bits 1831 | +--ro pde-id-type? ppr:ppr-pde-id-type 1832 | +--ro pde-id-len? uint8 1833 | +--ro (pde-id)? 1834 | | +--:(mpls-id) 1835 | | | +--ro mpls-id? uint32 1836 | | +--:(ipv4-id) 1837 | | | +--ro ipv4-id? inet:ipv4-prefix 1838 | | +--:(srv6-ipv6-id) 1839 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1840 | +--ro ppr-pde-sub-sub-tlvs 1841 | +--ro unknown-tlvs 1842 | +--ro unknown-tlv* 1843 | +--ro type? uint16 1844 | +--ro length? uint16 1845 | +--ro value? yang:hex-string 1846 +--ro ppr-attribute-sub-tlv 1847 +--ro traffic-accounting-sub-tlv 1848 | +--ro type? uint8 1849 +--ro traffic-statis-sub-tlv 1850 | +--ro type? uint8 1851 +--ro ipv4-routerid-sub-tlv 1852 | +--ro type? uint8 1853 | +--ro length? uint8 1854 | +--ro value? inet:ipv4-address 1855 +--ro ipv6-routerid-sub-tlv 1856 | +--ro type? uint8 1857 | +--ro length? uint8 1858 | +--ro value? inet:ipv6-address 1859 +--ro ppr-metric-sub-tlv 1860 +--ro type? uint8 1861 +--ro length? uint8 1862 +--ro value? uint32 1863 augment /rt:routing/rt:control-plane-protocols 1864 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1865 /ospf:interfaces/ospf:interface/ospf:database 1866 /ospf:link-scope-lsa-type/ospf:link-scope-lsas 1867 /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1868 /ospf:body/ospf:nssa: 1869 +--ro ppr-tlvs 1870 +--ro ppr-tlv* 1871 +--ro flags? bits 1872 +--ro af? iana-rt-types:address-family 1873 +--ro ppr-prefix-sub-tlv 1874 | +--ro mt-id? uint8 1875 | +--ro prefix-len? uint8 1876 | +--ro mask-len? uint8 1877 | +--ro ospf-prefix? inet:ip-address 1878 | +--ro ppr-prefix-sub-sub-tlvs 1879 | +--ro unknown-tlvs 1880 | +--ro unknown-tlv* 1881 | +--ro type? uint16 1882 | +--ro length? uint16 1883 | +--ro value? yang:hex-string 1884 +--ro ppr-id-sub-tlv 1885 | +--ro ppr-id-type? enumeration 1886 | +--ro ppr-id-len? uint8 1887 | +--ro ppr-id-mask-len? uint8 1888 | +--ro ppr-id-algo? uint8 1889 | +--ro (ppr-id)? 1890 | +--:(mpls-id) 1891 | | +--ro mpls-id? uint32 1892 | +--:(ipv4-id) 1893 | | +--ro ipv4-id? inet:ipv4-prefix 1894 | +--:(srv6-ipv6-id) 1895 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1896 +--ro ppr-pde-sub-tlvs* 1897 | +--ro pde-type? enumeration 1898 | +--ro ppr-pde-flags? bits 1899 | +--ro pde-id-type? ppr:ppr-pde-id-type 1900 | +--ro pde-id-len? uint8 1901 | +--ro (pde-id)? 1902 | | +--:(mpls-id) 1903 | | | +--ro mpls-id? uint32 1904 | | +--:(ipv4-id) 1905 | | | +--ro ipv4-id? inet:ipv4-prefix 1906 | | +--:(srv6-ipv6-id) 1907 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1908 | +--ro ppr-pde-sub-sub-tlvs 1909 | +--ro unknown-tlvs 1910 | +--ro unknown-tlv* 1911 | +--ro type? uint16 1912 | +--ro length? uint16 1913 | +--ro value? yang:hex-string 1914 +--ro ppr-attribute-sub-tlv 1915 +--ro traffic-accounting-sub-tlv 1916 | +--ro type? uint8 1917 +--ro traffic-statis-sub-tlv 1918 | +--ro type? uint8 1919 +--ro ipv4-routerid-sub-tlv 1920 | +--ro type? uint8 1921 | +--ro length? uint8 1922 | +--ro value? inet:ipv4-address 1923 +--ro ipv6-routerid-sub-tlv 1924 | +--ro type? uint8 1925 | +--ro length? uint8 1926 | +--ro value? inet:ipv6-address 1927 +--ro ppr-metric-sub-tlv 1928 +--ro type? uint8 1929 +--ro length? uint8 1930 +--ro value? uint32 1931 augment /rt:routing/rt:control-plane-protocols 1932 /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area 1933 /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas 1934 /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 1935 /ospf:body/ospf:nssa: 1936 +--ro ppr-tlvs 1937 +--ro ppr-tlv* 1938 +--ro flags? bits 1939 +--ro af? iana-rt-types:address-family 1940 +--ro ppr-prefix-sub-tlv 1941 | +--ro mt-id? uint8 1942 | +--ro prefix-len? uint8 1943 | +--ro mask-len? uint8 1944 | +--ro ospf-prefix? inet:ip-address 1945 | +--ro ppr-prefix-sub-sub-tlvs 1946 | +--ro unknown-tlvs 1947 | +--ro unknown-tlv* 1948 | +--ro type? uint16 1949 | +--ro length? uint16 1950 | +--ro value? yang:hex-string 1951 +--ro ppr-id-sub-tlv 1952 | +--ro ppr-id-type? enumeration 1953 | +--ro ppr-id-len? uint8 1954 | +--ro ppr-id-mask-len? uint8 1955 | +--ro ppr-id-algo? uint8 1956 | +--ro (ppr-id)? 1957 | +--:(mpls-id) 1958 | | +--ro mpls-id? uint32 1959 | +--:(ipv4-id) 1960 | | +--ro ipv4-id? inet:ipv4-prefix 1961 | +--:(srv6-ipv6-id) 1962 | +--ro srv6-ipv6-id? inet:ipv6-prefix 1963 +--ro ppr-pde-sub-tlvs* 1964 | +--ro pde-type? enumeration 1965 | +--ro ppr-pde-flags? bits 1966 | +--ro pde-id-type? ppr:ppr-pde-id-type 1967 | +--ro pde-id-len? uint8 1968 | +--ro (pde-id)? 1969 | | +--:(mpls-id) 1970 | | | +--ro mpls-id? uint32 1971 | | +--:(ipv4-id) 1972 | | | +--ro ipv4-id? inet:ipv4-prefix 1973 | | +--:(srv6-ipv6-id) 1974 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 1975 | +--ro ppr-pde-sub-sub-tlvs 1976 | +--ro unknown-tlvs 1977 | +--ro unknown-tlv* 1978 | +--ro type? uint16 1979 | +--ro length? uint16 1980 | +--ro value? yang:hex-string 1981 +--ro ppr-attribute-sub-tlv 1982 +--ro traffic-accounting-sub-tlv 1983 | +--ro type? uint8 1984 +--ro traffic-statis-sub-tlv 1985 | +--ro type? uint8 1986 +--ro ipv4-routerid-sub-tlv 1987 | +--ro type? uint8 1988 | +--ro length? uint8 1989 | +--ro value? inet:ipv4-address 1990 +--ro ipv6-routerid-sub-tlv 1991 | +--ro type? uint8 1992 | +--ro length? uint8 1993 | +--ro value? inet:ipv6-address 1994 +--ro ppr-metric-sub-tlv 1995 +--ro type? uint8 1996 +--ro length? uint8 1997 +--ro value? uint32 1998 augment /rt:routing/rt:control-plane-protocols 1999 /rt:control-plane-protocol/ospf:ospf/ospf:database 2000 /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa 2001 /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body/ospf:nssa: 2002 +--ro ppr-tlvs 2003 +--ro ppr-tlv* 2004 +--ro flags? bits 2005 +--ro af? iana-rt-types:address-family 2006 +--ro ppr-prefix-sub-tlv 2007 | +--ro mt-id? uint8 2008 | +--ro prefix-len? uint8 2009 | +--ro mask-len? uint8 2010 | +--ro ospf-prefix? inet:ip-address 2011 | +--ro ppr-prefix-sub-sub-tlvs 2012 | +--ro unknown-tlvs 2013 | +--ro unknown-tlv* 2014 | +--ro type? uint16 2015 | +--ro length? uint16 2016 | +--ro value? yang:hex-string 2017 +--ro ppr-id-sub-tlv 2018 | +--ro ppr-id-type? enumeration 2019 | +--ro ppr-id-len? uint8 2020 | +--ro ppr-id-mask-len? uint8 2021 | +--ro ppr-id-algo? uint8 2022 | +--ro (ppr-id)? 2023 | +--:(mpls-id) 2024 | | +--ro mpls-id? uint32 2025 | +--:(ipv4-id) 2026 | | +--ro ipv4-id? inet:ipv4-prefix 2027 | +--:(srv6-ipv6-id) 2028 | +--ro srv6-ipv6-id? inet:ipv6-prefix 2029 +--ro ppr-pde-sub-tlvs* 2030 | +--ro pde-type? enumeration 2031 | +--ro ppr-pde-flags? bits 2032 | +--ro pde-id-type? ppr:ppr-pde-id-type 2033 | +--ro pde-id-len? uint8 2034 | +--ro (pde-id)? 2035 | | +--:(mpls-id) 2036 | | | +--ro mpls-id? uint32 2037 | | +--:(ipv4-id) 2038 | | | +--ro ipv4-id? inet:ipv4-prefix 2039 | | +--:(srv6-ipv6-id) 2040 | | +--ro srv6-ipv6-id? inet:ipv6-prefix 2041 | +--ro ppr-pde-sub-sub-tlvs 2042 | +--ro unknown-tlvs 2043 | +--ro unknown-tlv* 2044 | +--ro type? uint16 2045 | +--ro length? uint16 2046 | +--ro value? yang:hex-string 2047 +--ro ppr-attribute-sub-tlv 2048 +--ro traffic-accounting-sub-tlv 2049 | +--ro type? uint8 2050 +--ro traffic-statis-sub-tlv 2051 | +--ro type? uint8 2052 +--ro ipv4-routerid-sub-tlv 2053 | +--ro type? uint8 2054 | +--ro length? uint8 2055 | +--ro value? inet:ipv4-address 2056 +--ro ipv6-routerid-sub-tlv 2057 | +--ro type? uint8 2058 | +--ro length? uint8 2059 | +--ro value? inet:ipv6-address 2060 +--ro ppr-metric-sub-tlv 2061 +--ro type? uint8 2062 +--ro length? uint8 2063 +--ro value? uint32 2065 file "ietf-ospf-ppr@2019-07-07.yang" 2066 module ietf-ospf-ppr { 2067 yang-version 1.1; 2068 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-ppr"; 2070 prefix ospf-ppr; 2072 import ietf-inet-types { 2073 prefix inet; 2074 } 2076 import iana-routing-types { 2077 prefix "iana-rt-types"; 2078 reference "RFC 8291 - Common YANG Data Types for the 2079 Routing Area"; 2080 } 2082 import ietf-routing { 2083 prefix rt; 2084 } 2086 import ietf-ospf { 2087 prefix "ospf"; 2088 } 2090 import ietf-ppr { 2091 prefix "ppr"; 2092 } 2094 organization 2095 "IETF LSR - Link State Routing Working Group"; 2097 contact 2098 "WG Web: 2099 WG List: 2101 Author: Yingzhen Qu 2102 2103 Uma Chunduri 2104 "; 2105 description 2106 "This Yang module defines the configuration and operational 2107 state for Preferred Path Routing common to all vendor 2108 implementations. 2110 This YANG model conforms to the Network Management 2111 Datastore Architecture (NDMA) as described in RFC XXXX. 2113 Copyright (c) 2019 IETF Trust and the persons identified as 2114 authors of the code. All rights reserved. 2116 Redistribution and use in source and binary forms, with or 2117 without modification, is permitted pursuant to, and subject 2118 to the license terms contained in, the Simplified BSD License 2119 set forth in Section 4.c of the IETF Trust's Legal Provisions 2120 Relating to IETF Documents 2121 (http://trustee.ietf.org/license-info). 2123 This version of this YANG module is part of RFC XXXX; 2124 see the RFC itself for full legal notices."; 2126 reference "RFC XXXX"; 2128 revision 2019-07-07 { 2129 description 2130 "Initial revision."; 2131 reference 2132 "RFC XXXX: A YANG Data Model for OSPFv2 and OSPFv3 PPR."; 2133 } 2135 grouping ppr-prefix-sub-tlv { 2136 description "Grouping for OSPF prefix sub-tlv."; 2138 container ppr-prefix-sub-tlv { 2139 leaf mt-id { 2140 type uint8 { 2141 range "0 .. 255"; 2142 } 2143 description 2144 "This leaf defines the identifier 2145 of a topology."; 2146 } 2147 leaf prefix-len { 2148 type uint8; 2149 description "The length of the profix in bytes."; 2150 } 2151 leaf mask-len { 2152 type uint8; 2153 description "The length of the profix in bits."; 2154 } 2155 leaf ospf-prefix { 2156 type inet:ip-address; 2157 description "OSPF Prefix."; 2158 } 2159 container ppr-prefix-sub-sub-tlvs { 2160 uses ospf:unknown-tlvs; 2161 description 2162 "PPR-Prefix sub-tlvs."; 2164 } 2165 description 2166 "OSPF PPR prefix sub-tlv."; 2167 } 2168 } 2170 grouping ppr-id-sub-tlv { 2171 description 2172 "PPR ID: the actual data plane identifier in the packet header."; 2174 container ppr-id-sub-tlv { 2175 description "PPR ID sub tlv."; 2176 leaf ppr-id-type { 2177 type enumeration { 2178 enum mpls { 2179 value 1; 2180 description 2181 "PPR ID in mpls label format."; 2182 } 2183 enum ipv4 { 2184 value 2; 2185 description 2186 "PPR ID in IPv4 address format."; 2187 } 2188 enum ipv6 { 2189 value 3; 2190 description 2191 "PPR ID in ipv6 address format."; 2192 } 2193 enum srv6 { 2194 value 4; 2195 description 2196 "PPR ID in SRv6 SID format."; 2197 } 2198 } 2199 description "Type of PPR ID."; 2200 } 2201 leaf ppr-id-len { 2202 type uint8; 2203 description 2204 "Length of the PPR ID."; 2205 } 2206 leaf ppr-id-mask-len { 2207 type uint8; 2208 description "The length of the profix in bits."; 2209 } 2210 leaf ppr-id-algo { 2211 type uint8; 2212 description "The SPF algorithm."; 2213 } 2214 choice ppr-id { 2215 leaf mpls-id { 2216 type uint32; 2217 description "MPLS Label format."; 2218 } 2219 leaf ipv4-id { 2220 type inet:ipv4-prefix; 2221 description "IPv4 format."; 2222 } 2223 leaf srv6-ipv6-id { 2224 type inet:ipv6-prefix; 2225 description "SRv6 or IPv6 format."; 2226 } 2227 description "Preferred Path ID."; 2228 } 2229 } 2231 } 2233 grouping ppr-pde-sub-tlv { 2234 description 2235 "This sub-tlv represents the PPR Path Description 2236 Element (PDE)."; 2238 list ppr-pde-sub-tlvs { 2239 description "PPR PDE sub tlvs."; 2240 leaf pde-type { 2241 type enumeration { 2242 enum topological { 2243 value 1; 2244 description 2245 "Topological PDE."; 2246 } 2247 enum non-topological { 2248 value 2; 2249 description 2250 "Non-topological PDE."; 2251 } 2252 } 2253 description "PDE type."; 2254 } 2255 leaf ppr-pde-flags { 2256 type bits { 2257 bit L { 2258 position 0; 2259 description 2260 "If set, the PPR path is a Loose-PPR."; 2261 } 2262 bit D { 2263 position 1; 2264 description 2265 "If set, the PDE is topological and this PDE represents 2266 the node PPR-prfix"; 2267 } 2268 bit E { 2269 position 2; 2270 description 2271 "Egress Bit. By default this bit MUST be unset."; 2272 } 2273 } 2274 description "Flags."; 2275 } 2276 leaf pde-id-type { 2277 type ppr:ppr-pde-id-type; 2278 description "Type of PDE ID."; 2279 } 2280 leaf pde-id-len { 2281 type uint8; 2282 description 2283 "Length of the PDE ID."; 2284 } 2285 choice pde-id { 2286 leaf mpls-id { 2287 type uint32; 2288 description "MPLS Label format."; 2289 } 2290 leaf ipv4-id { 2291 type inet:ipv4-prefix; 2292 description "IPv4 format."; 2293 } 2294 leaf srv6-ipv6-id { 2295 type inet:ipv6-prefix; 2296 description "SRv6 or IPv6 format."; 2297 } 2298 description "Preferred Path ID."; 2299 } 2300 container ppr-pde-sub-sub-tlvs { 2301 uses ospf:unknown-tlvs; 2302 description "PPR PDE sub sub-tlv."; 2303 } 2304 } 2305 } 2307 grouping ppr-attribute-sub-tlv { 2308 description "Grouping for PPR attribute sub-tlvs."; 2310 container ppr-attribute-sub-tlv { 2311 description "PPR attribute sub-tlv."; 2313 container traffic-accounting-sub-tlv { 2314 description 2315 "packet traffic acccounting sub-tlv. Specifies to create 2316 a counter to count number of packets forwarded to this 2317 PPR-ID on each node in the path description."; 2318 leaf type { 2319 type uint8; 2320 default 1; 2321 description "Type 1 sub-tlv."; 2322 } 2323 } 2324 container traffic-statis-sub-tlv { 2325 description 2326 "Specifies to create a counter to count number of bytes 2327 forwarded on this PPR-ID specified in the network header 2328 (e.g. IPv4, IPv6) on each node in the path description."; 2329 leaf type { 2330 type uint8; 2331 default 2; 2332 description "Traffic statistics in bytes sub-tlv."; 2333 } 2334 } 2335 container ipv4-routerid-sub-tlv { 2336 description "PPR-prefix originating node's IPv4 router ID."; 2337 leaf type { 2338 type uint8; 2339 default 3; 2340 description "PPR-prefix originating node's IPv4 router ID."; 2341 } 2342 leaf length { 2343 type uint8; 2344 default 4; 2345 description "TLV length is 4."; 2346 } 2347 leaf value { 2348 type inet:ipv4-address; 2349 description "IPv4 router ID."; 2350 } 2351 } 2352 container ipv6-routerid-sub-tlv { 2353 description "PPR-prefix originating node's IPv6 router ID."; 2354 leaf type { 2355 type uint8; 2356 default 4; 2357 description "PPR-prefix originating node's IPv6 router ID."; 2358 } 2359 leaf length { 2360 type uint8; 2361 default 16; 2362 description "TLV length is 16."; 2363 } 2364 leaf value { 2365 type inet:ipv6-address; 2366 description "IPv6 router ID."; 2367 } 2368 } 2369 container ppr-metric-sub-tlv { 2370 description 2371 "The metric of this path represented through the PPR-ID."; 2372 leaf type { 2373 type uint8; 2374 default 5; 2375 description "Metric sub-tlv."; 2376 } 2377 leaf length { 2378 type uint8; 2379 default 4; 2380 description "4 bytes."; 2381 } 2382 leaf value { 2383 type uint32; 2384 description "Metirc of the PPR-ID."; 2385 } 2386 } 2387 } 2388 } 2390 grouping ppr-tlvs { 2391 description "PPR TLV in extended prefix opaque LSAs."; 2393 container ppr-tlvs { 2394 description "List of PPR TLVs."; 2395 list ppr-tlv { 2396 description "OSPF PPR TLV."; 2397 leaf flags { 2398 type bits { 2399 bit IA { 2400 position 0; 2401 description 2402 "Inter-Area flag."; 2403 } 2404 bit A { 2405 position 1; 2406 description 2407 "If set, it is to signal that the prefixes and PPR 2408 IDs advertised in this TLV are directly connected 2409 to their originators."; 2410 } 2411 } 2412 description "Flags."; 2413 } 2414 leaf af { 2415 type iana-rt-types:address-family; 2416 description 2417 "Address family of the OSPF instance."; 2418 } 2420 uses ppr-prefix-sub-tlv; 2421 uses ppr-id-sub-tlv; 2422 uses ppr-pde-sub-tlv; 2423 uses ppr-attribute-sub-tlv; 2424 } 2426 } 2428 } 2430 /* Configuration */ 2431 augment "/rt:routing/rt:control-plane-protocols" 2432 + "/rt:control-plane-protocol/ospf:ospf" { 2433 when "../rt:type = 'ospf:ospfv2' or " 2434 + "../rt:type = 'ospf:ospfv3'" { 2435 description 2436 "This augments the OSPF routing protocol when used."; 2437 } 2438 description 2439 "This augments the OSPF protocol configuration 2440 with preferred path routing."; 2442 container ppr { 2443 description 2444 "OSPF PPR."; 2445 list ppr-enable { 2446 key "name"; 2447 leaf enable { 2448 type boolean; 2449 description 2450 "Enable PPR."; 2451 } 2452 leaf name { 2453 type leafref { 2454 path "/rt:routing/ppr:preferred-path-routing/" 2455 + "ppr:preferred-path-lists/ppr:name"; 2456 } 2457 description 2458 "PPR path list name."; 2459 } 2460 description 2461 "Enable PPR."; 2462 } 2463 } 2464 } 2466 /* Database */ 2467 augment "/rt:routing/" 2468 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2469 + "ospf:ospf/ospf:areas/ospf:area/" 2470 + "ospf:interfaces/ospf:interface/ospf:database/" 2471 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 2472 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" 2473 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2474 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 2475 when "../../../../../../../../../../../../../../" 2476 + "rt:type = 'ospf:ospfv2'" { 2477 description 2478 "This augmentation is only valid for OSPFv2."; 2479 } 2480 description 2481 "PPR specific TLVs for OSPFv2 type 9 opaque LSA."; 2482 uses ppr-tlvs; 2483 } 2485 augment "/rt:routing/" 2486 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2487 + "ospf:ospf/ospf:areas/" 2488 + "ospf:area/ospf:database/" 2489 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2490 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" 2491 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2492 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 2493 when "../../../../../../../../../../../../" 2494 + "rt:type = 'ospf:ospfv2'" { 2495 description 2496 "This augmentation is only valid for OSPFv2."; 2497 } 2498 description 2499 "PPR specific TLVs for OSPFv2 type 10 opaque LSA."; 2501 uses ppr-tlvs; 2502 } 2504 augment "/rt:routing/" 2505 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2506 + "ospf:ospf/ospf:database/" 2507 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2508 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" 2509 + "ospf:ospfv2/ospf:body/ospf:opaque/" 2510 + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { 2511 when "../../../../../../../../../../" 2512 + "rt:type = 'ospf:ospfv2'" { 2513 description 2514 "This augmentation is only valid for OSPFv2."; 2515 } 2516 description 2517 "PPR specific TLVs for OSPFv2 type 11 opaque LSA."; 2518 uses ppr-tlvs; 2519 } 2521 /* OSPFv3 inter-area-prefix-lsa */ 2522 augment "/rt:routing/" 2523 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2524 + "ospf:ospf/ospf:areas/ospf:area/" 2525 + "ospf:interfaces/ospf:interface/ospf:database/" 2526 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 2527 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 2528 + "ospf:ospfv3/ospf:body/ospf:inter-area-prefix" { 2529 when "../../../../../../../../../../../../" 2530 + "rt:type = 'ospf:ospfv3'" { 2531 description 2532 "This augmentation is only valid for OSPFv3."; 2533 } 2535 description 2536 "SR specific TLVs for OSPFv3 link scope Inter-Area-Prefix-LSA."; 2537 uses ppr-tlvs; 2538 } 2540 augment "/rt:routing/" 2541 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2542 + "ospf:ospf/ospf:areas/" 2543 + "ospf:area/ospf:database/" 2544 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2545 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2546 + "ospf:ospfv3/ospf:body/ospf:inter-area-prefix" { 2547 when "../../../../../../../../../../" 2548 + "rt:type = 'ospf:ospfv3'" { 2550 description 2551 "This augmentation is only valid for OSPFv3."; 2552 } 2553 description 2554 "SR specific TLVs for OSPFv3 area scope Inter-Area-Prefix-LSA."; 2555 uses ppr-tlvs; 2556 } 2558 augment "/rt:routing/" 2559 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2560 + "ospf:ospf/ospf:database/" 2561 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2562 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 2563 + "ospf:ospfv3/ospf:body/ospf:inter-area-prefix" { 2564 when "../../../../../../../../" 2565 + "rt:type = 'ospf:ospfv3'" { 2566 description 2567 "This augmentation is only valid for OSPFv3."; 2568 } 2569 description 2570 "SR specific TLVs for OSPFv3 as scope Inter-Area-Prefix-LSA."; 2571 uses ppr-tlvs; 2572 } 2574 /* OSPFv3 intra-area-prefix-lsa */ 2575 augment "/rt:routing/" 2576 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2577 + "ospf:ospf/ospf:areas/ospf:area/" 2578 + "ospf:interfaces/ospf:interface/ospf:database/" 2579 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 2580 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 2581 + "ospf:ospfv3/ospf:body/ospf:intra-area-prefix" { 2582 when "../../../../../../../../../../../../" 2583 + "rt:type = 'ospf:ospfv3'" { 2584 description 2585 "This augmentation is only valid for OSPFv3."; 2586 } 2588 description 2589 "SR specific TLVs for OSPFv3 link scope Intra-Area-Prefix-LSA."; 2590 uses ppr-tlvs; 2591 } 2593 augment "/rt:routing/" 2594 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2595 + "ospf:ospf/ospf:areas/" 2596 + "ospf:area/ospf:database/" 2597 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2598 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2599 + "ospf:ospfv3/ospf:body/ospf:intra-area-prefix" { 2600 when "../../../../../../../../../../" 2601 + "rt:type = 'ospf:ospfv3'" { 2602 description 2603 "This augmentation is only valid for OSPFv3."; 2604 } 2605 description 2606 "SR specific TLVs for OSPFv3 area scope Inter-Area-Prefix-LSA."; 2607 uses ppr-tlvs; 2608 } 2610 augment "/rt:routing/" 2611 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2612 + "ospf:ospf/ospf:database/" 2613 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2614 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 2615 + "ospf:ospfv3/ospf:body/ospf:intra-area-prefix" { 2616 when "../../../../../../../../" 2617 + "rt:type = 'ospf:ospfv3'" { 2618 description 2619 "This augmentation is only valid for OSPFv3."; 2620 } 2621 description 2622 "SR specific TLVs for OSPFv3 as scope Intra-Area-Prefix-LSA."; 2623 uses ppr-tlvs; 2624 } 2626 /* OSPFv3 external-lsa */ 2627 augment "/rt:routing/" 2628 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2629 + "ospf:ospf/ospf:areas/ospf:area/" 2630 + "ospf:interfaces/ospf:interface/ospf:database/" 2631 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 2632 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 2633 + "ospf:ospfv3/ospf:body/ospf:as-external" { 2634 when "../../../../../../../../../../../../" 2635 + "rt:type = 'ospf:ospfv3'" { 2636 description 2637 "This augmentation is only valid for OSPFv3."; 2638 } 2640 description 2641 "SR specific TLVs for OSPFv3 link scope AS-External-LSA."; 2642 uses ppr-tlvs; 2643 } 2644 augment "/rt:routing/" 2645 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2646 + "ospf:ospf/ospf:areas/" 2647 + "ospf:area/ospf:database/" 2648 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2649 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2650 + "ospf:ospfv3/ospf:body/ospf:as-external" { 2651 when "../../../../../../../../../../" 2652 + "rt:type = 'ospf:ospfv3'" { 2653 description 2654 "This augmentation is only valid for OSPFv3."; 2655 } 2656 description 2657 "SR specific TLVs for OSPFv3 area scope AS-External-LSA."; 2658 uses ppr-tlvs; 2659 } 2661 augment "/rt:routing/" 2662 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2663 + "ospf:ospf/ospf:database/" 2664 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2665 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 2666 + "ospf:ospfv3/ospf:body/ospf:as-external" { 2667 when "../../../../../../../../" 2668 + "rt:type = 'ospf:ospfv3'" { 2669 description 2670 "This augmentation is only valid for OSPFv3."; 2671 } 2672 description 2673 "SR specific TLVs for OSPFv3 as scope AS-External-LSA."; 2674 uses ppr-tlvs; 2675 } 2677 /* OSPFv3 Type-7 NSSA */ 2678 augment "/rt:routing/" 2679 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2680 + "ospf:ospf/ospf:areas/ospf:area/" 2681 + "ospf:interfaces/ospf:interface/ospf:database/" 2682 + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" 2683 + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" 2684 + "ospf:ospfv3/ospf:body/ospf:nssa" { 2685 when "../../../../../../../../../../../../" 2686 + "rt:type = 'ospf:ospfv3'" { 2687 description 2688 "This augmentation is only valid for OSPFv3."; 2689 } 2690 description 2691 "SR specific TLVs for OSPFv3 link scope Type-7-LSA."; 2692 uses ppr-tlvs; 2693 } 2695 augment "/rt:routing/" 2696 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2697 + "ospf:ospf/ospf:areas/" 2698 + "ospf:area/ospf:database/" 2699 + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" 2700 + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" 2701 + "ospf:ospfv3/ospf:body/ospf:nssa" { 2702 when "../../../../../../../../../../" 2703 + "rt:type = 'ospf:ospfv3'" { 2704 description 2705 "This augmentation is only valid for OSPFv3."; 2706 } 2707 description 2708 "SR specific TLVs for OSPFv3 area scope Type-7-LSA."; 2709 uses ppr-tlvs; 2710 } 2712 augment "/rt:routing/" 2713 + "rt:control-plane-protocols/rt:control-plane-protocol/" 2714 + "ospf:ospf/ospf:database/" 2715 + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" 2716 + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" 2717 + "ospf:ospfv3/ospf:body/ospf:nssa" { 2718 when "../../../../../../../../" 2719 + "rt:type = 'ospf:ospfv3'" { 2720 description 2721 "This augmentation is only valid for OSPFv3."; 2722 } 2723 description 2724 "SR specific TLVs for OSPFv3 as scope Type-7-LSA."; 2725 uses ppr-tlvs; 2726 } 2727 } 2728 2730 5. Security Considerations 2732 The YANG modules specified in this document define a schema for data 2733 that is designed to be accessed via network management protocols such 2734 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2735 is the secure transport layer, and the mandatory-to-implement secure 2736 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2737 is HTTPS, and the mandatory-to-implement secure transport is TLS 2738 [RFC5246]. 2740 The NETCONF access control model [RFC6536] provides the means to 2741 restrict access for particular NETCONF or RESTCONF users to a pre- 2742 configured subset of all available NETCONF or RESTCONF protocol 2743 operations and content. 2745 6. Acknowledgements 2747 TBD. 2749 7. IANA Considerations 2751 TBD. 2753 8. References 2755 8.1. Normative References 2757 [I-D.chunduri-lsr-isis-preferred-path-routing] 2758 Chunduri, U., Li, R., White, R., Tantsura, J., Contreras, 2759 L., and Y. Qu, "Preferred Path Routing (PPR) in IS-IS", 2760 draft-chunduri-lsr-isis-preferred-path-routing-03 (work in 2761 progress), May 2019. 2763 [I-D.chunduri-lsr-ospf-preferred-path-routing] 2764 Chunduri, U., Qu, Y., White, R., Tantsura, J., and L. 2765 Contreras, "Preferred Path Routing (PPR) in OSPF", draft- 2766 chunduri-lsr-ospf-preferred-path-routing-03 (work in 2767 progress), May 2019. 2769 [I-D.ietf-isis-yang-isis-cfg] 2770 Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. 2771 Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- 2772 isis-yang-isis-cfg-35 (work in progress), March 2019. 2774 [I-D.ietf-ospf-yang] 2775 Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, 2776 "YANG Data Model for OSPF Protocol", draft-ietf-ospf- 2777 yang-23 (work in progress), July 2019. 2779 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2780 Requirement Levels", BCP 14, RFC 2119, March 1997. 2782 [RFC5246] Dierks, T., "The Transport Layer Security (TLS) Protocol 2783 Version 1.2", RFC 5246, August 2008. 2785 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 2786 Network Configuration Protocol (NETCONF)", RFC 6020, 2787 October 2010. 2789 [RFC6241] Enns, R., "Network Configuration Protocol (NETCONF)", 2790 RFC 6241, June 2011. 2792 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2793 Shell (SSH)", RFC 6242, June 2011. 2795 [RFC6536] Bierman, A., "Network Configuration Protocol (NETCONF) 2796 Access Control Model", RFC 6536, March 2012. 2798 [RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", 2799 RFC 7950, August 2016. 2801 [RFC8040] Bierman, A., "RESTCONF Protocol", RFC 8040, January 2017. 2803 8.2. Informative References 2805 [I-D.ietf-netmod-yang-tree-diagrams] 2806 Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- 2807 ietf-netmod-yang-tree-diagrams-06 (work in progress), 2808 February 2018. 2810 Authors' Addresses 2812 Yingzhen Qu 2813 Futurewei 2814 2330 Central Expressway 2815 Santa Clara, CA 95050 2816 USA 2818 Email: yingzhen.qu@futurewei.com 2820 Uma Chunduri 2821 Futurewei 2822 2330 Central Expressway 2823 Santa Clara, CA 95050 2824 USA 2826 Email: uma.chunduri@futurewei.com 2827 Jeff Tantsura 2828 Apstra 2830 Email: jefftant.ietf@gmail.com