idnits 2.17.00 (12 Aug 2021) /tmp/idnits5377/draft-yeung-netmod-ospf-01.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 (February 14, 2014) is 3017 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 1490, 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: August 18, 2014 Cisco Systems 6 February 14, 2014 8 Yang Data Model for OSPF Protocol 9 draft-yeung-netmod-ospf-01 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 August 18, 2014. 33 Copyright Notice 35 Copyright (c) 2014 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 . . . . . . . . . . . . . . . . 5 58 2.6. OSPF Address-Family Configuration . . . . . . . . . . . . 5 59 2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 7 60 2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 9 61 3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 10 62 4. Security Considerations . . . . . . . . . . . . . . . . . . . 32 63 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32 64 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 65 6.1. Normative References . . . . . . . . . . . . . . . . . . 33 66 6.2. Informative References . . . . . . . . . . . . . . . . . 33 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 A core routing data model is defined in 80 [I-D.ietf-netmod-routing-cfg], and it proposed a basis for the 81 development of data models for routing protocols. This document 82 defines a YANG data model that can be used to configure and manage 83 OSPF and it is an augment to the core routing data model. 85 This document defines a YANG data model that can be used to configure 86 and manage OSPF. Both OSPFv2 and OSPFv3 are supported. In 87 additional to the core OSPF protocol, features described in different 88 separate OSPF RFC are also supported. Those non-core features are 89 made optional in the data model provided. 91 1.1. Requirements Language 93 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 94 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 95 document are to be interpreted as described in [RFC2119]. 97 2. Design of Data Model 99 Although the basis of OSPF configuration elements like routers, areas 100 and interfaces remains the same, the detailed configuration model 101 varies among different vendors. Differences are observed in term of 102 how protocol engine is tied to routing domain, how multiple protocol 103 engines could be instantiated and configuration inheritance, just to 104 name a few. 106 The goal of this document is to define a data model that is capable 107 of representing these differences. There is very little information 108 that is designated as "mandatory", providing freedom to vendors to 109 adapt this data model to their product implementation. 111 2.1. Overview 113 The OSPF YANG module defined in this document has all the common 114 building blocks for OSPF protocol. 116 The OSPF YANG module augments the routing/routing-instance/routing- 117 protocols/routing-protocol path of the ietf-routing module. 119 module: ospf 120 +--rw routing 121 +--rw routing-instance [name] 122 +--rw routing-protocols 123 +--rw routing-protocol [name] 124 +--rw ospf:ospf-router [version name] 125 . 126 . 127 +--rw ospf:ospf-afs 128 +--rw ospf:ospf-af [vrf-name afi safi] 129 . 130 . 131 +--rw ospf:ospf-areas 132 . 133 . 134 +--rw ospf:ospf-area [area-id] 135 . 136 . 137 +--rw ospf:ospf-interfaces 138 . 139 . 140 +--rw ospf:ospf-interface [interface] 141 . 142 . 144 The ospf-router is intended to match to the vendor specific OSPF 145 configuration construct which is identified by a local identifier 146 'name'. The field 'version' allows support for OSPFv2 and OSPFv3. 148 The container ospf-afs includes one or more OSPF protocol engines, 149 each encapsulated in the ospf-af entity. Each ospf-af includes 150 information for the routing domain it is running on based on the 151 [vrf-name afi safi] specification. There is no default routing 152 domain assumed by the data model. For example, to enable OSPF on the 153 default IPv4 routing domain of the vendor, this model requires an 154 explicit ospf-af entity with the specification like ["default" "ipv4" 155 "unicast"]. The ospf-af also contains OSPF router level 156 configuration 158 The ospf-areas/ospf-area and ospf-intefaces/ospf-interface contains 159 the OSPF configuration for the area and interface level respectively 161 2.2. OSPFv2 and OSPFv3 163 The defined data model supports both OSPFv2 and OSPFv3. 165 The field 'version' is used to indicate the OSPF version and is a 166 mandatory. Based on the version set, the data model change 167 accordingly to accommodate the difference between the two versions. 169 2.3. Optional Features 171 Optional features are features beyond the basic of OSPF 172 configurations and it is up to a vendor to decide the support of a 173 particular feature on a particular device. 175 This module has declared a number of features, such as NSR, max-LSA 176 etc.. It is intended that vendors will extend the features list. 178 2.4. Inheritance 180 This defined data model supports configuration inheritance for areas 181 and interfaces. 183 Area related configurations specified in the ospf-areas container 184 apply to all ospf-area. 186 Interface related configurations specified in ospf-areas container 187 apply to all ospf-interface in all ospf-area's. 189 Interface related configurations specified in ospf-interfaces 190 container apply to all ospf-interface in the enclosing ospf-area. 192 2.5. OSPF Router Configuration 194 The container ospf-router is the top level container in this data 195 model. The main purpose of the ospf-router is to specify the OSPF 196 version and the local name for the enclosed ospf-afs container which 197 has the protocol configuration specifics. 199 module: ospf 200 +--rw ospf-router [version name] 201 +--rw version uint8 202 +--rw name string 203 . 204 . 206 2.6. OSPF Address-Family Configuration 208 The container ospf-afs contains one of more ospf-af's each represents 209 an OSPF protocol engine. Each ospf-af indicates the routing domain 210 it is associated with based on [vrf-name afi safi] and contains the 211 router level configurations. 213 module: ospf 215 +--rw ospf-router [version name] 216 ... 217 +--rw ospf-afs 218 +--rw ospf-af [vrf-name afi safi] 219 +--rw vrf-name string 220 +--rw afi enumeration 221 +--rw safi enumeration 222 +--rw router-id 223 | ... 224 +--rw distance? uint8 225 +--rw default-originate 226 | ... 227 +--rw auto-cost 228 | ... 229 +--rw default-metric? uint32 230 +--rw summary-prefix [prefix] 231 | ... 232 +--rw max-lsa 233 | ... 234 +--rw maximum 235 | ... 236 +--rw ignore 237 | ... 238 +--rw log 239 | ... 240 +--rw nsr 241 | ... 242 +--rw nsf 243 | ... 244 +--rw protocol 245 | ... 246 +--rw spf 247 | ... 248 +--rw snmp 249 | ... 250 +--rw redistribute 251 | ... 252 +--rw timers 253 | ... 254 +--rw mpls 255 | ... 256 +--rw fast-reroute 257 | ... 259 2.7. OSPF Area Configuration 261 The container ospf-areas contains one of more ospf-area's each 262 represents an area in the OSPF protocol. Each ospf-area contains 263 configurations of that area and the ospf-interfaces container which 264 includes all the OSPF interfaces active in the enclosing area. 266 The ospf-areas also contains area configuration that could be 267 inherited to all ospf-area's defined. Similarly, the ospf-area also 268 contains interface configuration that could be inherited to all the 269 ospf-interface's defined. 271 module: ospf 272 +--rw ospf-router [version name] 273 ... 274 +--rw ospf-afs 275 +--rw ospf-af [vrf-name afi safi] 276 ... 277 +--rw ospf-areas 278 +--rw loopback? enumeration 279 +--rw network-type? enumeration 280 +--rw passive? boolean 281 +--rw mtu-ignore? boolean 282 +--rw flood-reduction-enable? boolean 283 +--rw demand-circuit? boolean 284 +--rw demand-circuit-ignore-enable? boolean 285 +--rw prefix-suppression? boolean 286 +--rw ttl-security 287 ... 288 +--rw packet-size 289 ... 290 +--rw authentication 291 ... 292 +--rw database-filter 293 ... 294 +--rw neighbor [ip-address] 295 ... 296 +--rw bfd 297 ... 298 +--rw cost? uint16 299 +--rw hello-interval? uint16 300 +--rw dead-interval? uint16 301 +--rw retransmit-interval? uint16 302 +--rw transmit-delay? uint16 303 +--rw ospf-area [area-id] 304 +--rw area-id uint32 305 +--rw area-notation? enumeration 306 +--rw (area-type)? 307 ... 308 +--rw default-cost? uint32 309 +--rw range [prefix] 310 ... 311 +--rw virtual-link 312 ... 313 +--rw sham-link 314 ... 315 +--rw mpls-te-config 316 ... 318 2.8. OSPF Interface Configuration 320 The container ospf-areas contains one of more ospf-inteface's each 321 represents an interface in the OSPF protocol. Each ospf-interface 322 contains configurations of that interface. 324 The ospf-interfaces also contain interface configuration that could 325 be inherited to all ospf-interface's defined. 327 module: ospf 328 +--rw ospf-router [version name] 329 ... 330 +--rw ospf-afs 331 +--rw ospf-af [vrf-name afi safi] 332 ... 333 +--rw ospf-areas 334 ... 335 +--rw ospf-interfaces 336 +--rw network-type? enumeration 337 +--rw passive? boolean 338 +--rw mtu-ignore? boolean 339 +--rw flood-reduction-enable? boolean 340 +--rw demand-circuit? boolean 341 +--rw demand-circuit-ignore-enable? boolean 342 +--rw prefix-suppression? boolean 343 +--rw ttl-security 344 ... 345 +--rw packet-size 346 ... 347 +--rw authentication 348 ... 349 +--rw database-filter 350 ... 351 +--rw neighbor [ip-address] 352 ... 353 +--rw bfd 354 ... 355 +--rw cost? uint16 356 +--rw hello-interval? uint16 357 +--rw dead-interval? uint16 358 +--rw retransmit-interval? uint16 359 +--rw transmit-delay? uint16 360 +--rw ospf-interface [interface] 361 +--rw interface if:interface-ref 362 +--rw network-type? enumeration 363 +--rw passive? boolean 364 +--rw mtu-ignore? boolean 365 +--rw flood-reduction-enable? boolean 366 +--rw demand-circuit? boolean 367 +--rw demand-circuit-ignore-enable? boolean 368 +--rw prefix-suppression? boolean 369 +--rw ttl-security 370 ... 371 +--rw packet-size 372 ... 373 +--rw authentication 374 ... 375 +--rw database-filter 376 ... 377 +--rw neighbor [ip-address] 378 ... 379 +--rw bfd 380 ... 381 +--rw cost? uint16 382 +--rw hello-interval? uint16 383 +--rw dead-interval? uint16 384 +--rw retransmit-interval? uint16 385 +--rw transmit-delay? uint16 387 3. OSPF Yang Module 389 390 module ospf { 391 namespace "urn:cisco:params:xml:ns:yang:ospf"; 392 // replace with IANA namespace when assigned 393 prefix ospf; 395 import ietf-inet-types { 396 prefix "inet"; 397 } 399 import ietf-yang-types { 400 prefix "yang"; 401 } 403 import ietf-interfaces { 404 prefix "if"; 405 } 407 import ietf-routing { 408 prefix "rt"; 409 } 411 organization 412 "Cisco Systems 413 170 West Tasman Drive 414 San Jose, CA 95134-1706 415 USA"; 416 contact 417 "Derek Yeung myeung@cisco.com 418 Yingzhen Qu yiqu@cisco.com 419 Alexander Clemm alex@cisco.com"; 421 description 422 "This YANG module defines the generic configuration 423 data for OSPF, which is common across all of the vendor 424 implementations of the protocol. It is intended that the module 425 will be extended by vendors to define vendor-specific 426 OSPF configuration parameters and policies, 427 for example route maps or route policies. 429 Terms and Acronyms 431 OSPF (ospf): Open Shortest Path First 433 IP (ip): Internet Protocol 435 IPv4 (ipv4):Internet Protocol Version 4 437 IPv6 (ipv6): Internet Protocol Version 6 439 MTU (mtu) Maximum Transmission Unit 440 "; 442 revision 2014-02-14 { 443 description 444 "Initial revision."; 445 } 447 feature ospfv3-authentication-trailer { 448 description 449 "OSPFv3 Cryptographic Authentication as in RFC 6506."; 450 } 452 feature ospfv2-authentication-SHA { 453 description 454 "OSPFv2 support of HMAC-SHA algorithms as in RFC 5709."; 455 } 457 feature ospf-madj { 458 description 459 "OSPF multi-area adjacency support as in RFC 5185."; 460 } 461 feature ospf-lls { 462 description 463 "OSPF link-local signaling (LLS) as in RFC 5613."; 464 } 466 feature flood-reduction { 467 description 468 "OSPF Flood Reduction."; 469 } 471 feature demand-circuit-ignore { 472 description 473 "Ignore demand circuit auto-negotiation requests."; 474 } 476 feature security { 477 description 478 "Enable/Disable TTL security."; 479 } 481 feature packet-size { 482 description 483 "Customize size of OSPF packets up to MTU."; 484 } 486 feature nsf-cisco { 487 description 488 "Enable Cisco Non Stop Forwarding."; 489 } 491 feature loopback-config { 492 description 493 "OSPF loopback configuration."; 494 } 496 feature max-lsa { 497 description 498 "Maximum number of LSAs OSPF process will receive."; 499 } 501 feature maximum-ecmp { 502 description 503 "Maximum number of ECMP paths."; 504 } 506 feature nsr { 507 description 508 "Enable NSR."; 510 } 512 feature spf { 513 description 514 "SPF configuration"; 515 } 517 feature nssa-only { 518 description 519 "Limit summary to NSSA areas."; 520 } 522 feature nssa-ext-capability { 523 description 524 "Send domain specific capabilities into NSSA."; 525 } 527 identity ospf { 528 base "rt:routing-protocol"; 529 description "OSPF routing protocol"; 530 } 532 grouping interface-internal-inherit-config { 533 leaf cost { 534 description 535 "Interface cost."; 536 type uint16 { 537 range "1..65535"; 538 } 539 } 541 leaf hello-interval { 542 description 543 "Time between HELLO packets."; 544 units seconds; 545 type uint16 { 546 range "1..65535"; 547 } 548 } 550 leaf dead-interval { 551 description 552 "Interval after which a neighbor is declared dead."; 553 units seconds; 554 type uint16 { 555 range "1..65535"; 556 } 557 must "dead-interval > ../hello-interval" { 558 error-app-tag dead-interval-invalid; 559 error-message "The dead interval must be " 560 + "larger than the hello interval"; 561 } 562 } 564 leaf retransmit-interval { 565 description 566 "Time between retransmitting lost link state advertisements."; 567 units seconds; 568 type uint16 { 569 range "1..65535"; 570 } 571 } 573 leaf transmit-delay { 574 description 575 "Estimated time needed to send link-state update."; 576 units seconds; 577 type uint16 { 578 range "1..65535"; 579 } 580 } 581 } // interface-internal-inherit-config 583 grouping interface-inherit-config { 584 leaf network-type { 585 description 586 "Network type."; 587 type enumeration { 588 enum "broadcast" { 589 description 590 "Specify OSPF broadcast multi-access network."; 591 } 592 enum "non-broadcast" { 593 description 594 "Specify OSPF NBMA network."; 595 } 596 enum "point-to-multipoint" { 597 description 598 "Specify OSPF point-to-multipoint network."; 599 } 600 enum "point-to-point" { 601 description 602 "Specify OSPF point-to-point network."; 603 } 604 } 605 } 606 leaf passive { 607 description 608 "Enable/Disable passive."; 609 type boolean; 610 } 612 leaf mtu-ignore { 613 description 614 "Enable/Disable ignoring of MTU in DBD packets."; 615 type boolean; 616 } 618 leaf flood-reduction-enable { 619 if-feature flood-reduction; 620 type boolean; 621 } 623 leaf demand-circuit { 624 description 625 "Enable/Disable demand circuits."; 626 type boolean; 627 } 629 leaf demand-circuit-ignore-enable { 630 if-feature demand-circuit-ignore; 631 type boolean; 632 } 634 leaf prefix-suppression { 635 description 636 "Suppress advertisement of the prefixes."; 637 type boolean; 638 } 640 leaf lls-enable { 641 if-feature ospf-lls; 642 description 643 "link-local signaling (LLS) support."; 644 type boolean; 645 } 647 container ttl-security { 648 if-feature security; 649 leaf enable { 650 type boolean; 651 } 652 leaf hops { 653 type uint8 { 654 range "1..254"; 655 } 656 } 657 } 659 container packet-size { 660 if-feature packet-size; 661 description 662 "Customize size of OSPF packets up to MTU."; 663 leaf enable { 664 type boolean; 665 } 666 leaf size { 667 type uint16 { 668 range "576..10000"; 669 } 670 } 671 } 673 container ospf-multiarea-adj { 674 if-feature ospf-madj; 675 description 676 "Configure ospf multi-area."; 677 leaf multi-area { 678 type uint32; 679 } 680 leaf cost { 681 type uint16; 682 } 683 } 685 container ospfv3-authentication { 686 when "../../../version = 3"; 687 description "Configure authentication for ospfv3."; 688 if-feature ospfv3-authentication-trailer; 689 leaf key-chain { 690 type string; 691 } 692 container ipsec { 693 leaf spi { 694 type uint32 { 695 range "256..4294967295"; 696 } 697 } 698 leaf encrypted { 699 type uint8 { 700 range "0..7"; 701 } 703 } 704 leaf key { 705 type string; 706 } 707 } 708 } 710 container ospfv2-authentication { 711 when "../../../version = 2"; 712 description "Configure authentication for ospfv2."; 713 leaf enable { 714 type boolean; 715 } 716 choice authentication-type-selection { 717 case clear-text { 718 description 719 "Use clear-text authentication."; 720 leaf key { 721 type string { 722 length "1..8"; 723 } 724 } 725 } 726 case message-digest { 727 description 728 "Use message-digest authentication."; 729 list message-digest-key { 730 key key-id; 731 leaf key-id { 732 type uint8 { 733 range "1..255"; 734 } 735 } 736 leaf algorithm { 737 type enumeration { 738 enum "md5"; 739 } 740 } 741 leaf key { 742 type string { 743 length "1..8"; 744 } 745 } 746 } 747 } 748 case cryptographic { 749 if-feature ospfv2-authentication-SHA; 750 description 751 "OSPFv2 Cryptographic Authentication(SHA) as in RFC 5709."; 752 leaf key-chain { 753 type string { 754 length "1..8"; 755 } 756 } 757 } 758 } 759 } 761 container database-filter { 762 description 763 "Filter OSPF LSA during synchronization and flooding"; 764 leaf enable { 765 type boolean; 766 } 767 leaf lsa-type { 768 type enumeration { 769 enum "all"; 770 } 771 } 772 leaf direction { 773 type enumeration { 774 enum "out"; 775 } 776 } 777 } 779 list neighbor { 780 description 781 "Specify a neighbor router."; 782 key "address"; 784 leaf address { 785 type inet:ip-address; 786 } 788 leaf cost { 789 type uint16 { 790 range "1..65535"; 791 } 792 } 793 leaf poll-interval { 794 units seconds; 795 type uint16 { 796 range "1..65535"; 797 } 798 } 799 leaf priority { 800 type uint8 { 801 range "1..255"; 802 } 803 } 804 } 806 container bfd { 807 leaf enable { 808 description 809 "enable bfd."; 810 type boolean; 811 } 813 leaf minimum-interval { 814 description 815 "bfd hello interval"; 816 type uint16 { 817 range "15..30000"; 818 } 819 } 820 leaf multiplier { 821 description 822 "detect multiplier"; 823 type uint8 { 824 range "2..50"; 825 } 826 } 827 } 829 uses interface-internal-inherit-config; 831 } // grouping interface-inherit-config 833 grouping area-inherit-config { 834 leaf loopback { 835 if-feature loopback-config; 836 description 837 "OSPF loopback configuration."; 838 type enumeration { 839 enum "stub"; 840 enum "host"; 841 } 842 } 843 } // grouping area-inherit-config 845 // data nodes follow 846 augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" 847 + "rt:routing-protocol" { 848 list ospf-router { 850 description 851 "This is a top-level container for the OSPF router."; 853 when "./type=ospf"; 855 key "version name"; 856 leaf version { 857 description 858 "OSPF version."; 859 type uint8 { 860 range "2..3"; 861 } 862 } 864 leaf name { 865 description 866 "Name, combined with 867 ospf_router/ospf-vrfs/ospf-vrf/name, 868 identify an OSPF protocol instance."; 869 type string; 870 } 872 container ospf-afs { 873 list ospf-af { 874 key "vrf-name afi safi"; 875 leaf vrf-name { 876 type string; 877 } 879 leaf afi { 880 type enumeration { 881 enum "ipv4" { 882 description 883 "IPv4"; 884 } 885 enum "ipv6" { 886 description 887 "IPv6"; 888 } 889 } 890 } 892 leaf safi { 893 type enumeration { 894 enum "unicast" { 895 description 896 "unicast"; 897 } 898 } 899 } 901 container router-id { 902 description 903 "Defined in RFC 2328. A 32-bit number that uniquely 904 identifies the router."; 905 leaf static_config { 906 description 907 "Define whether a static router-id is configured."; 908 type boolean; 909 } 910 leaf router-id { 911 type inet:ip-address; 912 } 913 } 915 leaf distance { 916 description 917 "Define an administrative distance."; 918 type uint8 { 919 range "1..255"; 920 } 921 } 923 container default-originate { 924 description 925 "Control distribution of default route information."; 926 leaf enable { 927 type boolean; 928 default "false"; 929 } 930 } 932 container auto-cost { 933 description 934 "Calculate OSPF interface cost according to bandwidth."; 935 leaf enable { 936 type boolean; 937 } 938 leaf reference-bandwidth { 939 type uint32 { 940 range "1..4294967"; 941 } 943 } 944 } 946 leaf default-metric { 947 description 948 "Calculate OSPF interface cost according to bandwidth."; 949 type uint32 { 950 range "1..16777214"; 951 } 952 } 954 when "../../version = 2"; 955 list summary-prefix { 956 description 957 "Configure IP address summaries"; 958 key "prefix"; 959 leaf prefix { 960 type inet:ipv4-prefix; 961 } 962 leaf advertise { 963 type boolean; 964 } 965 leaf tag { 966 type uint32 { 967 range "0..4294967295"; 968 } 969 } 970 leaf nssa-only-enable { 971 if-feature nssa-only; 972 type boolean; 973 } 974 } 976 container max-lsa { 977 if-feature max-lsa; 978 description 979 "Maximum number of LSAs OSPF process will receive."; 980 leaf max { 981 description 982 "Maximum number of non self-generated LSAs this 983 process can receive."; 984 type uint32 { 985 range "1..4294967294"; 986 } 987 } 988 leaf threshold { 989 description 990 "Threshold value (%) at which to generate 991 a warning msg."; 992 type uint8 { 993 range "1..100"; 994 } 995 } 996 leaf warning-only { 997 description 998 "Only give warning message when limit is exceeded."; 999 type boolean; 1000 } 1001 leaf ignore-time { 1002 description 1003 "Number of minutes during which all adjacencies 1004 are suppressed."; 1005 type uint16 { 1006 range "1..17895"; 1007 } 1008 } 1009 leaf ignore-count { 1010 description 1011 "Count on how many times adjacencies can be 1012 suppressed."; 1013 type uint16 { 1014 range "1..65534"; 1015 } 1016 } 1017 leaf reset-time { 1018 description 1019 "number of minutes after which ignore-count is 1020 reset to zero."; 1021 type uint16 { 1022 range "2..35791"; 1023 } 1024 } 1025 } 1027 container maximum { 1028 if-feature maximum-ecmp; 1029 description 1030 "Set OSPF limits."; 1031 leaf paths { 1032 description 1033 "Maximum number of ECMP paths."; 1034 type uint16 { 1035 range "1..32"; 1036 } 1037 } 1038 leaf interfaces { 1039 description 1040 "Maximum number of interfaces."; 1041 type uint16 { 1042 range "1..1024"; 1043 } 1044 } 1045 container redistributed-prefixes { 1046 description 1047 "Maximum number of prefixes redistributed."; 1048 leaf max { 1049 type uint32 { 1050 range "1..4294967295"; 1051 } 1052 } 1053 leaf threshold { 1054 description 1055 "Threshold value (%) at which to generate 1056 a warning msg."; 1057 type uint8 { 1058 range "1..100"; 1059 } 1060 } 1061 leaf warning-only { 1062 description 1063 "Only give warning message when limit is exceeded."; 1064 type boolean; 1065 } 1066 } 1067 } 1069 container ignore { 1070 description 1071 "Do not complain about specific event."; 1072 leaf-list lsa { 1073 type enumeration { 1074 enum "mospf"; 1075 } 1076 } 1077 } 1079 container log { 1080 description 1081 "Log ospf info."; 1082 leaf adjacency-changes { 1083 type boolean; 1084 } 1085 } 1086 container nsr { 1087 if-feature nsr; 1088 description 1089 "Enable NSR."; 1090 leaf enable { 1091 type boolean; 1092 } 1093 } 1095 container nsf { 1096 choice nsf-type { 1097 case cisco { 1098 if-feature nsf-cisco; 1099 description 1100 "Enable Cisco Non Stop Forwarding."; 1101 leaf cisco-enable { 1102 type boolean; 1103 } 1104 } 1105 case ietf { 1106 description 1107 "Enable IETF standardized graceful restart 1108 functionality that is described in 1109 RFC 3623 and 5187."; 1110 leaf ietf-enable { 1111 type boolean; 1112 } 1113 leaf ietf-helper-enable { 1114 type boolean; 1115 } 1116 } 1117 } 1118 } 1120 container protocol { 1121 description 1122 "Protocol specific configuration."; 1123 leaf shutdown { 1124 type boolean; 1125 } 1126 } 1128 container spf { 1129 if-feature spf; 1130 description 1131 "SPF configuration"; 1132 leaf prefix-priority-policy { 1133 type string; 1135 } 1136 } 1138 container snmp { 1139 description 1140 "Adjust ospf snmp parameters"; 1141 leaf context { 1142 type string; 1143 } 1144 } 1146 container redistribute { 1147 description 1148 "Redistribute information from another routing protocol. 1149 This grouping is intended to be augmented by vendors 1150 to implement vendor-specific protocol redistribution 1151 configuration options."; 1152 choice protocol { 1153 case bgp { 1154 leaf enable-bgp { 1155 type boolean; 1156 } 1157 } 1158 case ospf { 1159 leaf enable-ospf { 1160 type boolean; 1161 } 1162 } 1163 case isis { 1164 leaf enable-isis { 1165 type boolean; 1166 } 1167 } 1168 case connected { 1169 leaf enable-connected { 1170 type boolean; 1171 } 1172 } 1173 case eigrp { 1174 leaf enable-eigrp { 1175 type boolean; 1176 } 1177 } 1178 case mobile { 1179 leaf enable-mobile { 1180 type boolean; 1181 } 1182 } 1183 case static { 1184 leaf enable-static { 1185 type boolean; 1186 } 1187 } 1188 case rip { 1189 leaf enable-rip { 1190 type boolean; 1191 } 1192 } 1193 } 1194 } 1196 container timers { 1197 description 1198 "Adjust routing timers. 1199 This grouping is intended to be augmented by vendors 1200 to implement vendor-specific protocol timers 1201 configuration options"; 1203 container lsa { 1204 leaf min-arrival { 1205 description 1206 "The minimum interval in milliseconds between 1207 accepting the same"; 1208 units milliseconds; 1209 type uint32 { 1210 range "0..600000"; 1211 } 1212 } 1213 leaf refresh { 1214 description 1215 "The minimum interval in seconds between refresh"; 1216 units seconds; 1217 type uint32 { 1218 range "1800..2700"; 1219 } 1220 } 1221 } 1223 container throttle-lsa { 1224 leaf delay { 1225 description 1226 "Delay to generate first occurance of LSA 1227 in milliseconds"; 1228 units milliseconds; 1229 type uint32 { 1230 range "0..600000"; 1232 } 1233 } 1234 leaf min-delay { 1235 description 1236 "The Minimum delay between originating the same 1237 LSA in milliseconds"; 1238 units milliseconds; 1239 type uint32 { 1240 range "0..600000"; 1241 } 1242 } 1243 leaf max-delay { 1244 description 1245 "The Maximum delay between originating the same 1246 LSA in milliseconds"; 1247 units milliseconds; 1248 type uint32 { 1249 range "0..600000"; 1250 } 1251 } 1252 } 1254 container throttle-spf { 1255 leaf delay { 1256 description 1257 "Delay between receiving a change to SPF calculation 1258 in milliseconds"; 1259 units milliseconds; 1260 type uint32 { 1261 range "0..600000"; 1262 } 1263 } 1264 leaf min-delay { 1265 description 1266 "Delay between first and second SPF calculation 1267 in milliseconds"; 1268 units milliseconds; 1269 type uint32 { 1270 range "0..600000"; 1271 } 1272 } 1273 leaf max-delay { 1274 description 1275 "Maximum wait time in milliseconds for 1276 SPF calculations"; 1277 units milliseconds; 1278 type uint32 { 1279 range "0..600000"; 1281 } 1282 } 1283 } 1284 } 1286 container mpls { 1287 description 1288 "OSPF MPLS configuraions."; 1289 leaf te-rid { 1290 description 1291 "Traffic Engineering stable IP address for system."; 1292 type if:interface-ref; 1293 } 1294 leaf ldp-sync-enable { 1295 description 1296 "Enable LDP IGP synchronization."; 1297 type boolean; 1298 } 1299 leaf ldp-autoconfig-enable { 1300 description 1301 "Enable LDP IGP interface auto-configuration."; 1302 type boolean; 1303 } 1304 } 1306 container fast-reroute { 1307 leaf fast-reroute-enable { 1308 description 1309 "IP fast reroute."; 1310 type boolean; 1311 } 1312 } 1314 container ospf-areas { 1315 description 1316 "The top level container for the list of areas of 1317 the OSPF router."; 1319 uses area-inherit-config; 1320 uses interface-inherit-config; 1322 list ospf-area { 1323 key "area-id"; 1324 leaf area-id { 1325 type uint32; 1326 } 1328 leaf area-notation { 1329 description 1330 "Sets the default area notation."; 1331 type enumeration { 1332 enum "decimal"; 1333 enum "dot"; 1334 } 1335 } 1336 choice area-type { 1337 case nssa { 1338 description 1339 "Specify area as a NSSA area."; 1340 leaf redistribute { 1341 type boolean; 1342 } 1343 leaf nssa-summary { 1344 type boolean; 1345 } 1346 leaf nssa-ext-capability { 1347 if-feature nssa-ext-capability; 1348 type boolean; 1349 } 1350 container default-information-originate { 1351 description 1352 "Originate Type 7 default into NSSA area."; 1353 leaf metric { 1354 type uint16 { 1355 range "1..65535"; 1356 } 1357 } 1358 leaf metric-type { 1359 type uint8 { 1360 range "1..2"; 1361 } 1362 } 1363 } 1364 } 1365 case stub { 1366 description 1367 "Specify area as a stub area."; 1368 leaf stub-summary { 1369 type boolean; 1370 } 1371 leaf stub-ext-capability { 1372 type boolean; 1373 } 1374 } 1375 } 1376 leaf default-cost { 1377 description 1378 "Set the summary default-cost of a NSSA/stub area."; 1379 type uint32 { 1380 range "1..16777215"; 1381 } 1382 } 1384 list range { 1385 description 1386 "Summarize routes matching address/mask (border 1387 routers only)"; 1388 key "prefix"; 1389 leaf prefix { 1390 type inet:ipv4-prefix; 1391 } 1392 leaf advertise { 1393 type boolean; 1394 } 1395 leaf cost { 1396 type uint32 { 1397 range "0..16777214"; 1398 } 1399 } 1400 } 1402 container virtual-link { 1403 description 1404 "Define a virtual link"; 1405 leaf router-id { 1406 type inet:ip-address; 1407 } 1409 uses interface-internal-inherit-config; 1410 } 1412 container sham-link { 1413 leaf local-id { 1414 description 1415 "Address of the local end-point."; 1416 type inet:ip-address; 1417 } 1418 leaf remote-id { 1419 description 1420 "Address of the remote end-point."; 1421 type inet:ip-address; 1422 } 1423 uses interface-internal-inherit-config; 1425 } 1427 container mpls-te-config { 1428 leaf mpls-te-enable { 1429 description 1430 "Enable an ospf area to run MPLS 1431 Traffic Engineering."; 1432 type boolean; 1433 } 1434 } 1436 container ospf-interfaces { 1437 description 1438 "The top level container for the list of interfaces 1439 of the OSPF router."; 1440 uses interface-inherit-config; 1442 list ospf-interface { 1443 key "interface"; 1444 leaf interface { 1445 type if:interface-ref; 1446 } 1447 uses interface-inherit-config; 1448 } // list ospf-interface 1449 } // container ospf-interfaces 1450 } // list ospf-area 1451 } // container ospf-areas 1452 } // container ospf-af 1453 } // container ospf-afs 1454 } // list ospf-router 1455 } // container ospf-routers 1456 } 1457 1459 4. Security Considerations 1461 The data model defined does not create any security implications. 1463 This draft does not change any underlying security issues inherent in 1464 [I-D.ietf-netmod-routing-cfg]. 1466 5. Acknowledgements 1468 The authors would like to thank Gaurav Gupta and many others for 1469 review and comments. 1471 This document was produced using Marshall Rose's xml2rfc tool. 1473 6. References 1475 6.1. Normative References 1477 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1478 Requirement Levels", BCP 14, RFC 2119, March 1997. 1480 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1481 Network Configuration Protocol (NETCONF)", RFC 6020, 1482 October 2010. 1484 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 1485 Bierman, "Network Configuration Protocol (NETCONF)", RFC 1486 6241, June 2011. 1488 6.2. Informative References 1490 [I-D.ietf-netmod-interfaces-cfg] 1491 Bjorklund, M., "A YANG Data Model for Interface 1492 Management", draft-ietf-netmod-interfaces-cfg-16 (work in 1493 progress), January 2014. 1495 [I-D.ietf-netmod-routing-cfg] 1496 Lhotka, L., "A YANG Data Model for Routing Management", 1497 draft-ietf-netmod-routing-cfg-13 (work in progress), 1498 January 2014. 1500 Authors' Addresses 1502 Derek Yeung 1503 Cisco Systems 1504 170 West Tasman Drive 1505 San Jose, CA 95134 1506 USA 1508 EMail: myeung@cisco.com 1510 Yingzhen Qu 1511 Cisco Systems 1512 170 West Tasman Drive 1513 San Jose, CA 95134 1514 USA 1516 EMail: yiqu@cisco.com 1517 Alexander Clemm 1518 Cisco Systems 1519 170 West Tasman Drive 1520 San Jose, CA 95134 1521 USA 1523 EMail: alex@cisco.com