idnits 2.17.00 (12 Aug 2021) /tmp/idnits4481/draft-yeung-netmod-ospf-00.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 == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (October 22, 2013) is 3132 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Unused Reference: 'I-D.ietf-netmod-interfaces-cfg' is defined on line 1402, but no explicit reference was found in the text == Outdated reference: draft-ietf-netmod-interfaces-cfg has been published as RFC 7223 == Outdated reference: draft-ietf-netmod-routing-cfg has been published as RFC 8022 Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet D. Yeung 3 Internet-Draft Y. Qu 4 Intended status: Informational A. Clemm 5 Expires: April 25, 2014 Cisco Systems 6 October 22, 2013 8 Yang Data Model for OSPF Protocol 9 draft-yeung-netmod-ospf-00 11 Abstract 13 This document defines a YANG data model that can be used to configure 14 and manage OSPF. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at http://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on April 25, 2014. 33 Copyright Notice 35 Copyright (c) 2013 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (http://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 51 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 52 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 53 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 54 2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 4 55 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 4 56 2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 4 57 2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 4 58 2.6. OSPF Address-Family Configuration . . . . . . . . . . . . 5 59 2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 6 60 2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 7 61 3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 9 62 4. Security Considerations . . . . . . . . . . . . . . . . . . . 29 63 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29 64 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 65 6.1. Normative References . . . . . . . . . . . . . . . . . . 30 66 6.2. Informative References . . . . . . . . . . . . . . . . . 30 68 1. Overview 70 YANG [RFC6020] is a data definition language that was introduced to 71 define the contents of a conceptual data store that allows networked 72 devices to be managed using NETCONF [RFC6241]. YANG is proving 73 relevant beyond its initial confines, as bindings to other interfaces 74 (e.g. ReST) and encodings other than XML (e.g. JSON) are being 75 defined. Furthermore, YANG data models can be used as the basis of 76 implementation for other interfaces, such as CLI and programmatic 77 APIs. 79 This document defines a YANG data model that can be used to configure 80 and manage OSPF. Both OSPFv2 and OSPFv3 are supported. In 81 additional to the core OSPF protocol, features described in different 82 separate OSPF RFC are also supported. Those non-core features are 83 made optional in the data model provided. 85 1.1. Requirements Language 87 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 88 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 89 document are to be interpreted as described in [RFC2119]. 91 2. Design of Data Model 93 Although the basis of OSPF configuration elements like routers, areas 94 and interfaces remains the same, the detailed configuration model 95 varies among different vendors. Differences are observed in term of 96 how protocol engine is tied to routing domain, how multiple protocol 97 engines could be instantiated and configuration inheritance, just to 98 name a few. 100 The goal of this document is to define a data model that is capable 101 of representing these differences. There is very little information 102 that is designated as "mandatory", providing freedom to vendors to 103 adapt this data model to their product implementation. 105 2.1. Overview 107 The OSPF YANG module defined in this document has all the common 108 building blocks for OSPF protocol. 110 module: ospf 111 +--rw ospf-routers 112 +--rw ospf-router [version name] 113 . 114 . 115 +--rw ospf-afs 116 +--rw ospf-af [vrf-name afi safi] 117 . 118 . 119 +--rw ospf-areas 120 . 121 . 122 +--rw ospf-area [area-id] 123 . 124 . 125 +--rw ospf-interfaces 126 . 127 . 128 +--rw ospf-interface [interface] 129 . 130 . 132 The container ospf-routers allows specification of one or more OSPF 133 configuration entities called ospf-router. The ospf-router is 134 intended to match to the vendor specific OSPF configuration construct 135 which is identified by a local identifier 'name'. The field 136 'version' allows support for OSPFv2 and OSPFv3. 138 The container ospf-afs includes one or more OSPF protocol engines, 139 each encapsulated in the ospf-af entity. Each ospf-af includes 140 information for the routing domain it is running on based on the 141 [vrf-name afi safi] specification. There is no default routing 142 domain assumed by the data model. For example, to enable OSPF on the 143 default IPv4 routing domain of the vendor, this model requires an 144 explicit ospf-af entity with the specification like ["default" "ipv4" 145 "unicast"]. The ospf-af also contains OSPF router level 146 configuration 148 The ospf-areas/ospf-area and ospf-intefaces/ospf-interface contains 149 the OSPF configuration for the area and interface level respectively 151 2.2. OSPFv2 and OSPFv3 153 The defined data model supports both OSPFv2 and OSPFv3. 155 The field 'version' is used to indicate the OSPF version and is a 156 mandatory. Based on the version set, the data model change 157 accordingly to accommodate the difference between the two versions. 159 2.3. Optional Features 161 Optional features are features beyond the basic of OSPF 162 configurations and it is up to a vendor to decide the support of a 163 particular feature on a particular device. 165 This module has declared a number of features, such as NSR, max-LSA 166 etc.. It is intended that vendors will extend the features list. 168 2.4. Inheritance 170 This defined data model supports configuration inheritance for areas 171 and interfaces. 173 Area related configurations specified in the ospf-areas container 174 apply to all ospf-area. 176 Interface related configurations specified in ospf-areas container 177 apply to all ospf-interface in all ospf-area's. 179 Interface related configurations specified in ospf-interfaces 180 container apply to all ospf-interface in the enclosing ospf-area. 182 2.5. OSPF Router Configuration 184 The container ospf-routers is the top level container in this data 185 model. One or more ospf-router entity could be included in the ospf- 186 routers container. The main purpose of the ospf-router is to specify 187 the OSPF version and the local name for the enclosed ospf-afs 188 container which has the protocol configuration specifics. 190 module: ospf 191 +--rw ospf-routers 192 +--rw ospf-router [version name] 193 +--rw version uint8 194 +--rw name string 195 . 196 . 198 2.6. OSPF Address-Family Configuration 200 The container ospf-afs contains one of more ospf-af's each represents 201 an OSPF protocol engine. Each ospf-af indicates the routing domain 202 it is associated with based on [vrf-name afi safi] and contains the 203 router level configurations. 205 module: ospf 206 +--rw ospf-routers 207 +--rw ospf-router [version name] 208 ... 209 +--rw ospf-afs 210 +--rw ospf-af [vrf-name afi safi] 211 +--rw vrf-name string 212 +--rw afi enumeration 213 +--rw safi enumeration 214 +--rw router-id 215 | ... 216 +--rw distance? uint8 217 +--rw default-originate 218 | ... 219 +--rw auto-cost 220 | ... 221 +--rw default-metric? uint32 222 +--rw summary-prefix [prefix] 223 | ... 224 +--rw max-lsa 225 | ... 226 +--rw maximum 227 | ... 228 +--rw ignore 229 | ... 230 +--rw log 231 | ... 232 +--rw nsr 233 | ... 234 +--rw nsf 235 | ... 236 +--rw protocol 237 | ... 238 +--rw spf 239 | ... 240 +--rw snmp 241 | ... 242 +--rw redistribute 243 | ... 244 +--rw timers 245 | ... 246 +--rw mpls 247 | ... 248 +--rw fast-reroute 249 | ... 251 2.7. OSPF Area Configuration 253 The container ospf-areas contains one of more ospf-area's each 254 represents an area in the OSPF protocol. Each ospf-area contains 255 configurations of that area and the ospf-interfaces container which 256 includes all the OSPF interfaces active in the enclosing area. 258 The ospf-areas also contains area configuration that could be 259 inherited to all ospf-area's defined. Similarly, the ospf-area also 260 contains interface configuration that could be inherited to all the 261 ospf-interface's defined. 263 module: ospf 264 +--rw ospf-routers 265 +--rw ospf-router [version name] 266 ... 267 +--rw ospf-afs 268 +--rw ospf-af [vrf-name afi safi] 269 ... 270 +--rw ospf-areas 271 +--rw loopback? enumeration 272 +--rw network-type? enumeration 273 +--rw passive? boolean 274 +--rw mtu-ignore? boolean 275 +--rw flood-reduction-enable? boolean 276 +--rw demand-circuit? boolean 277 +--rw demand-circuit-ignore-enable? boolean 278 +--rw prefix-suppression? boolean 279 +--rw ttl-security 280 ... 281 +--rw packet-size 282 ... 283 +--rw authentication 284 ... 285 +--rw database-filter 286 ... 287 +--rw neighbor [ip-address] 288 ... 289 +--rw bfd 290 ... 291 +--rw cost? uint16 292 +--rw hello-interval? uint16 293 +--rw dead-interval? uint16 294 +--rw retransmit-interval? uint16 295 +--rw transmit-delay? uint16 296 +--rw ospf-area [area-id] 297 +--rw area-id uint32 298 +--rw area-notation? enumeration 299 +--rw (area-type)? 300 ... 301 +--rw default-cost? uint32 302 +--rw range [prefix] 303 ... 304 +--rw virtual-link 305 ... 306 +--rw sham-link 307 ... 308 +--rw mpls-te-config 309 ... 311 2.8. OSPF Interface Configuration 313 The container ospf-areas contains one of more ospf-inteface's each 314 represents an interface in the OSPF protocol. Each ospf-interface 315 contains configurations of that interface. 317 The ospf-interfaces also contain interface configuration that could 318 be inherited to all ospf-interface's defined. 320 module: ospf 321 +--rw ospf-routers 322 +--rw ospf-router [version name] 323 ... 324 +--rw ospf-afs 325 +--rw ospf-af [vrf-name afi safi] 326 ... 327 +--rw ospf-areas 328 ... 329 +--rw ospf-interfaces 330 +--rw network-type? enumeration 331 +--rw passive? boolean 332 +--rw mtu-ignore? boolean 333 +--rw flood-reduction-enable? boolean 334 +--rw demand-circuit? boolean 335 +--rw demand-circuit-ignore-enable? boolean 336 +--rw prefix-suppression? boolean 337 +--rw ttl-security 338 ... 339 +--rw packet-size 340 ... 341 +--rw authentication 342 ... 343 +--rw database-filter 344 ... 345 +--rw neighbor [ip-address] 346 ... 347 +--rw bfd 348 ... 349 +--rw cost? uint16 350 +--rw hello-interval? uint16 351 +--rw dead-interval? uint16 352 +--rw retransmit-interval? uint16 353 +--rw transmit-delay? uint16 354 +--rw ospf-interface [interface] 355 +--rw interface if:interface-ref 356 +--rw network-type? enumeration 357 +--rw passive? boolean 358 +--rw mtu-ignore? boolean 359 +--rw flood-reduction-enable? boolean 360 +--rw demand-circuit? boolean 361 +--rw demand-circuit-ignore-enable? boolean 362 +--rw prefix-suppression? boolean 363 +--rw ttl-security 364 ... 365 +--rw packet-size 366 ... 367 +--rw authentication 368 ... 369 +--rw database-filter 370 ... 371 +--rw neighbor [ip-address] 372 ... 373 +--rw bfd 374 ... 375 +--rw cost? uint16 376 +--rw hello-interval? uint16 377 +--rw dead-interval? uint16 378 +--rw retransmit-interval? uint16 379 +--rw transmit-delay? uint16 381 3. OSPF Yang Module 383 384 module ospf { 385 namespace "urn:cisco:params:xml:ns:yang:ospf"; 386 // replace with IANA namespace when assigned 387 prefix ospf; 389 import ietf-inet-types { 390 prefix inet; 391 } 393 import ietf-interfaces { 394 prefix if; 395 } 397 organization 398 "Cisco Systems 399 170 West Tasman Drive 400 San Jose, CA 95134-1706 401 USA"; 402 contact 403 "Derek Yeung myeung@cisco.com 404 Yingzhen Qu yiqu@cisco.com 405 Alexander Clemm alex@cisco.com"; 407 description 408 "This YANG module defines the generic configuration 409 data for OSPF, which is common across all of the vendor 410 implementations of the protocol. It is intended that the module 411 will be extended by vendors to define vendor-specific 412 OSPF configuration parameters and policies, 413 for example route maps or route policies. 415 Terms and Acronyms 417 OSPF (ospf): Open Shortest Path First 419 IP (ip): Internet Protocol 420 IPv4 (ipv4):Internet Protocol Version 4 422 IPv6 (ipv6): Internet Protocol Version 6 424 MTU (mtu) Maximum Transmission Unit 425 "; 427 revision 2013-10-20 { 428 description 429 "Initial revision."; 430 } 432 feature flood-reduction { 433 description 434 "OSPF Flood Reduction."; 435 } 437 feature demand-circuit-ignore { 438 description 439 "Ignore demand circuit auto-negotiation requests."; 440 } 442 feature security { 443 description 444 "Enable/Disable TTL security."; 445 } 447 feature packet-size { 448 description 449 "Customize size of OSPF packets up to MTU."; 450 } 452 feature nsf-cisco { 453 description 454 "Enable Cisco Non Stop Forwarding."; 455 } 457 feature loopback-config { 458 description 459 "OSPF loopback configuration."; 460 } 462 feature max-lsa { 463 description 464 "Maximum number of LSAs OSPF process will receive."; 465 } 467 feature maximum-ecmp { 468 description 469 "Maximum number of ECMP paths."; 470 } 472 feature nsr { 473 description 474 "Enable NSR."; 475 } 477 feature spf { 478 description 479 "SPF configuration"; 480 } 482 feature nssa-only { 483 description 484 "Limit summary to NSSA areas."; 485 } 487 feature nssa-ext-capability { 488 description 489 "Send domain specific capabilities into NSSA."; 490 } 492 grouping interface-internal-inherit-config { 493 leaf cost { 494 description 495 "Interface cost."; 496 type uint16 { 497 range "1..65535"; 498 } 499 } 501 leaf hello-interval { 502 description 503 "Time between HELLO packets."; 504 units seconds; 505 type uint16 { 506 range "1..65535"; 507 } 508 } 510 leaf dead-interval { 511 description 512 "Interval after which a neighbor is declared dead."; 513 units seconds; 514 type uint16 { 515 range "1..65535"; 517 } 518 must "dead-interval > ../hello-interval" { 519 error-app-tag dead-interval-invalid; 520 error-message "The dead interval must be " 521 + "larger than the hello interval"; 522 } 523 } 525 leaf retransmit-interval { 526 description 527 "Time between retransmitting lost link state 528 advertisements."; 529 units seconds; 530 type uint16 { 531 range "1..65535"; 532 } 533 } 535 leaf transmit-delay { 536 description 537 "Estimated time needed to send link-state update."; 538 units seconds; 539 type uint16 { 540 range "1..65535"; 541 } 542 } 543 } // interface-internal-inherit-config 545 grouping interface-inherit-config { 546 leaf network-type { 547 description 548 "Network type."; 549 type enumeration { 550 enum "broadcast" { 551 description 552 "Specify OSPF broadcast multi-access network."; 553 } 554 enum "non-broadcast" { 555 description 556 "Specify OSPF NBMA network."; 557 } 558 enum "point-to-multipoint" { 559 description 560 "Specify OSPF point-to-multipoint network."; 561 } 562 enum "point-to-point" { 563 description 564 "Specify OSPF point-to-point network."; 566 } 567 } 568 } 570 leaf passive { 571 description 572 "Enable/Disable passive."; 573 type boolean; 574 } 576 leaf mtu-ignore { 577 description 578 "Enable/Disable ignoring of MTU in DBD packets."; 579 type boolean; 580 } 582 leaf flood-reduction-enable { 583 if-feature flood-reduction; 584 type boolean; 585 } 587 leaf demand-circuit { 588 description 589 "Enable/Disable demand circuits."; 590 type boolean; 591 } 593 leaf demand-circuit-ignore-enable { 594 if-feature demand-circuit-ignore; 595 type boolean; 596 } 598 leaf prefix-suppression { 599 description 600 "Suppress advertisement of the prefixes."; 601 type boolean; 602 } 604 container ttl-security { 605 if-feature security; 606 leaf enable { 607 type boolean; 608 } 609 leaf hops { 610 type uint8 { 611 range "1..254"; 612 } 613 } 615 } 617 container packet-size { 618 if-feature packet-size; 619 description 620 "Customize size of OSPF packets up to MTU."; 621 leaf enable { 622 type boolean; 623 } 624 leaf size { 625 type uint16 { 626 range "576..10000"; 627 } 628 } 629 } 631 container authentication { 632 when "../../../version = 2"; 633 description "Configure authentication."; 634 leaf enable { 635 type boolean; 636 } 637 choice authentication-type-selection { 638 case clear-text { 639 description 640 "Use clear-text authentication."; 641 leaf key { 642 type string { 643 length "1..8"; 644 } 645 } 646 } 647 case message-digest { 648 description 649 "Use message-digest authentication."; 650 list message-digest-key { 651 key key-id; 652 leaf key-id { 653 type uint8 { 654 range "1..255"; 655 } 656 } 657 leaf algorithm { 658 type enumeration { 659 enum "md5"; 660 } 661 } 662 leaf key { 663 type string { 664 length "1..8"; 665 } 666 } 667 } 668 } 669 } 670 } 672 container database-filter { 673 description 674 "Filter OSPF LSA during synchronization and flooding"; 675 leaf enable { 676 type boolean; 677 } 678 leaf lsa-type { 679 type enumeration { 680 enum "all"; 681 } 682 } 683 leaf direction { 684 type enumeration { 685 enum "out"; 686 } 687 } 688 } 690 list neighbor { 691 description 692 "Specify a neighbor router."; 693 key ip-address; 694 leaf ip-address { 695 type inet:ip-address; 696 } 697 leaf cost { 698 type uint16 { 699 range "1..65535"; 700 } 701 } 702 leaf poll-interval { 703 units seconds; 704 type uint16 { 705 range "1..65535"; 706 } 707 } 708 leaf priority { 709 type uint8 { 710 range "1..255"; 712 } 713 } 714 } 716 container bfd { 717 leaf enable { 718 description 719 "enable bfd."; 720 type boolean; 721 } 723 leaf minimum-interval { 724 description 725 "bfd hello interval"; 726 type uint16 { 727 range "15..30000"; 728 } 729 } 730 leaf multiplier { 731 description 732 "detect multiplier"; 733 type uint8 { 734 range "2..50"; 735 } 736 } 737 } 739 uses interface-internal-inherit-config; 741 } // grouping interface-inherit-config 743 grouping area-inherit-config { 744 leaf loopback { 745 if-feature loopback-config; 746 description 747 "OSPF loopback configuration."; 748 type enumeration { 749 enum "stub"; 750 enum "host"; 751 } 752 } 753 } // grouping area-inherit-config 755 container ospf-routers { 756 list ospf-router { 757 description 758 "This is a top-level container for the OSPF router."; 760 key "version name"; 761 leaf version { 762 description 763 "OSPF version."; 764 mandatory true; 765 type uint8 { 766 range "2..3"; 767 } 768 } 770 leaf name { 771 description 772 "Name, combined with 773 ospf-routers/ospf_router/ospf-afs/ospf-af, 774 identify an OSPF protocol instance."; 775 mandatory true; 776 type string; 777 } 779 container ospf-afs { 780 list ospf-af { 781 key "vrf-name afi safi"; 782 leaf vrf-name { 783 type string; 784 } 785 leaf afi { 786 type enumeration { 787 enum "ipv4" { 788 description 789 "IPv4"; 790 } 791 enum "ipv6" { 792 description 793 "IPv6"; 794 } 795 } 796 } 797 leaf safi { 798 type enumeration { 799 enum "unicast" { 800 description 801 "unicast"; 802 } 803 } 804 } 806 container router-id { 807 description 808 "Specify the router-id for this OSPF process."; 809 leaf enable { 810 type boolean; 811 } 812 choice config-type { 813 case static { 814 leaf ip-address { 815 type boolean; 816 } 817 } 818 case auto-config { 819 leaf enable-auto-config { 820 type boolean; 821 } 822 } 823 } 824 } 826 leaf distance { 827 description 828 "Define an administrative distance."; 829 type uint8 { 830 range "1..255"; 831 } 832 } 834 container default-originate { 835 description 836 "Control distribution of default route information."; 837 leaf enable { 838 type boolean; 839 default "false"; 840 } 841 } 843 container auto-cost { 844 description 845 "Calculate OSPF interface cost according to 846 bandwidth."; 847 leaf enable { 848 type boolean; 849 } 850 leaf reference-bandwidth { 851 type uint32 { 852 range "1..4294967"; 853 } 854 } 855 } 856 leaf default-metric { 857 description 858 "Calculate OSPF interface cost according to 859 bandwidth."; 860 type uint32 { 861 range "1..16777214"; 862 } 863 } 865 list summary-prefix { 866 description 867 "Configure IP address summaries"; 868 key "prefix"; 869 leaf prefix { 870 type inet:ip-prefix; 871 } 872 leaf advertise { 873 type boolean; 874 } 875 leaf tag { 876 type uint32 { 877 range "0..4294967295"; 878 } 879 } 880 leaf nssa-only-enable { 881 if-feature nssa-only; 882 type boolean; 883 } 884 } 886 container max-lsa { 887 if-feature max-lsa; 888 description 889 "Maximum number of LSAs OSPF process will 890 receive."; 891 leaf max { 892 description 893 "Maximum number of non self-generated LSAs 894 this process can receive."; 895 type uint32 { 896 range "1..4294967294"; 897 } 898 } 899 leaf threshold { 900 description 901 "Threshold value (%) at which to generate 902 a warning msg."; 903 type uint8 { 904 range "1..100"; 905 } 906 } 907 leaf warning-only { 908 description 909 "Only give warning message when limit is 910 exceeded."; 911 type boolean; 912 } 913 leaf ignore-time { 914 description 915 "Number of minutes during which all adjacencies 916 are suppressed."; 917 type uint16 { 918 range "1..17895"; 919 } 920 } 921 leaf ignore-count { 922 description 923 "Count on how many times adjacencies can be 924 suppressed."; 925 type uint16 { 926 range "1..65534"; 927 } 928 } 929 leaf reset-time { 930 description 931 "number of minutes after which ignore-count is 932 reset to zero."; 933 type uint16 { 934 range "2..35791"; 935 } 936 } 937 } 939 container maximum { 940 if-feature maximum-ecmp; 941 description 942 "Set OSPF limits."; 943 leaf paths { 944 description 945 "Maximum number of ECMP paths."; 946 type uint16 { 947 range "1..32"; 948 } 949 } 950 leaf interfaces { 951 description 952 "Maximum number of interfaces."; 953 type uint16 { 954 range "1..1024"; 955 } 956 } 957 container redistributed-prefixes { 958 description 959 "Maximum number of prefixes redistributed."; 960 leaf max { 961 type uint32 { 962 range "1..4294967295"; 963 } 964 } 965 leaf threshold { 966 description 967 "Threshold value (%) at which to generate 968 a warning msg."; 969 type uint8 { 970 range "1..100"; 971 } 972 } 973 leaf warning-only { 974 description 975 "Only give warning message when limit is 976 exceeded."; 977 type boolean; 978 } 979 } 980 } 982 container ignore { 983 description 984 "Do not complain about specific event."; 985 leaf-list lsa { 986 type enumeration { 987 enum "mospf"; 988 } 989 } 990 } 992 container log { 993 description 994 "Log ospf info."; 995 leaf adjacency-changes { 996 type boolean; 997 } 998 } 999 container nsr { 1000 if-feature nsr; 1001 description 1002 "Enable NSR."; 1003 leaf enable { 1004 type boolean; 1005 } 1006 } 1008 container nsf { 1009 choice nsf-type { 1010 case cisco { 1011 if-feature nsf-cisco; 1012 description 1013 "Enable Cisco Non Stop Forwarding."; 1014 leaf cisco-enable { 1015 type boolean; 1016 } 1017 } 1018 case ietf { 1019 description 1020 "Enable Cisco Non Stop Forwarding."; 1021 leaf ietf-enable { 1022 type boolean; 1023 } 1024 leaf ietf-helper-enable { 1025 type boolean; 1026 } 1027 } 1028 } 1029 } 1031 container protocol { 1032 description 1033 "Protocol specific configuration."; 1034 leaf shutdown { 1035 type boolean; 1036 } 1037 } 1039 container spf { 1040 if-feature spf; 1041 description 1042 "SPF configuration"; 1043 leaf prefix-priority-policy { 1044 type string; 1045 } 1046 } 1047 container snmp { 1048 description 1049 "Adjust ospf snmp parameters"; 1050 leaf context { 1051 type string; 1052 } 1053 } 1055 container redistribute { 1056 description 1057 "Redistribute information from another 1058 routing protocol. 1059 This grouping is intended to be augmented by 1060 vendors to implement vendor-specific protocol 1061 redistribution configuration options."; 1062 choice protocol { 1063 case bgp { 1064 leaf enable-bgp { 1065 type boolean; 1066 } 1067 } 1068 case ospf { 1069 leaf enable-ospf { 1070 type boolean; 1071 } 1072 } 1073 case isis { 1074 leaf enable-isis { 1075 type boolean; 1076 } 1077 } 1078 case connected { 1079 leaf enable-connected { 1080 type boolean; 1081 } 1082 } 1083 case eigrp { 1084 leaf enable-eigrp { 1085 type boolean; 1086 } 1087 } 1088 case mobile { 1089 leaf enable-mobile { 1090 type boolean; 1091 } 1092 } 1093 case static { 1094 leaf enable-static { 1095 type boolean; 1096 } 1097 } 1098 case rip { 1099 leaf enable-rip { 1100 type boolean; 1101 } 1102 } 1103 } 1104 } 1106 container timers { 1107 description 1108 "Adjust routing timers. 1109 This grouping is intended to be augmented 1110 by vendors to implement vendor-specific 1111 protocol timers configuration options"; 1113 container lsa { 1114 leaf min-arrival { 1115 description 1116 "The minimum interval in milliseconds 1117 between accepting the same"; 1118 units milliseconds; 1119 type uint32 { 1120 range "0..600000"; 1121 } 1122 } 1123 leaf refresh { 1124 description 1125 "The minimum interval in seconds 1126 between refresh"; 1127 units seconds; 1128 type uint32 { 1129 range "1800..2700"; 1130 } 1131 } 1132 } 1133 container throttle-lsa { 1134 leaf delay { 1135 description 1136 "Delay to generate first occurance of 1137 LSA in milliseconds"; 1138 units milliseconds; 1139 type uint32 { 1140 range "0..600000"; 1141 } 1142 } 1143 leaf min-delay { 1144 description 1145 "The Minimum delay between originating 1146 the same LSA in milliseconds"; 1147 units milliseconds; 1148 type uint32 { 1149 range "0..600000"; 1150 } 1151 } 1152 leaf max-delay { 1153 description 1154 "The Maximum delay between originating 1155 the same LSA in milliseconds"; 1156 units milliseconds; 1157 type uint32 { 1158 range "0..600000"; 1159 } 1160 } 1161 } 1163 container throttle-spf { 1164 leaf delay { 1165 description 1166 "Delay between receiving a change to 1167 SPF calculation in milliseconds"; 1168 units milliseconds; 1169 type uint32 { 1170 range "0..600000"; 1171 } 1172 } 1173 leaf min-delay { 1174 description 1175 "Delay between first and second SPF 1176 calculation in milliseconds"; 1177 units milliseconds; 1178 type uint32 { 1179 range "0..600000"; 1180 } 1181 } 1182 leaf max-delay { 1183 description 1184 "Maximum wait time in milliseconds 1185 for SPF calculations"; 1186 units milliseconds; 1187 type uint32 { 1188 range "0..600000"; 1189 } 1190 } 1192 } 1193 } 1195 container mpls { 1196 description 1197 "OSPF MPLS configuraions."; 1198 leaf te-rid { 1199 description 1200 "Traffic Engineering stable 1201 IP address for system."; 1202 type if:interface-ref; 1203 } 1204 leaf ldp-sync-enable { 1205 description 1206 "Enable LDP IGP synchronization."; 1207 type boolean; 1208 } 1209 leaf ldp-autoconfig-enable { 1210 description 1211 "Enable LDP IGP interface 1212 auto-configuration."; 1213 type boolean; 1214 } 1215 } 1217 container fast-reroute { 1218 leaf fast-reroute-enable { 1219 description 1220 "IP fast reroute."; 1221 type boolean; 1222 } 1223 } 1225 container ospf-areas { 1226 description 1227 "The top level container for the list 1228 of areas of the OSPF router."; 1230 uses area-inherit-config; 1231 uses interface-inherit-config; 1233 list ospf-area { 1234 key "area-id"; 1235 leaf area-id { 1236 type uint32; 1237 } 1239 leaf area-notation { 1240 description 1241 "Sets the default area notation."; 1242 type enumeration { 1243 enum "decimal"; 1244 enum "dot"; 1245 } 1246 } 1247 choice area-type { 1248 case nssa { 1249 description 1250 "Specify area as a NSSA area."; 1251 leaf redistribute { 1252 type boolean; 1253 } 1254 leaf nssa-summary { 1255 type boolean; 1256 } 1257 leaf nssa-ext-capability { 1258 if-feature nssa-ext-capability; 1259 type boolean; 1260 } 1261 container default-information-originate { 1262 description 1263 "Originate Type 7 default into NSSA area."; 1264 leaf metric { 1265 type uint16 { 1266 range "1..65535"; 1267 } 1268 } 1269 leaf metric-type { 1270 type uint8 { 1271 range "1..2"; 1272 } 1273 } 1274 } 1275 } 1276 case stub { 1277 description 1278 "Specify area as a stub area."; 1279 leaf stub-summary { 1280 type boolean; 1281 } 1282 leaf stub-ext-capability { 1283 type boolean; 1284 } 1285 } 1286 } 1287 leaf default-cost { 1288 description 1289 "Set the summary default-cost of a 1290 NSSA/stub area."; 1291 type uint32 { 1292 range "1..16777215"; 1293 } 1294 } 1296 list range { 1297 description 1298 "Summarize routes matching 1299 address/mask (border routers only)"; 1300 key "prefix"; 1301 leaf prefix { 1302 type inet:ip-prefix; 1303 } 1304 leaf advertise { 1305 type boolean; 1306 } 1307 leaf cost { 1308 type uint32 { 1309 range "0..16777214"; 1310 } 1311 } 1312 } 1314 container virtual-link { 1315 description 1316 "Define a virtual link"; 1317 leaf router-id { 1318 type inet:ip-address; 1319 } 1321 uses interface-internal-inherit-config; 1322 } 1324 container sham-link { 1325 leaf local-id { 1326 description 1327 "Address of the local end-point."; 1328 type inet:ip-address; 1329 } 1330 leaf remote-id { 1331 description 1332 "Address of the remote end-point."; 1333 type inet:ip-address; 1334 } 1335 uses interface-internal-inherit-config; 1336 } 1338 container mpls-te-config { 1339 leaf mpls-te-enable { 1340 description 1341 "Enable an ospf area to run MPLS 1342 Traffic Engineering."; 1343 type boolean; 1344 } 1345 } 1347 container ospf-interfaces { 1348 description 1349 "The top level container for the 1350 list of interfaces of the OSPF router."; 1352 uses interface-inherit-config; 1354 list ospf-interface { 1355 key "interface"; 1356 leaf interface { 1357 type if:interface-ref; 1358 } 1359 uses interface-inherit-config; 1360 } // list ospf-interface 1361 } // container ospf-interfaces 1362 } // list ospf-area 1363 } // container ospf-areas 1364 } // container ospf-af 1365 } // container ospf-afs 1366 } // list ospf-router 1367 } // container ospf-routers 1368 } 1369 1371 4. Security Considerations 1373 The data model defined does not create any security implications. 1375 This draft does not change any underlying security issues inherent in 1376 [I-D.ietf-netmod-routing-cfg]. 1378 5. Acknowledgements 1380 The authors would like to thank Gaurav Gupta and many others for 1381 review and comments. 1383 This document was produced using Marshall Rose's xml2rfc tool. 1385 6. References 1387 6.1. Normative References 1389 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1390 Requirement Levels", BCP 14, RFC 2119, March 1997. 1392 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1393 Network Configuration Protocol (NETCONF)", RFC 6020, 1394 October 2010. 1396 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1397 Bierman, "Network Configuration Protocol (NETCONF)", RFC 1398 6241, June 2011. 1400 6.2. Informative References 1402 [I-D.ietf-netmod-interfaces-cfg] 1403 Bjorklund, M., "A YANG Data Model for Interface 1404 Management", draft-ietf-netmod-interfaces-cfg-12 (work in 1405 progress), July 2013. 1407 [I-D.ietf-netmod-routing-cfg] 1408 Lhotka, L., "A YANG Data Model for Routing Management", 1409 draft-ietf-netmod-routing-cfg-11 (work in progress), 1410 October 2013. 1412 Authors' Addresses 1414 Derek Yeung 1415 Cisco Systems 1416 170 West Tasman Drive 1417 San Jose, CA 95134 1418 USA 1420 EMail: myeung@cisco.com 1422 Yingzhen Qu 1423 Cisco Systems 1424 170 West Tasman Drive 1425 San Jose, CA 95134 1426 USA 1428 EMail: yiqu@cisco.com 1429 Alexander Clemm 1430 Cisco Systems 1431 170 West Tasman Drive 1432 San Jose, CA 95134 1433 USA 1435 EMail: alex@cisco.com