draft-ietf-ospf-yang-24.txt | draft-ietf-ospf-yang-25.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: January 30, 2020 Huawei | Expires: February 6, 2020 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 | |||
July 29, 2019 | August 5, 2019 | |||
YANG Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
draft-ietf-ospf-yang-24 | draft-ietf-ospf-yang-25 | |||
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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 30, 2020. | This Internet-Draft will expire on February 6, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 27 ¶ | skipping to change at page 2, line 27 ¶ | |||
2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | |||
2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | |||
2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | |||
2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | 2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | |||
2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | |||
2.7. OSPF Interface Configuration/Operational State . . . . . 16 | 2.7. OSPF Interface Configuration/Operational State . . . . . 16 | |||
2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 | 2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 | |||
2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | |||
3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 115 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 117 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 119 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 119 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 119 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 117 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 119 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 123 | 7.2. Informative References . . . . . . . . . . . . . . . . . 125 | |||
Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 125 | Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 126 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 126 | |||
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 4, line 22 ¶ | skipping to change at page 4, line 22 ¶ | |||
ietf-ospf model defines a single instance of OSPF which may be | ietf-ospf model defines a single instance of OSPF which may be | |||
instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are | instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are | |||
instantiated as multiple control-plane protocols instances. | instantiated as multiple control-plane protocols instances. | |||
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 | |||
. | . | |||
. | . | |||
+--rw operation-mode? identityref | ||||
+--rw af? identityref | +--rw af? identityref | |||
. | . | |||
. | . | |||
+--rw areas | +--rw areas | |||
| +--rw area* [area-id] | | +--rw area* [area-id] | |||
| +--rw area-id area-id-type | | +--rw area-id area-id-type | |||
| . | | . | |||
| . | | . | |||
| +--rw virtual-links | | +--rw virtual-links | |||
| | +--rw virtual-link* [transit-area-id router-id] | | | +--rw virtual-link* [transit-area-id router-id] | |||
skipping to change at page 5, line 8 ¶ | skipping to change at page 5, line 5 ¶ | |||
. | . | |||
. | . | |||
The ospf module is intended to match to the vendor specific OSPF | The ospf module is intended to match to the vendor specific OSPF | |||
configuration construct that is identified by the local identifier | configuration construct that is identified by the local identifier | |||
'name'. | 'name'. | |||
The ospf container includes one OSPF protocol instance. The instance | The ospf container includes one OSPF protocol instance. The instance | |||
includes OSPF router level configuration and operational state. | includes OSPF router level configuration and operational state. | |||
The area and area/interface containers respectively define the OSPF | The area and area/interface containers define the OSPF configuration | |||
configuration and operational state for OSPF areas and interfaces. | and operational state for OSPF areas and interfaces respectively. | |||
The topologies container defines the OSPF configuration and | The topologies container defines the OSPF configuration and | |||
operational state for OSPF topologies when the multi-topology feature | operational state for OSPF topologies when the multi-topology feature | |||
is supported. | is supported. | |||
2.3. OSPFv2 and OSPFv3 | 2.3. OSPFv2 and OSPFv3 | |||
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 | |||
skipping to change at page 23, line 37 ¶ | skipping to change at page 23, line 35 ¶ | |||
-> /rt:routing/control-plane-protocols/ | -> /rt:routing/control-plane-protocols/ | |||
control-plane-protocol/name | control-plane-protocol/name | |||
3. OSPF YANG Module | 3. OSPF YANG Module | |||
The following RFCs and drafts are not referenced in the document text | The following RFCs and drafts are not referenced in the document text | |||
but are referenced in the ietf-ospf.yang module: [RFC0905], | but are referenced in the ietf-ospf.yang module: [RFC0905], | |||
[RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | |||
[RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | |||
<CODE BEGINS> file "ietf-ospf@2019-07-29.yang" | <CODE BEGINS> file "ietf-ospf@2019-08-05.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 24, line 47 ¶ | skipping to change at page 24, line 43 ¶ | |||
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."; | published RFC number for draft-ietf-bfd-yang."; | |||
} | } | |||
organization | organization | |||
"IETF LSR - Link State Routing Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
contact | contact | |||
"WG Web: <http://datatracker.ietf.org/group/lsr/> | "WG Web: <https://datatracker.ietf.org/group/lsr/> | |||
WG List: <mailto:lsr@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 | ||||
<mailto:zzhang@juniper.net> | Author: Salih K A | |||
<mailto:salih@juniper.net> | ||||
Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
<mailto:ingwherchen@mitre.org>"; | <mailto:ingwherchen@mitre.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. | |||
skipping to change at page 25, line 46 ¶ | skipping to change at page 25, line 44 ¶ | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
revision 2019-07-29 { | revision 2019-08-05 { | |||
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"; | |||
} | } | |||
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"; | |||
skipping to change at page 30, line 33 ¶ | skipping to change at page 30, line 30 ¶ | |||
identity ospfv2 { | identity ospfv2 { | |||
base "ospf"; | base "ospf"; | |||
description "OSPFv2 protocol"; | description "OSPFv2 protocol"; | |||
} | } | |||
identity ospfv3 { | identity ospfv3 { | |||
base "ospf"; | base "ospf"; | |||
description "OSPFv3 protocol"; | description "OSPFv3 protocol"; | |||
} | } | |||
identity operation-mode { | ||||
description | ||||
"OSPF operation mode."; | ||||
} | ||||
identity area-type { | identity area-type { | |||
description "Base identity for OSPF area type."; | description "Base identity for OSPF area type."; | |||
} | } | |||
identity normal-area { | identity normal-area { | |||
base area-type; | base area-type; | |||
description "OSPF normal area."; | description "OSPF normal area."; | |||
} | } | |||
identity stub-nssa-area { | identity stub-nssa-area { | |||
skipping to change at page 35, line 4 ¶ | skipping to change at page 34, line 44 ¶ | |||
description | description | |||
"Base identity for an LSA log reason."; | "Base identity for an LSA log reason."; | |||
} | } | |||
identity lsa-refresh { | identity lsa-refresh { | |||
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 receiving a refresh LSA."; | as a result of receiving a refresh LSA."; | |||
} | } | |||
identity lsa-content-change { | identity lsa-content-change { | |||
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 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."; | |||
} | } | |||
identity informational-capability { | ||||
description | ||||
"Base identity for router informational capabilities."; | ||||
} | ||||
identity graceful-restart { | ||||
base informational-capability; | ||||
description | ||||
"When set, the router is capable of restarting | ||||
gracefully."; | ||||
reference "RFC 3623: Graceful OSPF Restart | ||||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | ||||
identity graceful-restart-helper { | ||||
base informational-capability; | ||||
description | ||||
"When set, the router is capable of acting as | ||||
a graceful restart helper."; | ||||
reference "RFC 3623: Graceful OSPF Restart | ||||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | ||||
identity stub-router { | ||||
base informational-capability; | ||||
description | ||||
"When set, the router is capable of acting as | ||||
an OSPF Stub Router."; | ||||
reference "RFC 6987: OSPF Stub Router Advertisement"; | ||||
} | ||||
identity traffic-engineering { | ||||
base informational-capability; | ||||
description | ||||
"When set, the router is capable of OSPF traffic | ||||
engineering."; | ||||
reference "RFC 3630: Traffic Engineering (TE) Extensions | ||||
to OSPF Version 2 | ||||
RFC 5329: Traffic Engineering (TE) Extensions | ||||
to OSPF Version 3"; | ||||
} | ||||
identity p2p-over-lan { | ||||
base informational-capability; | ||||
description | ||||
"When set, the router is capable of OSPF Point-to-Point | ||||
over LAN."; | ||||
reference "RFC 5309: Point-to-Point Operation over LAN | ||||
in Link State Routing Protocols"; | ||||
} | ||||
identity experimental-te { | ||||
base informational-capability; | ||||
description | ||||
"When set, the router is capable of OSPF experimental | ||||
traffic engineering."; | ||||
reference | ||||
"RFC 4973: OSPF-xTE OSPF Experimental Traffic | ||||
Engineering"; | ||||
} | ||||
identity router-lsa-bit { | ||||
description | ||||
"Base identity for Router-LSA bits."; | ||||
} | ||||
identity vlink-end-bit { | ||||
base router-lsa-bit; | ||||
description | ||||
"V bit, when set, the router is an endpoint of one or | ||||
more virtual links."; | ||||
} | ||||
identity asbr-bit { | ||||
base router-lsa-bit; | ||||
description | ||||
"E bit, when set, the router is an AS Boundary | ||||
Router (ASBR)."; | ||||
} | ||||
identity abr-bit { | ||||
base router-lsa-bit; | ||||
description | ||||
"B bit, when set, the router is an Area Border | ||||
Router (ABR)."; | ||||
} | ||||
identity nssa-bit { | ||||
base router-lsa-bit; | ||||
description | ||||
"Nt bit, when set, the router is an NSSA border router | ||||
that is unconditionally translating NSSA LSAs into | ||||
AS-external LSAs."; | ||||
} | ||||
identity ospfv3-lsa-option { | ||||
description | ||||
"Base identity for OSPF LSA options flags."; | ||||
} | ||||
identity af-bit { | ||||
base ospfv3-lsa-option; | ||||
description | ||||
"AF bit, when set, the router supports OSPFv3 Address | ||||
Families as in RFC5838."; | ||||
} | ||||
identity dc-bit { | ||||
base ospfv3-lsa-option; | ||||
description | ||||
"DC bit, when set, the router supports demand circuits."; | ||||
} | ||||
identity r-bit { | ||||
base ospfv3-lsa-option; | ||||
description | ||||
"R bit, when set, the originator is an active router."; | ||||
} | ||||
identity n-bit { | ||||
base ospfv3-lsa-option; | ||||
description | ||||
"N bit, when set, the router is attached to an NSSA"; | ||||
} | ||||
identity e-bit { | ||||
base ospfv3-lsa-option; | ||||
description | ||||
"E bit, this bit describes the way AS-external LSAs | ||||
are flooded"; | ||||
} | ||||
identity v6-bit { | ||||
base ospfv3-lsa-option; | ||||
description | ||||
"V6 bit, if clear, the router/link should be excluded | ||||
from IPv6 routing calculation"; | ||||
} | ||||
identity ospfv3-prefix-option { | ||||
description | ||||
"Base identity for OSPFv3 Prefix Options."; | ||||
} | ||||
identity nu-bit { | ||||
base ospfv3-prefix-option; | ||||
description | ||||
"When set, the prefix should be excluded | ||||
from IPv6 unicast calculations."; | ||||
} | ||||
identity la-bit { | ||||
base ospfv3-prefix-option; | ||||
description | ||||
"When set, the prefix is actually an IPv6 interface | ||||
address of the Advertising Router."; | ||||
} | ||||
identity p-bit { | ||||
base ospfv3-prefix-option; | ||||
description | ||||
"When set, the NSSA area prefix should be | ||||
translated to an AS External LSA and advertised | ||||
by the translating NSSA Border Router."; | ||||
} | ||||
identity dn-bit { | ||||
base ospfv3-prefix-option; | ||||
description | ||||
"When set, the inter-area-prefix LSA or | ||||
AS-external LSA prefix has been advertised as an | ||||
L3VPN prefix."; | ||||
} | ||||
identity ospfv2-lsa-option { | ||||
description | ||||
"Baes idenity for OSPFv2 LSA option flags."; | ||||
} | ||||
identity mt-bit { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"When set, the router supports multi-topology as | ||||
in RFC 4915."; | ||||
} | ||||
identity v2-dc-bit { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"When set, the router supports demand circuits."; | ||||
} | ||||
identity v2-p-bit { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"Only used in type-7 LSA. When set, an NSSA | ||||
border router should translate the type-7 LSA | ||||
to a type-5 LSA."; | ||||
} | ||||
identity mc-flag { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"When set, the router supports MOSPF."; | ||||
} | ||||
identity v2-e-flag { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"This bit describes the way AS-external LSAs | ||||
are flooded."; | ||||
} | ||||
identity o-bit { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"When set, the router is opaque-capable as in | ||||
RFC 5250."; | ||||
} | ||||
identity v2-dn-bit { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"When a type 3, 5 or 7 LSA is sent from a PE to a CE, | ||||
the DN bit must be set. See RFC 4576."; | ||||
} | ||||
identity ospfv2-extended-prefix-flag { | ||||
description | ||||
"Base identity for extended prefix TLV flag."; | ||||
} | ||||
identity a-flag { | ||||
base ospfv2-extended-prefix-flag; | ||||
description | ||||
"Attach flag."; | ||||
} | ||||
identity node-flag { | ||||
base ospfv2-extended-prefix-flag; | ||||
description | ||||
"Node flag."; | ||||
} | ||||
typedef ospf-metric { | typedef ospf-metric { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"OSPF Metric - 24-bit unsigned integer."; | "OSPF Metric - 24-bit unsigned integer."; | |||
} | } | |||
typedef ospf-link-metric { | typedef ospf-link-metric { | |||
type uint16 { | type uint16 { | |||
skipping to change at page 43, line 4 ¶ | skipping to change at page 47, line 47 ¶ | |||
} | } | |||
} | } | |||
grouping node-tag-tlv { | grouping node-tag-tlv { | |||
description "OSPF Node Admin Tag TLV grouping."; | description "OSPF Node Admin Tag TLV grouping."; | |||
list node-tag { | list node-tag { | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node admin tag value."; | "Node admin tag value."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
} | } | |||
grouping router-capabilities-tlv { | grouping router-capabilities-tlv { | |||
description "OSPF Router Capabilities TLV grouping."; | description "OSPF Router Capabilities TLV grouping."; | |||
reference "RFC 7770: OSPF Router Capabilities"; | reference "RFC 7770: OSPF Router Capabilities"; | |||
leaf informational-flags { | container router-informational-capabilities { | |||
type bits { | leaf-list informational-capabilitiess { | |||
bit graceful-restart-capability { | type identityref { | |||
description | base informational-capability; | |||
"When set, the router is capable of restarting | ||||
gracefully."; | ||||
reference "RFC 3623: Graceful OSPF Restart | ||||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | ||||
bit graceful-restart-helper { | ||||
description | ||||
"When set, the router is capable of acting as | ||||
a graceful restart helper."; | ||||
reference "RFC 3623: Graceful OSPF Restart | ||||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | ||||
bit stub-router { | ||||
description | ||||
"When set, the router is capable of acting as | ||||
an OSPF Stub Router."; | ||||
reference "RFC 6987: OSPF Stub Router Advertisement"; | ||||
} | ||||
bit traffic-engineering { | ||||
description | ||||
"When set, the router is capable of OSPF traffic | ||||
engineering."; | ||||
reference "RFC 3630: Traffic Engineering (TE) Extensions | ||||
to OSPF Version 2 | ||||
RFC 5329: Traffic Engineering (TE) Extensions | ||||
to OSPF Version 3"; | ||||
} | ||||
bit p2p-over-lan { | ||||
description | ||||
"When set, the router is capable of OSPF Point-to-Point | ||||
over LAN."; | ||||
reference "RFC 5309: Point-to-Point Operation over LAN | ||||
in Link State Routing Protocols"; | ||||
} | ||||
bit experimental-te { | ||||
description | ||||
"When set, the router is capable of OSPF experimental | ||||
traffic engineering."; | ||||
reference | ||||
"RFC 4973: OSPF-xTE OSPF Experimental Traffic | ||||
Engineering"; | ||||
} | } | |||
description | ||||
"Informational capability list. This list will | ||||
contains the identities for the informational | ||||
capabilities supported by router."; | ||||
} | } | |||
description | description | |||
"OSPF Router Informational Flag Definitions."; | "OSPF Router Informational Flag Definitions."; | |||
} | } | |||
list informational-capabilities { | list informational-capabilities { | |||
leaf informational-flag { | leaf informational-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Informational flag."; | "Informational flag."; | |||
} | } | |||
skipping to change at page 45, line 31 ¶ | skipping to change at page 49, line 36 ¶ | |||
leaf msd-value { | leaf msd-value { | |||
type uint8; | type uint8; | |||
description | description | |||
"Maximum Segment Depth (MSD) value for the type"; | "Maximum Segment Depth (MSD) value for the type"; | |||
} | } | |||
description | description | |||
"List of Maximum Segment Depth (MSD) tuples"; | "List of Maximum Segment Depth (MSD) tuples"; | |||
} | } | |||
} | } | |||
grouping ospf-router-lsa-flags { | grouping ospf-router-lsa-bits { | |||
leaf flags { | container rputer-bits { | |||
type bits { | leaf-list rtr-lsa-bits { | |||
bit V { | type identityref { | |||
description | base router-lsa-bit; | |||
"When set, the router is an endpoint of one or | ||||
more virtual links."; | ||||
} | ||||
bit E { | ||||
description | ||||
"When set, the router is an AS Boundary Router | ||||
(ASBR)."; | ||||
} | ||||
bit B { | ||||
description | ||||
"When set, the router is an Area Border | ||||
Router (ABR)."; | ||||
} | ||||
bit Nt { | ||||
description | ||||
"When set, the router is an NSSA border router | ||||
that is unconditionally translating NSSA LSAs | ||||
into AS-external LSAs."; | ||||
} | } | |||
description | ||||
"Router LSA bits list. This list will contain | ||||
identities for the bits which are set in the | ||||
Router-LSA bits."; | ||||
} | } | |||
description "Router LSA Flags."; | description "Router LSA Bits."; | |||
} | } | |||
description | description | |||
"Router LSA Flags - Currently common for OSPFv2 and | "Router LSA Bits - Currently common for OSPFv2 and | |||
OSPFv3 but it may diverge with future augmentations."; | OSPFv3 but it may diverge with future augmentations."; | |||
} | } | |||
grouping ospfv2-router-link { | grouping ospfv2-router-link { | |||
description "OSPFv2 router link."; | description "OSPFv2 router link."; | |||
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; | |||
} | } | |||
description "Router-LSA Link ID"; | description "Router-LSA Link ID"; | |||
skipping to change at page 46, line 47 ¶ | skipping to change at page 50, line 39 ¶ | |||
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, " | |||
+ "'ospfv2-router-lsa')" { | + "'ospfv2-router-lsa')" { | |||
description | description | |||
"Only applies to Router-LSAs."; | "Only applies to Router-LSAs."; | |||
} | } | |||
description | description | |||
"Router LSA."; | "Router LSA."; | |||
uses ospf-router-lsa-flags; | uses ospf-router-lsa-bits; | |||
leaf num-of-links { | leaf num-of-links { | |||
type uint16; | type uint16; | |||
description "Number of links in Router LSA."; | description "Number of links in Router LSA."; | |||
} | } | |||
container links { | container links { | |||
description "All router Links."; | description "All router Links."; | |||
list link { | list link { | |||
description "Router LSA link."; | description "Router LSA link."; | |||
uses ospfv2-router-link; | uses ospfv2-router-link; | |||
container topologies { | container topologies { | |||
skipping to change at page 53, line 9 ¶ | skipping to change at page 56, line 48 ¶ | |||
value "5"; | value "5"; | |||
description "OSPF External route."; | description "OSPF External route."; | |||
} | } | |||
enum nssa { | enum nssa { | |||
value "7"; | value "7"; | |||
description "OSPF NSSA external route."; | description "OSPF NSSA external route."; | |||
} | } | |||
} | } | |||
description "Route type."; | description "Route type."; | |||
} | } | |||
leaf flags { | container flags { | |||
type bits { | leaf-list extended-prefix-flags { | |||
bit A { | type identityref { | |||
description | base ospfv2-extended-prefix-flag; | |||
"Attach flag."; | ||||
} | ||||
bit N { | ||||
description | ||||
"Node flag."; | ||||
} | } | |||
description | ||||
"Extended prefix TLV flags list. This list will | ||||
contain identities for the prefix flags that | ||||
are set in the extended prefix flags."; | ||||
} | } | |||
description "Prefix Flags."; | description "Prefix Flags."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Address prefix."; | description "Address prefix."; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
} | } | |||
skipping to change at page 53, line 47 ¶ | skipping to change at page 57, line 38 ¶ | |||
uses maximum-sid-depth-tlv; | uses maximum-sid-depth-tlv; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa-options { | grouping ospfv3-lsa-options { | |||
description "OSPFv3 LSA options"; | description "OSPFv3 LSA options"; | |||
leaf options { | container lsa-options { | |||
type bits { | leaf-list lsa-options { | |||
bit AF { | type identityref { | |||
description | base ospfv3-lsa-option; | |||
"When set, the router supports OSPFv3 Address | ||||
Families as in RFC5838."; | ||||
} | ||||
bit DC { | ||||
description | ||||
"When set, the router supports demand circuits."; | ||||
} | ||||
bit R { | ||||
description | ||||
"When set, the originator is an active router."; | ||||
} | ||||
bit N { | ||||
description | ||||
"If set, the router is attached to an NSSA"; | ||||
} | ||||
bit E { | ||||
description | ||||
"This bit describes the way AS-external LSAs | ||||
are flooded"; | ||||
} | ||||
bit V6 { | ||||
description | ||||
"If clear, the router/link should be excluded | ||||
from IPv6 routing calculation"; | ||||
} | } | |||
description | ||||
"OSPFv3 LSA Option flags list. This list will contain | ||||
the identities for the OSPFv3 LSA options that are | ||||
set for the LSA."; | ||||
} | } | |||
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."; | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"LSA Prefix."; | "LSA Prefix."; | |||
} | } | |||
leaf prefix-options { | container prefix-options { | |||
type bits { | leaf-list prefix-options { | |||
bit NU { | type identityref { | |||
description | base ospfv3-prefix-option; | |||
"When set, the prefix should be excluded | ||||
from IPv6 unicast calculations."; | ||||
} | ||||
bit LA { | ||||
description | ||||
"When set, the prefix is actually an IPv6 interface | ||||
address of the Advertising Router."; | ||||
} | ||||
bit P { | ||||
description | ||||
"When set, the NSSA area prefix should be | ||||
translated to an AS External LSA and advertised | ||||
by the translating NSSA Border Router."; | ||||
} | ||||
bit DN { | ||||
description | ||||
"When set, the inter-area-prefix LSA or | ||||
AS-external LSA prefix has been advertised as an | ||||
L3VPN prefix."; | ||||
} | } | |||
description | ||||
"OSPFv3 prefix option flag list. This list will | ||||
contain the identities for the OSPFv3 options | ||||
that are set for the OSPFv3 prefix."; | ||||
} | } | |||
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 ospf-metric; | type ospf-metric; | |||
description "Metric"; | description "Metric"; | |||
skipping to change at page 56, line 48 ¶ | skipping to change at page 59, line 48 ¶ | |||
grouping ospfv3-lsa-body { | grouping ospfv3-lsa-body { | |||
description "OSPFv3 LSA body."; | description "OSPFv3 LSA body."; | |||
container router { | container router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-router-lsa')" { | + "'ospfv3-router-lsa')" { | |||
description | description | |||
"Only applies to Router LSAs."; | "Only applies to Router LSAs."; | |||
} | } | |||
description "Router LSA."; | description "Router LSA."; | |||
uses ospf-router-lsa-flags; | uses ospf-router-lsa-bits; | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
container links { | container links { | |||
description "All router link."; | description "All router link."; | |||
list link { | list link { | |||
description "Router LSA link."; | description "Router LSA link."; | |||
leaf interface-id { | leaf interface-id { | |||
type uint32; | type uint32; | |||
description "Interface ID for link."; | description "Interface ID for link."; | |||
} | } | |||
skipping to change at page 62, line 36 ¶ | skipping to change at page 65, line 36 ¶ | |||
+ "'ospfv2-opaque-lsa-type') and " | + "'ospfv2-opaque-lsa-type') and " | |||
+ "opaque-id and opaque-type) or " | + "opaque-id and opaque-type) or " | |||
+ "(not(derived-from(type, " | + "(not(derived-from(type, " | |||
+ "'ospfv2-opaque-lsa-type')) " | + "'ospfv2-opaque-lsa-type')) " | |||
+ "and not(opaque-id) and not(opaque-type))" { | + "and not(opaque-id) and not(opaque-type))" { | |||
description | description | |||
"Opaque type and ID only apply to Opaque LSAs."; | "Opaque type and ID only apply to Opaque LSAs."; | |||
} | } | |||
description | description | |||
"Decoded OSPFv2 LSA header data."; | "Decoded OSPFv2 LSA header data."; | |||
leaf option { | ||||
type bits { | container lsa-options { | |||
bit MT { | leaf-list lsa-options { | |||
description | type identityref { | |||
"When set, the router supports multi-topology as | base ospfv2-lsa-option; | |||
in RFC 4915."; | ||||
} | ||||
bit DC { | ||||
description | ||||
"When set, the router supports demand circuits."; | ||||
} | ||||
bit P { | ||||
description | ||||
"Only used in type-7 LSA. When set, an NSSA | ||||
border router should translate the type-7 LSA | ||||
to a type-5 LSA."; | ||||
} | ||||
bit MC { | ||||
description | ||||
"When set, the router supports MOSPF."; | ||||
} | ||||
bit E { | ||||
description | ||||
"This bit describes the way AS-external LSAs | ||||
are flooded."; | ||||
} | ||||
bit O { | ||||
description | ||||
"When set, the router is opaque-capable as in | ||||
RFC 5250."; | ||||
} | ||||
bit DN { | ||||
description | ||||
"When a type 3, 5 or 7 LSA is sent from a PE to a CE, | ||||
the DN bit must be set. See RFC 4576."; | ||||
} | } | |||
description | ||||
"LSA option flags list. This list will contain | ||||
the identities for the identities for the OSPFv2 | ||||
LSA options that are set."; | ||||
} | } | |||
mandatory true; | description | |||
description "LSA options."; | "LSA options."; | |||
} | } | |||
leaf lsa-id { | leaf lsa-id { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
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."; | |||
} | } | |||
skipping to change at page 97, line 32 ¶ | skipping to change at page 100, line 8 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
uses spf-log; | uses spf-log; | |||
uses lsa-log; | uses lsa-log; | |||
} | } | |||
grouping ospf-config { | ||||
description | ||||
"OSPF top configuration state - currently empty."; | ||||
} | ||||
grouping ospf-state { | ||||
description | ||||
"OSPF top operational state - currently empty."; | ||||
} | ||||
grouping multi-topology-area-common-config { | grouping multi-topology-area-common-config { | |||
description | description | |||
"OSPF multi-topology area common configuration state."; | "OSPF multi-topology area common configuration state."; | |||
leaf summary { | leaf summary { | |||
when "derived-from(../../../area-type, 'stub-nssa-area')" { | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
description | description | |||
"Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub/NSSA area."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
skipping to change at page 98, line 28 ¶ | skipping to change at page 100, line 42 ¶ | |||
} | } | |||
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 address-family-area-config; | uses address-family-area-config; | |||
} | } | |||
grouping multi-topology-config { | ||||
description | ||||
"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; | |||
} | } | |||
grouping multi-topology-interface-config { | grouping multi-topology-interface-config { | |||
description | description | |||
"OSPF multi-topology configuration state."; | "OSPF multi-topology configuration state."; | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost for this topology."; | "Interface cost for this topology."; | |||
} | } | |||
} | } | |||
grouping multi-topology-interface-state { | ||||
description | ||||
"OSPF multi-topology operational state."; | ||||
} | ||||
grouping ospfv3-interface-config { | grouping ospfv3-interface-config { | |||
description | description | |||
"OSPFv3 interface specific configuration state."; | "OSPFv3 interface specific configuration state."; | |||
leaf instance-id { | leaf instance-id { | |||
type uint8 { | type uint8 { | |||
range "0 .. 31"; | range "0 .. 31"; | |||
} | } | |||
description | description | |||
"OSPFv3 instance ID."; | "OSPFv3 instance ID."; | |||
skipping to change at page 102, line 41 ¶ | skipping to change at page 104, line 44 ¶ | |||
"This augmentation is only valid for a routing protocol | "This augmentation is only valid for a routing protocol | |||
instance of OSPF (type 'ospfv2' or 'ospfv3')."; | instance of OSPF (type 'ospfv2' or 'ospfv3')."; | |||
} | } | |||
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-state; | ||||
leaf address-family { | 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 105, line 30 ¶ | skipping to change at page 107, line 30 ¶ | |||
must coincide with the routing-instance | must coincide with the routing-instance | |||
address-family."; | address-family."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../rt:ribs/rt:rib/rt:name"; | path "../../../../../../rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description "RIB name corresponding to the OSPF | description "RIB name corresponding to the OSPF | |||
topology."; | topology."; | |||
} | } | |||
uses multi-topology-config; | ||||
uses multi-topology-state; | uses multi-topology-state; | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf/" | + "rt:control-plane-protocol/ospf/" | |||
+ "areas/area" { | + "areas/area" { | |||
when "derived-from-or-self(../../../rt:type, " | when "derived-from-or-self(../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
skipping to change at page 106, line 46 ¶ | skipping to change at page 108, line 45 ¶ | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../../../" | path "../../../../../../../../../../" | |||
+ "rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description | description | |||
"Single topology enabled on this interface."; | "Single topology enabled on this interface."; | |||
} | } | |||
uses multi-topology-interface-config; | uses multi-topology-interface-config; | |||
uses multi-topology-interface-state; | ||||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf/" | + "rt:control-plane-protocol/ospf/" | |||
+ "areas/area/interfaces/interface" { | + "areas/area/interfaces/interface" { | |||
when "derived-from-or-self(../../../../../rt:type, " | when "derived-from-or-self(../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'ospfv3')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
} | } | |||
description | description | |||
"OSPFv3 interface specific configuration state | "OSPFv3 interface specific configuration state | |||
augmentation."; | augmentation."; | |||
uses ospfv3-interface-config; | uses ospfv3-interface-config; | |||
uses ospfv3-interface-state; | uses ospfv3-interface-state; | |||
End of changes. 46 change blocks. | ||||
224 lines changed or deleted | 324 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/ |