draft-ietf-ospf-yang-26.txt | draft-ietf-ospf-yang-27.txt | |||
---|---|---|---|---|
Internet D. Yeung | Internet D. Yeung | |||
Internet-Draft Arrcus | Internet-Draft Arrcus | |||
Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
Expires: February 8, 2020 Futurewei | Expires: February 23, 2020 Futurewei | |||
J. Zhang | J. Zhang | |||
Juniper Networks | Juniper Networks | |||
I. Chen | I. Chen | |||
The MITRE Corporation | The MITRE Corporation | |||
A. Lindem | A. Lindem | |||
Cisco Systems | Cisco Systems | |||
August 7, 2019 | August 22, 2019 | |||
YANG Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
draft-ietf-ospf-yang-26 | draft-ietf-ospf-yang-27 | |||
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. The model is based on YANG 1.1 as defined in RFC | and manage OSPF. The model is based on YANG 1.1 as defined in RFC | |||
7950 and conforms to the Network Management Datastore Architecture | 7950 and conforms to the Network Management Datastore Architecture | |||
(NDMA) as described in RFC 8342. | (NMDA) as described in RFC 8342. | |||
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. | |||
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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 February 8, 2020. | This Internet-Draft will expire on February 23, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://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 | |||
skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | |||
2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | |||
2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | |||
2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | 2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | |||
2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | |||
2.7. OSPF Interface Configuration/Operational State . . . . . 16 | 2.7. OSPF Interface Configuration/Operational State . . . . . 16 | |||
2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 | 2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 | |||
2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | |||
3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 117 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 119 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 119 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 120 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 119 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 121 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 119 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 121 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 119 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 121 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 125 | 7.2. Informative References . . . . . . . . . . . . . . . . . 127 | |||
Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 126 | Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 128 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 126 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 128 | |||
1. Overview | 1. Overview | |||
YANG [RFC6020][RFC7950] is a data definition language used to define | YANG [RFC6020][RFC7950] is a data definition language used to define | |||
the contents of a conceptual data store that allows networked devices | the contents of a conceptual data store that allows networked devices | |||
to be managed using NETCONF [RFC6241]. YANG is proving relevant | to be managed using NETCONF [RFC6241], RESTCONF [RFC8040], and other | |||
beyond its initial confines, as bindings to other interfaces (e.g., | Network Management protocols. Furthermore, YANG data models can be | |||
ReST) and encodings other than XML (e.g., JSON) are being defined. | used as the basis for implementation of other interfaces, such as CLI | |||
Furthermore, YANG data models can be used as the basis for | and programmatic APIs. | |||
implementation of other interfaces, such as CLI and programmatic | ||||
APIs. | ||||
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 it is an augmentation to the core routing data | and manage OSPF and it is an augmentation to the core routing data | |||
model. It fully conforms to the Network Management Datastore | model. It fully conforms to the Network Management Datastore | |||
Architecture (NDMA) [RFC8342]. A core routing data model is defined | Architecture (NMDA) [RFC8342]. A core routing data model is defined | |||
in [RFC8349], and it provides the basis for the development of data | in [RFC8349], and it provides the basis for the development of data | |||
models for routing protocols. The interface data model is defined in | models for routing protocols. The interface data model is defined in | |||
[RFC8343] and is used for referencing interfaces from the routing | [RFC8343] and is used for referencing interfaces from the routing | |||
protocol. The key-chain data model used for OSPF authentication is | protocol. The key-chain data model used for OSPF authentication is | |||
defined in [RFC8177] and provides both a reference to configured key- | defined in [RFC8177] and provides both a reference to configured key- | |||
chains and an enumeration of cryptographic algorithms. | chains and an enumeration of cryptographic algorithms. | |||
Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | |||
addition to the core OSPF protocol, features described in other OSPF | addition to the core OSPF protocol, features described in other OSPF | |||
RFCs are also supported. These includes demand circuit [RFC1793], | RFCs are also supported. These includes demand circuit [RFC1793], | |||
skipping to change at page 3, line 36 ¶ | skipping to change at page 3, line 34 ¶ | |||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
This document uses the graphical representation of data models | This document uses the graphical representation of data models | |||
defined in [RFC8340]. | defined in [RFC8340]. | |||
2. Design of Data Model | 2. Design of Data Model | |||
Although the basis of OSPF configuration elements like routers, | Although the basis of OSPF configuration elements like routers, | |||
areas, and interfaces remains the same, the detailed configuration | areas, and interfaces remains the same, the detailed configuration | |||
model varies among router vendors. Differences are observed in terms | model varies among router vendors. Differences are observed in terms | |||
of how the protocol instance is tied to the routing domain, how | of how the protocol instance is tied to the routing domain and how | |||
multiple protocol instances are be instantiated among others. | multiple protocol instances are be instantiated among others. | |||
The goal of this document is to define a data model that provides a | The goal of this document is to define a data model that provides a | |||
common user interface to the OSPFv2 and OSPFv3 protocols. There is | common user interface to the OSPFv2 and OSPFv3 protocols. There is | |||
very little information that is designated as "mandatory", providing | very little information that is designated as "mandatory", providing | |||
freedom for vendors to adapt this data model to their respective | freedom for vendors to adapt this data model to their respective | |||
product implementations. | product implementations. | |||
2.1. OSPF Operational State | 2.1. OSPF Operational State | |||
skipping to change at page 4, line 47 ¶ | skipping to change at page 4, line 47 ¶ | |||
| | . | | | . | |||
| +--rw interfaces | | +--rw interfaces | |||
| +--rw interface* [name] | | +--rw interface* [name] | |||
| . | | . | |||
| . | | . | |||
+--rw topologies {multi-topology}? | +--rw topologies {multi-topology}? | |||
+--rw topology* [name] | +--rw topology* [name] | |||
. | . | |||
. | . | |||
The ospf module is intended to match to the vendor specific OSPF | ||||
configuration construct that is identified by the local identifier | ||||
'name'. | ||||
The ospf container includes one OSPF protocol instance. The instance | The ospf container includes one OSPF protocol instance. The instance | |||
includes OSPF router level configuration and operational state. | includes OSPF router level configuration and operational state. Each | |||
OSPF instance maps to a control-plane-protcol instance as defined in | ||||
[RFC8349]. | ||||
The area and area/interface containers define the OSPF configuration | The area and area/interface containers define the OSPF configuration | |||
and operational state for OSPF areas and interfaces respectively. | and operational state for OSPF areas and interfaces respectively. | |||
The topologies container defines the OSPF configuration and | The topologies container defines the OSPF configuration and | |||
operational state for OSPF topologies when the multi-topology feature | operational state for OSPF topologies when the multi-topology feature | |||
is supported. | is supported. | |||
2.3. OSPFv2 and OSPFv3 | 2.3. OSPFv2 and OSPFv3 | |||
skipping to change at page 5, line 38 ¶ | skipping to change at page 5, line 38 ¶ | |||
1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. | 1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. | |||
2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. | 2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. | |||
3. explicit-router-id: Support explicit per-instance Router-ID | 3. explicit-router-id: Support explicit per-instance Router-ID | |||
specification. | specification. | |||
4. demand-circuit: Support OSPF demand circuits [RFC1793]. | 4. demand-circuit: Support OSPF demand circuits [RFC1793]. | |||
5. mtu-ignore: Support disabling OSPF Database Description packet | 5. mtu-ignore: Support disabling OSPF Database Description packet | |||
MTU mismatch checking. | MTU mismatch checking specified in section 10.6 of [RFC2328]. | |||
6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. | 6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. | |||
7. prefix-suppression: Support OSPF prefix advertisement | 7. prefix-suppression: Support OSPF prefix advertisement | |||
suppression [RFC6860]. | suppression [RFC6860]. | |||
8. ttl-security: Support OSPF Time to Live (TTL) security check | 8. ttl-security: Support OSPF Time to Live (TTL) security check | |||
support [RFC5082]. | support [RFC5082]. | |||
9. nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature | 9. nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature | |||
skipping to change at page 13, line 44 ¶ | skipping to change at page 13, line 44 ¶ | |||
| | | | {ospfv3-authentication-trailer}? | | | | | {ospfv3-authentication-trailer}? | |||
| | | +--rw (ospfv3-auth-specification)? | | | | +--rw (ospfv3-auth-specification)? | |||
| | | +--:(auth-key-chain) {key-chain}? | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | +--rw ospfv3-key-chain? | | | | | +--rw ospfv3-key-chain? | |||
| | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
| | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | +--rw ospfv3-sa-id? uint16 | | | | +--rw ospfv3-sa-id? uint16 | |||
| | | +--rw ospfv3-key? string | | | | +--rw ospfv3-key? string | |||
| | | +--rw ospfv3-crypto-algorithm? | | | | +--rw ospfv3-crypto-algorithm? | |||
| | | identityref | | | | identityref | |||
| | +--ro cost? uint16 | | | +--ro cost? uint16 | |||
| | +--ro state? if-state-type | | | +--ro state? if-state-type | |||
| | +--ro hello-timer? uint32 | | | +--ro hello-timer? rt-types: | |||
| | +--ro wait-timer? uint32 | | | | rtimer-value-seconds16 | |||
| | +--ro dr-router-id? rt-types:router-id | | | +--ro wait-timer? rt-types: | |||
| | +--ro dr-ip-addr? inet:ip-address | | | | rtimer-value-seconds16 | |||
| | +--ro bdr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | +--ro bdr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | +--ro bdr-router-id? rt-types:router-id | ||||
| | +--ro bdr-ip-addr? inet:ip-address | ||||
| | +--ro statistics | | | +--ro statistics | |||
| | | +--ro if-event-count? yang:counter32 | | | | +--ro if-event-count? yang:counter32 | |||
| | | +--ro link-scope-lsa-count? yang:gauge32 | | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | | +--ro link-scope-lsa-cksum-sum? | | | | +--ro link-scope-lsa-cksum-sum? | |||
| | | uint32 | | | | uint32 | |||
| | | +--ro database | | | | +--ro database | |||
| | | +--ro link-scope-lsa-type* | | | | +--ro link-scope-lsa-type* | |||
| | | +--ro lsa-type? uint16 | | | | +--ro lsa-type? uint16 | |||
| | | +--ro lsa-count? yang:gauge32 | | | | +--ro lsa-count? yang:gauge32 | |||
| | | +--ro lsa-cksum-sum? int32 | | | | +--ro lsa-cksum-sum? int32 | |||
| | +--ro neighbors | | | +--ro neighbors | |||
| | | +--ro neighbor* [neighbor-router-id] | | | | +--ro neighbor* [neighbor-router-id] | |||
| | | +--ro neighbor-router-id | | | | +--ro neighbor-router-id | |||
| | | rt-types:router-id | | | | rt-types:router-id | |||
| | | +--ro address? inet:ip-address | | | | +--ro address? inet:ip-address | |||
| | | +--ro dr-router-id? rt-types:router-id | | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | +--ro state? nbr-state-type | | | | +--ro state? nbr-state-type | |||
| | | +--ro dead-timer? uint32 | | | | +--ro dead-timer? rt-types: | |||
| | | | rtimer-value-seconds16 | ||||
| | | +--ro statistics | | | | +--ro statistics | |||
| | | +--ro nbr-event-count? | | | | +--ro nbr-event-count? | |||
| | | yang:counter32 | | | | yang:counter32 | |||
| | | +--ro nbr-retrans-qlen? | | | | +--ro nbr-retrans-qlen? | |||
| | | yang:gauge32 | | | | yang:gauge32 | |||
| | +--ro database | | | +--ro database | |||
| | +--ro link-scope-lsa-type* [lsa-type] | | | +--ro link-scope-lsa-type* [lsa-type] | |||
| | +--ro lsa-type uint16 | | | +--ro lsa-type uint16 | |||
| | +--ro link-scope-lsas | | | +--ro link-scope-lsas | |||
. . | . . | |||
skipping to change at page 15, line 36 ¶ | skipping to change at page 15, line 39 ¶ | |||
| | | +--rw ospfv3-sa-id? uint16 | | | | +--rw ospfv3-sa-id? uint16 | |||
| | | +--rw ospfv3-key? string | | | | +--rw ospfv3-key? string | |||
| | | +--rw ospfv3-crypto-algorithm? | | | | +--rw ospfv3-crypto-algorithm? | |||
| | | identityref | | | | identityref | |||
| | +--rw cost? uint16 | | | +--rw cost? uint16 | |||
| | +--rw mtu-ignore? boolean | | | +--rw mtu-ignore? boolean | |||
| | {mtu-ignore}? | | | {mtu-ignore}? | |||
| | +--rw prefix-suppression? boolean | | | +--rw prefix-suppression? boolean | |||
| | {prefix-suppression}? | | | {prefix-suppression}? | |||
| | +--ro state? if-state-type | | | +--ro state? if-state-type | |||
| | +--ro hello-timer? uint32 | | | +--ro hello-timer? rt-types: | |||
| | +--ro wait-timer? uint32 | | | | rtimer-value-seconds16 | |||
| | +--ro wait-timer? rt-types: | ||||
| | | rtimer-value-seconds16 | ||||
| | +--ro dr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | +--ro dr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | +--ro bdr-router-id? rt-types:router-id | | | +--ro bdr-router-id? rt-types:router-id | |||
| | +--ro bdr-ip-addr? inet:ip-address | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | +--ro statistics | | | +--ro statistics | |||
| | | +--ro if-event-count? yang:counter32 | | | | +--ro if-event-count? yang:counter32 | |||
| | | +--ro link-scope-lsa-count? yang:gauge32 | | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | | +--ro link-scope-lsa-cksum-sum? | | | | +--ro link-scope-lsa-cksum-sum? | |||
| | | uint32 | | | | uint32 | |||
| | | +--ro database | | | | +--ro database | |||
skipping to change at page 16, line 15 ¶ | skipping to change at page 16, line 20 ¶ | |||
| | | +--ro neighbor* [neighbor-router-id] | | | | +--ro neighbor* [neighbor-router-id] | |||
| | | +--ro neighbor-router-id | | | | +--ro neighbor-router-id | |||
| | | rt-types:router-id | | | | rt-types:router-id | |||
| | | +--ro address? inet:ip-address | | | | +--ro address? inet:ip-address | |||
| | | +--ro dr-router-id? rt-types:router-id | | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | +--ro state? nbr-state-type | | | | +--ro state? nbr-state-type | |||
| | | +--ro cost? uint32 | | | | +--ro cost? uint32 | |||
| | | +--ro dead-timer? uint32 | | | | +--ro dead-timer? rt-types: | |||
| | | | rtimer-value-seconds16 | ||||
| | | +--ro statistics | | | | +--ro statistics | |||
| | | +--ro nbr-event-count? | | | | +--ro nbr-event-count? | |||
| | | yang:counter32 | | | | yang:counter32 | |||
| | | +--ro nbr-retrans-qlen? | | | | +--ro nbr-retrans-qlen? | |||
| | | yang:gauge32 | | | | yang:gauge32 | |||
| | +--ro database | | | +--ro database | |||
| | +--ro link-scope-lsa-type* [lsa-type] | | | +--ro link-scope-lsa-type* [lsa-type] | |||
| | +--ro lsa-type uint16 | | | +--ro lsa-type uint16 | |||
| | +--ro link-scope-lsas | | | +--ro link-scope-lsas | |||
. . | . . | |||
skipping to change at page 18, line 21 ¶ | skipping to change at page 18, line 27 ¶ | |||
| | +--rw ospfv3-sa-id? uint16 | | | +--rw ospfv3-sa-id? uint16 | |||
| | +--rw ospfv3-key? string | | | +--rw ospfv3-key? string | |||
| | +--rw ospfv3-crypto-algorithm? | | | +--rw ospfv3-crypto-algorithm? | |||
| | identityref | | | identityref | |||
| +--rw cost? uint16 | | +--rw cost? uint16 | |||
| +--rw mtu-ignore? boolean | | +--rw mtu-ignore? boolean | |||
| | {mtu-ignore}? | | | {mtu-ignore}? | |||
| +--rw prefix-suppression? boolean | | +--rw prefix-suppression? boolean | |||
| | {prefix-suppression}? | | | {prefix-suppression}? | |||
| +--ro state? if-state-type | | +--ro state? if-state-type | |||
| +--ro hello-timer? uint32 | | +--ro hello-timer? rt-types: | |||
| +--ro wait-timer? uint32 | | | rtimer-value-seconds16 | |||
| +--ro wait-timer? rt-types: | ||||
| | rtimer-value-seconds16 | ||||
| +--ro dr-router-id? rt-types:router-id | | +--ro dr-router-id? rt-types:router-id | |||
| +--ro dr-ip-addr? inet:ip-address | | +--ro dr-ip-addr? inet:ip-address | |||
| +--ro bdr-router-id? rt-types:router-id | | +--ro bdr-router-id? rt-types:router-id | |||
| +--ro bdr-ip-addr? inet:ip-address | | +--ro bdr-ip-addr? inet:ip-address | |||
| +--ro statistics | | +--ro statistics | |||
| | +--ro if-event-count? yang:counter32 | | | +--ro if-event-count? yang:counter32 | |||
| | +--ro link-scope-lsa-count? yang:gauge32 | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | +--ro link-scope-lsa-cksum-sum? | | | +--ro link-scope-lsa-cksum-sum? | |||
| | uint32 | | | uint32 | |||
| | +--ro database | | | +--ro database | |||
skipping to change at page 18, line 47 ¶ | skipping to change at page 19, line 7 ¶ | |||
| +--ro neighbors | | +--ro neighbors | |||
| | +--ro neighbor* [neighbor-router-id] | | | +--ro neighbor* [neighbor-router-id] | |||
| | +--ro neighbor-router-id | | | +--ro neighbor-router-id | |||
| | rt-types:router-id | | | rt-types:router-id | |||
| | +--ro address? inet:ip-address | | | +--ro address? inet:ip-address | |||
| | +--ro dr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | +--ro dr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | +--ro bdr-router-id? rt-types:router-id | | | +--ro bdr-router-id? rt-types:router-id | |||
| | +--ro bdr-ip-addr? inet:ip-address | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | +--ro state? nbr-state-type | | | +--ro state? nbr-state-type | |||
| | +--ro dead-timer? uint32 | | | +--ro dead-timer? rt-types: | |||
| | | rtimer-value-seconds16 | ||||
| | +--ro statistics | | | +--ro statistics | |||
| | +--ro nbr-event-count? | | | +--ro nbr-event-count? | |||
| | yang:counter32 | | | yang:counter32 | |||
| | +--ro nbr-retrans-qlen? | | | +--ro nbr-retrans-qlen? | |||
| | yang:gauge32 | | | yang:gauge32 | |||
| +--ro database | | +--ro database | |||
| . +--ro link-scope-lsa-type* [lsa-type] | | . +--ro link-scope-lsa-type* [lsa-type] | |||
| . +--ro lsa-type uint16 | | . +--ro lsa-type uint16 | |||
| . +--ro link-scope-lsas | | . +--ro link-scope-lsas | |||
. . | . . | |||
skipping to change at page 23, line 35 ¶ | skipping to change at page 23, line 43 ¶ | |||
-> /rt:routing/control-plane-protocols/ | -> /rt:routing/control-plane-protocols/ | |||
control-plane-protocol/name | control-plane-protocol/name | |||
3. OSPF YANG Module | 3. OSPF YANG Module | |||
The following RFCs and drafts are not referenced in the document text | The following RFCs and drafts are not referenced in the document text | |||
but are referenced in the ietf-ospf.yang module: [RFC0905], | but are referenced in the ietf-ospf.yang module: [RFC0905], | |||
[RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | |||
[RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | |||
<CODE BEGINS> file "ietf-ospf@2019-08-07.yang" | <CODE BEGINS> file "ietf-ospf@2019-08-22.yang" | |||
module ietf-ospf { | module ietf-ospf { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | |||
prefix ospf; | prefix ospf; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix "inet"; | |||
reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix "yang"; | |||
reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix "if"; | |||
reference "RFC 8343: A YANG Data Model for Interface | reference "RFC 8343: A YANG Data Model for Interface | |||
Management (NDMA Version)"; | Management (NMDA Version)"; | |||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix "rt-types"; | |||
reference "RFC 8294: Common YANG Data Types for the | reference "RFC 8294: Common YANG Data Types for the | |||
Routing Area"; | Routing Area"; | |||
} | } | |||
import iana-routing-types { | import iana-routing-types { | |||
prefix "iana-rt-types"; | prefix "iana-rt-types"; | |||
skipping to change at page 25, line 19 ¶ | skipping to change at page 25, line 27 ¶ | |||
description | description | |||
"This YANG module defines the generic configuration and | "This YANG module defines the generic configuration and | |||
operational state for the OSPF protocol common to all | operational state for the OSPF protocol common to all | |||
vendor implementations. It is intended that the module | vendor implementations. It is intended that the module | |||
will be extended by vendors to define vendor-specific | will be extended by vendors to define vendor-specific | |||
OSPF configuration parameters and policies, | OSPF configuration parameters and policies, | |||
for example, route maps or route policies. | for example, route maps or route policies. | |||
This YANG model conforms to the Network Management | This YANG model conforms to the Network Management | |||
Datastore Architecture (NDMA) as described in RFC 8242. | Datastore Architecture (NMDA) as described in RFC 8242. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
skipping to change at page 25, line 44 ¶ | skipping to change at page 26, line 5 ¶ | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
revision 2019-08-07 { | revision 2019-08-22 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for OSPF."; | "RFC XXXX: A YANG Data Model for OSPF."; | |||
} | } | |||
feature multi-topology { | feature multi-topology { | |||
description | description | |||
"Support Multiple-Topology Routing (MTR)."; | "Support Multiple-Topology Routing (MTR)."; | |||
reference "RFC 4915: Multi-Topology Routing"; | reference "RFC 4915: Multi-Topology Routing"; | |||
skipping to change at page 26, line 27 ¶ | skipping to change at page 26, line 37 ¶ | |||
feature demand-circuit { | feature demand-circuit { | |||
description | description | |||
"OSPF demand circuit support as in RFC 1793."; | "OSPF demand circuit support as in RFC 1793."; | |||
reference "RFC 1793: OSPF Demand Circuits"; | reference "RFC 1793: OSPF Demand Circuits"; | |||
} | } | |||
feature mtu-ignore { | feature mtu-ignore { | |||
description | description | |||
"Disable OSPF Database Description packet MTU | "Disable OSPF Database Description packet MTU | |||
mismatch checking."; | mismatch checking specified in the OSPF | |||
protocol specification."; | ||||
reference "RFC 2328: OSPF Version 2, section 10.6"; | ||||
} | } | |||
feature lls { | feature lls { | |||
description | description | |||
"OSPF link-local signaling (LLS) as in RFC 5613."; | "OSPF link-local signaling (LLS) as in RFC 5613."; | |||
reference "RFC 5613: OSPF Link-Local Signaling"; | reference "RFC 5613: OSPF Link-Local Signaling"; | |||
} | } | |||
feature prefix-suppression { | feature prefix-suppression { | |||
description | description | |||
skipping to change at page 28, line 4 ¶ | skipping to change at page 28, line 13 ¶ | |||
description | description | |||
"Support configuration of the Traffic Engineering (TE) | "Support configuration of the Traffic Engineering (TE) | |||
Router-ID, i.e., the Router Address described in Section | Router-ID, i.e., the Router Address described in Section | |||
2.4.1 of RFC3630 or the Router IPv6 Address TLV described | 2.4.1 of RFC3630 or the Router IPv6 Address TLV described | |||
in Section 3 of RFC5329."; | in Section 3 of RFC5329."; | |||
reference "RFC 3630: Traffic Engineering (TE) Extensions | reference "RFC 3630: Traffic Engineering (TE) Extensions | |||
to OSPF Version 2 | to OSPF Version 2 | |||
RFC 5329: Traffic Engineering (TE) Extensions | RFC 5329: Traffic Engineering (TE) Extensions | |||
to OSPF Version 3"; | to OSPF Version 3"; | |||
} | } | |||
feature ldp-igp-sync { | feature ldp-igp-sync { | |||
description | description | |||
"LDP IGP synchronization."; | "LDP IGP synchronization."; | |||
reference "RFC 5443: LDP IGP Synchronization"; | reference "RFC 5443: LDP IGP Synchronization"; | |||
} | } | |||
feature ospfv2-authentication-trailer { | feature ospfv2-authentication-trailer { | |||
description | description | |||
"Use OSPFv2 authentication trailer for OSPFv2 | "Support OSPFv2 authentication trailer for OSPFv2 | |||
authentication."; | authentication."; | |||
reference "RFC 5709: Supporting Authentication | reference "RFC 5709: Supporting Authentication | |||
Trailer for OSPFv2 | Trailer for OSPFv2 | |||
RFC 7474: Security Extension for OSPFv2 When | RFC 7474: Security Extension for OSPFv2 When | |||
Using Manual Key Management"; | Using Manual Key Management"; | |||
} | } | |||
feature ospfv3-authentication-ipsec { | feature ospfv3-authentication-ipsec { | |||
description | description | |||
"Use IPsec for OSPFv3 authentication."; | "Support IPsec for OSPFv3 authentication."; | |||
reference "RFC 4552: Authentication/Confidentiality | reference "RFC 4552: Authentication/Confidentiality | |||
for OSPFv3"; | for OSPFv3"; | |||
} | } | |||
feature ospfv3-authentication-trailer { | feature ospfv3-authentication-trailer { | |||
description | description | |||
"Use OSPFv3 authentication trailer for OSPFv3 | "Support OSPFv3 authentication trailer for OSPFv3 | |||
authentication."; | authentication."; | |||
reference "RFC 7166: Supporting Authentication | reference "RFC 7166: Supporting Authentication | |||
Trailer for OSPFv3"; | Trailer for OSPFv3"; | |||
} | } | |||
feature fast-reroute { | feature fast-reroute { | |||
description | description | |||
"Support for IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP-FRR)."; | |||
reference "RFC 5714: IP Fast Reroute Framework"; | reference "RFC 5714: IP Fast Reroute Framework"; | |||
} | } | |||
skipping to change at page 38, line 4 ¶ | skipping to change at page 38, line 17 ¶ | |||
"E bit, this bit describes the way AS-external LSAs | "E bit, this bit describes the way AS-external LSAs | |||
are flooded"; | are flooded"; | |||
} | } | |||
identity v6-bit { | identity v6-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"V6 bit, if clear, the router/link should be excluded | "V6 bit, if clear, the router/link should be excluded | |||
from IPv6 routing calculation"; | from IPv6 routing calculation"; | |||
} | } | |||
identity ospfv3-prefix-option { | identity ospfv3-prefix-option { | |||
description | description | |||
"Base identity for OSPFv3 Prefix Options."; | "Base identity for OSPFv3 Prefix Options."; | |||
} | } | |||
identity nu-bit { | identity nu-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"When set, the prefix should be excluded | "NU Bit, when set, the prefix should be excluded | |||
from IPv6 unicast calculations."; | from IPv6 unicast calculations."; | |||
} | } | |||
identity la-bit { | identity la-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"When set, the prefix is actually an IPv6 interface | "LA bit, when set, the prefix is actually an IPv6 | |||
address of the Advertising Router."; | interface address of the Advertising Router."; | |||
} | } | |||
identity p-bit { | identity p-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"When set, the NSSA area prefix should be | "P bit, when set, the NSSA area prefix should be | |||
translated to an AS External LSA and advertised | translated to an AS External LSA and advertised | |||
by the translating NSSA Border Router."; | by the translating NSSA Border Router."; | |||
} | } | |||
identity dn-bit { | identity dn-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"When set, the inter-area-prefix LSA or | "DN bit, when set, the inter-area-prefix LSA or | |||
AS-external LSA prefix has been advertised as an | AS-external LSA prefix has been advertised as an | |||
L3VPN prefix."; | L3VPN prefix."; | |||
} | } | |||
identity ospfv2-lsa-option { | identity ospfv2-lsa-option { | |||
description | description | |||
"Baes idenity for OSPFv2 LSA option flags."; | "Base identity for OSPFv2 LSA option flags."; | |||
} | } | |||
identity mt-bit { | identity mt-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"When set, the router supports multi-topology as | "MT bit, When set, the router supports multi-topology as | |||
in RFC 4915."; | in RFC 4915."; | |||
} | } | |||
identity v2-dc-bit { | identity v2-dc-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"When set, the router supports demand circuits."; | "DC bit, When set, the router supports demand circuits."; | |||
} | } | |||
identity v2-p-bit { | identity v2-p-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"Only used in type-7 LSA. When set, an NSSA | "P bit, wnly used in type-7 LSA. When set, an NSSA | |||
border router should translate the type-7 LSA | border router should translate the type-7 LSA | |||
to a type-5 LSA."; | to a type-5 LSA."; | |||
} | } | |||
identity mc-flag { | identity mc-flag { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"When set, the router supports MOSPF."; | "MC Bit, when set, the router supports MOSPF."; | |||
} | } | |||
identity v2-e-flag { | identity v2-e-flag { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"This bit describes the way AS-external LSAs | "E Bit, this bit describes the way AS-external LSAs | |||
are flooded."; | are flooded."; | |||
} | } | |||
identity o-bit { | identity o-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"When set, the router is opaque-capable as in | "O bit, when set, the router is opaque-capable as in | |||
RFC 5250."; | RFC 5250."; | |||
} | } | |||
identity v2-dn-bit { | identity v2-dn-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"When a type 3, 5 or 7 LSA is sent from a PE to a CE, | "DN bit, when a type 3, 5 or 7 LSA is sent from a PE | |||
the DN bit must be set. See RFC 4576."; | to a CE, the DN bit must be set. See RFC 4576."; | |||
} | } | |||
identity ospfv2-extended-prefix-flag { | identity ospfv2-extended-prefix-flag { | |||
description | description | |||
"Base identity for extended prefix TLV flag."; | "Base identity for extended prefix TLV flag."; | |||
} | } | |||
identity a-flag { | identity a-flag { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
description | description | |||
"Attach flag."; | "Attach flag, when set it indicates that the prefix | |||
corresponds and a route what is directly connected to | ||||
the advertising router.."; | ||||
} | } | |||
identity node-flag { | identity node-flag { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
description | description | |||
"Node flag."; | "Node flag, when set, it indicates that the prefix is | |||
used to represent the advertising node, e.g., a loopback | ||||
address."; | ||||
} | } | |||
typedef ospf-metric { | typedef ospf-metric { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"OSPF Metric - 24-bit unsigned integer."; | "OSPF Metric - 24-bit unsigned integer."; | |||
} | } | |||
skipping to change at page 48, line 4 ¶ | skipping to change at page 48, line 21 ¶ | |||
list node-tag { | list node-tag { | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node admin tag value."; | "Node admin tag value."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
} | } | |||
grouping router-capabilities-tlv { | grouping router-capabilities-tlv { | |||
description "OSPF Router Capabilities TLV grouping."; | description "OSPF Router Capabilities TLV grouping."; | |||
reference "RFC 7770: OSPF Router Capabilities"; | reference "RFC 7770: OSPF Router Capabilities"; | |||
container router-informational-capabilities { | container router-informational-capabilities { | |||
leaf-list informational-capabilitiess { | leaf-list informational-capabilities { | |||
type identityref { | type identityref { | |||
base informational-capability; | base informational-capability; | |||
} | } | |||
description | description | |||
"Informational capability list. This list will | "Informational capability list. This list will | |||
contains the identities for the informational | contains the identities for the informational | |||
capabilities supported by router."; | capabilities supported by router."; | |||
} | } | |||
description | description | |||
"OSPF Router Informational Flag Definitions."; | "OSPF Router Informational Flag Definitions."; | |||
} | } | |||
list informational-capabilities { | list informational-capabilities-flags { | |||
leaf informational-flag { | leaf informational-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Informational flag."; | "Individual informational capability flag."; | |||
} | } | |||
description | description | |||
"List of capabilities."; | "List of informational capability flags. This will | |||
return all the 32-bit informational flags irrespective | ||||
of whether or not they are known to the device."; | ||||
} | } | |||
list functional-capabilities { | list functional-capabilities { | |||
leaf informational-flag { | leaf functional-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Functional flag."; | "Individual informational capability flag."; | |||
} | } | |||
description | description | |||
"List of functional capabilities."; | "List of functional capability flags. This will | |||
return all the 32-bit functional flags irrespective | ||||
of whether or not they are known to the device."; | ||||
} | } | |||
} | } | |||
grouping dynamic-hostname-tlv { | grouping dynamic-hostname-tlv { | |||
description "Dynamic Hostname TLV"; | description "Dynamic Hostname TLV"; | |||
reference "RFC 5642: Dynamic Hostnames for OSPF"; | reference "RFC 5642: Dynamic Hostnames for OSPF"; | |||
leaf hostname { | leaf hostname { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
skipping to change at page 49, line 37 ¶ | skipping to change at page 50, line 10 ¶ | |||
type uint8; | type uint8; | |||
description | description | |||
"Maximum Segment Depth (MSD) value for the type"; | "Maximum Segment Depth (MSD) value for the type"; | |||
} | } | |||
description | description | |||
"List of Maximum Segment Depth (MSD) tuples"; | "List of Maximum Segment Depth (MSD) tuples"; | |||
} | } | |||
} | } | |||
grouping ospf-router-lsa-bits { | grouping ospf-router-lsa-bits { | |||
container rputer-bits { | container router-bits { | |||
leaf-list rtr-lsa-bits { | leaf-list rtr-lsa-bits { | |||
type identityref { | type identityref { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
} | } | |||
description | description | |||
"Router LSA bits list. This list will contain | "Router LSA bits list. This list will contain | |||
identities for the bits which are set in the | identities for the bits which are set in the | |||
Router-LSA bits."; | Router-LSA bits."; | |||
} | } | |||
description "Router LSA Bits."; | description "Router LSA Bits."; | |||
skipping to change at page 51, line 29 ¶ | skipping to change at page 51, line 50 ¶ | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv2-network-lsa')" { | + "'ospfv2-network-lsa')" { | |||
description | description | |||
"Only applies to Network LSAs."; | "Only applies to Network LSAs."; | |||
} | } | |||
description | description | |||
"Network LSA."; | "Network LSA."; | |||
leaf network-mask { | leaf network-mask { | |||
type inet:ipv4-address; | type yang:dotted-quad; | |||
description | description | |||
"The IP address mask for the network."; | "The IP address mask for the network."; | |||
} | } | |||
container attached-routers { | container attached-routers { | |||
description "All attached routers."; | description "All attached routers."; | |||
leaf-list attached-router { | leaf-list attached-router { | |||
type yang:dotted-quad; | type inet:ipv4-address; | |||
description | description | |||
"List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
} | } | |||
} | } | |||
} | } | |||
container summary { | container summary { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-summary-lsa-type')" { | + "'ospfv2-summary-lsa-type')" { | |||
description | description | |||
"Only applies to Summary LSAs."; | "Only applies to Summary LSAs."; | |||
skipping to change at page 54, line 42 ¶ | skipping to change at page 55, line 16 ¶ | |||
description | description | |||
"Router address TLV."; | "Router address TLV."; | |||
leaf router-address { | leaf router-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Router address."; | "Router address."; | |||
} | } | |||
} | } | |||
container link-tlv { | container link-tlv { | |||
description "Describes a singel link, and it is constructed | description "Describes a single link, and it is constructed | |||
of a set of Sub-TLVs."; | of a set of Sub-TLVs."; | |||
leaf link-type { | leaf link-type { | |||
type router-link-type; | type router-link-type; | |||
mandatory true; | mandatory true; | |||
description "Link type."; | description "Link type."; | |||
} | } | |||
leaf link-id { | leaf link-id { | |||
type union { | type union { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
skipping to change at page 59, line 29 ¶ | skipping to change at page 59, line 49 ¶ | |||
description | description | |||
"Forwarding address."; | "Forwarding address."; | |||
} | } | |||
leaf external-route-tag { | leaf external-route-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Route tag."; | "Route tag."; | |||
} | } | |||
leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
type yang:dotted-quad; | type uint32; | |||
description | description | |||
"Referenced Link State ID."; | "Referenced Link State ID."; | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa-body { | grouping ospfv3-lsa-body { | |||
description "OSPFv3 LSA body."; | description "OSPFv3 LSA body."; | |||
container router { | container router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-router-lsa')" { | + "'ospfv3-router-lsa')" { | |||
description | description | |||
"Only applies to Router LSAs."; | "Only applies to Router LSAs."; | |||
skipping to change at page 60, line 42 ¶ | skipping to change at page 61, line 15 ¶ | |||
description | description | |||
"Only applies to Network LSAs."; | "Only applies to Network LSAs."; | |||
} | } | |||
description "Network LSA."; | description "Network LSA."; | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
container attached-routers { | container attached-routers { | |||
description "All attached routers."; | description "All attached routers."; | |||
leaf-list attached-router { | leaf-list attached-router { | |||
type yang:dotted-quad; | type rt-types:router-id; | |||
description | description | |||
"List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
} | } | |||
} | } | |||
} | } | |||
container inter-area-prefix { | container inter-area-prefix { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-prefix-lsa')" { | + "'ospfv3-inter-area-prefix-lsa')" { | |||
description | description | |||
"Only applies to Inter-Area-Prefix LSAs."; | "Only applies to Inter-Area-Prefix LSAs."; | |||
skipping to change at page 63, line 15 ¶ | skipping to change at page 63, line 34 ¶ | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
} | } | |||
description "Referenced Link State type."; | description "Referenced Link State type."; | |||
} | } | |||
leaf unknown-referenced-ls-type { | leaf unknown-referenced-ls-type { | |||
type uint16; | type uint16; | |||
description | description | |||
"Value for an unknown Referenced Link State type."; | "Value for an unknown Referenced Link State type."; | |||
} | } | |||
leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
type yang:dotted-quad; | type uint32; | |||
description | description | |||
"Referenced Link State ID."; | "Referenced Link State ID."; | |||
} | } | |||
leaf referenced-adv-router { | leaf referenced-adv-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Referenced Advertising Router."; | "Referenced Advertising Router."; | |||
} | } | |||
leaf num-of-prefixes { | leaf num-of-prefixes { | |||
skipping to change at page 67, line 6 ¶ | skipping to change at page 67, line 25 ¶ | |||
} | } | |||
grouping lsa-common { | grouping lsa-common { | |||
description | description | |||
"Common fields for OSPF LSA representation."; | "Common fields for OSPF LSA representation."; | |||
leaf decode-completed { | leaf decode-completed { | |||
type boolean; | type boolean; | |||
description | description | |||
"The OSPF LSA body was successfully decoded other than | "The OSPF LSA body was successfully decoded other than | |||
unknown TLVs. Unknown LSAs types and OSPFv2 unknown | unknown TLVs. Unknown LSAs types and OSPFv2 unknown | |||
opaque LSA types are not decoded. Additionally, | opaque LSA types are not decoded. Additionally, | |||
malformed LSAs are generally not accepted and are | malformed LSAs are generally not accepted and will | |||
not be in the Link State Database."; | not be in the Link State Database."; | |||
} | } | |||
leaf raw-data { | leaf raw-data { | |||
type yang:hex-string; | type yang:hex-string; | |||
description | description | |||
"The complete LSA in network byte | "The complete LSA in network byte | |||
order hexadecimal as received or originated."; | order hexadecimal as received or originated."; | |||
} | } | |||
} | } | |||
skipping to change at page 67, line 33 ¶ | skipping to change at page 68, line 4 ¶ | |||
"OSPFv2 or OSPFv3 LSA body."; | "OSPFv2 or OSPFv3 LSA body."; | |||
container ospfv2 { | container ospfv2 { | |||
description "OSPFv2 LSA"; | description "OSPFv2 LSA"; | |||
uses ospfv2-lsa; | uses ospfv2-lsa; | |||
} | } | |||
container ospfv3 { | container ospfv3 { | |||
description "OSPFv3 LSA"; | description "OSPFv3 LSA"; | |||
uses ospfv3-lsa; | uses ospfv3-lsa; | |||
} | } | |||
} | } | |||
} | } | |||
grouping lsa-key { | grouping lsa-key { | |||
description | description | |||
"OSPF LSA key."; | "OSPF LSA key - the database key for each LSA of a given | |||
type in the Link State DataBase (LSDB)."; | ||||
leaf lsa-id { | leaf lsa-id { | |||
type union { | type union { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
type uint32; | type uint32; | |||
} | } | |||
description | description | |||
"Link-State ID."; | "Link-State ID."; | |||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
skipping to change at page 68, line 21 ¶ | skipping to change at page 68, line 43 ¶ | |||
type yang:counter32; | type yang:counter32; | |||
description "The number of LSAs received."; | description "The number of LSAs received."; | |||
} | } | |||
leaf as-scope-lsa-count { | leaf as-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of AS-scope LSAs."; | description "The number of AS-scope LSAs."; | |||
} | } | |||
leaf as-scope-lsa-chksum-sum { | leaf as-scope-lsa-chksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums for AS-scope LSAs."; | "The module 2**32 sum of the LSA checksums | |||
for AS-scope LSAs. The value should be treated as | ||||
unsigned when comparing two sums of checksums. While | ||||
differing checksums indicate a different combination | ||||
of LSAs, equivalent checksums don't guarantee that the | ||||
LSAs are the same given that multiple combinations of | ||||
LSAs can result in the same checksum."; | ||||
} | } | |||
container database { | container database { | |||
description "Container for per AS-scope LSA statistics."; | description "Container for per AS-scope LSA statistics."; | |||
list as-scope-lsa-type { | list as-scope-lsa-type { | |||
description "List of AS-scope LSA statistics"; | description "List of AS-scope LSA statistics"; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "AS-Scope LSA type."; | description "AS-Scope LSA type."; | |||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | ||||
treated as unsigned when comparing two sums of | ||||
checksums. While differing checksums indicate a | ||||
different combination of LSAs, equivalent checksums | ||||
don't guarantee that the LSAs are the same given that | ||||
multiple combinations of LSAs can result in the same | ||||
checksum."; | ||||
} | } | |||
} | } | |||
} | } | |||
uses instance-fast-reroute-state; | uses instance-fast-reroute-state; | |||
} | } | |||
grouping area-stat { | grouping area-stat { | |||
description "Per-area statistics."; | description "Per-area statistics."; | |||
leaf spf-runs-count { | leaf spf-runs-count { | |||
type yang:counter32; | type yang:counter32; | |||
skipping to change at page 69, line 27 ¶ | skipping to change at page 70, line 13 ¶ | |||
description | description | |||
"The number of NSSA translator-state changes."; | "The number of NSSA translator-state changes."; | |||
} | } | |||
leaf area-scope-lsa-count { | leaf area-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The number of area-scope LSAs in the area."; | "The number of area-scope LSAs in the area."; | |||
} | } | |||
leaf area-scope-lsa-cksum-sum { | leaf area-scope-lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description "The sum of the area-scope LSAs checksums."; | description | |||
"The module 2**32 sum of the LSA checksums | ||||
for area-scope LSAs. The value should be treated as | ||||
unsigned when comparing two sums of checksums. While | ||||
differing checksums indicate a different combination | ||||
of LSAs, equivalent checksums don't guarantee that the | ||||
LSAs are the same given that multiple combinations of | ||||
LSAs can result in the same checksum."; | ||||
} | } | |||
container database { | container database { | |||
description "Container for area-scope LSA type statistics."; | description "Container for area-scope LSA type statistics."; | |||
list area-scope-lsa-type { | list area-scope-lsa-type { | |||
description "List of area-scope LSA statistics"; | description "List of area-scope LSA statistics"; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "Area-scope LSA type."; | description "Area-scope LSA type."; | |||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | ||||
treated as unsigned when comparing two sums of | ||||
checksums. While differing checksums indicate a | ||||
different combination of LSAs, equivalent checksums | ||||
don't guarantee that the LSAs are the same given that | ||||
multiple combinations of LSAs can result in the same | ||||
checksum."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-stat { | grouping interface-stat { | |||
description "Per-interface statistics"; | description "Per-interface statistics"; | |||
leaf if-event-count { | leaf if-event-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times this interface has changed its | "The number of times this interface has changed its | |||
state or an error has occurred."; | state or an error has occurred."; | |||
} | } | |||
leaf link-scope-lsa-count { | leaf link-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of link-scope LSAs."; | description "The number of link-scope LSAs."; | |||
} | } | |||
leaf link-scope-lsa-cksum-sum { | leaf link-scope-lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description "The sum of link-scope LSA checksums."; | description | |||
"The module 2**32 sum of the LSA checksums | ||||
for link-scope LSAs. The value should be treated as | ||||
unsigned when comparing two sums of checksums. While | ||||
differing checksums indicate a different combination | ||||
of LSAs, equivalent checksums don't guarantee that the | ||||
LSAs are the same given that multiple combinations of | ||||
LSAs can result in the same checksum."; | ||||
} | } | |||
container database { | container database { | |||
description "Container for link-scope LSA type statistics."; | description "Container for link-scope LSA type statistics."; | |||
list link-scope-lsa-type { | list link-scope-lsa-type { | |||
description "List of link-scope LSA statistics"; | description "List of link-scope LSA statistics"; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "Link scope LSA type."; | description "Link scope LSA type."; | |||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | ||||
treated as unsigned when comparing two sums of | ||||
checksums. While differing checksums indicate a | ||||
different combination of LSAs, equivalent checksums | ||||
don't guarantee that the LSAs are the same given that | ||||
multiple combinations of LSAs can result in the same | ||||
checksum."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-stat { | grouping neighbor-stat { | |||
description "Per-neighbor statistics."; | description "Per-neighbor statistics."; | |||
leaf nbr-event-count { | leaf nbr-event-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times this neighbor has changed | "The number of times this neighbor has changed | |||
state or an error has occurred."; | state or an error has occurred."; | |||
} | } | |||
leaf nbr-retrans-qlen { | leaf nbr-retrans-qlen { | |||
type yang:gauge32; | type yang:gauge32; | |||
skipping to change at page 76, line 29 ¶ | skipping to change at page 77, line 41 ¶ | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost."; | "Interface cost."; | |||
} | } | |||
leaf mtu-ignore { | leaf mtu-ignore { | |||
if-feature mtu-ignore; | if-feature mtu-ignore; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable bypassing the MTU mismatch check in | "Enable/Disable bypassing the MTU mismatch check in | |||
Database Description packets."; | Database Description packets specified in RFC 2328, | |||
section 10.6."; | ||||
} | } | |||
leaf prefix-suppression { | leaf prefix-suppression { | |||
if-feature prefix-suppression; | if-feature prefix-suppression; | |||
type boolean; | type boolean; | |||
description | description | |||
"Suppress advertisement of the prefixes associated | "Suppress advertisement of the prefixes associated | |||
with the interface."; | with the interface."; | |||
} | } | |||
} | } | |||
grouping interface-common-config { | grouping interface-common-config { | |||
description | description | |||
"Common configuration for all types of interfaces, | "Common configuration for all types of interfaces, | |||
including virtual links and sham links."; | including virtual links and sham links."; | |||
leaf hello-interval { | leaf hello-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Interval between hello packets (seconds). It must | "Interval between hello packets (seconds). It must | |||
skipping to change at page 77, line 6 ¶ | skipping to change at page 78, line 18 ¶ | |||
leaf hello-interval { | leaf hello-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Interval between hello packets (seconds). It must | "Interval between hello packets (seconds). It must | |||
be the same for all routers on the same network. | be the same for all routers on the same network. | |||
Different networks, implementations, and deployments | Different networks, implementations, and deployments | |||
will use different hello-intervals. A sample value | will use different hello-intervals. A sample value | |||
for a LAN network would be 10 seconds."; | for a LAN network would be 10 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf dead-interval { | leaf dead-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
must "../dead-interval > ../hello-interval" { | must "../dead-interval > ../hello-interval" { | |||
error-message "The dead interval must be " | error-message "The dead interval must be " | |||
+ "larger than the hello interval"; | + "larger than the hello interval"; | |||
description | description | |||
"The value MUST be greater than 'hello-interval'."; | "The value must be greater than the 'hello-interval'."; | |||
} | } | |||
description | description | |||
"Interval after which a neighbor is declared down | "Interval after which a neighbor is declared down | |||
(seconds) if hello packets are not received. It is | (seconds) if hello packets are not received. It is | |||
typically 3 or 4 times the hello-interval. A typical | typically 3 or 4 times the hello-interval. A typical | |||
value for LAN networks is 40 seconds."; | value for LAN networks is 40 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf retransmit-interval { | leaf retransmit-interval { | |||
type uint16 { | type uint16 { | |||
range "1..3600"; | range "1..3600"; | |||
} | } | |||
units seconds; | units seconds; | |||
description | description | |||
"Interval between retransmitting unacknowledged Link | "Interval between retransmitting unacknowledged Link | |||
State Advertisements (LSAs) (seconds). This should | State Advertisements (LSAs) (seconds). This should | |||
be well over the round-trip transmit delay for | be well over the round-trip transmit delay for | |||
any two routers on the network. A sample value | any two routers on the network. A sample value | |||
would be 5 seconds."; | would be 5 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf transmit-delay { | leaf transmit-delay { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Estimated time needed to transmit Link State Update | "Estimated time needed to transmit Link State Update | |||
(LSU) packets on the interface (seconds). LSAs have | (LSU) packets on the interface (seconds). LSAs have | |||
their age incremented by this amount on advertised | their age incremented by this amount when advertised | |||
on the interface. A sample value would be 1 second."; | on the interface. A sample value would be 1 second."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf lls { | leaf lls { | |||
if-feature lls; | if-feature lls; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable link-local signaling (LLS) support."; | "Enable/Disable link-local signaling (LLS) support."; | |||
} | } | |||
container ttl-security { | container ttl-security { | |||
if-feature ttl-security; | if-feature ttl-security; | |||
description "Time to Live (TTL) security check."; | description "Time to Live (TTL) security check."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable TTL security check."; | "Enable/Disable TTL security check."; | |||
} | } | |||
skipping to change at page 78, line 19 ¶ | skipping to change at page 79, line 34 ¶ | |||
description "Time to Live (TTL) security check."; | description "Time to Live (TTL) security check."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable TTL security check."; | "Enable/Disable TTL security check."; | |||
} | } | |||
leaf hops { | leaf hops { | |||
type uint8 { | type uint8 { | |||
range "1..254"; | range "1..254"; | |||
} | } | |||
default 1; | ||||
description | description | |||
"Maximum number of hops that an OSPF packet may | "Maximum number of hops that an OSPF packet may | |||
have traversed before reception."; | have traversed before reception."; | |||
} | } | |||
} | } | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Enable/disable OSPF protocol on the interface."; | "Enable/disable OSPF protocol on the interface."; | |||
skipping to change at page 83, line 5 ¶ | skipping to change at page 84, line 23 ¶ | |||
proportional to the interface speed. Others will | proportional to the interface speed. Others will | |||
default to 1 equating the cost to a hop count." ; | default to 1 equating the cost to a hop count." ; | |||
} | } | |||
leaf poll-interval { | leaf poll-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Neighbor poll interval (seconds) for sending OSPF | "Neighbor poll interval (seconds) for sending OSPF | |||
hello packets to discover the neighbor on NBMA | hello packets to discover the neighbor on NBMA | |||
networks. This interval dictates the granularity for | networks. This interval dictates the granularity for | |||
discovery of new neighbors. A sample would be 2 minutes | discovery of new neighbors. A sample would be | |||
for a legacy Packet Data Network (PDN) X.25 network."; | 120 seconds (2 minutes) for a legacy Packet Data | |||
Network (PDN) X.25 network."; | ||||
reference "RFC 2328: OSPF Version 2, Appendix C.5"; | ||||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Neighbor priority for DR election. A router with a | "Neighbor priority for DR election. A router with a | |||
higher priority will be preferred in the election | higher priority will be preferred in the election | |||
and a value of 0 indicates the router is not | and a value of 0 indicates the router is not | |||
eligible to become Designated Router or Backup | eligible to become Designated Router or Backup | |||
Designated Router (BDR)."; | Designated Router (BDR)."; | |||
} | } | |||
skipping to change at page 85, line 29 ¶ | skipping to change at page 86, line 49 ¶ | |||
leaf hello-timer { | leaf hello-timer { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
the next hello packet is sent on the | the next hello packet is sent on the | |||
interface."; | interface."; | |||
} | } | |||
leaf wait-timer { | leaf wait-timer { | |||
type rt-types:timer-value-seconds32; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
the interface exits the Waiting state."; | the interface exits the Waiting state."; | |||
} | } | |||
leaf dr-router-id { | leaf dr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description "Designated Router (DR) Router ID."; | description "Designated Router (DR) Router ID."; | |||
} | } | |||
skipping to change at page 94, line 23 ¶ | skipping to change at page 95, line 44 ¶ | |||
leaf explicit-router-id { | leaf explicit-router-id { | |||
if-feature explicit-router-id; | if-feature explicit-router-id; | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
that uniquely identifies the router."; | that uniquely identifies the router."; | |||
} | } | |||
container preference { | container preference { | |||
description | description | |||
"Route preference configuration In many | "Route preference configuration. In many | |||
implementations, preference is referred to as | implementations, preference is referred to as | |||
administrative distance."; | administrative distance."; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | (NMDA Version)"; | |||
choice scope { | choice scope { | |||
description | description | |||
"Options for expressing preference | "Options for expressing preference | |||
as single or multiple values."; | as single or multiple values."; | |||
case single-value { | case single-value { | |||
skipping to change at page 101, line 47 ¶ | skipping to change at page 103, line 21 ¶ | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Area ID"; | "Area ID"; | |||
} | } | |||
leaf type { | leaf type { | |||
type uint16; | type uint16; | |||
description | description | |||
"LSA type."; | "LSA type."; | |||
} | } | |||
leaf lsa-id { | leaf lsa-id { | |||
type yang:dotted-quad; | type union { | |||
type inet:ipv4-address; | ||||
type yang:dotted-quad; | ||||
} | ||||
description "Link-State ID."; | description "Link-State ID."; | |||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"LSA advertising router."; | "LSA advertising router."; | |||
} | } | |||
leaf seq-num { | leaf seq-num { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at page 102, line 25 ¶ | skipping to change at page 103, line 50 ¶ | |||
description | description | |||
"Grouping for SPF log."; | "Grouping for SPF log."; | |||
container spf-log { | container spf-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the SPF log."; | "This container lists the SPF log."; | |||
list event { | list event { | |||
key id; | key id; | |||
description | description | |||
"List of SPF log entries represented | "List of SPF log entries represented | |||
as a wrapping buffer."; | as a wrapping buffer in chronological | |||
order with the oldest entry returned | ||||
first."; | ||||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier - Purely internal value."; | "Event identifier - Purely internal value."; | |||
} | } | |||
leaf spf-type { | leaf spf-type { | |||
type enumeration { | type enumeration { | |||
enum full { | enum full { | |||
description | description | |||
"SPF computation was a Full SPF."; | "SPF computation was a Full SPF."; | |||
skipping to change at page 103, line 46 ¶ | skipping to change at page 105, line 24 ¶ | |||
container lsa-log { | container lsa-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the LSA log. | "This container lists the LSA log. | |||
Local LSA modifications are also included | Local LSA modifications are also included | |||
in the list."; | in the list."; | |||
list event { | list event { | |||
key id; | key id; | |||
description | description | |||
"List of LSA log entries represented | "List of LSA log entries represented | |||
as a wrapping buffer."; | as a wrapping buffer in chronological order | |||
with the oldest entries returned first."; | ||||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier - purely internal value."; | "Event identifier - purely internal value."; | |||
} | } | |||
container lsa { | container lsa { | |||
description | description | |||
"This container describes the logged LSA."; | "This container describes the logged LSA."; | |||
uses lsa-identifiers; | uses lsa-identifiers; | |||
} | } | |||
skipping to change at page 113, line 4 ¶ | skipping to change at page 114, line 31 ¶ | |||
grouping notification-neighbor { | grouping notification-neighbor { | |||
description | description | |||
"This grouping provides the neighbor information | "This grouping provides the neighbor information | |||
for neighbor specific notifications."; | for neighbor specific notifications."; | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor Router ID."; | description "Neighbor Router ID."; | |||
} | } | |||
leaf neighbor-ip-addr { | leaf neighbor-ip-addr { | |||
type yang:dotted-quad; | type inet:ip-address; | |||
description "Neighbor address."; | description "Neighbor address."; | |||
} | } | |||
} | } | |||
notification if-state-change { | notification if-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf state { | leaf state { | |||
type if-state-type; | type if-state-type; | |||
skipping to change at page 113, line 28 ¶ | skipping to change at page 115, line 8 ¶ | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification if-config-error { | notification if-config-error { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf packet-source { | leaf packet-source { | |||
type yang:dotted-quad; | type inet:ip-address; | |||
description "Source address."; | description "Source address."; | |||
} | } | |||
leaf packet-type { | leaf packet-type { | |||
type packet-type; | type packet-type; | |||
description "OSPF packet type."; | description "OSPF packet type."; | |||
} | } | |||
leaf error { | leaf error { | |||
type enumeration { | type enumeration { | |||
skipping to change at page 114, line 49 ¶ | skipping to change at page 116, line 29 ¶ | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
uses notification-neighbor; | uses notification-neighbor; | |||
leaf state { | leaf state { | |||
type nbr-state-type; | type nbr-state-type; | |||
description "Neighbor state."; | description "Neighbor state."; | |||
} | } | |||
description | description | |||
"This notification is sent when aa neighbor | "This notification is sent when a neighbor | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification nbr-restart-helper-status-change { | notification nbr-restart-helper-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
uses notification-neighbor; | uses notification-neighbor; | |||
leaf status { | leaf status { | |||
type restart-helper-status-type; | type restart-helper-status-type; | |||
description "Restart helper status."; | description "Restart helper status."; | |||
} | } | |||
skipping to change at page 115, line 37 ¶ | skipping to change at page 117, line 18 ¶ | |||
description | description | |||
"This notification is sent when a neighbor restart | "This notification is sent when a neighbor restart | |||
helper status change is detected."; | helper status change is detected."; | |||
} | } | |||
notification if-rx-bad-packet { | notification if-rx-bad-packet { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf packet-source { | leaf packet-source { | |||
type yang:dotted-quad; | type inet:ip-address; | |||
description "Source address."; | description "Source address."; | |||
} | } | |||
leaf packet-type { | leaf packet-type { | |||
type packet-type; | type packet-type; | |||
description "OSPF packet type."; | description "OSPF packet type."; | |||
} | } | |||
description | description | |||
"This notification is sent when an OSPF packet that | "This notification is sent when an OSPF packet that | |||
skipping to change at page 117, line 49 ¶ | skipping to change at page 119, line 30 ¶ | |||
4. Security Considerations | 4. Security Considerations | |||
The YANG modules specified in this document define a schema for data | The YANG modules specified in this document define a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC8446]. | [RFC8446]. | |||
The NETCONF access control model [RFC8341] provides the means to | The NETCONF Access Control Model (NACM) [RFC8341] provides the means | |||
restrict access for particular NETCONF or RESTCONF users to a pre- | to restrict access for particular NETCONF or RESTCONF users to a pre- | |||
configured subset of all available NETCONF or RESTCONF protocol | configured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
There are a number of data nodes defined in ietf-ospf.yang module | There are a number of data nodes defined in ietf-ospf.yang module | |||
that are writable/creatable/deletable (i.e., config true, which is | that are writable/creatable/deletable (i.e., config true, which is | |||
the default). These data nodes may be considered sensitive or | the default). These data nodes may be considered sensitive or | |||
vulnerable in some network environments. Write operations (e.g., | vulnerable in some network environments. Write operations (e.g., | |||
edit-config) to these data nodes without proper protection can have a | edit-config) to these data nodes without proper protection can have a | |||
negative effect on network operations. For OSPF, the ability to | negative effect on network operations. For OSPF, the ability to | |||
modify OSPF configuration will allow the entire OSPF domain to be | modify OSPF configuration will allow the entire OSPF domain to be | |||
skipping to change at page 118, line 34 ¶ | skipping to change at page 120, line 15 ¶ | |||
consider their topologies to be sensitive confidential data. | consider their topologies to be sensitive confidential data. | |||
For OSPF authentication, configuration is supported via the | For OSPF authentication, configuration is supported via the | |||
specification of key-chains [RFC8177] or the direct specification of | specification of key-chains [RFC8177] or the direct specification of | |||
key and authentication algorithm. Hence, authentication | key and authentication algorithm. Hence, authentication | |||
configuration using the "auth-table-trailer" case in the | configuration using the "auth-table-trailer" case in the | |||
"authentication" container inherits the security considerations of | "authentication" container inherits the security considerations of | |||
[RFC8177]. This includes the considerations with respect to the | [RFC8177]. This includes the considerations with respect to the | |||
local storage and handling of authentication keys. | local storage and handling of authentication keys. | |||
Additionally, local specificationn of OSPF authentication keys and | Additionally, local specification of OSPF authentication keys and the | |||
the associated authentication algorithm is supported for legacy | associated authentication algorithm is supported for legacy | |||
implementations that do not support key-chains [RFC8177] for legacy | implementations that do not support key-chains [RFC8177] It is | |||
implementations that do not support key-chains. It is RECOMMENDED | RECOMMENDED that implementations migrate to key-chains due the | |||
that implementations migrate to key-chains due the seamless support | seamless support of key and algorithm rollover, as well as, the | |||
of key and algorithm rollover, as well as, the encryption of key | hexadecimal key specification affording more key entropy, and | |||
using the Advanced Encryption Standard (AES) Key Wrap Padding | encryption of keys using the Advanced Encryption Standard (AES) Key | |||
Algorithm [RFC5649]. | Wrap Padding Algorithm [RFC5649]. | |||
Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control access to these operations. The OSPF YANG | important to control access to these operations. The OSPF YANG | |||
module support the "clear-neighbor" and "clear-database" RPCs. If | module supports the "clear-neighbor" and "clear-database" RPCs. If | |||
access to either of these is compromised, they can result in | access to either of these is compromised, they can result in | |||
temporary network outages be employed to mount DoS attacks. | temporary network outages be employed to mount DoS attacks. | |||
5. IANA Considerations | 5. IANA Considerations | |||
This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the IETF XML registry [RFC3688]. | |||
Following the format in [RFC3688], the following registration is | Following the format in [RFC3688], the following registration is | |||
requested to be made: | requested to be made: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf | URI: urn:ietf:params:xml:ns:yang:ietf-ospf | |||
skipping to change at page 119, line 34 ¶ | skipping to change at page 121, line 16 ¶ | |||
The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | |||
Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | |||
Alan Davey for their thorough reviews and helpful comments. | Alan Davey for their thorough reviews and helpful comments. | |||
Thanks to Tom Petch for last call review and improvement of the | Thanks to Tom Petch for last call review and improvement of the | |||
document organization. | document organization. | |||
Thanks to Alvaro Retana for AD comments. | Thanks to Alvaro Retana for AD comments. | |||
Thanks to Benjamin Kaduk, Suresh Krishnan, and Roman Dannyliw for | ||||
IESG review comments. | ||||
This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
Author affiliation with The MITRE Corporation is provided for | Author affiliation with The MITRE Corporation is provided for | |||
identification purposes only, and is not intended to convey or imply | identification purposes only, and is not intended to convey or imply | |||
MITRE's concurrence with, or support for, the positions, opinions or | MITRE's concurrence with, or support for, the positions, opinions or | |||
viewpoints expressed. MITRE has approved this document for Public | viewpoints expressed. MITRE has approved this document for Public | |||
Release, Distribution Unlimited, with Public Release Case Number | Release, Distribution Unlimited, with Public Release Case Number | |||
18-3194. | 18-3194. | |||
7. References | 7. References | |||
End of changes. 96 change blocks. | ||||
119 lines changed or deleted | 196 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |