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