draft-ietf-ospf-yang-20.txt | draft-ietf-ospf-yang-21.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: June 22, 2019 Huawei | Expires: July 28, 2019 Huawei | |||
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 | |||
December 19, 2018 | January 24, 2019 | |||
YANG Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
draft-ietf-ospf-yang-20 | draft-ietf-ospf-yang-21 | |||
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 June 22, 2019. | This Internet-Draft will expire on July 28, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 28 ¶ | skipping to change at page 2, line 28 ¶ | |||
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 notification . . . . . . . . . . . . . . . . . . . . 19 | 2.8. OSPF notification . . . . . . . . . . . . . . . . . . . . 19 | |||
2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 22 | 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 22 | |||
3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 115 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 115 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 116 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 117 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 117 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 122 | 7.2. Informative References . . . . . . . . . . . . . . . . . 123 | |||
Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 124 | Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 124 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 124 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 124 | |||
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 | |||
skipping to change at page 5, line 28 ¶ | skipping to change at page 5, line 28 ¶ | |||
accommodate the differences between OSPFv2 and OSPFv3. | accommodate the differences between OSPFv2 and OSPFv3. | |||
2.4. Optional Features | 2.4. Optional Features | |||
Optional features are beyond the basic OSPF configuration and it is | Optional features are beyond the basic OSPF configuration and it is | |||
the responsibility of each vendor to decide whether to support a | the responsibility of each vendor to decide whether to support a | |||
given feature on a particular device. | given feature on a particular device. | |||
This model defines the following optional features: | This model defines the following optional features: | |||
1. multi-topology: Support Multiple-Topolgy Routing (MTR) | 1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. | |||
[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. | |||
skipping to change at page 7, line 8 ¶ | skipping to change at page 7, line 8 ¶ | |||
[RFC6987]. | [RFC6987]. | |||
26. pe-ce-protocol: Support OSPF as a PE-CE protocol [RFC4577], | 26. pe-ce-protocol: Support OSPF as a PE-CE protocol [RFC4577], | |||
[RFC6565]. | [RFC6565]. | |||
27. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. | 27. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. | |||
28. bfd: Support BFD detection of OSPF neighbor reachability | 28. bfd: Support BFD detection of OSPF neighbor reachability | |||
[RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. | [RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. | |||
29. hygrid-interface: Support OSPF Hybrid Broadcast and Point-to- | 29. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- | |||
Point Interfaces [RFC6845]. | Point Interfaces [RFC6845]. | |||
30. two-part-metric: Support OSPF Two-Part Metric [RFC8042]. | 30. two-part-metric: Support OSPF Two-Part Metric [RFC8042]. | |||
It is expected that vendors will support additional features through | It is expected that vendors will support additional features through | |||
vendor-specific augmentations. | vendor-specific augmentations. | |||
2.5. OSPF Router Configuration/Operational State | 2.5. OSPF Router Configuration/Operational State | |||
The ospf container is the top level container in this data model. It | The ospf container is the top-level container in this data model. It | |||
represents an OSPF protocol engine instance and contains the router | represents an OSPF protocol engine instance and contains the router | |||
level configuration and operational state. The operational state | level configuration and operational state. The operational state | |||
includes the instance statistics, IETF SPF delay statistics, AS- | includes the instance statistics, IETF SPF delay statistics, AS- | |||
Scoped Link State Database, local RIB, SPF Log, and the LSA log. | Scoped Link State Database, local RIB, SPF Log, and the LSA log. | |||
module: ietf-ospf | module: ietf-ospf | |||
augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
rt:control-plane-protocol: | rt:control-plane-protocol: | |||
+--rw ospf | +--rw ospf | |||
. | . | |||
skipping to change at page 23, line 27 ¶ | skipping to change at page 23, line 27 ¶ | |||
-> /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], [RFC8294], and [RFC8476]. | [RFC6991], [RFC7770], [RFC8294], and [RFC8476]. | |||
<CODE BEGINS> file "ietf-ospf@2018-12-16.yang" | <CODE BEGINS> file "ietf-ospf@2019-01-24.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 25, line 11 ¶ | skipping to change at page 25, line 11 ¶ | |||
<mailto:ivandean@gmail.com> | <mailto:ivandean@gmail.com> | |||
Author: Kiran Agrahara Sreenivasa | Author: Kiran Agrahara Sreenivasa | |||
<mailto:kk@employees.org"; | <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 | |||
Datastore Architecture (NDMA) as described in RFC 8242. | Datastore Architecture (NDMA) 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 | 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-12-16 { | revision 2019-01-24 { | |||
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 28, line 18 ¶ | skipping to change at page 28, line 18 ¶ | |||
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 ospfv3-authentication-trailer { | feature ospfv3-authentication-trailer { | |||
description | description | |||
"Use OSPFv3 authentication trailer for OSPFv3 | "Use OSPFv3 authentication trailer for OSPFv3 | |||
authenticatiom."; | 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 44, line 24 ¶ | skipping to change at page 44, line 24 ¶ | |||
} | } | |||
description | description | |||
"List of functional capabilities."; | "List of functional capabilities."; | |||
} | } | |||
} | } | |||
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"; | ||||
} | ||||
description "Dynamic Hostname"; | description "Dynamic Hostname"; | |||
} | } | |||
} | } | |||
grouping sbfd-discriminator-tlv { | grouping sbfd-discriminator-tlv { | |||
description "Seamless BFD Descriminator TLV"; | description "Seamless BFD Discriminator TLV"; | |||
reference "RFC 7884 - S-BFD Descriminators in OSPF"; | reference "RFC 7884 - S-BFD Discriminators in OSPF"; | |||
list sbfd-discriminators { | list sbfd-discriminators { | |||
leaf sbfd-discriminator { | leaf sbfd-discriminator { | |||
type uint32; | type uint32; | |||
description "Individual S-BFD Discriminator."; | description "Individual S-BFD Discriminator."; | |||
} | } | |||
description | description | |||
"List of S-BFD Discriminators"; | "List of S-BFD Discriminators"; | |||
} | } | |||
} | } | |||
skipping to change at page 53, line 49 ¶ | skipping to change at page 53, line 51 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
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 Address | "When set, the router supports OSPFv3 Address | |||
Families as in RFC5838."; | 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."; | |||
} | } | |||
skipping to change at page 54, line 24 ¶ | skipping to change at page 54, line 26 ¶ | |||
"If set, the router is attached to an NSSA"; | "If set, the router is attached to an NSSA"; | |||
} | } | |||
bit E { | bit E { | |||
description | description | |||
"This bit describes the way AS-external LSAs | "This bit describes the way AS-external LSAs | |||
are flooded"; | are flooded"; | |||
} | } | |||
bit V6 { | bit V6 { | |||
description | description | |||
"If clear, the router/link should be excluded | "If clear, the router/link should be excluded | |||
from IPv6 routing calculaton"; | from IPv6 routing calculation"; | |||
} | } | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "OSPFv3 LSA options."; | description "OSPFv3 LSA options."; | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa-prefix { | grouping ospfv3-lsa-prefix { | |||
description | description | |||
"OSPFv3 LSA prefix."; | "OSPFv3 LSA prefix."; | |||
skipping to change at page 55, line 4 ¶ | skipping to change at page 55, line 6 ¶ | |||
type bits { | type bits { | |||
bit NU { | bit NU { | |||
description | description | |||
"When set, the prefix should be excluded | "When set, the prefix should be excluded | |||
from IPv6 unicast calculations."; | from IPv6 unicast calculations."; | |||
} | } | |||
bit LA { | bit LA { | |||
description | description | |||
"When set, the prefix is actually an IPv6 interface | "When set, the prefix is actually an IPv6 interface | |||
address of the Advertising Router."; | address of the Advertising Router."; | |||
} | } | |||
bit P { | bit P { | |||
description | description | |||
"When set, the NSSA area prefix should be | "When set, the NSSA area prefix should be | |||
translated to an AS External LSA and readvertised | translated to an AS External LSA and advertised | |||
by the translating NSSA Border Router."; | by the translating NSSA Border Router."; | |||
} | } | |||
bit DN { | bit DN { | |||
description | description | |||
"When set, the inter-area-prefix LSA or | "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."; | |||
} | } | |||
} | } | |||
mandatory true; | mandatory true; | |||
skipping to change at page 57, line 20 ¶ | skipping to change at page 57, line 22 ¶ | |||
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 router-link-type; | 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 | |||
4 - Virtual Link"; | 4 - Virtual Link"; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint16; | type uint16; | |||
description "Link Metric."; | description "Link Metric."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
skipping to change at page 64, line 20 ¶ | skipping to change at page 64, line 21 ¶ | |||
uses lsa-header; | uses lsa-header; | |||
} | } | |||
container body { | container body { | |||
description | description | |||
"Decoded OSPF LSA body data."; | "Decoded OSPF LSA body data."; | |||
uses ospfv3-lsa-body; | uses ospfv3-lsa-body; | |||
} | } | |||
} | } | |||
grouping lsa-common { | grouping lsa-common { | |||
description | description | |||
"Common fields for OSPF LSA represenation."; | "Common fields for OSPF LSA representation."; | |||
leaf decoded-completed { | leaf decoded-completed { | |||
type boolean; | type boolean; | |||
description | description | |||
"The OSPF LSA body is fully decoded."; | "The OSPF LSA body is fully decoded."; | |||
} | } | |||
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 69, line 14 ¶ | skipping to change at page 69, line 14 ¶ | |||
key "address-family prefix alternate"; | key "address-family prefix alternate"; | |||
description | description | |||
"Per Address Family protected prefix information"; | "Per Address Family protected prefix information"; | |||
leaf address-family { | 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 inet:ip-prefix; | |||
description | description | |||
"Protected prefix."; | "Protected prefix."; | |||
} | } | |||
leaf alternate { | leaf alternate { | |||
type string; | type inet:ip-address; | |||
description | description | |||
"Alternate nexthop for the prefix."; | "Alternate next hop for the prefix."; | |||
} | } | |||
leaf alternate-type { | leaf alternate-type { | |||
type enumeration { | type enumeration { | |||
enum equal-cost { | enum equal-cost { | |||
description | description | |||
"ECMP alternate."; | "ECMP alternate."; | |||
} | } | |||
enum lfa { | enum lfa { | |||
description | description | |||
"LFA alternate."; | "LFA alternate."; | |||
skipping to change at page 70, line 16 ¶ | skipping to change at page 70, line 16 ¶ | |||
} | } | |||
description | description | |||
"Type of alternate."; | "Type of alternate."; | |||
} | } | |||
leaf best { | leaf best { | |||
type boolean; | type boolean; | |||
description | description | |||
"Indicates if the alternate is the preferred."; | "Indicates if the alternate is the preferred."; | |||
} | } | |||
leaf non-best-reason { | leaf non-best-reason { | |||
type string; | type string { | |||
length "1..255"; | ||||
} | ||||
description | description | |||
"Information field to describe why the alternate | "Information field to describe why the alternate | |||
is not best."; | is not best."; | |||
} | } | |||
leaf protection-available { | leaf protection-available { | |||
type bits { | type bits { | |||
bit node-protect { | bit node-protect { | |||
position 0; | position 0; | |||
description | description | |||
"Node protection available."; | "Node protection available."; | |||
skipping to change at page 71, line 37 ¶ | skipping to change at page 71, line 40 ¶ | |||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix"; | key "address-family prefix"; | |||
description | description | |||
"Per Address Family (AF) unprotected prefix statistics."; | "Per Address Family (AF) unprotected prefix statistics."; | |||
leaf address-family { | 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 inet:ip-prefix; | |||
description "Unprotected prefix."; | description "Unprotected prefix."; | |||
} | } | |||
} | } | |||
} | } | |||
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"; | |||
skipping to change at page 74, line 43 ¶ | skipping to change at page 74, line 45 ¶ | |||
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"; | |||
description | description | |||
"The value MUST be greater than 'hello-internval'."; | "The value MUST be greater than '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."; | |||
} | } | |||
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 | |||
skipping to change at page 76, line 52 ¶ | skipping to change at page 77, line 5 ¶ | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv2-key-id { | leaf ospfv2-key-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Key Identifier"; | "Key Identifier"; | |||
} | } | |||
leaf ospfv2-key { | leaf ospfv2-key { | |||
type string; | type string; | |||
description | description | |||
"Key string in ASCII format."; | "OSPFv2 authentication key. The | |||
length of the key may be dependent on the | ||||
cryptographic algorithm. In cases where it is | ||||
not, a key length of at least 32 octets should | ||||
be supported to allow for interoperability | ||||
with strong keys."; | ||||
} | } | |||
leaf ospfv2-crypto-algorithm { | leaf ospfv2-crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with key."; | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at page 78, line 5 ¶ | skipping to change at page 78, line 12 ¶ | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv3-sa-id { | leaf ospfv3-sa-id { | |||
type uint16; | type uint16; | |||
description | description | |||
"Security Association (SA) Identifier"; | "Security Association (SA) Identifier"; | |||
} | } | |||
leaf ospfv3-key { | leaf ospfv3-key { | |||
type string; | type string; | |||
description | description | |||
"Key string in ASCII format."; | "OSPFv2 authentication key. The | |||
length of the key may be dependent on the | ||||
cryptographic algorithm. In cases where it is | ||||
not, a key length of at least 32 octets should | ||||
be supported to allow for interoperability | ||||
with strong keys."; | ||||
} | } | |||
leaf ospfv3-crypto-algorithm { | leaf ospfv3-crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with key."; | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at page 80, line 22 ¶ | skipping to change at page 80, line 35 ¶ | |||
"Neighbor Router ID, IPv4 address, or IPv6 address."; | "Neighbor Router ID, IPv4 address, or IPv6 address."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
description | description | |||
"Neighbor cost. Different implementations have different | "Neighbor cost. Different implementations have different | |||
default costs with some defaulting to a cost inversely | default costs with some defaulting to a cost inversely | |||
proportioal to the interface speed. Others will default | proportional to the interface speed. Others will | |||
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 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
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 | |||
skipping to change at page 89, line 8 ¶ | skipping to change at page 89, line 20 ¶ | |||
list next-hop { | list next-hop { | |||
key "next-hop"; | key "next-hop"; | |||
description "List of next hops for the route"; | description "List of next hops for the route"; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Nexthop address."; | description "Next hop address."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf metric { | leaf metric { | |||
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."; | |||
skipping to change at page 90, line 22 ¶ | skipping to change at page 90, line 34 ¶ | |||
} | } | |||
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 back-off algorithm state."; | |||
} | } | |||
leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
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 rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
skipping to change at page 100, line 30 ¶ | skipping to change at page 100, line 43 ¶ | |||
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."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier - Ppurely 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."; | |||
} | } | |||
enum intra { | enum intra { | |||
description | description | |||
"SPF computation was only for intra-area routes."; | "SPF computation was only for intra-area routes."; | |||
skipping to change at page 103, line 44 ¶ | skipping to change at page 104, line 9 ¶ | |||
path "../../../../area/area-id"; | path "../../../../area/area-id"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../area[area-id=current()]/area-type, " | + "../../../../area[area-id=current()]/area-type, " | |||
+ "'normal-area') and " | + "'normal-area') and " | |||
+ "../../../../area[area-id=current()]/area-id != " | + "../../../../area[area-id=current()]/area-id != " | |||
+ "'0.0.0.0'" { | + "'0.0.0.0'" { | |||
error-message "Virtual link transit area must " | error-message "Virtual link transit area must " | |||
+ "be non-zero."; | + "be non-zero."; | |||
description | description | |||
"Virtual-link trasit area must be | "Virtual-link transit area must be | |||
non-zero area."; | non-zero area."; | |||
} | } | |||
description | description | |||
"Virtual link tranist area ID."; | "Virtual link transit area ID."; | |||
} | } | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Virtual Link remote endpoint Router ID."; | "Virtual Link remote endpoint Router ID."; | |||
} | } | |||
uses virtual-link-config; | uses virtual-link-config; | |||
uses virtual-link-state; | uses virtual-link-state; | |||
} | } | |||
skipping to change at page 107, line 24 ¶ | skipping to change at page 107, line 39 ¶ | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type route-type; | type route-type; | |||
description "OSPF route type"; | description "OSPF route type"; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | |||
when "derived-from(rt:source-protocol, 'ospf:ospf-protocol')" { | when "derived-from(rt:source-protocol, 'ospf:ospf-protocol')" { | |||
description | description | |||
"This augmentation is only valid for a routes whose | "This augmentation is only valid for routes whose | |||
source protocol is OSPF."; | source protocol is OSPF."; | |||
} | } | |||
description | description | |||
"OSPF-specific route attributes."; | "OSPF-specific route attributes."; | |||
uses route-content; | uses route-content; | |||
} | } | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
skipping to change at page 111, line 31 ¶ | skipping to change at page 111, line 49 ¶ | |||
type packet-type; | type packet-type; | |||
description "OSPF packet type."; | description "OSPF packet type."; | |||
} | } | |||
leaf error { | leaf error { | |||
type enumeration { | type enumeration { | |||
enum "bad-version" { | enum "bad-version" { | |||
description "Bad version."; | description "Bad version."; | |||
} | } | |||
enum "area-mismatch" { | enum "area-mismatch" { | |||
description "Area mistmatch."; | description "Area mismatch."; | |||
} | } | |||
enum "unknown-nbma-nbr" { | enum "unknown-nbma-nbr" { | |||
description "Unknown NBMA neighbor."; | description "Unknown NBMA neighbor."; | |||
} | } | |||
enum "unknown-virtual-nbr" { | enum "unknown-virtual-nbr" { | |||
description "Unknown virtual link neighbor."; | description "Unknown virtual link neighbor."; | |||
} | } | |||
enum "auth-type-mismatch" { | enum "auth-type-mismatch" { | |||
description "Auth type mismatch."; | description "Auth type mismatch."; | |||
} | } | |||
enum "auth-failure" { | enum "auth-failure" { | |||
description "Auth failure."; | description "Auth failure."; | |||
} | } | |||
skipping to change at page 116, line 19 ¶ | skipping to change at page 116, line 35 ¶ | |||
considered sensitive or vulnerable in some network environments. It | considered sensitive or vulnerable in some network environments. It | |||
is thus important to control read access (e.g., via get, get-config, | is thus important to control read access (e.g., via get, get-config, | |||
or notification) to these data nodes. The exposure of the Link State | or notification) to these data nodes. The exposure of the Link State | |||
Database (LSDB) will expose the detailed topology of the network. | Database (LSDB) will expose the detailed topology of the network. | |||
This may be undesirable since both due to the fact that exposure may | This may be undesirable since both due to the fact that exposure may | |||
facilitate other attacks. Additionally, network operators may | facilitate other attacks. Additionally, network operators may | |||
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, authentification | 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. | |||
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 support the "clear-neighbor" and "clear-database" RPCs. If | |||
access too 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 | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
skipping to change at page 119, line 14 ¶ | skipping to change at page 119, line 38 ¶ | |||
[RFC5250] Berger, L., Bryskin, I., Zinin, A., and R. Coltun, "The | [RFC5250] Berger, L., Bryskin, I., Zinin, A., and R. Coltun, "The | |||
OSPF Opaque LSA Option", RFC 5250, DOI 10.17487/RFC5250, | OSPF Opaque LSA Option", RFC 5250, DOI 10.17487/RFC5250, | |||
July 2008, <https://www.rfc-editor.org/info/rfc5250>. | July 2008, <https://www.rfc-editor.org/info/rfc5250>. | |||
[RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | |||
IP Fast Reroute: Loop-Free Alternates", RFC 5286, | IP Fast Reroute: Loop-Free Alternates", RFC 5286, | |||
DOI 10.17487/RFC5286, September 2008, <https://www.rfc- | DOI 10.17487/RFC5286, September 2008, <https://www.rfc- | |||
editor.org/info/rfc5286>. | editor.org/info/rfc5286>. | |||
[RFC5309] Shen, N., Ed. and A. Zinin, Ed., "Point-to-Point Operation | ||||
over LAN in Link State Routing Protocols", RFC 5309, | ||||
DOI 10.17487/RFC5309, October 2008, <https://www.rfc- | ||||
editor.org/info/rfc5309>. | ||||
[RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., | [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., | |||
"Traffic Engineering Extensions to OSPF Version 3", | "Traffic Engineering Extensions to OSPF Version 3", | |||
RFC 5329, DOI 10.17487/RFC5329, September 2008, | RFC 5329, DOI 10.17487/RFC5329, September 2008, | |||
<https://www.rfc-editor.org/info/rfc5329>. | <https://www.rfc-editor.org/info/rfc5329>. | |||
[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | |||
for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | |||
<https://www.rfc-editor.org/info/rfc5340>. | <https://www.rfc-editor.org/info/rfc5340>. | |||
[RFC5613] Zinin, A., Roy, A., Nguyen, L., Friedman, B., and D. | [RFC5613] Zinin, A., Roy, A., Nguyen, L., Friedman, B., and D. | |||
skipping to change at page 123, line 14 ¶ | skipping to change at page 123, line 35 ¶ | |||
[RFC1765] Moy, J., "OSPF Database Overflow", RFC 1765, | [RFC1765] Moy, J., "OSPF Database Overflow", RFC 1765, | |||
DOI 10.17487/RFC1765, March 1995, <https://www.rfc- | DOI 10.17487/RFC1765, March 1995, <https://www.rfc- | |||
editor.org/info/rfc1765>. | editor.org/info/rfc1765>. | |||
[RFC4973] Srisuresh, P. and P. Joseph, "OSPF-xTE: Experimental | [RFC4973] Srisuresh, P. and P. Joseph, "OSPF-xTE: Experimental | |||
Extension to OSPF for Traffic Engineering", RFC 4973, | Extension to OSPF for Traffic Engineering", RFC 4973, | |||
DOI 10.17487/RFC4973, July 2007, <https://www.rfc- | DOI 10.17487/RFC4973, July 2007, <https://www.rfc- | |||
editor.org/info/rfc4973>. | editor.org/info/rfc4973>. | |||
[RFC5309] Shen, N., Ed. and A. Zinin, Ed., "Point-to-Point Operation | ||||
over LAN in Link State Routing Protocols", RFC 5309, | ||||
DOI 10.17487/RFC5309, October 2008, <https://www.rfc- | ||||
editor.org/info/rfc5309>. | ||||
[RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP | [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP | |||
Synchronization", RFC 5443, DOI 10.17487/RFC5443, March | Synchronization", RFC 5443, DOI 10.17487/RFC5443, March | |||
2009, <https://www.rfc-editor.org/info/rfc5443>. | 2009, <https://www.rfc-editor.org/info/rfc5443>. | |||
[RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", | [RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", | |||
RFC 5714, DOI 10.17487/RFC5714, January 2010, | RFC 5714, DOI 10.17487/RFC5714, January 2010, | |||
<https://www.rfc-editor.org/info/rfc5714>. | <https://www.rfc-editor.org/info/rfc5714>. | |||
[RFC6987] Retana, A., Nguyen, L., Zinin, A., White, R., and D. | [RFC6987] Retana, A., Nguyen, L., Zinin, A., White, R., and D. | |||
McPherson, "OSPF Stub Router Advertisement", RFC 6987, | McPherson, "OSPF Stub Router Advertisement", RFC 6987, | |||
DOI 10.17487/RFC6987, September 2013, <https://www.rfc- | DOI 10.17487/RFC6987, September 2013, <https://www.rfc- | |||
editor.org/info/rfc6987>. | editor.org/info/rfc6987>. | |||
Appendix A. Contributors' Addreses | Appendix A. Contributors' Addresses | |||
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 | |||
Verizon | Verizon | |||
500 W Dove Rd | 500 W Dove Rd | |||
Southlake, TX 76092 | Southlake, TX 76092 | |||
End of changes. 46 change blocks. | ||||
51 lines changed or deleted | 65 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/ |