rfc9587.original   rfc9587.txt 
Internet A. Lindem Internet Engineering Task Force (IETF) A. Lindem
Internet-Draft LabN Consulting, L.L.C. Request for Comments: 9587 LabN Consulting, L.L.C.
Intended status: Standards Track S. Palani Category: Standards Track S. Palani
Expires: 5 August 2024 Microsoft ISSN: 2070-1721 Microsoft
Y. Qu Y. Qu
Futurewei Technologies Futurewei Technologies
2 February 2024 June 2024
YANG Model for OSPFv3 Extended LSAs YANG Data Model for OSPFv3 Extended Link State Advertisements (LSAs)
draft-ietf-lsr-ospfv3-extended-lsa-yang-29
Abstract Abstract
This document defines a YANG data model augmenting the IETF OSPF YANG This document defines a YANG data model augmenting the IETF OSPF YANG
model to provide support for OSPFv3 Link State Advertisement (LSA) data model (RFC 9129) to provide support for OSPFv3 Link State
Extensibility as defined in RFC 8362. OSPFv3 Extended LSAs provide Advertisement (LSA) Extensibility as defined in RFC 8362. OSPFv3
extensible TLV-based LSAs for the base LSA types defined in RFC 5340. Extended LSAs provide extensible TLV-based LSAs for the base LSA
types defined in RFC 5340.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 5 August 2024. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9587.
Copyright Notice Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the Copyright (c) 2024 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 (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Overview
2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Tree Diagrams
3. OSPFv3 Extended LSAs . . . . . . . . . . . . . . . . . . . . 3 3. OSPFv3 Extended LSAs
4. OSPFv3 Extended LSA Yang Module . . . . . . . . . . . . . . . 7 4. OSPFv3 Extended LSA YANG Module
5. Security Considerations . . . . . . . . . . . . . . . . . . . 25 5. Security Considerations
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 6. IANA Considerations
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 7. References
8. Normative References . . . . . . . . . . . . . . . . . . . . 26 7.1. Normative References
9. Informative References . . . . . . . . . . . . . . . . . . . 28 7.2. Informative References
Appendix A. Configuration Example . . . . . . . . . . . . . . . 28 Appendix A. Configuration Example
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 Acknowledgements
Authors' Addresses
1. Overview 1. Overview
YANG [RFC7950] is a data definition language used to define the YANG [RFC7950] is a data definition language used to define the
contents of a conceptual data store that allows networked devices to contents of a conceptual datastore that allows networked devices to
be managed using NETCONF [RFC6241]. YANG is proving relevant beyond be managed using NETCONF [RFC6241]. YANG is proving relevant beyond
its initial confines, as bindings to other interfaces (e.g., ReST) its initial confines as bindings to other interfaces (e.g., RESTCONF
and encodings other than XML (e.g., JSON) are being defined. [RFC8040]) and encodings other than XML (e.g., JSON) are being
Furthermore, YANG data models can be used as the basis for defined. 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 Command-Line Interfaces
APIs. (CLIs) and programmatic APIs.
This document defines a YANG data model augmenting the IETF OSPF YANG This document defines a YANG data model augmenting the IETF OSPF YANG
model [RFC9129], which itself augments [RFC8349], to provide support data model [RFC9129], which itself augments [RFC8349], to provide
for configuration and operational state for OSPFv3 Extended LSAs as support for configuration and operational state for OSPFv3 Extended
defined in [RFC8362]. Link State Advertisements (LSAs) as defined in [RFC8362].
The YANG modules in this document conform to the Network Management The YANG module specified in this document conforms to the Network
Datastore Architecture (NMDA) [RFC8342]. Management Datastore Architecture (NMDA) [RFC8342].
2. Tree Diagrams 2. Tree Diagrams
This document uses the graphical representation of data models This document uses the graphical representation of data models
defined in [RFC8340]. defined in [RFC8340].
3. OSPFv3 Extended LSAs 3. OSPFv3 Extended LSAs
This document defines a model for the OSPFv3 Extended LSA feature. This document defines a YANG data model for the OSPFv3 Extended LSA
It is an augmentation of the OSPF base model provided support for feature. It is an augmentation of the OSPF base model [RFC9129] to
OSPFv3 Link State Advertisement (LSA) Extensibility [RFC8362]. provide support for OSPFv3 LSA Extensibility [RFC8362]. OSPFv3
OSPFv3 Extended LSAs provide extensible TLV-based LSAs for the base Extended LSAs provide extensible TLV-based LSAs for the base LSA
LSA types defined in [RFC5340]. types defined in [RFC5340].
The OSPFv3 Extended LSA YANG module requires support for the OSPF The OSPFv3 Extended LSA YANG module requires support for the OSPF
base model[RFC9129] which defines basic OSPF configuration and state. base model, which defines basic OSPF configuration and state. The
The OSPF YANG model augments the ietf-routing YANG model defined in OSPF YANG data model augments the "ietf-routing" YANG data model
[RFC8349]. The augmentations defined in the ietf-ospfv3-extended-lsa defined in [RFC8349]. The augmentations defined in the "ietf-ospfv3-
YANG module provide global configuration, area configuration, and extended-lsa" YANG module provide global configuration, area
addition of OSPFv3 Extended LSAs to the Link State Database (LSDB) configuration, and the addition of OSPFv3 Extended LSAs to the Link
operational state. State Database (LSDB) operational state.
module: ietf-ospfv3-extended-lsa module: ietf-ospfv3-extended-lsa
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf: /rt:control-plane-protocol/ospf:ospf:
+--rw extended-lsa-support? boolean +--rw extended-lsa-support? boolean
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:areas /rt:control-plane-protocol/ospf:ospf/ospf:areas
/ospf:area: /ospf:area:
+--rw extended-lsa-support? boolean +--rw extended-lsa-support? boolean
skipping to change at page 4, line 6 skipping to change at line 138
+--ro intra-prefix-tlv +--ro intra-prefix-tlv
| +--ro metric? ospf:ospf-metric | +--ro metric? ospf:ospf-metric
| +--ro prefix? inet:ip-prefix | +--ro prefix? inet:ip-prefix
| +--ro prefix-options | +--ro prefix-options
| | +--ro prefix-options* identityref | | +--ro prefix-options* identityref
| +--ro sub-tlvs* [] | +--ro sub-tlvs* []
| +--ro unknown-sub-tlv | +--ro unknown-sub-tlv
| +--ro type? uint16 | +--ro type? uint16
| +--ro length? uint16 | +--ro length? uint16
| +--ro value? yang:hex-string | +--ro value? yang:hex-string
+--ro ipv6-link-local-tlv +--ro ipv6-link-local-addr-tlv
| +--ro link-local-address? inet:ipv6-address | +--ro link-local-address? inet:ipv6-address
| +--ro sub-tlvs* [] | +--ro sub-tlvs* []
| +--ro unknown-sub-tlv | +--ro unknown-sub-tlv
| +--ro type? uint16 | +--ro type? uint16
| +--ro length? uint16 | +--ro length? uint16
| +--ro value? yang:hex-string | +--ro value? yang:hex-string
+--ro ipv4-link-local-tlv +--ro ipv4-link-local-addr-tlv
+--ro link-local-address? inet:ipv4-address +--ro link-local-address? inet:ipv4-address
+--ro sub-tlvs* [] +--ro sub-tlvs* []
+--ro unknown-sub-tlv +--ro unknown-sub-tlv
+--ro type? uint16 +--ro type? uint16
+--ro length? uint16 +--ro length? uint16
+--ro value? yang:hex-string +--ro value? yang:hex-string
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area
/ospf:database/ospf:area-scope-lsa-type /ospf:database/ospf:area-scope-lsa-type
/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
skipping to change at page 7, line 17 skipping to change at line 293
| +--ro forwarding-address? inet:ipv6-address | +--ro forwarding-address? inet:ipv6-address
+--ro ipv4-fwd-addr-sub-tlv +--ro ipv4-fwd-addr-sub-tlv
| +--ro forwarding-address? inet:ipv4-address | +--ro forwarding-address? inet:ipv4-address
+--ro route-tag-sub-tlv +--ro route-tag-sub-tlv
| +--ro route-tag? uint32 | +--ro route-tag? uint32
+--ro unknown-sub-tlv +--ro unknown-sub-tlv
+--ro type? uint16 +--ro type? uint16
+--ro length? uint16 +--ro length? uint16
+--ro value? yang:hex-string +--ro value? yang:hex-string
4. OSPFv3 Extended LSA Yang Module 4. OSPFv3 Extended LSA YANG Module
The following RFCs and drafts are not referenced in the document text The following RFCs are not referenced in the document text but are
but are referenced in the ietf-ospfv3-extended-lsa.yang module: referenced in the "ietf-ospfv3-extended-lsa.yang" module: [RFC6991]
[RFC6991], [RFC8294]. and [RFC8294].
<CODE BEGINS> file "ietf-ospfv3-extended-lsa@2024-02-02.yang" <CODE BEGINS> file "ietf-ospfv3-extended-lsa@2024-05-16.yang"
module ietf-ospfv3-extended-lsa { module ietf-ospfv3-extended-lsa {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa"; namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa";
prefix ospfv3-e-lsa; prefix ospfv3-e-lsa;
import ietf-routing-types { import ietf-routing-types {
prefix rt-types; prefix rt-types;
reference reference
"RFC 8294: Common YANG Data Types for the Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
skipping to change at page 7, line 48 skipping to change at line 324
} }
import ietf-routing { import ietf-routing {
prefix rt; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing "RFC 8349: A YANG Data Model for Routing
Management (NMDA Version)"; Management (NMDA Version)";
} }
import ietf-ospf { import ietf-ospf {
prefix ospf; prefix ospf;
reference reference
"RFC 9129: A YANG Data Model for OSPF Protocol"; "RFC 9129: YANG Data Model for the OSPF Protocol";
} }
organization organization
"IETF LSR - Link State Routing Working Group"; "IETF LSR - Link State Routing Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/lsr/> "WG Web: <https://datatracker.ietf.org/wg/lsr/>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee.ietf@gmail.com> <mailto:acee.ietf@gmail.com>
Author: Sharmila Palani Author: Sharmila Palani
<mailto:sharmila.palani@microsoft.com> <mailto:sharmila.palani@microsoft.com>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yingzhen.ietf@gmail.com>"; <mailto:yingzhen.ietf@gmail.com>";
description description
"This YANG module defines the configuration "This YANG module defines the configuration and operational
and operational state for OSPFv3 Extended LSAs, which is state for OSPFv3 Extended LSAs, which is common across all
common across all of the vendor implementations. The vendor implementations. The semantics and encodings for
semantics and encodings for OSPFv3 Extended LSAs are OSPFv3 Extended LSAs are described in RFC 8362. OSPFv3
described in RFC 8362. OSPFv3 Extended LSAs provide extensible Extended LSAs provide extensible TLV-based LSAs for the base
TLV-based LSAs for the base LSA types defined in RFC 5340. LSA types defined in RFC 5340.
This YANG model conforms to the Network Management This YANG data model conforms to the Network Management
Datastore Architecture (NMDA) as described in RFC 8342. Datastore Architecture (NMDA) as described in RFC 8342.
Copyright (c) 2024 IETF Trust and the persons identified as Copyright (c) 2024 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Revised BSD License set the license terms contained in, the Revised BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX This version of this YANG module is part of RFC 9587; see the
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself RFC itself for full legal notices.";
for full legal notices.";
reference reference
"RFC XXXX - YANG Model for OSPFv3 Extended LSAs"; "RFC 9587: YANG Data Model for OSPFv3 Extended Link State
Advertisements (LSAs)";
revision 2024-02-02 { revision 2024-05-16 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for OSPFv3 Extended LSAs."; "RFC 9587: YANG Data Model for OSPFv3 Extended Link State
Advertisements (LSAs)";
} }
/* /*
* OSPFv3 Extended LSA Type Identities * OSPFv3 Extended LSA Type Identities
*/ */
identity ospfv3-e-router-lsa { identity ospfv3-e-router-lsa {
base ospf:ospfv3-lsa-type; base ospf:ospfv3-lsa-type;
description description
"OSPFv3 Extended Router LSA - Type 0xA021"; "OSPFv3 E-Router-LSA - Type 0xA021.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.1"; Extensibility, Section 4.1";
} }
identity ospfv3-e-network-lsa { identity ospfv3-e-network-lsa {
base ospf:ospfv3-lsa-type; base ospf:ospfv3-lsa-type;
description description
"OSPFv3 Extended Network LSA - Type 0xA022"; "OSPFv3 E-Network-LSA - Type 0xA022.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.2"; Extensibility, Section 4.2";
} }
identity ospfv3-e-summary-lsa-type { identity ospfv3-e-summary-lsa-type {
base ospf:ospfv3-lsa-type; base ospf:ospfv3-lsa-type;
description description
"OSPFv3 Extended Summary LSA types"; "OSPFv3 Extended Summary LSA types:
E-Inter-Area-Prefix-LSA and E-Inter-Area-Router-LSA.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.3 and Section 4.4"; Extensibility, Sections 4.3 and 4.4";
} }
identity ospfv3-e-inter-area-prefix-lsa { identity ospfv3-e-inter-area-prefix-lsa {
base ospfv3-e-summary-lsa-type; base ospfv3-e-summary-lsa-type;
description description
"OSPFv3 Extended Inter-area Prefix LSA - Type 0xA023"; "OSPFv3 E-Inter-Area-Prefix-LSA - Type 0xA023.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.3"; Extensibility, Section 4.3";
} }
identity ospfv3-e-inter-area-router-lsa { identity ospfv3-e-inter-area-router-lsa {
base ospfv3-e-summary-lsa-type; base ospfv3-e-summary-lsa-type;
description description
"OSPFv3 Extended Inter-area Router LSA - Type 0xA024"; "OSPFv3 E-Inter-Area-Router-LSA - Type 0xA024.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.4"; Extensibility, Section 4.4";
} }
identity ospfv3-e-external-lsa-type { identity ospfv3-e-external-lsa-type {
base ospf:ospfv3-lsa-type; base ospf:ospfv3-lsa-type;
description description
"OSPFv3 Extended External LSA types"; "OSPFv3 Extended External LSA types:
E-AS-External-LSA and E-NSSA-LSA (where
NSSA expands to Not-So-Stubby-Area).";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.5 and Section 4.6"; Extensibility, Sections 4.5 and 4.6";
} }
identity ospfv3-e-as-external-lsa { identity ospfv3-e-as-external-lsa {
base ospfv3-e-external-lsa-type; base ospfv3-e-external-lsa-type;
description description
"OSPFv3 Extended AS-External LSA - Type 0xC025"; "OSPFv3 E-AS-External-LSA - Type 0xC025.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.5"; Extensibility, Section 4.5";
} }
identity ospfv3-e-nssa-lsa { identity ospfv3-e-nssa-lsa {
base ospfv3-e-external-lsa-type; base ospfv3-e-external-lsa-type;
description description
"OSPFv3 Extended Not-So-Stubby-Area (NSSA) LSA - "OSPFv3 E-NSSA-LSA - Type 0xA027.";
Type 0xA027";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.6"; Extensibility, Section 4.6";
} }
identity ospfv3-e-link-lsa { identity ospfv3-e-link-lsa {
base ospf:ospfv3-lsa-type; base ospf:ospfv3-lsa-type;
description description
"OSPFv3 Extended Link LSA - Type 0x8028"; "OSPFv3 E-Link-LSA - Type 0x8028.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.7"; Extensibility, Section 4.7";
} }
identity ospfv3-e-intra-area-prefix-lsa { identity ospfv3-e-intra-area-prefix-lsa {
base ospf:ospfv3-lsa-type; base ospf:ospfv3-lsa-type;
description description
"OSPFv3 Extended Intra-area Prefix LSA - Type 0xA029"; "OSPFv3 E-Intra-Area-Prefix-LSA - Type 0xA029.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.8"; Extensibility, Section 4.8";
} }
identity ospfv3-e-prefix-option { identity ospfv3-e-prefix-option {
description description
"Base identity for OSPFv3 Prefix Options."; "Base identity for OSPFv3 prefix options.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.1"; Extensibility, Section 3.1";
} }
identity nu-bit { identity nu-bit {
base ospfv3-e-prefix-option; base ospfv3-e-prefix-option;
description description
"When set, the prefix should be excluded "When set, the prefix should be excluded
from IPv6 unicast calculations."; from IPv6 unicast calculations.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.1 Extensibility, Section 3.1
RFC 5340: OSPF for IPv6, Appendix A.4.1.1"; RFC 5340: OSPF for IPv6, Appendix A.4.1.1";
} }
identity la-bit { identity la-bit {
base ospfv3-e-prefix-option; base ospfv3-e-prefix-option;
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.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.1 Extensibility, Section 3.1
RFC 5340: OSPF for IPv6, Appendix A.4.1.1"; RFC 5340: OSPF for IPv6, Appendix A.4.1.1";
} }
identity p-bit { identity p-bit {
base ospfv3-e-prefix-option; base ospfv3-e-prefix-option;
description description
"When set, the NSSA area prefix should be "When set, the NSSA prefix should be translated to an
translated to an AS External LSA and advertised E-AS-External-LSA and advertised by the translating
by the translating NSSA Border Router."; NSSA Border Router.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.1 Extensibility, Section 3.1
RFC 5340: OSPF for IPv6, Appendix A.4.1.1"; RFC 5340: OSPF for IPv6, Appendix A.4.1.1";
} }
identity dn-bit { identity dn-bit {
base ospfv3-e-prefix-option; base ospfv3-e-prefix-option;
description description
"When set, the inter-area-prefix LSA or "When set, the E-Inter-Area-Prefix-LSA or
AS-external LSA prefix has been advertised as an E-AS-External-LSA prefix has been advertised as an
L3VPN prefix."; L3VPN prefix.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.1 Extensibility, Section 3.1
RFC 5340: OSPF for IPv6, Appendix A.4.1.1"; RFC 5340: OSPF for IPv6, Appendix A.4.1.1";
} }
identity n-bit { identity n-bit {
base ospfv3-e-prefix-option; base ospfv3-e-prefix-option;
description description
"When set, the prefix is a host address that identifies "When set, the prefix is a host address that identifies
the advertising router."; the advertising router.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.1 Extensibility, Section 3.1
RFC 5340: OSPF for IPv6, Appendix A.4.1.1"; RFC 5340: OSPF for IPv6, Appendix A.4.1.1";
} }
identity ospfv3-e-external-prefix-option { identity ospfv3-e-external-prefix-option {
description description
"Base identity for OSPFv3 External Prefix Options."; "Base identity for OSPFv3 external prefix options.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.6"; Extensibility, Section 3.6";
} }
identity e-bit { identity e-bit {
base ospfv3-e-external-prefix-option; base ospfv3-e-external-prefix-option;
description description
"When the E-bit is set, the metric specified is a Type 2 "When the E-bit is set, the metric specified is a Type 2
external metric. This means the metric is considered larger external metric. This means the metric is considered larger
than any intra-AS path. When the E-bit is clear, the than any intra-AS path. When the E-bit is clear, the
specified metric is a Type 1 external metric. This means specified metric is a Type 1 external metric. This means
that it is expressed in the same units as other LSAs (i.e., that it is expressed in the same units as other LSAs (i.e.,
the same units as the interface costs in router-LSAs)."; the same units as the interface costs in Router-LSAs).";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.6"; Extensibility, Section 3.6";
} }
grouping unknown-sub-tlv { grouping unknown-sub-tlv {
description description
"Unknown TLV grouping"; "Unknown TLV grouping.";
container unknown-sub-tlv { container unknown-sub-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown External TLV Sub-TLV"; "Unknown External TLV sub-TLV.";
} }
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 6.3"; Extensibility, Section 6.3";
} }
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.";
} }
container prefix-options { container prefix-options {
leaf-list prefix-options { leaf-list prefix-options {
type identityref { type identityref {
base ospfv3-e-prefix-option; base ospfv3-e-prefix-option;
} }
description description
"OSPFv3 prefix option flag list. This list will "OSPFv3 prefix options flag list. This list will
contain the identities for the OSPFv3 options contain the identities for the OSPFv3 options
that are set for the OSPFv3 prefix."; that are set for the OSPFv3 prefix.";
} }
description description
"Prefix options."; "Prefix options.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.1"; Extensibility, Section 3.1";
} }
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3"; Extensibility, Section 3";
} }
grouping external-prefix-tlv { grouping external-prefix-tlv {
container external-prefix-tlv { container external-prefix-tlv {
description description
"External Prefix LSA TLV"; "External-Prefix TLV.";
container flags { container flags {
leaf-list ospfv3-e-external-prefix-bits { leaf-list ospfv3-e-external-prefix-bits {
type identityref { type identityref {
base ospfv3-e-external-prefix-option; base ospfv3-e-external-prefix-option;
} }
description description
"OSPFv3 external-prefix TLV bits list."; "OSPFv3 External-Prefix TLV bits list.";
} }
description description
"External Prefix Flags"; "External prefix flags.";
} }
leaf metric { leaf metric {
type ospf:ospf-metric; type ospf:ospf-metric;
description description
"External Prefix Metric"; "External prefix metric.";
} }
uses ospfv3-lsa-prefix; uses ospfv3-lsa-prefix;
list sub-tlvs { list sub-tlvs {
description description
"External Prefix TLV Sub-TLVs"; "External-Prefix TLV sub-TLVs.";
container ipv6-fwd-addr-sub-tlv { container ipv6-fwd-addr-sub-tlv {
description description
"IPv6 Forwarding address Sub-TLV for E-AS-External and "IPv6-Forwarding-Address sub-TLV for
E-NSSA LSAs for the IPv6 address family."; E-AS-External-LSAs and E-NSSA-LSAs for the IPv6
address family.";
leaf forwarding-address { leaf forwarding-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 Forwarding Address"; "IPv6 forwarding address.";
} }
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.10"; Extensibility, Section 3.10";
} }
container ipv4-fwd-addr-sub-tlv { container ipv4-fwd-addr-sub-tlv {
description description
"IPv4 Forwarding address Sub-TLV for E-AS-External and "IPv4-Forwarding-Address sub-TLV for
E-NSSA LSAs for the IPv4 address family."; E-AS-External-LSAs and E-NSSA-LSAs for the IPv4
address family.";
leaf forwarding-address { leaf forwarding-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 Forwarding Address"; "IPv4 forwarding address.";
} }
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.11"; Extensibility, Section 3.11";
} }
container route-tag-sub-tlv { container route-tag-sub-tlv {
description description
"Route Tag Sub-TLV"; "Route-Tag sub-TLV.";
leaf route-tag { leaf route-tag {
type uint32; type uint32;
description description
"Route Tag"; "Route tag.";
} }
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.12"; Extensibility, Section 3.12";
} }
uses unknown-sub-tlv; uses unknown-sub-tlv;
} }
} }
description description
"External Prefix TLV Grouping"; "External-Prefix TLV grouping.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.6"; Extensibility, Section 3.6";
} }
grouping intra-area-prefix-tlv { grouping intra-area-prefix-tlv {
container intra-prefix-tlv { container intra-prefix-tlv {
description description
"Intra-Area Prefix LSA TLV"; "Intra-Area-Prefix-LSA TLV.";
leaf metric { leaf metric {
type ospf:ospf-metric; type ospf:ospf-metric;
description description
"Intra-Area Prefix Metric"; "Intra-Area Prefix metric.";
} }
uses ospfv3-lsa-prefix; uses ospfv3-lsa-prefix;
list sub-tlvs { list sub-tlvs {
description description
"Intra-Area Prefix TLV Sub-TLVs"; "Intra-Area-Prefix TLV sub-TLVs.";
uses unknown-sub-tlv; uses unknown-sub-tlv;
} }
} }
description description
"Intra-Area Prefix TLV Grouping"; "Intra-Area-Prefix TLV grouping.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.7"; Extensibility, Section 3.7";
} }
grouping ipv6-link-local-tlv { grouping ipv6-link-local-addr-tlv {
container ipv6-link-local-tlv { container ipv6-link-local-addr-tlv {
description description
"IPv6 Link-Local LSA TLV"; "IPv6 Link-Local Address TLV.";
leaf link-local-address { leaf link-local-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 Link Local address"; "IPv6 Link-Local address.";
} }
list sub-tlvs { list sub-tlvs {
description description
"IPv6 Link Local TLV Sub-TLVs"; "IPv6 Link-Local Address TLV sub-TLVs.";
uses unknown-sub-tlv; uses unknown-sub-tlv;
} }
} }
description description
"IPv6 Link-Local TLV Grouping"; "IPv6 Link-Local Address TLV grouping.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.8"; Extensibility, Section 3.8";
} }
grouping ipv4-link-local-tlv { grouping ipv4-link-local-addr-tlv {
container ipv4-link-local-tlv { container ipv4-link-local-addr-tlv {
description description
"IPv4 Link-Local LSA TLV"; "IPv4 Link-Local Address TLV.";
leaf link-local-address { leaf link-local-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 Link Local address"; "IPv4 Link-Local address.";
} }
list sub-tlvs { list sub-tlvs {
description description
"IPv4 Link Local TLV Sub-TLVs"; "IPv4 Link-Local Address TLV sub-TLVs.";
uses unknown-sub-tlv; uses unknown-sub-tlv;
} }
} }
description description
"IPv4 Link-Local TLV Grouping"; "IPv4 Link-Local Address TLV grouping.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 3.9"; Extensibility, Section 3.9";
} }
/* Configuration */ /* Configuration */
augment "/rt:routing/rt:control-plane-protocols" augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/ospf:ospf" { + "/rt:control-plane-protocol/ospf:ospf" {
when "../rt:type = 'ospf:ospfv3'" { when "../rt:type = 'ospf:ospfv3'" {
description description
"This augments the OSPFv3 routing protocol when used."; "This augments the OSPFv3 routing protocol when used.";
} }
description description
"This augments the OSPFv3 protocol instance-level configuration "This augments the OSPFv3 protocol instance-level
with Extended LSA support. When enabled, OSPFv3 Extended LSAs configuration with Extended LSA support. When enabled,
will be advertised and OSPFv3 Legacy LSAs will not be OSPFv3 Extended LSAs will be advertised and OSPFv3 Legacy
advertised. When disabled, OSPFv3 Legacy LSAs will be LSAs will not be advertised. When disabled, OSPFv3 Legacy
advertised. However, OSPFv3 Extended LSAs could still be LSAs will be advertised. However, OSPFv3 Extended LSAs
advertised in Extended LSA Sparse-Mode to support could still be advertised in Extended LSA Sparse Mode to
incrementally-deployed features as described insection 6.2 of support incrementally deployed features as described in
RFC 8362."; Section 6.2 of RFC 8362.";
leaf extended-lsa-support { leaf extended-lsa-support {
type boolean; type boolean;
default "false"; default "false";
description description
"Enable OSPFv3 Extended LSA Support for the OSPFv3 "Enable OSPFv3 Extended LSA support for the OSPFv3
domain"; domain.";
reference reference
"RFC 8362 - OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Appendix A - Global Configuration Support"; Extensibility, Appendix A - Global Configuration Support";
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/ospf:" + "rt:control-plane-protocol/ospf:ospf/ospf:"
+ "areas/ospf:area" { + "areas/ospf:area" {
when "../../../rt:type = 'ospf:ospfv3'" { when "../../../rt:type = 'ospf:ospfv3'" {
description description
"This augments the OSPFv3 protocol area-level configuration "This augments the OSPFv3 protocol area-level
when used."; configuration when used.";
} }
description description
"This augments the OSPFv3 protocol area-level "This augments the OSPFv3 protocol area-level
configuration with Extended LSA support."; configuration with Extended LSA support.";
leaf extended-lsa-support { leaf extended-lsa-support {
type boolean; type boolean;
must "derived-from(../ospf:area-type,'stub-nssa-area') or " must "derived-from(../ospf:area-type,'stub-nssa-area') or "
+ "(current() = 'true') or " + "(current() = 'true') or "
+ "(../../../extended-lsa-support = 'false')" { + "(../../../extended-lsa-support = 'false')" {
description description
"For regular areas, i.e., areas where AS-scoped LSAs "For regular areas, i.e., areas where AS-scoped LSAs
are flooded, disabling AreaExtendedLSASupport at the are flooded, disabling AreaExtendedLSASupport at the
area level is prohibited when ExtendedLSASupport is area level is prohibited when ExtendedLSASupport is
enabled at the instance level. AS-External LSAs enabled at the instance level. E-AS-External-LSAs
are flooded into all OSPFv3 regular areas (i.e., not are flooded into all OSPFv3 regular areas (i.e., not
a stub or an NSSA area) and disabling support at the a stub or an NSSA), and disabling support at the
area level is not possible."; area level is not possible.";
} }
description description
"This augments the OSPFv3 protocol area-level configuration "This augments the OSPFv3 protocol area-level
with Extended LSA support. When enabled, OSPFv3 Extended configuration with Extended LSA support. When enabled,
LSAs will be advertised and OSPFv3 Legacy LSAs will not be OSPFv3 Extended LSAs will be advertised and OSPFv3 Legacy
advertised. When disabled, OSPFv3 Legacy LSAs will be LSAs will not be advertised. When disabled, OSPFv3
advertised. However, OSPFv3 Extended LSAs could still be Legacy LSAs will be advertised. However, OSPFv3 Extended
advertised in Extended LSA Sparse-Mode to support LSAs could still be advertised in Extended LSA Sparse
incrementally-deployed features as described insection Mode to support incrementally deployed features as
6.2 of RFC 8362. If not specified, Extended LSA support described in Section 6.2 of RFC 8362. If not specified,
status is inherited from the instance-level configuration."; Extended LSA support status is inherited from the
instance-level configuration.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Appendix B - Area Configuration Support"; Extensibility, Appendix B - Area Configuration Support";
} }
} }
/* /*
* Link State Database (LSDB) Augmentations * Link State Database (LSDB) Augmentations
*/ */
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/" + "ospf:ospf/ospf:areas/ospf:area/"
+ "ospf:interfaces/ospf:interface/ospf:database/" + "ospf:interfaces/ospf:interface/ospf:database/"
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body" { + "ospf:ospfv3/ospf:body" {
when "../../../../../../../../../../../" when "../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv3'" { + "rt:type = 'ospf:ospfv3'" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"This augmentation adds OSPFv3 Link-Scoped Extended LSAs "This augmentation adds OSPFv3 Link-scoped Extended LSAs
to the operational state for an interface Link State to the operational state for an interface Link State
Database (LSDB)."; Database (LSDB).";
container e-link { container e-link {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-link-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-link-lsa'" {
description description
"Only applies to Extended Link LSAs."; "Only applies to E-Link-LSAs.";
} }
description description
"E-Link LSA"; "E-Link-LSA contents.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.7"; Extensibility, Section 4.7";
leaf rtr-priority { leaf rtr-priority {
type uint8; type uint8;
description description
"Router Priority for the interface."; "Router priority for the interface.";
} }
uses ospf:ospfv3-lsa-options; uses ospf:ospfv3-lsa-options;
list e-link-tlvs { list e-link-tlvs {
description description
"E-Link LSA TLVs"; "E-Link-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-Link TLV"; "Unknown E-Link TLV.";
} }
uses intra-area-prefix-tlv; uses intra-area-prefix-tlv;
uses ipv6-link-local-tlv; uses ipv6-link-local-addr-tlv;
uses ipv4-link-local-tlv; uses ipv4-link-local-addr-tlv;
} }
} }
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body" { + "ospf:ospfv3/ospf:body" {
when "../../../../../../../../../" when "../../../../../../../../../"
+ "rt:type = 'ospf:ospfv3'" { + "rt:type = 'ospf:ospfv3'" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"This augmentation adds OSPFv3 Area-Scoped Extended LSAs "This augmentation adds OSPFv3 Area-scoped Extended LSAs
to the operational state for an area Link State to the operational state for an area LSDB.";
Database (LSDB).";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4"; Extensibility, Section 4";
container e-router { container e-router {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-router-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-router-lsa'" {
description description
"Only valid for OSPFv3 Extended-Router LSAs"; "Only valid for OSPFv3 E-Router-LSAs.";
} }
description description
"OSPv3 Extended Router LSA"; "OSPFv3 E-Router-LSA contents.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.1"; Extensibility, Section 4.1";
uses ospf:ospf-router-lsa-bits; uses ospf:ospf-router-lsa-bits;
uses ospf:ospfv3-lsa-options; uses ospf:ospfv3-lsa-options;
list e-router-tlvs { list e-router-tlvs {
description description
"E-Router LSA TLVs"; "E-Router-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-Router TLV"; "Unknown E-Router TLV.";
} }
container link-tlv { container link-tlv {
description description
"E-Router LSA TLV"; "E-Router-LSA TLV.";
leaf interface-id { leaf interface-id {
type uint32; type uint32;
description description
"Interface ID for link"; "Interface ID for link.";
} }
leaf neighbor-interface-id { leaf neighbor-interface-id {
type uint32; type uint32;
description description
"Neighbor's Interface ID for link"; "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 description
"Neighbor's Router ID for link"; "Neighbor's Router ID for link.";
} }
leaf type { leaf type {
type ospf:router-link-type; type ospf:router-link-type;
description description
"Link type: 1 - Point-to-Point Link "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 ospf:ospf-link-metric; type ospf:ospf-link-metric;
description description
"Link Metric"; "Link metric.";
} }
list sub-tlvs { list sub-tlvs {
description description
"Link TLV Sub-TLVs"; "Link TLV sub-TLVs.";
uses unknown-sub-tlv; uses unknown-sub-tlv;
} }
} }
} }
} }
container e-network { container e-network {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-network-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-network-lsa'" {
description description
"Only applies to E-Network LSAs."; "Only applies to E-Network-LSAs.";
} }
description description
"Extended Network LSA"; "E-Network-LSA contents.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.2"; Extensibility, Section 4.2";
uses ospf:ospfv3-lsa-options; uses ospf:ospfv3-lsa-options;
list e-network-tlvs { list e-network-tlvs {
description description
"E-Network LSA TLVs"; "E-Network-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-Network TLV"; "Unknown E-Network TLV.";
} }
container attached-router-tlv { container attached-router-tlv {
description description
"Attached Router TLV"; "Attached-Routers TLV.";
leaf-list adjacent-neighbor-router-id { leaf-list adjacent-neighbor-router-id {
type rt-types:router-id; type rt-types:router-id;
description description
"Adjacent Neighbor's Router ID"; "Adjacent neighbor's Router ID.";
} }
} }
} }
} }
container e-nssa { container e-nssa {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-nssa-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-nssa-lsa'" {
description description
"Only applies to E-NSSA LSAs."; "Only applies to E-NSSA-LSAs.";
} }
description
"E-NSSA-LSA contents.";
list e-external-tlvs { list e-external-tlvs {
description description
"E-NSSA LSA TLVs"; "E-NSSA-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-External TLV"; "Unknown E-External TLV.";
} }
uses external-prefix-tlv; uses external-prefix-tlv;
} }
description
"E-NSSA LSA.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.6"; Extensibility, Section 4.6";
} }
container e-inter-area-prefix { container e-inter-area-prefix {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-inter-area-prefix-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-inter-area-prefix-lsa'" {
description description
"Only applies to E-Inter-Area-Prefix LSAs."; "Only applies to E-Inter-Area-Prefix-LSAs.";
} }
description description
"Extended Inter-Area Prefix LSA"; "E-Inter-Area-Prefix-LSA contents.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.3"; Extensibility, Section 4.3";
list e-inter-prefix-tlvs { list e-inter-prefix-tlvs {
description description
"E-Inter-Area-Prefix LSA TLVs"; "E-Inter-Area-Prefix-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-Inter-Area-Prefix TLV"; "Unknown E-Inter-Area-Prefix TLV.";
} }
container inter-prefix-tlv { container inter-prefix-tlv {
description description
"Unknown E-Inter-Area-Prefix LSA TLV"; "Unknown E-Inter-Area-Prefix-LSA TLV.";
leaf metric { leaf metric {
type ospf:ospf-metric; type ospf:ospf-metric;
description description
"Inter-Area Prefix Metric"; "Inter-Area Prefix metric.";
} }
uses ospfv3-lsa-prefix; uses ospfv3-lsa-prefix;
list sub-tlvs { list sub-tlvs {
description description
"Inter-Area Prefix TLV Sub-TLVs"; "Inter-Area-Prefix TLV sub-TLVs.";
uses unknown-sub-tlv; uses unknown-sub-tlv;
} }
} }
} }
} }
container e-inter-area-router { container e-inter-area-router {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-inter-area-router-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-inter-area-router-lsa'" {
description description
"Only applies to E-Inter-Area-Router LSAs."; "Only applies to E-Inter-Area-Router-LSAs.";
} }
description description
"Extended Inter-Area Router LSA"; "E-Inter-Area-Router-LSA contents.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.4"; Extensibility, Section 4.4";
list e-inter-router-tlvs { list e-inter-router-tlvs {
description description
"E-Inter-Area-Router LSA TLVs"; "E-Inter-Area-Router-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-Inter-Area-Router TLV"; "Unknown E-Inter-Area-Router TLV.";
} }
container inter-router-tlv { container inter-router-tlv {
description description
"Unknown E-Inter-Area-Router LSA TLV"; "Unknown E-Inter-Area-Router-LSA TLV.";
uses ospf:ospfv3-lsa-options; uses ospf:ospfv3-lsa-options;
leaf metric { leaf metric {
type ospf:ospf-metric; type ospf:ospf-metric;
description description
"Inter-Area Router Metric"; "Inter-Area Router metric.";
} }
leaf destination-router-id { leaf destination-router-id {
type rt-types:router-id; type rt-types:router-id;
description description
"Destination Router ID"; "Destination Router ID.";
} }
list sub-tlvs { list sub-tlvs {
description description
"Inter-Area Router TLV Sub-TLVs"; "Inter-Area-Router TLV sub-TLVs.";
uses unknown-sub-tlv; uses unknown-sub-tlv;
} }
} }
} }
} }
container e-intra-area-prefix { container e-intra-area-prefix {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-intra-area-prefix-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-intra-area-prefix-lsa'" {
description description
"Only applies to E-Intra-Area-Prefix LSAs."; "Only applies to E-Intra-Area-Prefix-LSAs.";
} }
description description
"E-Intra-Area-Prefix LSA"; "E-Intra-Area-Prefix-LSA contents.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.8"; Extensibility, Section 4.8";
leaf referenced-ls-type { leaf referenced-ls-type {
type uint16; type uint16;
description description
"Referenced Link State type"; "Referenced Link State type.";
} }
leaf referenced-link-state-id { leaf referenced-link-state-id {
type uint32; type uint32;
description description
"Referenced Link State ID"; "Referenced Link State ID.";
} }
leaf referenced-adv-router { leaf referenced-adv-router {
type rt-types:router-id; type rt-types:router-id;
description description
"Referenced Advertising Router"; "Referenced advertising router.";
} }
list e-intra-prefix-tlvs { list e-intra-prefix-tlvs {
description description
"E-Intra-Area-Prefix LSA TLVs"; "E-Intra-Area-Prefix-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-Intra-Area-Prefix TLV"; "Unknown E-Intra-Area-Prefix TLV.";
} }
uses intra-area-prefix-tlv; uses intra-area-prefix-tlv;
} }
} }
} }
augment "/rt:routing/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:database/" + "ospf:ospf/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
+ "ospf:ospfv3/ospf:body" { + "ospf:ospfv3/ospf:body" {
when "../../../../../../../" when "../../../../../../../"
+ "rt:type = 'ospf:ospfv3'" { + "rt:type = 'ospf:ospfv3'" {
description description
"This augmentation is only valid for OSPFv3."; "This augmentation is only valid for OSPFv3.";
} }
description description
"This augmentation adds OSPFv3 AS-Scoped Extended LSAs "This augmentation adds OSPFv3 AS-scoped Extended LSAs to
to the operational state for an AS instance-level Link the operational state for an AS instance-level LSDB.";
State Database (LSDB).";
container e-as-external { container e-as-external {
when "../../ospf:header/ospf:type = " when "../../ospf:header/ospf:type = "
+ "'ospfv3-e-lsa:ospfv3-e-as-external-lsa'" { + "'ospfv3-e-lsa:ospfv3-e-as-external-lsa'" {
description description
"Only applies to E-AS-external LSAs."; "Only applies to E-AS-External-LSAs.";
} }
description
"E-AS-External-LSA contents.";
list e-external-tlvs { list e-external-tlvs {
description description
"E-External LSA TLVs"; "E-AS-External-LSA TLVs.";
container unknown-tlv { container unknown-tlv {
uses ospf:tlv; uses ospf:tlv;
description description
"Unknown E-External TLV"; "Unknown E-External TLV.";
} }
uses external-prefix-tlv; uses external-prefix-tlv;
} }
description
"E-AS-External LSA.";
reference reference
"RFC 8362: OSPFv3 Link State Advertisement (LSA) "RFC 8362: OSPFv3 Link State Advertisement (LSA)
Extensibility, Section 4.5"; Extensibility, Section 4.5";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
5. Security Considerations 5. Security Considerations
The YANG modules specified in this document define a schema for data The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols such that is designed to be accessed via network management protocols such
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC8446]. [RFC8446].
The NETCONF access control model [RFC8341] provides the means to The Network Configuration Access Control Model (NACM) [RFC8341]
restrict access for particular NETCONF or RESTCONF users to a pre- provides the means to restrict access for particular NETCONF or
configured subset of all available NETCONF or RESTCONF protocol RESTCONF users to a preconfigured subset of all available NETCONF or
operations and content. RESTCONF protocol operations and content.
There are a number of data nodes defined in ietf-ospfv3-extended- There are a number of data nodes defined in the "ietf-ospfv3-
lsa.yang module that are writable/creatable/deletable (i.e., config extended-lsa.yang" module that are writable/creatable/deletable
true, which is the default). These data nodes may be considered (i.e., config true, which is the default). These data nodes may be
sensitive or vulnerable in some network environments. Write considered sensitive or vulnerable in some network environments.
operations (e.g., edit-config) to these data nodes without proper Write operations (e.g., edit-config) to these data nodes without
protection can have a negative effect on network operations. There proper protection can have a negative effect on network operations.
are the subtrees and data nodes and their sensitivity/vulnerability: These are the subtrees and data nodes and their sensitivity/
vulnerability:
/ospf:ospf/extended-lsa-support /ospf:ospf/extended-lsa-support
/ospf:ospf/ospf:areas/ospf:area/extended-lsa-support /ospf:ospf/ospf:areas/ospf:area/extended-lsa-support
The ability to disable or enable OSPFv3 Extended LSA support can The ability to disable or enable OSPFv3 Extended LSA support can
result in a Denial of Service (DoS) attack since OSPFv3 routers will result in a Denial-of-Service (DoS) attack, since OSPFv3 routers will
use solely OSPFv3 Extended LSAs or OSPFv3 Legacy LSAs for the OSPFv3 use solely OSPFv3 Extended LSAs or OSPFv3 Legacy LSAs for the OSPFv3
SPF computation. OSPFv3 routers using different types of LSAs will SPF computation. OSPFv3 routers using different types of LSAs will
result in incomplete reachability and possible partioning of the result in incomplete reachability and possible partitioning of the
OSPFv3 routing domain. Refer to section 6 of [RFC8362] for more OSPFv3 routing domain. Refer to Section 6 of [RFC8362] for more
information on OSPFv3 Extended LSA compatibility. information on OSPFv3 Extended LSA compatibility.
Some of the readable data nodes in the ietf-ospfv3-extended-lsa.yang Some of the readable data nodes in the "ietf-ospfv3-extended-
module may be considered sensitive or vulnerable in some network lsa.yang" module may be considered sensitive or vulnerable in some
environments. It is thus important to control read access (e.g., via network environments. It is thus important to control read access
get, get-config, or notification) to these data nodes. The exposure (e.g., via get, get-config, or notification) to these data nodes.
of the Link State Database (LSDB) will expose the detailed topology
of the network. This includes topological information from other
routers. This may be undesirable due to the fact that exposure may
facilitate other attacks. Additionally, network operators may
consider their topologies to be sensitive confidential data.
6. IANA Considerations
This document registers a URI in the IETF XML registry [RFC3688]. Exposing the Link State Database (LSDB) will in turn expose the
Following the format in [RFC3688], the following registration is detailed topology of the network. This includes topological
requested to be made: information from other routers. This may be undesirable due to the
fact that exposure may facilitate other attacks. Additionally,
network operators may consider their topologies to be sensitive
confidential data.
URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa 6. IANA Considerations
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
This document registers a YANG module in the YANG Module Names Per this document, IANA has registered the following URI in the "IETF
registry [RFC6020]. XML Registry" [RFC3688]:
name: ietf-ospfv3-extended-lsa URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa
namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa Registrant Contact: The IESG.
prefix: ospfv3-e-lsa XML: N/A; the requested URI is an XML namespace.
reference: RFC XXXX
7. Acknowledgements Per this document, IANA has registered the following YANG module in
the "YANG Module Names" registry [RFC6020]:
The YANG model was developed using the suite of YANG tools written Name: ietf-ospfv3-extended-lsa
and maintained by numerous authors. Maintained by IANA: N
Namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa
Prefix: ospfv3-e-lsa
Reference: RFC 9587
Thanks much to Tom Petch, Mahesh Jethanandani, Renato Westphal, 7. References
Victoria Pritchard, Reshad Rahman, and Chris Hopps for their review
and comments.
8. Normative References 7.1. Normative References
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[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>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
skipping to change at page 28, line 10 skipping to change at line 1289
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
[RFC9129] Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, [RFC9129] Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem,
"YANG Data Model for the OSPF Protocol", RFC 9129, "YANG Data Model for the OSPF Protocol", RFC 9129,
DOI 10.17487/RFC9129, October 2022, DOI 10.17487/RFC9129, October 2022,
<https://www.rfc-editor.org/info/rfc9129>. <https://www.rfc-editor.org/info/rfc9129>.
9. Informative References [W3C.REC-xml-20081126]
Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E.,
and F. Yergeau, "Extensible Markup Language (XML) 1.0
(Fifth Edition)", W3C Recommendation REC-xml-20081126,
November 2008, <https://www.w3.org/TR/xml/>.
7.2. Informative References
[RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG",
RFC 7951, DOI 10.17487/RFC7951, August 2016,
<https://www.rfc-editor.org/info/rfc7951>.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu,
"Handling Long Lines in Content of Internet-Drafts and "Handling Long Lines in Content of Internet-Drafts and
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020,
<https://www.rfc-editor.org/info/rfc8792>. <https://www.rfc-editor.org/info/rfc8792>.
Appendix A. Configuration Example Appendix A. Configuration Example
The following is an XML example using the YANG model for OSPFv3 The following is an XML example (per [W3C.REC-xml-20081126]) using
Extended LSAs. the YANG data model for OSPFv3 Extended LSAs. (Line breaks are used
per [RFC8792] and are for display purposes only.)
Note: '\' line wrapping per [RFC8792]. Note: '\' line wrapping per RFC 8792.
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<router-id>192.0.2.1</router-id> <router-id>192.0.2.1</router-id>
<control-plane-protocols> <control-plane-protocols>
<control-plane-protocol> <control-plane-protocol>
<type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\ <type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\
ospf:ospfv3</type> ospf:ospfv3</type>
<name>"OSPFv3"</name> <name>"OSPFv3"</name>
<ospf xmlns="urn:ietf:params:xml:ns:yang:ietf-ospf"> <ospf xmlns="urn:ietf:params:xml:ns:yang:ietf-ospf">
<extended-lsa-support xmlns="urn:ietf:params:xml:ns:yang:\ <extended-lsa-support xmlns="urn:ietf:params:xml:ns:yang:\
ietf-ospfv3-extended-lsa">true</extended-lsa-support> ietf-ospfv3-extended-lsa">true</extended-lsa-support>
</ospf> </ospf>
</control-plane-protocol> </control-plane-protocol>
</control-plane-protocols> </control-plane-protocols>
</routing> </routing>
The following is the same example using JSON format. The following is the same example using JSON format [RFC7951].
{ {
"routing": { "routing": {
"router-id": "192.0.2.1", "router-id": "192.0.2.1",
"control-plane-protocols": { "control-plane-protocols": {
"control-plane-protocol": { "control-plane-protocol": {
"type": "ospf:ospfv3", "type": "ospf:ospfv3",
"name": "\"OSPFv3\"", "name": "\"OSPFv3\"",
"ospf": { "ospf": {
"extended-lsa-support": true "extended-lsa-support": true
} }
} }
} }
} }
} }
Acknowledgements
The YANG data model defined in this document was developed using the
suite of YANG tools written and maintained by numerous authors.
Thanks much to Tom Petch, Mahesh Jethanandani, Renato Westphal,
Victoria Pritchard, Reshad Rahman, and Chris Hopps for their review
and comments.
Authors' Addresses Authors' Addresses
Acee Lindem Acee Lindem
LabN Consulting, L.L.C. LabN Consulting, L.L.C.
301 Midenhall Way 301 Midenhall Way
Cary, NC 27513 Cary, NC 27513
United States of America
Email: acee.ietf@gmail.com Email: acee.ietf@gmail.com
Sharmila Palani Sharmila Palani
Microsoft Microsoft
1 Microsoft Way 1 Microsoft Way
Redmond, WA 98052 Redmond, WA 98052
United States of America
Email: sharmila.palani@microsoft.com Email: sharmila.palani@microsoft.com
Yingzhen Qu Yingzhen Qu
Futurewei Technologies Futurewei Technologies
2330 Central Expressway 2330 Central Expressway
Santa Clara, CA 95050 Santa Clara, CA 95050
United States of America United States of America
Email: yingzhen.ietf@gmail.com Email: yingzhen.ietf@gmail.com
 End of changes. 168 change blocks. 
283 lines changed or deleted 305 lines changed or added

This html diff was produced by rfcdiff 1.48.