draft-ietf-ospf-yang-17.txt | draft-ietf-ospf-yang-18.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: March 16, 2019 Huawei | Expires: May 31, 2019 Huawei | |||
J. Zhang | J. Zhang | |||
Juniper Networks | Juniper Networks | |||
I. Chen | I. Chen | |||
MITRE Corporation | The MITRE Corporation | |||
A. Lindem | A. Lindem | |||
Cisco Systems | Cisco Systems | |||
September 12, 2018 | November 27, 2018 | |||
YANG Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
draft-ietf-ospf-yang-17 | draft-ietf-ospf-yang-18 | |||
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. | (NDMA) as described in RFC 8342. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
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 March 16, 2019. | This Internet-Draft will expire on May 31, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | |||
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 . . . . . 15 | 2.7. OSPF Interface Configuration/Operational State . . . . . 15 | |||
2.8. OSPF notification . . . . . . . . . . . . . . . . . . . . 17 | 2.8. OSPF notification . . . . . . . . . . . . . . . . . . . . 17 | |||
2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 21 | 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 21 | |||
3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 | 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 106 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 107 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 107 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 108 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 107 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 108 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 108 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 108 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 108 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 109 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 112 | 7.2. Informative References . . . . . . . . . . . . . . . . . 113 | |||
Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 114 | Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 115 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 115 | |||
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]. YANG is proving relevant | |||
beyond its initial confines, as bindings to other interfaces (e.g., | beyond its initial confines, as bindings to other interfaces (e.g., | |||
ReST) and encodings other than XML (e.g., JSON) are being defined. | ReST) and encodings other than XML (e.g., JSON) are being defined. | |||
Furthermore, YANG data models can be used as the basis for | Furthermore, YANG data models can be used as the basis for | |||
implementation of other interfaces, such as CLI and programmatic | implementation of other interfaces, such as CLI and programmatic | |||
skipping to change at page 5, line 8 ¶ | skipping to change at page 5, line 8 ¶ | |||
configuration construct that is identified by the local identifier | configuration construct that is identified by the local identifier | |||
'name'. The field 'version' allows support for OSPFv2 and OSPFv3. | 'name'. The field 'version' allows support for OSPFv2 and OSPFv3. | |||
The ospf container includes one OSPF protocol engine instance. The | The ospf container includes one OSPF protocol engine instance. The | |||
instance includes OSPF router level configuration and operational | instance includes OSPF router level configuration and operational | |||
state. | state. | |||
The area and area/interface containers respectively define the OSPF | The area and area/interface containers respectively define the OSPF | |||
configuration and operational state for OSPF areas and interfaces. | configuration and operational state for OSPF areas and interfaces. | |||
The topology container defines the OSPF configuration and operational | The topologies container defines the OSPF configuration and | |||
state for OSPF topologies when the multi-topology feature is | operational state for OSPF topologies when the multi-topology feature | |||
supported. | is supported. | |||
2.3. OSPFv2 and OSPFv3 | 2.3. OSPFv2 and OSPFv3 | |||
The data model defined herein supports both OSPFv2 and OSPFv3. | The data model defined herein supports both OSPFv2 and OSPFv3. | |||
The field 'version' is used to indicate the OSPF version and is | The field 'version' is used to indicate the OSPF version and is | |||
mandatory. Based on the configured version, the data model varies to | mandatory. Based on the configured version, the data model varies to | |||
accommodate the differences between OSPFv2 and OSPFv3. | accommodate the differences between OSPFv2 and OSPFv3. | |||
2.4. Optional Features | 2.4. Optional Features | |||
skipping to change at page 22, line 11 ¶ | skipping to change at page 22, line 11 ¶ | |||
+---w routing-protocol-name | +---w routing-protocol-name | |||
-> /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], [RFC5250], [RFC5881], [RFC6991], [RFC7770], and [RFC8294]. | [RFC4576], [RFC5250], [RFC5881], [RFC6991], [RFC7770], and [RFC8294]. | |||
<CODE BEGINS> file "ietf-ospf@2018-08-29.yang" | <CODE BEGINS> file "ietf-ospf@2018-11-27.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"; | |||
} | } | |||
skipping to change at page 23, line 16 ¶ | skipping to change at page 23, line 16 ¶ | |||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix "bfd-types"; | |||
reference "RFC YYYY - YANG Data Model for Bidirectional | reference "RFC YYYY - YANG Data Model for Bidirectional | |||
Forwarding Detection (BFD). Please replace YYYY with | Forwarding Detection (BFD). Please replace YYYY with | |||
published RFC number for draft-ietf-bfd-yang-17."; | published RFC number for draft-ietf-bfd-yang-17."; | |||
} | } | |||
organization | organization | |||
"IETF OSPF - OSPF Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
contact | contact | |||
"WG Web: <http://datatracker.ietf.org/group/ospf/> | "WG Web: <http://datatracker.ietf.org/group/lsr/> | |||
WG List: <mailto:ospf@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
Editor: Derek Yeung | Editor: Derek Yeung | |||
<mailto:derek@arrcus.com> | <mailto:derek@arrcus.com> | |||
Author: Acee Lindem | Author: Acee Lindem | |||
<mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
Author: Yingzhen Qu | Author: Yingzhen Qu | |||
<mailto:yingzhen.qu@huawei.com> | <mailto:yingzhen.qu@huawei.com> | |||
Author: Jeffrey Zhang | Author: Jeffrey Zhang | |||
<mailto:zzhang@juniper.net> | <mailto:zzhang@juniper.net> | |||
Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
<mailto:ing-wher_chen@jabil.com> | <mailto:ingwherchen@mitre.org> | |||
Author: Dean Bogdanovic | Author: Dean Bogdanovic | |||
<mailto:ivandean@gmail.com> | <mailto:ivandean@gmail.com> | |||
Author: Kiran Agrahara Sreenivasa | Author: Kiran Agrahara Sreenivasa | |||
<mailto:kkoushik@cisco.com>"; | <mailto:kk@employees.org"; | |||
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 | |||
skipping to change at page 24, line 13 ¶ | skipping to change at page 24, line 13 ¶ | |||
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 | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
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 2018-08-29 { | revision 2018-11-27 { | |||
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-Topolgy Routing (MTR)."; | "Support Multiple-Topology Routing (MTR)."; | |||
reference "RFC 4915 - Multi-Topology Routing"; | reference "RFC 4915 - Multi-Topology Routing"; | |||
} | } | |||
feature multi-area-adj { | feature multi-area-adj { | |||
description | description | |||
"OSPF multi-area adjacency support as in RFC 5185."; | "OSPF multi-area adjacency support as in RFC 5185."; | |||
reference "RFC 5185 - Multi-Area Adjacency"; | reference "RFC 5185 - Multi-Area Adjacency"; | |||
} | } | |||
feature explicit-router-id { | feature explicit-router-id { | |||
description | description | |||
skipping to change at page 26, line 33 ¶ | skipping to change at page 26, line 33 ¶ | |||
feature ospfv3-authentication-ipsec { | feature ospfv3-authentication-ipsec { | |||
description | description | |||
"Use IPsec for OSPFv3 authentication."; | "Use IPsec for OSPFv3 authentication."; | |||
reference "RFC 4552 - Authentication/Confidentiality | reference "RFC 4552 - Authentication/Confidentiality | |||
for OSPFv3"; | 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 Rereoute Framework"; | reference "RFC 5714 - IP Fast Reroute Framework"; | |||
} | ||||
feature key-chain { | ||||
description | ||||
"Support of keychain for authentication."; | ||||
reference "RFC8177 - YANG Data Model for Key Chains"; | ||||
} | } | |||
feature node-flag { | feature node-flag { | |||
description | description | |||
"Support for node-flag for OSPF prefixes."; | "Support for node-flag for OSPF prefixes."; | |||
reference "RFC 7684 - OSPFv2 Prefix/Link Advertisement"; | reference "RFC 7684 - OSPFv2 Prefix/Link Advertisement"; | |||
} | } | |||
feature node-tag { | feature node-tag { | |||
description | description | |||
skipping to change at page 27, line 46 ¶ | skipping to change at page 28, line 4 ¶ | |||
state IGPs"; | state IGPs"; | |||
} | } | |||
feature bfd { | feature bfd { | |||
description | description | |||
"Support for BFD detection of OSPF neighbor reachability."; | "Support for BFD detection of OSPF neighbor reachability."; | |||
reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) | reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) | |||
RFC 5881 - Bidirectional Forwarding Detection | RFC 5881 - Bidirectional Forwarding Detection | |||
(BFD) for IPv4 and IPv6 (Single Hop)"; | (BFD) for IPv4 and IPv6 (Single Hop)"; | |||
} | } | |||
identity ospf { | ||||
identity ospf-protocol { | ||||
base "rt:routing-protocol"; | base "rt:routing-protocol"; | |||
description "Any OSPF protocol version"; | description "Any OSPF protocol version"; | |||
} | } | |||
identity ospfv2 { | identity ospfv2 { | |||
base "ospf-protocol"; | base "ospf"; | |||
description "OSPFv2 protocol"; | description "OSPFv2 protocol"; | |||
} | } | |||
identity ospfv3 { | identity ospfv3 { | |||
base "ospf-protocol"; | base "ospf"; | |||
description "OSPFv3 protocol"; | description "OSPFv3 protocol"; | |||
} | } | |||
identity operation-mode { | identity operation-mode { | |||
description | description | |||
"OSPF operation mode."; | "OSPF operation mode."; | |||
} | } | |||
identity area-type { | identity area-type { | |||
description "Base identity for OSPF area type."; | description "Base identity for OSPF area type."; | |||
skipping to change at page 28, line 46 ¶ | skipping to change at page 29, line 4 ¶ | |||
identity nssa-area { | identity nssa-area { | |||
base stub-nssa-area; | base stub-nssa-area; | |||
description "OSPF Not-So-Stubby Area (NSSA)."; | description "OSPF Not-So-Stubby Area (NSSA)."; | |||
reference "RFC 3101 - The OSPF Not-So-Stubby Area | reference "RFC 3101 - The OSPF Not-So-Stubby Area | |||
(NSSA) Option"; | (NSSA) Option"; | |||
} | } | |||
identity ospf-lsa-type { | identity ospf-lsa-type { | |||
description | description | |||
"Base identity for OSPFv3 and OSPFv3 | "Base identity for OSPFv2 and OSPFv3 | |||
Link State Advertisement (LSA) types"; | Link State Advertisement (LSA) types"; | |||
} | } | |||
identity ospfv2-lsa-type { | identity ospfv2-lsa-type { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
description | description | |||
"OSPFv2 LSA types"; | "OSPFv2 LSA types"; | |||
} | } | |||
identity ospfv2-router-lsa { | identity ospfv2-router-lsa { | |||
skipping to change at page 32, line 46 ¶ | skipping to change at page 33, line 4 ¶ | |||
"Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
as a result of a change in the content | as a result of a change in the content | |||
of the LSA."; | of the LSA."; | |||
} | } | |||
identity lsa-purge { | identity lsa-purge { | |||
base lsa-log-reason; | base lsa-log-reason; | |||
description | description | |||
"Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
as a result of being purged."; | as a result of being purged."; | |||
} | } | |||
typedef uint24 { | typedef ospf-metric { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"24-bit unsigned integer."; | "OSPF Metric - 24-bit unsigned integer."; | |||
} | ||||
typedef opaque-id { | ||||
type uint32 { | ||||
range "0 .. 16777215"; | ||||
} | ||||
description | ||||
"Opaque ID - 24-bit unsigned integer."; | ||||
} | } | |||
typedef area-id-type { | typedef area-id-type { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
"Area ID type."; | "Area ID type."; | |||
} | } | |||
typedef route-type { | typedef route-type { | |||
type enumeration { | type enumeration { | |||
skipping to change at page 34, line 17 ¶ | skipping to change at page 34, line 31 ¶ | |||
enum point-to-point { | enum point-to-point { | |||
value "4"; | value "4"; | |||
description | description | |||
"Interface point-to-point state."; | "Interface point-to-point state."; | |||
} | } | |||
enum dr { | enum dr { | |||
value "5"; | value "5"; | |||
description | description | |||
"Interface Designated Router (DR) state."; | "Interface Designated Router (DR) state."; | |||
} | } | |||
enum bdr { | enum backup { | |||
value "6"; | value "6"; | |||
description | description | |||
"Interface Backup Designated Router (BDR) state."; | "Interface Backup Designated Router (BDR) state."; | |||
} | } | |||
enum dr-other { | enum dr-other { | |||
value "7"; | value "7"; | |||
description | description | |||
"Interface Other Designated Router state."; | "Interface Other Designated Router state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF interface state type."; | "OSPF interface state type."; | |||
} | } | |||
typedef router-link-type { | ||||
type enumeration { | ||||
enum point-to-point-link { | ||||
value "1"; | ||||
description | ||||
"Point-to-Point link to Router"; | ||||
} | ||||
enum transit-network-link { | ||||
value "2"; | ||||
description | ||||
"Link to transit network identified by | ||||
Designated-Router (DR)"; | ||||
} | ||||
enum stub-network-link { | ||||
value "3"; | ||||
description | ||||
"Link to stub network identified by subnet"; | ||||
} | ||||
enum virtual-link { | ||||
value "4"; | ||||
description | ||||
"Virtual link across transit area"; | ||||
} | ||||
} | ||||
description | ||||
"OSPF Router Link Type."; | ||||
} | ||||
typedef nbr-state-type { | typedef nbr-state-type { | |||
type enumeration { | type enumeration { | |||
enum down { | enum down { | |||
value "1"; | value "1"; | |||
description | description | |||
"Neighbor down state."; | "Neighbor down state."; | |||
} | } | |||
enum attempt { | enum attempt { | |||
value "2"; | value "2"; | |||
description | description | |||
skipping to change at page 35, line 6 ¶ | skipping to change at page 35, line 49 ¶ | |||
enum init { | enum init { | |||
value "3"; | value "3"; | |||
description | description | |||
"Neighbor init state."; | "Neighbor init state."; | |||
} | } | |||
enum 2-way { | enum 2-way { | |||
value "4"; | value "4"; | |||
description | description | |||
"Neighbor 2-Way state."; | "Neighbor 2-Way state."; | |||
} | } | |||
enum ex-start { | enum exstart { | |||
value "5"; | value "5"; | |||
description | description | |||
"Neighbor exchange start state."; | "Neighbor exchange start state."; | |||
} | } | |||
enum exchange { | enum exchange { | |||
value "6"; | value "6"; | |||
description | description | |||
"Neighbor exchange state."; | "Neighbor exchange state."; | |||
} | } | |||
enum loading { | enum loading { | |||
value "7"; | value "7"; | |||
description | description | |||
"Neighbor loading state."; | "Neighbor loading state."; | |||
skipping to change at page 36, line 41 ¶ | skipping to change at page 37, line 35 ¶ | |||
as a helper."; | as a helper."; | |||
} | } | |||
typedef packet-type { | typedef packet-type { | |||
type enumeration { | type enumeration { | |||
enum hello { | enum hello { | |||
value "1"; | value "1"; | |||
description | description | |||
"OSPF Hello packet."; | "OSPF Hello packet."; | |||
} | } | |||
enum database-descripton { | enum database-description { | |||
value "2"; | value "2"; | |||
description | description | |||
"OSPF Database Description packet."; | "OSPF Database Description packet."; | |||
} | } | |||
enum link-state-request { | enum link-state-request { | |||
value "3"; | value "3"; | |||
description | description | |||
"OSPF Link State Request packet."; | "OSPF Link State Request packet."; | |||
} | } | |||
enum link-state-update { | enum link-state-update { | |||
value "4"; | value "4"; | |||
description | description | |||
"OSPF Link State Update packet."; | "OSPF Link State Update packet."; | |||
} | } | |||
enum link-state-ack { | enum link-state-ack { | |||
value "5"; | value "5"; | |||
description | description | |||
"OSPF Link State Acknowlegement packet."; | "OSPF Link State Acknowledgement packet."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF packet type."; | "OSPF packet type."; | |||
} | } | |||
typedef nssa-translator-state-type { | typedef nssa-translator-state-type { | |||
type enumeration { | type enumeration { | |||
enum enabled { | enum enabled { | |||
value "1"; | value "1"; | |||
skipping to change at page 40, line 18 ¶ | skipping to change at page 41, line 12 ¶ | |||
description "Router-LSA Link ID"; | description "Router-LSA Link ID"; | |||
} | } | |||
leaf link-data { | leaf link-data { | |||
type union { | type union { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
type uint32; | type uint32; | |||
} | } | |||
description "Router-LSA Link data."; | description "Router-LSA Link data."; | |||
} | } | |||
leaf type { | leaf type { | |||
type uint8; | type router-link-type; | |||
description "Router-LSA Link type."; | description "Router-LSA Link type."; | |||
} | } | |||
} | } | |||
grouping ospfv2-lsa-body { | grouping ospfv2-lsa-body { | |||
description "OSPFv2 LSA body."; | description "OSPFv2 LSA body."; | |||
container router { | container router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospf:ospfv2-router-lsa')" { | + "'ospf:ospfv2-router-lsa')" { | |||
description | description | |||
skipping to change at page 42, line 14 ¶ | skipping to change at page 43, line 8 ¶ | |||
list topology { | list topology { | |||
description | description | |||
"Topology specific information."; | "Topology specific information."; | |||
leaf mt-id { | leaf mt-id { | |||
type uint8; | type uint8; | |||
description | description | |||
"The MT-ID for the topology enabled for | "The MT-ID for the topology enabled for | |||
the summary."; | the summary."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint24; | type ospf-metric; | |||
description "Metric for the topology."; | description "Metric for the topology."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container external { | container external { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-external-lsa-type')" { | + "'ospfv2-external-lsa-type')" { | |||
description | description | |||
"Only applies to AS-external LSAs and NSSA LSAs."; | "Only applies to AS-external LSAs and NSSA LSAs."; | |||
skipping to change at page 43, line 7 ¶ | skipping to change at page 43, line 49 ¶ | |||
type bits { | type bits { | |||
bit E { | bit E { | |||
description | description | |||
"When set, the metric specified is a Type 2 | "When set, the metric specified is a Type 2 | |||
external metric."; | external metric."; | |||
} | } | |||
} | } | |||
description "Flags."; | description "Flags."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint24; | type ospf-metric; | |||
description "Metric for the topology."; | description "Metric for the topology."; | |||
} | } | |||
leaf forwarding-address { | leaf forwarding-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Forwarding address."; | "Forwarding address."; | |||
} | } | |||
leaf external-route-tag { | leaf external-route-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at page 44, line 4 ¶ | skipping to change at page 44, line 46 ¶ | |||
} | } | |||
container router-address-tlv { | container router-address-tlv { | |||
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-tlvs { | container link-tlvs { | |||
description "All link TLVs in the LSA."; | description "All link TLVs in the LSA."; | |||
list link-tlv { | list link-tlv { | |||
description "Link TLV."; | description "Link TLV."; | |||
leaf link-type { | leaf link-type { | |||
type uint8; | 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; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "Link ID."; | description "Link ID."; | |||
skipping to change at page 46, line 49 ¶ | skipping to change at page 47, line 44 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa-options { | grouping ospfv3-lsa-options { | |||
description "OSPFv3 LSA options"; | description "OSPFv3 LSA options"; | |||
leaf options { | leaf options { | |||
type bits { | type bits { | |||
bit AF { | bit AF { | |||
description | description | |||
"When set, the router supprts OSPFv3 AFs as in RFC5838."; | "When set, the router supprts OSPFv3 Address | |||
Families as in RFC5838."; | ||||
} | } | |||
bit DC { | bit DC { | |||
description | description | |||
"When set, the router supports demand circuits."; | "When set, the router supports demand circuits."; | |||
} | } | |||
bit R { | bit R { | |||
description | description | |||
"When set, the originator is an active router."; | "When set, the originator is an active router."; | |||
} | } | |||
bit N { | bit N { | |||
skipping to change at page 48, line 26 ¶ | skipping to change at page 49, line 22 ¶ | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "Prefix options."; | description "Prefix options."; | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa-external { | grouping ospfv3-lsa-external { | |||
description | description | |||
"AS-External and NSSA LSA."; | "AS-External and NSSA LSA."; | |||
leaf metric { | leaf metric { | |||
type uint24; | type ospf-metric; | |||
description "Metric"; | description "Metric"; | |||
} | } | |||
leaf flags { | leaf flags { | |||
type bits { | type bits { | |||
bit E { | bit E { | |||
description | description | |||
"When set, the metric specified is a Type 2 | "When set, the metric specified is a Type 2 | |||
external metric."; | external metric."; | |||
} | } | |||
skipping to change at page 50, line 16 ¶ | skipping to change at page 51, line 11 ¶ | |||
} | } | |||
leaf neighbor-interface-id { | leaf neighbor-interface-id { | |||
type uint32; | type uint32; | |||
description "Neighbor's Interface ID for link."; | description "Neighbor's Interface ID for link."; | |||
} | } | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor's Router ID for link."; | description "Neighbor's Router ID for link."; | |||
} | } | |||
leaf type { | leaf type { | |||
type uint8; | type router-link-type; | |||
description "Link type: 1 - Point-to-Point Link | description "Link type: 1 - Point-to-Point Link | |||
2 - Transit Network Link | 2 - Transit Network Link | |||
3 - Stub Network Link Link | 3 - Stub Network Link Link | |||
4 - Virtual Link"; | 4 - Virtual Link"; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint16; | type uint16; | |||
description "Link Metric."; | description "Link Metric."; | |||
} | } | |||
} | } | |||
skipping to change at page 51, line 7 ¶ | skipping to change at page 51, line 50 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
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."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint24; | type ospf-metric; | |||
description "Inter-Area Prefix Metric"; | description "Inter-Area Prefix Metric"; | |||
} | } | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
description "Prefix LSA."; | description "Prefix LSA."; | |||
} | } | |||
container inter-area-router { | container inter-area-router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-router-lsa')" { | + "'ospfv3-inter-area-router-lsa')" { | |||
description | description | |||
"Only applies to Inter-Area-Router LSAs."; | "Only applies to Inter-Area-Router LSAs."; | |||
} | } | |||
skipping to change at page 51, line 21 ¶ | skipping to change at page 52, line 17 ¶ | |||
description "Prefix LSA."; | description "Prefix LSA."; | |||
} | } | |||
container inter-area-router { | container inter-area-router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-router-lsa')" { | + "'ospfv3-inter-area-router-lsa')" { | |||
description | description | |||
"Only applies to Inter-Area-Router LSAs."; | "Only applies to Inter-Area-Router LSAs."; | |||
} | } | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
leaf metric { | leaf metric { | |||
type uint24; | type ospf-metric; | |||
description "AS Boundary Router (ASBR) Metric."; | description "AS Boundary Router (ASBR) Metric."; | |||
} | } | |||
leaf destination-router-id { | leaf destination-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"The Router ID of the ASBR described by the LSA."; | "The Router ID of the ASBR described by the LSA."; | |||
} | } | |||
description "Inter-Area-Router LSA."; | description "Inter-Area-Router LSA."; | |||
} | } | |||
container as-external { | container as-external { | |||
skipping to change at page 53, line 30 ¶ | skipping to change at page 54, line 25 ¶ | |||
leaf num-of-prefixes { | leaf num-of-prefixes { | |||
type uint16; | type uint16; | |||
description "Number of prefixes."; | description "Number of prefixes."; | |||
} | } | |||
container prefixes { | container prefixes { | |||
description "All prefixes in this LSA."; | description "All prefixes in this LSA."; | |||
list prefix { | list prefix { | |||
description "List of prefixes in this LSA."; | description "List of prefixes in this LSA."; | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
leaf metric { | leaf metric { | |||
type uint24; | type ospf-metric; | |||
description "Prefix Metric."; | description "Prefix Metric."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container router-information { | container router-information { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-router-information-lsa')" { | + "'ospfv3-router-information-lsa')" { | |||
description | description | |||
"Only applies to Router Information LSAs (RFC7770)."; | "Only applies to Router Information LSAs (RFC7770)."; | |||
skipping to change at page 56, line 21 ¶ | skipping to change at page 57, line 15 ¶ | |||
mandatory true; | mandatory true; | |||
description "Link-State ID."; | description "Link-State ID."; | |||
} | } | |||
leaf opaque-type { | leaf opaque-type { | |||
type uint8; | type uint8; | |||
description "Opaque type."; | description "Opaque type."; | |||
} | } | |||
leaf opaque-id { | leaf opaque-id { | |||
type uint24; | type opaque-id; | |||
description "Opaque ID."; | description "Opaque ID."; | |||
} | } | |||
uses lsa-header; | uses lsa-header; | |||
} | } | |||
container body { | container body { | |||
description | description | |||
"Decoded OSPFv2 LSA body data."; | "Decoded OSPFv2 LSA body data."; | |||
uses ospfv2-lsa-body; | uses ospfv2-lsa-body; | |||
} | } | |||
skipping to change at page 58, line 40 ¶ | skipping to change at page 59, line 35 ¶ | |||
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 int32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The sum of the LSA checksums of the LSA type."; | |||
} | } | |||
} | } | |||
} | } | |||
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; | |||
description | description | |||
"The number of times the intra-area SPF has run."; | "The number of times the intra-area SPF has run."; | |||
} | } | |||
leaf abr-count { | leaf abr-count { | |||
skipping to change at page 59, line 29 ¶ | skipping to change at page 60, line 25 ¶ | |||
type yang:counter32; | type yang:counter32; | |||
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 int32; | type uint32; | |||
description "The sum of the area-scope LSAs checksums."; | description "The sum of the area-scope LSAs checksums."; | |||
} | } | |||
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 int32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The sum of the LSA checksums of the LSA type."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
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; | |||
skipping to change at page 60, line 33 ¶ | skipping to change at page 61, line 30 ¶ | |||
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 int32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The sum of the LSA checksums of the LSA type."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-stat { | grouping neighbor-stat { | |||
description "Per-neighbor statistics."; | description "Per-neighbor statistics."; | |||
leaf nbr-event-count { | leaf nbr-event-count { | |||
skipping to change at page 61, line 35 ¶ | skipping to change at page 62, line 31 ¶ | |||
} | } | |||
grouping instance-fast-reroute-state { | grouping instance-fast-reroute-state { | |||
description "IPFRR state data grouping"; | description "IPFRR state data grouping"; | |||
container protected-routes { | container protected-routes { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
config false; | config false; | |||
description "Instance protection statistics"; | description "Instance protection statistics"; | |||
list af-stats { | list address-family-stats { | |||
key "af prefix alternate"; | key "address-family prefix alternate"; | |||
description "Per AF protected prefix information"; | description | |||
"Per Address Family protected prefix information"; | ||||
leaf af { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address-family"; | "Address-family"; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type string; | type string; | |||
description | description | |||
"Protected prefix."; | "Protected prefix."; | |||
} | } | |||
leaf alternate { | leaf alternate { | |||
skipping to change at page 64, line 4 ¶ | skipping to change at page 64, line 49 ¶ | |||
description | description | |||
"Metric from PLR to the alternate node"; | "Metric from PLR to the alternate node"; | |||
} | } | |||
leaf alternate-metric3 { | leaf alternate-metric3 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from alternate node to the destination"; | "Metric from alternate node to the destination"; | |||
} | } | |||
} | } | |||
} | } | |||
container unprotected-routes { | container unprotected-routes { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
config false; | config false; | |||
description "List of prefixes that are not protected"; | description "List of prefixes that are not protected"; | |||
list af-stats { | list address-family-stats { | |||
key "af prefix"; | key "address-family prefix"; | |||
description "Per AF unprotected prefix statistics."; | description | |||
"Per Address Family (AF) unprotected prefix statistics."; | ||||
leaf af { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description "Address-family"; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type string; | type string; | |||
description "Unprotected prefix."; | description "Unprotected prefix."; | |||
} | } | |||
} | } | |||
} | } | |||
list protection-statistics { | list protection-statistics { | |||
skipping to change at page 64, line 34 ¶ | skipping to change at page 65, line 32 ¶ | |||
list protection-statistics { | list protection-statistics { | |||
key frr-protection-method; | key frr-protection-method; | |||
config false; | config false; | |||
description "List protection method statistics"; | description "List protection method statistics"; | |||
leaf frr-protection-method { | leaf frr-protection-method { | |||
type string; | type string; | |||
description "Protection method used."; | description "Protection method used."; | |||
} | } | |||
list af-stats { | list address-family-stats { | |||
key af; | key address-family; | |||
description "Per AF protection statistics."; | description "Per Address Family protection statistics."; | |||
leaf af { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description "Address-family"; | |||
} | } | |||
leaf total-routes { | leaf total-routes { | |||
type uint32; | type uint32; | |||
description "Total prefixes."; | description "Total prefixes."; | |||
} | } | |||
leaf unprotected-routes { | leaf unprotected-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at page 66, line 17 ¶ | skipping to change at page 67, line 14 ¶ | |||
"LFA configuration."; | "LFA configuration."; | |||
} | } | |||
description | description | |||
"Interface IP Fast-reroute configuration."; | "Interface IP Fast-reroute configuration."; | |||
} | } | |||
} | } | |||
grouping interface-physical-link-config { | grouping interface-physical-link-config { | |||
description | description | |||
"Interface cost configuration that only applies to | "Interface cost configuration that only applies to | |||
physical interfaces and sham links."; | physical interfaces (non-virtual) and sham links."; | |||
leaf cost { | leaf cost { | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
description | description | |||
"Interface cost."; | "Interface cost."; | |||
} | } | |||
leaf mtu-ignore { | leaf mtu-ignore { | |||
if-feature mtu-ignore; | if-feature mtu-ignore; | |||
type boolean; | type boolean; | |||
skipping to change at page 66, line 50 ¶ | skipping to change at page 67, line 47 ¶ | |||
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 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
units seconds; | ||||
description | description | |||
"Interval between hello packets (seconds)."; | "Interval between hello packets (seconds)."; | |||
} | } | |||
leaf dead-interval { | leaf dead-interval { | |||
type uint32 { | type uint32 { | |||
range "1..2147483647"; | range "1..2147483647"; | |||
} | } | |||
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"; | |||
skipping to change at page 68, line 44 ¶ | skipping to change at page 69, line 41 ¶ | |||
description "Applied to OSPFv3 only."; | description "Applied to OSPFv3 only."; | |||
} | } | |||
if-feature ospfv3-authentication-ipsec; | if-feature ospfv3-authentication-ipsec; | |||
leaf sa { | leaf sa { | |||
type string; | type string; | |||
description | description | |||
"Security Association (SA) name."; | "Security Association (SA) name."; | |||
} | } | |||
} | } | |||
case auth-trailer-key-chain { | case auth-trailer-key-chain { | |||
if-feature key-chain; | ||||
leaf key-chain { | leaf key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"key-chain name."; | "key-chain name."; | |||
} | } | |||
} | } | |||
case auth-trailer-key { | case auth-trailer-key { | |||
leaf key { | leaf key { | |||
type string; | type string; | |||
description | description | |||
skipping to change at page 76, line 27 ¶ | skipping to change at page 77, line 24 ¶ | |||
uses interface-common-config; | uses interface-common-config; | |||
uses interface-physical-link-config; | uses interface-physical-link-config; | |||
} | } | |||
grouping sham-link-state { | grouping sham-link-state { | |||
description | description | |||
"OSPF sham link operational state."; | "OSPF sham link operational state."; | |||
uses interface-common-state; | uses interface-common-state; | |||
} | } | |||
grouping af-area-config { | grouping address-family-area-config { | |||
description | description | |||
"OSPF address-family specific area config state."; | "OSPF address-family specific area config state."; | |||
container ranges { | container ranges { | |||
description "Container for summary ranges"; | description "Container for summary ranges"; | |||
list range { | list range { | |||
key "prefix"; | key "prefix"; | |||
description | description | |||
"Summarize routes matching address/mask - | "Summarize routes matching address/mask - | |||
skipping to change at page 76, line 50 ¶ | skipping to change at page 77, line 47 ¶ | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"IPv4 or IPv6 prefix"; | "IPv4 or IPv6 prefix"; | |||
} | } | |||
leaf advertise { | leaf advertise { | |||
type boolean; | type boolean; | |||
description | description | |||
"Advertise or hide."; | "Advertise or hide."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type uint24 { | type ospf-metric { | |||
range "0..16777214"; | range "0..16777214"; | |||
} | } | |||
description | description | |||
"Advertised cost of summary route."; | "Advertised cost of summary route."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping area-common-config { | grouping area-common-config { | |||
description | description | |||
"OSPF area common configuration state."; | "OSPF area common configuration state."; | |||
leaf summary { | leaf summary { | |||
skipping to change at page 77, line 33 ¶ | skipping to change at page 78, line 30 ¶ | |||
description | description | |||
"Enable/Disable summary advertisement into the stub or | "Enable/Disable summary advertisement into the stub or | |||
NSSA area."; | NSSA area."; | |||
} | } | |||
leaf default-cost { | leaf default-cost { | |||
when "derived-from(../area-type,'ospf:stub-nssa-area')" { | when "derived-from(../area-type,'ospf:stub-nssa-area')" { | |||
description | description | |||
"Cost for LSA default route advertised into the | "Cost for LSA default route advertised into the | |||
stub or NSSA area."; | stub or NSSA area."; | |||
} | } | |||
type uint32 { | type ospf-metric; | |||
range "1..16777215"; | ||||
} | ||||
description | description | |||
"Set the summary default route cost for a | "Set the summary default route cost for a | |||
stub or NSSA area."; | stub or NSSA area."; | |||
} | } | |||
} | } | |||
grouping area-config { | grouping area-config { | |||
description | description | |||
"OSPF area configuration state."; | "OSPF area configuration state."; | |||
skipping to change at page 78, line 4 ¶ | skipping to change at page 78, line 48 ¶ | |||
description | description | |||
"OSPF area configuration state."; | "OSPF area configuration state."; | |||
leaf area-type { | leaf area-type { | |||
type identityref { | type identityref { | |||
base area-type; | base area-type; | |||
} | } | |||
default normal-area; | default normal-area; | |||
description | description | |||
"Area type."; | "Area type."; | |||
} | } | |||
uses area-common-config; | uses area-common-config; | |||
uses af-area-config; | uses address-family-area-config; | |||
} | } | |||
grouping area-state { | grouping area-state { | |||
description | description | |||
"OSPF area operational state."; | "OSPF area operational state."; | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per-area statistics"; | description "Per-area statistics"; | |||
uses area-stat; | uses area-stat; | |||
} | } | |||
skipping to change at page 80, line 4 ¶ | skipping to change at page 80, line 47 ¶ | |||
type uint32; | type uint32; | |||
description "Metric for this route."; | description "Metric for this route."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type route-type; | type route-type; | |||
description "Route type for this route."; | description "Route type for this route."; | |||
} | } | |||
leaf route-tag { | leaf route-tag { | |||
type uint32; | type uint32; | |||
description "Route tag for this route."; | description "Route tag for this route."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping ietf-spf-delay { | grouping ietf-spf-delay { | |||
leaf initial-delay { | leaf initial-delay { | |||
type uint16; | type rt-types:timer-value-milliseconds; | |||
units msec; | ||||
description | description | |||
"Delay used while in QUIET state (milliseconds)."; | "Delay used while in QUIET state (milliseconds)."; | |||
} | } | |||
leaf short-delay { | leaf short-delay { | |||
type uint16; | type rt-types:timer-value-milliseconds; | |||
units msec; | ||||
description | description | |||
"Delay used while in SHORT_WAIT state (milliseconds)."; | "Delay used while in SHORT_WAIT state (milliseconds)."; | |||
} | } | |||
leaf long-delay { | leaf long-delay { | |||
type uint16; | type rt-types:timer-value-milliseconds; | |||
units msec; | ||||
description | description | |||
"Delay used while in LONG_WAIT state (milliseconds)."; | "Delay used while in LONG_WAIT state (milliseconds)."; | |||
} | } | |||
leaf hold-down { | leaf hold-down { | |||
type uint16; | type rt-types:timer-value-milliseconds; | |||
units msec; | ||||
description | description | |||
"Timer used to consider an IGP stability period | "Timer used to consider an IGP stability period | |||
(milliseconds)."; | (milliseconds)."; | |||
} | } | |||
leaf time-to-learn { | leaf time-to-learn { | |||
type uint16; | type rt-types:timer-value-milliseconds; | |||
units msec; | ||||
description | description | |||
"Duration used to learn all the IGP events | "Duration used to learn all the IGP events | |||
related to a single component failure (milliseconds)."; | related to a single component failure (milliseconds)."; | |||
} | } | |||
leaf current-state { | leaf current-state { | |||
type enumeration { | type enumeration { | |||
enum "quiet" { | enum "quiet" { | |||
description "QUIET state"; | description "QUIET state"; | |||
} | } | |||
enum "short-wait" { | enum "short-wait" { | |||
skipping to change at page 81, line 4 ¶ | skipping to change at page 81, line 41 ¶ | |||
leaf current-state { | leaf current-state { | |||
type enumeration { | type enumeration { | |||
enum "quiet" { | enum "quiet" { | |||
description "QUIET state"; | description "QUIET state"; | |||
} | } | |||
enum "short-wait" { | enum "short-wait" { | |||
description "SHORT_WAIT state"; | description "SHORT_WAIT state"; | |||
} | } | |||
enum "long-wait" { | enum "long-wait" { | |||
description "LONG_WAIT state"; | description "LONG_WAIT state"; | |||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Current SPF backoff algorithm state."; | "Current SPF backoff algorithm state."; | |||
} | } | |||
leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
type uint16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | ||||
config false; | config false; | |||
description | description | |||
"Remaining time until time-to-learn timer fires."; | "Remaining time until time-to-learn timer fires."; | |||
} | } | |||
leaf remaining-hold-down { | leaf remaining-hold-down { | |||
type uint16; | type rt-types:timer-value-seconds16; | |||
units "seconds"; | ||||
config false; | config false; | |||
description | description | |||
"Remaining time until hold-down timer fires."; | "Remaining time until hold-down timer fires."; | |||
} | } | |||
leaf last-event-received { | leaf last-event-received { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of last SPF triggering event."; | "Time of last SPF triggering event."; | |||
} | } | |||
skipping to change at page 86, line 46 ¶ | skipping to change at page 87, line 33 ¶ | |||
"OSPF MPLS LDP config state."; | "OSPF MPLS LDP config state."; | |||
leaf igp-sync { | leaf igp-sync { | |||
if-feature ldp-igp-sync; | if-feature ldp-igp-sync; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable LDP IGP synchronization."; | "Enable LDP IGP synchronization."; | |||
} | } | |||
} | } | |||
} | } | |||
uses instance-fast-reroute-config; | uses instance-fast-reroute-config; | |||
uses instance-fast-reroute-state; | ||||
uses node-tag-config; | uses node-tag-config; | |||
} | } | |||
grouping instance-state { | grouping instance-state { | |||
description | description | |||
"OSPF instance operational state."; | "OSPF instance operational state."; | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
skipping to change at page 88, line 48 ¶ | skipping to change at page 89, line 32 ¶ | |||
topology in the stub or NSSA area."; | topology in the stub or NSSA area."; | |||
} | } | |||
leaf default-cost { | leaf default-cost { | |||
when "derived-from(" | when "derived-from(" | |||
+ "../../../../../areas/area[area-id=current()/../area-id]/" | + "../../../../../areas/area[area-id=current()/../area-id]/" | |||
+ "area-type, 'stub-nssa-area')" { | + "area-type, 'stub-nssa-area')" { | |||
description | description | |||
"Cost for LSA default route advertised into the | "Cost for LSA default route advertised into the | |||
topology into the stub or NSSA area."; | topology into the stub or NSSA area."; | |||
} | } | |||
type uint32 { | type ospf-metric; | |||
range "1..16777215"; | ||||
} | ||||
description | description | |||
"Set the summary default route cost for a | "Set the summary default route cost for a | |||
stub or NSSA area."; | stub or NSSA area."; | |||
} | } | |||
} | } | |||
grouping multi-topology-area-config { | grouping multi-topology-area-config { | |||
description | description | |||
"OSPF multi-topology area configuration state."; | "OSPF multi-topology area configuration state."; | |||
uses multi-topology-area-common-config; | uses multi-topology-area-common-config; | |||
uses af-area-config; | uses address-family-area-config; | |||
} | } | |||
grouping multi-topology-area-state { | grouping multi-topology-area-state { | |||
description | description | |||
"OSPF multi-topology area operational state."; | "OSPF multi-topology area operational state."; | |||
} | } | |||
grouping multi-topology-config { | grouping multi-topology-config { | |||
description | description | |||
"OSPF multi-topology configuration state."; | "OSPF multi-topology configuration state."; | |||
} | } | |||
grouping multi-topology-state { | grouping multi-topology-state { | |||
description | description | |||
"OSPF multi-topology operational state."; | "OSPF multi-topology operational state."; | |||
uses local-rib; | uses local-rib; | |||
skipping to change at page 92, line 31 ¶ | skipping to change at page 93, line 16 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
grouping lsa-log { | grouping lsa-log { | |||
description | description | |||
"Grouping for the LSA log."; | "Grouping for the LSA log."; | |||
container lsa-log { | container lsa-log { | |||
config false; | config false; | |||
description | description | |||
"This conatiner 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."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at page 93, line 36 ¶ | skipping to change at page 94, line 20 ¶ | |||
description "OSPF protocol ietf-routing module | description "OSPF protocol ietf-routing module | |||
control-plane-protocol augmentation."; | control-plane-protocol augmentation."; | |||
container ospf { | container ospf { | |||
description | description | |||
"OSPF protocol Instance"; | "OSPF protocol Instance"; | |||
uses ospf-config; | uses ospf-config; | |||
uses ospf-state; | uses ospf-state; | |||
leaf af { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address-family of the instance."; | "Address-family of the instance."; | |||
} | } | |||
uses instance-config; | uses instance-config; | |||
uses instance-state; | uses instance-state; | |||
container areas { | container areas { | |||
description "All areas."; | description "All areas."; | |||
skipping to change at page 100, line 18 ¶ | skipping to change at page 100, line 49 ¶ | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from( " | must "derived-from( " | |||
+ "/rt:routing/rt:control-plane-protocols/" | + "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol[rt:name=current()]/" | + "rt:control-plane-protocol[rt:name=current()]/" | |||
+ "rt:type, 'ospf:ospf-protocol')"; | + "rt:type, 'ospf:ospf-protocol')"; | |||
description | description | |||
"OSPF routing protocol instance name."; | "OSPF routing protocol instance name."; | |||
} | } | |||
leaf af { | leaf address-family { | |||
type leafref { | type leafref { | |||
path "/rt:routing/" | path "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "[rt:name=current()/../routing-protocol-name]/" | + "[rt:name=current()/../routing-protocol-name]/" | |||
+ "ospf:ospf/af"; | + "ospf:ospf/address-family"; | |||
} | } | |||
description | description | |||
"Address family of the OSPF instance."; | "Address family of the OSPF instance."; | |||
} | } | |||
} | } | |||
grouping notification-interface { | grouping notification-interface { | |||
description | description | |||
"This grouping provides interface information | "This grouping provides interface information | |||
for the OSPF interface specific notification."; | for the OSPF interface specific notification."; | |||
skipping to change at page 108, line 10 ¶ | skipping to change at page 108, line 41 ¶ | |||
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. | |||
This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
7. References | Author affiliation with The MITRE Corporation is provided for | |||
identification purposes only, and is not intended to convey or imply | ||||
MITRE's concurrence with, or support for, the positions, opinions or | ||||
viewpoints expressed. MITRE has approved this document for Public | ||||
Release, Distribution Unlimited, with Public Release Case Number | ||||
18-3194. | ||||
7. References | ||||
7.1. Normative References | 7.1. Normative References | |||
[I-D.ietf-bfd-yang] | [I-D.ietf-bfd-yang] | |||
Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | |||
G. Mirsky, "YANG Data Model for Bidirectional Forwarding | G. Mirsky, "YANG Data Model for Bidirectional Forwarding | |||
Detection (BFD)", draft-ietf-bfd-yang-17 (work in | Detection (BFD)", draft-ietf-bfd-yang-17 (work in | |||
progress), August 2018. | progress), August 2018. | |||
[RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", | [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", | |||
RFC 1793, DOI 10.17487/RFC1793, April 1995, | RFC 1793, DOI 10.17487/RFC1793, April 1995, | |||
skipping to change at page 114, line 13 ¶ | skipping to change at page 115, line 13 ¶ | |||
editor.org/info/rfc6987>. | editor.org/info/rfc6987>. | |||
Appendix A. Contributors' Addreses | Appendix A. Contributors' Addreses | |||
Dean Bogdanovic | Dean Bogdanovic | |||
Volta Networks, Inc. | Volta Networks, Inc. | |||
EMail: dean@voltanet.io | EMail: dean@voltanet.io | |||
Kiran Koushik Agrahara Sreenivasa | Kiran Koushik Agrahara Sreenivasa | |||
Cisco Systems | Verizon | |||
12515 Research Blvd, Bldg 4 | 500 W Dove Rd | |||
Austin, TX 78681 | Southlake, TX 76092 | |||
USA | USA | |||
EMail: kkoushik@cisco.com | EMail: kk@employees.org | |||
Authors' Addresses | Authors' Addresses | |||
Derek Yeung | Derek Yeung | |||
Arrcus | Arrcus | |||
EMail: derek@arrcus.com | EMail: derek@arrcus.com | |||
Yingzhen Qu | Yingzhen Qu | |||
Huawei | Huawei | |||
skipping to change at page 114, line 44 ¶ | skipping to change at page 115, line 44 ¶ | |||
Jeffrey Zhang | Jeffrey Zhang | |||
Juniper Networks | Juniper Networks | |||
10 Technology Park Drive | 10 Technology Park Drive | |||
Westford, MA 01886 | Westford, MA 01886 | |||
USA | USA | |||
EMail: zzhang@juniper.net | EMail: zzhang@juniper.net | |||
Ing-Wher Chen | Ing-Wher Chen | |||
MITRE Corporation | The MITRE Corporation | |||
EMail: ingwherchen@mitre.org | EMail: ingwherchen@mitre.org | |||
Acee Lindem | Acee Lindem | |||
Cisco Systems | Cisco Systems | |||
301 Midenhall Way | 301 Midenhall Way | |||
Cary, NC 27513 | Cary, NC 27513 | |||
EMail: acee@cisco.com | EMail: acee@cisco.com | |||
End of changes. 91 change blocks. | ||||
108 lines changed or deleted | 146 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/ |