Internet D. Yeung Internet-Draft Y. Qu Intended status: Informational A. Clemm Expires: April 25, 2014 Cisco Systems October 22, 2013 Yang Data Model for OSPF Protocol draft-yeung-netmod-ospf-00 Abstract This document defines a YANG data model that can be used to configure and manage OSPF. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on April 25, 2014. Copyright Notice Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Yeung, et al. Expires April 25, 2014 [Page 1] Internet-Draft OSPF Yang Data Model October 2013 Table of Contents 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 4 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 4 2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 4 2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 4 2.6. OSPF Address-Family Configuration . . . . . . . . . . . . 5 2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 6 2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 7 3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 9 4. Security Considerations . . . . . . . . . . . . . . . . . . . 29 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.1. Normative References . . . . . . . . . . . . . . . . . . 30 6.2. Informative References . . . . . . . . . . . . . . . . . 30 1. Overview YANG [RFC6020] is a data definition language that was introduced to define the contents of a conceptual data store that allows networked devices to be managed using NETCONF [RFC6241]. YANG is proving relevant beyond its initial confines, as bindings to other interfaces (e.g. ReST) and encodings other than XML (e.g. JSON) are being defined. Furthermore, YANG data models can be used as the basis of implementation for other interfaces, such as CLI and programmatic APIs. This document defines a YANG data model that can be used to configure and manage OSPF. Both OSPFv2 and OSPFv3 are supported. In additional to the core OSPF protocol, features described in different separate OSPF RFC are also supported. Those non-core features are made optional in the data model provided. 1.1. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. Yeung, et al. Expires April 25, 2014 [Page 2] Internet-Draft OSPF Yang Data Model October 2013 2. Design of Data Model Although the basis of OSPF configuration elements like routers, areas and interfaces remains the same, the detailed configuration model varies among different vendors. Differences are observed in term of how protocol engine is tied to routing domain, how multiple protocol engines could be instantiated and configuration inheritance, just to name a few. The goal of this document is to define a data model that is capable of representing these differences. There is very little information that is designated as "mandatory", providing freedom to vendors to adapt this data model to their product implementation. 2.1. Overview The OSPF YANG module defined in this document has all the common building blocks for OSPF protocol. module: ospf +--rw ospf-routers +--rw ospf-router [version name] . . +--rw ospf-afs +--rw ospf-af [vrf-name afi safi] . . +--rw ospf-areas . . +--rw ospf-area [area-id] . . +--rw ospf-interfaces . . +--rw ospf-interface [interface] . . The container ospf-routers allows specification of one or more OSPF configuration entities called ospf-router. The ospf-router is intended to match to the vendor specific OSPF configuration construct which is identified by a local identifier 'name'. The field 'version' allows support for OSPFv2 and OSPFv3. Yeung, et al. Expires April 25, 2014 [Page 3] Internet-Draft OSPF Yang Data Model October 2013 The container ospf-afs includes one or more OSPF protocol engines, each encapsulated in the ospf-af entity. Each ospf-af includes information for the routing domain it is running on based on the [vrf-name afi safi] specification. There is no default routing domain assumed by the data model. For example, to enable OSPF on the default IPv4 routing domain of the vendor, this model requires an explicit ospf-af entity with the specification like ["default" "ipv4" "unicast"]. The ospf-af also contains OSPF router level configuration The ospf-areas/ospf-area and ospf-intefaces/ospf-interface contains the OSPF configuration for the area and interface level respectively 2.2. OSPFv2 and OSPFv3 The defined data model supports both OSPFv2 and OSPFv3. The field 'version' is used to indicate the OSPF version and is a mandatory. Based on the version set, the data model change accordingly to accommodate the difference between the two versions. 2.3. Optional Features Optional features are features beyond the basic of OSPF configurations and it is up to a vendor to decide the support of a particular feature on a particular device. This module has declared a number of features, such as NSR, max-LSA etc.. It is intended that vendors will extend the features list. 2.4. Inheritance This defined data model supports configuration inheritance for areas and interfaces. Area related configurations specified in the ospf-areas container apply to all ospf-area. Interface related configurations specified in ospf-areas container apply to all ospf-interface in all ospf-area's. Interface related configurations specified in ospf-interfaces container apply to all ospf-interface in the enclosing ospf-area. 2.5. OSPF Router Configuration The container ospf-routers is the top level container in this data model. One or more ospf-router entity could be included in the ospf- Yeung, et al. Expires April 25, 2014 [Page 4] Internet-Draft OSPF Yang Data Model October 2013 routers container. The main purpose of the ospf-router is to specify the OSPF version and the local name for the enclosed ospf-afs container which has the protocol configuration specifics. module: ospf +--rw ospf-routers +--rw ospf-router [version name] +--rw version uint8 +--rw name string . . 2.6. OSPF Address-Family Configuration The container ospf-afs contains one of more ospf-af's each represents an OSPF protocol engine. Each ospf-af indicates the routing domain it is associated with based on [vrf-name afi safi] and contains the router level configurations. module: ospf +--rw ospf-routers +--rw ospf-router [version name] ... +--rw ospf-afs +--rw ospf-af [vrf-name afi safi] +--rw vrf-name string +--rw afi enumeration +--rw safi enumeration +--rw router-id | ... +--rw distance? uint8 +--rw default-originate | ... +--rw auto-cost | ... +--rw default-metric? uint32 +--rw summary-prefix [prefix] | ... +--rw max-lsa | ... +--rw maximum | ... +--rw ignore | ... +--rw log | ... +--rw nsr Yeung, et al. Expires April 25, 2014 [Page 5] Internet-Draft OSPF Yang Data Model October 2013 | ... +--rw nsf | ... +--rw protocol | ... +--rw spf | ... +--rw snmp | ... +--rw redistribute | ... +--rw timers | ... +--rw mpls | ... +--rw fast-reroute | ... 2.7. OSPF Area Configuration The container ospf-areas contains one of more ospf-area's each represents an area in the OSPF protocol. Each ospf-area contains configurations of that area and the ospf-interfaces container which includes all the OSPF interfaces active in the enclosing area. The ospf-areas also contains area configuration that could be inherited to all ospf-area's defined. Similarly, the ospf-area also contains interface configuration that could be inherited to all the ospf-interface's defined. module: ospf +--rw ospf-routers +--rw ospf-router [version name] ... +--rw ospf-afs +--rw ospf-af [vrf-name afi safi] ... +--rw ospf-areas +--rw loopback? enumeration +--rw network-type? enumeration +--rw passive? boolean +--rw mtu-ignore? boolean +--rw flood-reduction-enable? boolean +--rw demand-circuit? boolean +--rw demand-circuit-ignore-enable? boolean +--rw prefix-suppression? boolean Yeung, et al. Expires April 25, 2014 [Page 6] Internet-Draft OSPF Yang Data Model October 2013 +--rw ttl-security ... +--rw packet-size ... +--rw authentication ... +--rw database-filter ... +--rw neighbor [ip-address] ... +--rw bfd ... +--rw cost? uint16 +--rw hello-interval? uint16 +--rw dead-interval? uint16 +--rw retransmit-interval? uint16 +--rw transmit-delay? uint16 +--rw ospf-area [area-id] +--rw area-id uint32 +--rw area-notation? enumeration +--rw (area-type)? ... +--rw default-cost? uint32 +--rw range [prefix] ... +--rw virtual-link ... +--rw sham-link ... +--rw mpls-te-config ... 2.8. OSPF Interface Configuration The container ospf-areas contains one of more ospf-inteface's each represents an interface in the OSPF protocol. Each ospf-interface contains configurations of that interface. The ospf-interfaces also contain interface configuration that could be inherited to all ospf-interface's defined. module: ospf +--rw ospf-routers +--rw ospf-router [version name] ... +--rw ospf-afs +--rw ospf-af [vrf-name afi safi] Yeung, et al. Expires April 25, 2014 [Page 7] Internet-Draft OSPF Yang Data Model October 2013 ... +--rw ospf-areas ... +--rw ospf-interfaces +--rw network-type? enumeration +--rw passive? boolean +--rw mtu-ignore? boolean +--rw flood-reduction-enable? boolean +--rw demand-circuit? boolean +--rw demand-circuit-ignore-enable? boolean +--rw prefix-suppression? boolean +--rw ttl-security ... +--rw packet-size ... +--rw authentication ... +--rw database-filter ... +--rw neighbor [ip-address] ... +--rw bfd ... +--rw cost? uint16 +--rw hello-interval? uint16 +--rw dead-interval? uint16 +--rw retransmit-interval? uint16 +--rw transmit-delay? uint16 +--rw ospf-interface [interface] +--rw interface if:interface-ref +--rw network-type? enumeration +--rw passive? boolean +--rw mtu-ignore? boolean +--rw flood-reduction-enable? boolean +--rw demand-circuit? boolean +--rw demand-circuit-ignore-enable? boolean +--rw prefix-suppression? boolean +--rw ttl-security ... +--rw packet-size ... +--rw authentication ... +--rw database-filter ... +--rw neighbor [ip-address] ... +--rw bfd Yeung, et al. Expires April 25, 2014 [Page 8] Internet-Draft OSPF Yang Data Model October 2013 ... +--rw cost? uint16 +--rw hello-interval? uint16 +--rw dead-interval? uint16 +--rw retransmit-interval? uint16 +--rw transmit-delay? uint16 3. OSPF Yang Module module ospf { namespace "urn:cisco:params:xml:ns:yang:ospf"; // replace with IANA namespace when assigned prefix ospf; import ietf-inet-types { prefix inet; } import ietf-interfaces { prefix if; } organization "Cisco Systems 170 West Tasman Drive San Jose, CA 95134-1706 USA"; contact "Derek Yeung myeung@cisco.com Yingzhen Qu yiqu@cisco.com Alexander Clemm alex@cisco.com"; description "This YANG module defines the generic configuration data for OSPF, which is common across all of the vendor implementations of the protocol. It is intended that the module will be extended by vendors to define vendor-specific OSPF configuration parameters and policies, for example route maps or route policies. Terms and Acronyms OSPF (ospf): Open Shortest Path First IP (ip): Internet Protocol Yeung, et al. Expires April 25, 2014 [Page 9] Internet-Draft OSPF Yang Data Model October 2013 IPv4 (ipv4):Internet Protocol Version 4 IPv6 (ipv6): Internet Protocol Version 6 MTU (mtu) Maximum Transmission Unit "; revision 2013-10-20 { description "Initial revision."; } feature flood-reduction { description "OSPF Flood Reduction."; } feature demand-circuit-ignore { description "Ignore demand circuit auto-negotiation requests."; } feature security { description "Enable/Disable TTL security."; } feature packet-size { description "Customize size of OSPF packets up to MTU."; } feature nsf-cisco { description "Enable Cisco Non Stop Forwarding."; } feature loopback-config { description "OSPF loopback configuration."; } feature max-lsa { description "Maximum number of LSAs OSPF process will receive."; } feature maximum-ecmp { Yeung, et al. Expires April 25, 2014 [Page 10] Internet-Draft OSPF Yang Data Model October 2013 description "Maximum number of ECMP paths."; } feature nsr { description "Enable NSR."; } feature spf { description "SPF configuration"; } feature nssa-only { description "Limit summary to NSSA areas."; } feature nssa-ext-capability { description "Send domain specific capabilities into NSSA."; } grouping interface-internal-inherit-config { leaf cost { description "Interface cost."; type uint16 { range "1..65535"; } } leaf hello-interval { description "Time between HELLO packets."; units seconds; type uint16 { range "1..65535"; } } leaf dead-interval { description "Interval after which a neighbor is declared dead."; units seconds; type uint16 { range "1..65535"; Yeung, et al. Expires April 25, 2014 [Page 11] Internet-Draft OSPF Yang Data Model October 2013 } must "dead-interval > ../hello-interval" { error-app-tag dead-interval-invalid; error-message "The dead interval must be " + "larger than the hello interval"; } } leaf retransmit-interval { description "Time between retransmitting lost link state advertisements."; units seconds; type uint16 { range "1..65535"; } } leaf transmit-delay { description "Estimated time needed to send link-state update."; units seconds; type uint16 { range "1..65535"; } } } // interface-internal-inherit-config grouping interface-inherit-config { leaf network-type { description "Network type."; type enumeration { enum "broadcast" { description "Specify OSPF broadcast multi-access network."; } enum "non-broadcast" { description "Specify OSPF NBMA network."; } enum "point-to-multipoint" { description "Specify OSPF point-to-multipoint network."; } enum "point-to-point" { description "Specify OSPF point-to-point network."; Yeung, et al. Expires April 25, 2014 [Page 12] Internet-Draft OSPF Yang Data Model October 2013 } } } leaf passive { description "Enable/Disable passive."; type boolean; } leaf mtu-ignore { description "Enable/Disable ignoring of MTU in DBD packets."; type boolean; } leaf flood-reduction-enable { if-feature flood-reduction; type boolean; } leaf demand-circuit { description "Enable/Disable demand circuits."; type boolean; } leaf demand-circuit-ignore-enable { if-feature demand-circuit-ignore; type boolean; } leaf prefix-suppression { description "Suppress advertisement of the prefixes."; type boolean; } container ttl-security { if-feature security; leaf enable { type boolean; } leaf hops { type uint8 { range "1..254"; } } Yeung, et al. Expires April 25, 2014 [Page 13] Internet-Draft OSPF Yang Data Model October 2013 } container packet-size { if-feature packet-size; description "Customize size of OSPF packets up to MTU."; leaf enable { type boolean; } leaf size { type uint16 { range "576..10000"; } } } container authentication { when "../../../version = 2"; description "Configure authentication."; leaf enable { type boolean; } choice authentication-type-selection { case clear-text { description "Use clear-text authentication."; leaf key { type string { length "1..8"; } } } case message-digest { description "Use message-digest authentication."; list message-digest-key { key key-id; leaf key-id { type uint8 { range "1..255"; } } leaf algorithm { type enumeration { enum "md5"; } } leaf key { Yeung, et al. Expires April 25, 2014 [Page 14] Internet-Draft OSPF Yang Data Model October 2013 type string { length "1..8"; } } } } } } container database-filter { description "Filter OSPF LSA during synchronization and flooding"; leaf enable { type boolean; } leaf lsa-type { type enumeration { enum "all"; } } leaf direction { type enumeration { enum "out"; } } } list neighbor { description "Specify a neighbor router."; key ip-address; leaf ip-address { type inet:ip-address; } leaf cost { type uint16 { range "1..65535"; } } leaf poll-interval { units seconds; type uint16 { range "1..65535"; } } leaf priority { type uint8 { range "1..255"; Yeung, et al. Expires April 25, 2014 [Page 15] Internet-Draft OSPF Yang Data Model October 2013 } } } container bfd { leaf enable { description "enable bfd."; type boolean; } leaf minimum-interval { description "bfd hello interval"; type uint16 { range "15..30000"; } } leaf multiplier { description "detect multiplier"; type uint8 { range "2..50"; } } } uses interface-internal-inherit-config; } // grouping interface-inherit-config grouping area-inherit-config { leaf loopback { if-feature loopback-config; description "OSPF loopback configuration."; type enumeration { enum "stub"; enum "host"; } } } // grouping area-inherit-config container ospf-routers { list ospf-router { description "This is a top-level container for the OSPF router."; Yeung, et al. Expires April 25, 2014 [Page 16] Internet-Draft OSPF Yang Data Model October 2013 key "version name"; leaf version { description "OSPF version."; mandatory true; type uint8 { range "2..3"; } } leaf name { description "Name, combined with ospf-routers/ospf_router/ospf-afs/ospf-af, identify an OSPF protocol instance."; mandatory true; type string; } container ospf-afs { list ospf-af { key "vrf-name afi safi"; leaf vrf-name { type string; } leaf afi { type enumeration { enum "ipv4" { description "IPv4"; } enum "ipv6" { description "IPv6"; } } } leaf safi { type enumeration { enum "unicast" { description "unicast"; } } } container router-id { description Yeung, et al. Expires April 25, 2014 [Page 17] Internet-Draft OSPF Yang Data Model October 2013 "Specify the router-id for this OSPF process."; leaf enable { type boolean; } choice config-type { case static { leaf ip-address { type boolean; } } case auto-config { leaf enable-auto-config { type boolean; } } } } leaf distance { description "Define an administrative distance."; type uint8 { range "1..255"; } } container default-originate { description "Control distribution of default route information."; leaf enable { type boolean; default "false"; } } container auto-cost { description "Calculate OSPF interface cost according to bandwidth."; leaf enable { type boolean; } leaf reference-bandwidth { type uint32 { range "1..4294967"; } } } Yeung, et al. Expires April 25, 2014 [Page 18] Internet-Draft OSPF Yang Data Model October 2013 leaf default-metric { description "Calculate OSPF interface cost according to bandwidth."; type uint32 { range "1..16777214"; } } list summary-prefix { description "Configure IP address summaries"; key "prefix"; leaf prefix { type inet:ip-prefix; } leaf advertise { type boolean; } leaf tag { type uint32 { range "0..4294967295"; } } leaf nssa-only-enable { if-feature nssa-only; type boolean; } } container max-lsa { if-feature max-lsa; description "Maximum number of LSAs OSPF process will receive."; leaf max { description "Maximum number of non self-generated LSAs this process can receive."; type uint32 { range "1..4294967294"; } } leaf threshold { description "Threshold value (%) at which to generate a warning msg."; type uint8 { Yeung, et al. Expires April 25, 2014 [Page 19] Internet-Draft OSPF Yang Data Model October 2013 range "1..100"; } } leaf warning-only { description "Only give warning message when limit is exceeded."; type boolean; } leaf ignore-time { description "Number of minutes during which all adjacencies are suppressed."; type uint16 { range "1..17895"; } } leaf ignore-count { description "Count on how many times adjacencies can be suppressed."; type uint16 { range "1..65534"; } } leaf reset-time { description "number of minutes after which ignore-count is reset to zero."; type uint16 { range "2..35791"; } } } container maximum { if-feature maximum-ecmp; description "Set OSPF limits."; leaf paths { description "Maximum number of ECMP paths."; type uint16 { range "1..32"; } } leaf interfaces { description Yeung, et al. Expires April 25, 2014 [Page 20] Internet-Draft OSPF Yang Data Model October 2013 "Maximum number of interfaces."; type uint16 { range "1..1024"; } } container redistributed-prefixes { description "Maximum number of prefixes redistributed."; leaf max { type uint32 { range "1..4294967295"; } } leaf threshold { description "Threshold value (%) at which to generate a warning msg."; type uint8 { range "1..100"; } } leaf warning-only { description "Only give warning message when limit is exceeded."; type boolean; } } } container ignore { description "Do not complain about specific event."; leaf-list lsa { type enumeration { enum "mospf"; } } } container log { description "Log ospf info."; leaf adjacency-changes { type boolean; } } Yeung, et al. Expires April 25, 2014 [Page 21] Internet-Draft OSPF Yang Data Model October 2013 container nsr { if-feature nsr; description "Enable NSR."; leaf enable { type boolean; } } container nsf { choice nsf-type { case cisco { if-feature nsf-cisco; description "Enable Cisco Non Stop Forwarding."; leaf cisco-enable { type boolean; } } case ietf { description "Enable Cisco Non Stop Forwarding."; leaf ietf-enable { type boolean; } leaf ietf-helper-enable { type boolean; } } } } container protocol { description "Protocol specific configuration."; leaf shutdown { type boolean; } } container spf { if-feature spf; description "SPF configuration"; leaf prefix-priority-policy { type string; } } Yeung, et al. Expires April 25, 2014 [Page 22] Internet-Draft OSPF Yang Data Model October 2013 container snmp { description "Adjust ospf snmp parameters"; leaf context { type string; } } container redistribute { description "Redistribute information from another routing protocol. This grouping is intended to be augmented by vendors to implement vendor-specific protocol redistribution configuration options."; choice protocol { case bgp { leaf enable-bgp { type boolean; } } case ospf { leaf enable-ospf { type boolean; } } case isis { leaf enable-isis { type boolean; } } case connected { leaf enable-connected { type boolean; } } case eigrp { leaf enable-eigrp { type boolean; } } case mobile { leaf enable-mobile { type boolean; } } case static { leaf enable-static { Yeung, et al. Expires April 25, 2014 [Page 23] Internet-Draft OSPF Yang Data Model October 2013 type boolean; } } case rip { leaf enable-rip { type boolean; } } } } container timers { description "Adjust routing timers. This grouping is intended to be augmented by vendors to implement vendor-specific protocol timers configuration options"; container lsa { leaf min-arrival { description "The minimum interval in milliseconds between accepting the same"; units milliseconds; type uint32 { range "0..600000"; } } leaf refresh { description "The minimum interval in seconds between refresh"; units seconds; type uint32 { range "1800..2700"; } } } container throttle-lsa { leaf delay { description "Delay to generate first occurance of LSA in milliseconds"; units milliseconds; type uint32 { range "0..600000"; } } Yeung, et al. Expires April 25, 2014 [Page 24] Internet-Draft OSPF Yang Data Model October 2013 leaf min-delay { description "The Minimum delay between originating the same LSA in milliseconds"; units milliseconds; type uint32 { range "0..600000"; } } leaf max-delay { description "The Maximum delay between originating the same LSA in milliseconds"; units milliseconds; type uint32 { range "0..600000"; } } } container throttle-spf { leaf delay { description "Delay between receiving a change to SPF calculation in milliseconds"; units milliseconds; type uint32 { range "0..600000"; } } leaf min-delay { description "Delay between first and second SPF calculation in milliseconds"; units milliseconds; type uint32 { range "0..600000"; } } leaf max-delay { description "Maximum wait time in milliseconds for SPF calculations"; units milliseconds; type uint32 { range "0..600000"; } } Yeung, et al. Expires April 25, 2014 [Page 25] Internet-Draft OSPF Yang Data Model October 2013 } } container mpls { description "OSPF MPLS configuraions."; leaf te-rid { description "Traffic Engineering stable IP address for system."; type if:interface-ref; } leaf ldp-sync-enable { description "Enable LDP IGP synchronization."; type boolean; } leaf ldp-autoconfig-enable { description "Enable LDP IGP interface auto-configuration."; type boolean; } } container fast-reroute { leaf fast-reroute-enable { description "IP fast reroute."; type boolean; } } container ospf-areas { description "The top level container for the list of areas of the OSPF router."; uses area-inherit-config; uses interface-inherit-config; list ospf-area { key "area-id"; leaf area-id { type uint32; } leaf area-notation { Yeung, et al. Expires April 25, 2014 [Page 26] Internet-Draft OSPF Yang Data Model October 2013 description "Sets the default area notation."; type enumeration { enum "decimal"; enum "dot"; } } choice area-type { case nssa { description "Specify area as a NSSA area."; leaf redistribute { type boolean; } leaf nssa-summary { type boolean; } leaf nssa-ext-capability { if-feature nssa-ext-capability; type boolean; } container default-information-originate { description "Originate Type 7 default into NSSA area."; leaf metric { type uint16 { range "1..65535"; } } leaf metric-type { type uint8 { range "1..2"; } } } } case stub { description "Specify area as a stub area."; leaf stub-summary { type boolean; } leaf stub-ext-capability { type boolean; } } } Yeung, et al. Expires April 25, 2014 [Page 27] Internet-Draft OSPF Yang Data Model October 2013 leaf default-cost { description "Set the summary default-cost of a NSSA/stub area."; type uint32 { range "1..16777215"; } } list range { description "Summarize routes matching address/mask (border routers only)"; key "prefix"; leaf prefix { type inet:ip-prefix; } leaf advertise { type boolean; } leaf cost { type uint32 { range "0..16777214"; } } } container virtual-link { description "Define a virtual link"; leaf router-id { type inet:ip-address; } uses interface-internal-inherit-config; } container sham-link { leaf local-id { description "Address of the local end-point."; type inet:ip-address; } leaf remote-id { description "Address of the remote end-point."; type inet:ip-address; } Yeung, et al. Expires April 25, 2014 [Page 28] Internet-Draft OSPF Yang Data Model October 2013 uses interface-internal-inherit-config; } container mpls-te-config { leaf mpls-te-enable { description "Enable an ospf area to run MPLS Traffic Engineering."; type boolean; } } container ospf-interfaces { description "The top level container for the list of interfaces of the OSPF router."; uses interface-inherit-config; list ospf-interface { key "interface"; leaf interface { type if:interface-ref; } uses interface-inherit-config; } // list ospf-interface } // container ospf-interfaces } // list ospf-area } // container ospf-areas } // container ospf-af } // container ospf-afs } // list ospf-router } // container ospf-routers } 4. Security Considerations The data model defined does not create any security implications. This draft does not change any underlying security issues inherent in [I-D.ietf-netmod-routing-cfg]. 5. Acknowledgements The authors would like to thank Gaurav Gupta and many others for review and comments. Yeung, et al. Expires April 25, 2014 [Page 29] Internet-Draft OSPF Yang Data Model October 2013 This document was produced using Marshall Rose's xml2rfc tool. 6. References 6.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011. 6.2. Informative References [I-D.ietf-netmod-interfaces-cfg] Bjorklund, M., "A YANG Data Model for Interface Management", draft-ietf-netmod-interfaces-cfg-12 (work in progress), July 2013. [I-D.ietf-netmod-routing-cfg] Lhotka, L., "A YANG Data Model for Routing Management", draft-ietf-netmod-routing-cfg-11 (work in progress), October 2013. Authors' Addresses Derek Yeung Cisco Systems 170 West Tasman Drive San Jose, CA 95134 USA EMail: myeung@cisco.com Yingzhen Qu Cisco Systems 170 West Tasman Drive San Jose, CA 95134 USA EMail: yiqu@cisco.com Yeung, et al. Expires April 25, 2014 [Page 30] Internet-Draft OSPF Yang Data Model October 2013 Alexander Clemm Cisco Systems 170 West Tasman Drive San Jose, CA 95134 USA EMail: alex@cisco.com Yeung, et al. Expires April 25, 2014 [Page 31]