draft-ietf-lsr-ospf-yang-augmentation-v1-04.txt | draft-ietf-lsr-ospf-yang-augmentation-v1-05.txt | |||
---|---|---|---|---|
Internet A. Lindem | Internet A. Lindem | |||
Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
Expires: October 31, 2021 Futurewei | Expires: December 23, 2021 Futurewei | |||
April 29, 2021 | June 21, 2021 | |||
OSPF YANG Model Augmentations for Additional Features - Version 1 | OSPF YANG Model Augmentations for Additional Features - Version 1 | |||
draft-ietf-lsr-ospf-yang-augmentation-v1-04 | draft-ietf-lsr-ospf-yang-augmentation-v1-05 | |||
Abstract | Abstract | |||
This document defines YANG data modules augmenting the IETF OSPF YANG | This document defines YANG data modules augmenting the IETF OSPF YANG | |||
model to provide support for Traffic Engineering Extensions to OSPF | model to provide support for Traffic Engineering Extensions to OSPF | |||
Version 3 as defined in RF 5329, OSPF Two-Part Metric as defined in | Version 3 as defined in RF 5329, OSPF Two-Part Metric as defined in | |||
RFC 8042, OSPF Graceful Link Shutdown as defined in RFC 8379 and OSPF | RFC 8042, OSPF Graceful Link Shutdown as defined in RFC 8379, OSPF | |||
Link-Local Signaling (LLS) Extensions for Local Interface ID | Link-Local Signaling (LLS) Extensions for Local Interface ID | |||
Advertisement as defined in RFC 8510. | Advertisement as defined in RFC 8510 and OSPF Flexible Algorithm. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on October 31, 2021. | This Internet-Draft will expire on December 23, 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 18 ¶ | skipping to change at page 2, line 18 ¶ | |||
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
2. YANG Module for Traffic Engineering Extesions to OSPF Version | 2. YANG Module for Traffic Engineering Extesions to OSPF Version | |||
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. YANG Module for OSPF Two-Part Metric . . . . . . . . . . . . 8 | 3. YANG Module for OSPF Two-Part Metric . . . . . . . . . . . . 8 | |||
4. YANG Module for OSPF Graceful Link Shutdown . . . . . . . . . 13 | 4. YANG Module for OSPF Graceful Link Shutdown . . . . . . . . . 13 | |||
5. YANG Module for OSPF LLS Extenstion for Local Interface ID | 5. YANG Module for OSPF LLS Extenstion for Local Interface ID | |||
Advertisement . . . . . . . . . . . . . . . . . . . . . . . . 18 | Advertisement . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
6. YANG Module for OSPF Application-Specific Link Attributes . . 20 | 6. YANG Module for OSPF Application-Specific Link Attributes . . 20 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | 7. YANG Module for OSPF Flexible Algorithm . . . . . . . . . . . 26 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 | |||
10. Normative References . . . . . . . . . . . . . . . . . . . . 27 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | 11. Normative References . . . . . . . . . . . . . . . . . . . . 48 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 | ||||
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 2, line 47 ¶ | skipping to change at page 2, line 48 ¶ | |||
provide support for configuration and operational state for the | provide support for configuration and operational state for the | |||
following OSPF features: | following OSPF features: | |||
RFC5329: Traffic Engineering Extensions to OSPF Version 3 [RFC5329]. | RFC5329: Traffic Engineering Extensions to OSPF Version 3 [RFC5329]. | |||
RFC8042: OSPF Two-Part Metric [RFC8042]. | RFC8042: OSPF Two-Part Metric [RFC8042]. | |||
RFC8379: OSPF Graceful Link Shutdown [RFC8379]. | RFC8379: OSPF Graceful Link Shutdown [RFC8379]. | |||
RFC8510: OSPF Link-Local Signaling (LLS) Extensions for Local | RFC8510: OSPF Link-Local Signaling (LLS) Extensions for Local | |||
Interface ID Advertisement[RFC8510]. | Interface ID Advertisement [RFC8510]. | |||
RFC8920: OSPF Application-Specific Link Attributes [RFC8920]. | ||||
RFCxxxx: IGP Flexible Algorithm [I-D.ietf-lsr-flex-algo]. | ||||
The augmentations defined in this document requires support for the | The augmentations defined in this document requires support for the | |||
OSPF base model[I-D.ietf-ospf-yang] which defines basic OSPF | OSPF base model[I-D.ietf-ospf-yang] which defines basic OSPF | |||
configuration and state. The OSPF YANG model augments the ietf- | configuration and state. The OSPF YANG model augments the ietf- | |||
routing YANG model defined in [RFC8022]. | routing YANG model defined in [RFC8022]. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
2. YANG Module for Traffic Engineering Extesions to OSPF Version 3 | 2. YANG Module for Traffic Engineering Extesions to OSPF Version 3 | |||
This document defines a YANG module for Traffic Engineering | This document defines a YANG module for Traffic Engineering | |||
Extersions to OSPF Version 3 as defined in [RFC5329]. It is an | Extensions to OSPF Version 3 as defined in [RFC5329]. It is an | |||
augmentation of the OSPF base model. | augmentation of the OSPF base model. | |||
module: ietf-ospfv3-te | module: ietf-ospfv3-te | |||
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:area-scope-lsas | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | |||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | |||
/ospf:body: | /ospf:body: | |||
+--ro ospfv3-intra-area-te | +--ro ospfv3-intra-area-te | |||
+--ro router-address-tlv | +--ro router-address-tlv | |||
skipping to change at page 26, line 5 ¶ | skipping to change at page 26, line 5 ¶ | |||
E-Router LSAs"; | E-Router LSAs"; | |||
} | } | |||
description | description | |||
"Augment OSPFv3 Area scope router-link TLV."; | "Augment OSPFv3 Area scope router-link TLV."; | |||
uses application-specific-link-attributes-sub-tlvs; | uses application-specific-link-attributes-sub-tlvs; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
7. Security Considerations | 7. YANG Module for OSPF Flexible Algorithm | |||
This document defines a YANG module for OSPF Flexible Algorithm as | ||||
defined in [I-D.ietf-lsr-flex-algo]. It is an augmentation of the | ||||
OSPF base model. | ||||
module: ietf-ospf-flex-algo | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf: | ||||
+--rw ospf-flex-algo | ||||
+--rw flex-algo* [algo-number] | ||||
+--rw algo-number uint8 | ||||
+--rw advertise-definition? boolean | ||||
+--rw admin-groups {te-types:extended-admin-groups, | ||||
te-types:named-extended-admin-groups}? | ||||
| +--rw exclude-admin-groups* -> /te:te/globals | ||||
/named-admin-groups | ||||
/named-admin-group/name | ||||
| +--rw include-any-admin-groups* -> /te:te/globals | ||||
/named-admin-groups | ||||
/named-admin-group/name | ||||
| +--rw include-all-admin-groups* -> /te:te/globals | ||||
/named-admin-groups | ||||
/named-admin-group/name | ||||
+--rw exclude-srlgs* -> /te:te/globals/named-srlgs | ||||
/named-srlg/name | ||||
{te-types:named-srlg-groups}? | ||||
+--rw fast-reroute? boolean | ||||
+--rw metric-type? identityref | ||||
+--rw microloop-avoidance? boolean | ||||
+--rw prefix-metric! | ||||
+--rw priority? uint8 | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:interfaces/ospf:interface/ospf:database | ||||
/ospf:link-scope-lsa-type/ospf:link-scope-lsas | ||||
/ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
/ospf:body/ospf:opaque/ospf:ri-opaque: | ||||
+--ro fad-tlvs | ||||
+--ro fad-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro metric-type? identityref | ||||
+--ro calc-type? uint8 | ||||
+--ro priority? uint8 | ||||
+--ro fa-ex-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-any-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-all-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fad-flags-sub-tlv | ||||
| +--ro fad-flags* identityref | ||||
+--ro fa-ex-srlg-sub-tlv | ||||
| +--ro srlgs* uint32 | ||||
+--ro unknown-tlvs | ||||
+--ro unknown-tlv* [] | ||||
+--ro type? uint16 | ||||
+--ro length? uint16 | ||||
+--ro value? yang:hex-string | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | ||||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
/ospf:body/ospf:opaque/ospf:ri-opaque: | ||||
+--ro fad-tlvs | ||||
+--ro fad-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro metric-type? identityref | ||||
+--ro calc-type? uint8 | ||||
+--ro priority? uint8 | ||||
+--ro fa-ex-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-any-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-all-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fad-flags-sub-tlv | ||||
| +--ro fad-flags* identityref | ||||
+--ro fa-ex-srlg-sub-tlv | ||||
| +--ro srlgs* uint32 | ||||
+--ro unknown-tlvs | ||||
+--ro unknown-tlv* [] | ||||
+--ro type? uint16 | ||||
+--ro length? uint16 | ||||
+--ro value? yang:hex-string | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:database | ||||
/ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | ||||
/ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | ||||
/ospf:ri-opaque: | ||||
+--ro fad-tlvs | ||||
+--ro fad-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro metric-type? identityref | ||||
+--ro calc-type? uint8 | ||||
+--ro priority? uint8 | ||||
+--ro fa-ex-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-any-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-all-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fad-flags-sub-tlv | ||||
| +--ro fad-flags* identityref | ||||
+--ro fa-ex-srlg-sub-tlv | ||||
| +--ro srlgs* uint32 | ||||
+--ro unknown-tlvs | ||||
+--ro unknown-tlv* [] | ||||
+--ro type? uint16 | ||||
+--ro length? uint16 | ||||
+--ro value? yang:hex-string | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:interfaces/ospf:interface/ospf:database | ||||
/ospf:link-scope-lsa-type/ospf:link-scope-lsas | ||||
/ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | ||||
/ospf:body/ospf:router-information: | ||||
+--ro fad-tlvs | ||||
+--ro fad-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro metric-type? identityref | ||||
+--ro calc-type? uint8 | ||||
+--ro priority? uint8 | ||||
+--ro fa-ex-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-any-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-all-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fad-flags-sub-tlv | ||||
| +--ro fad-flags* identityref | ||||
+--ro fa-ex-srlg-sub-tlv | ||||
| +--ro srlgs* uint32 | ||||
+--ro unknown-tlvs | ||||
+--ro unknown-tlv* [] | ||||
+--ro type? uint16 | ||||
+--ro length? uint16 | ||||
+--ro value? yang:hex-string | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | ||||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | ||||
/ospf:body/ospf:router-information: | ||||
+--ro fad-tlvs | ||||
+--ro fad-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro metric-type? identityref | ||||
+--ro calc-type? uint8 | ||||
+--ro priority? uint8 | ||||
+--ro fa-ex-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-any-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-all-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fad-flags-sub-tlv | ||||
| +--ro fad-flags* identityref | ||||
+--ro fa-ex-srlg-sub-tlv | ||||
| +--ro srlgs* uint32 | ||||
+--ro unknown-tlvs | ||||
+--ro unknown-tlv* [] | ||||
+--ro type? uint16 | ||||
+--ro length? uint16 | ||||
+--ro value? yang:hex-string | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:database | ||||
/ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | ||||
/ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body | ||||
/ospf:router-information: | ||||
+--ro fad-tlvs | ||||
+--ro fad-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro metric-type? identityref | ||||
+--ro calc-type? uint8 | ||||
+--ro priority? uint8 | ||||
+--ro fa-ex-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-any-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fa-in-all-ag-sub-tlv | ||||
| +--ro extended-admin-groups* uint64 | ||||
+--ro fad-flags-sub-tlv | ||||
| +--ro fad-flags* identityref | ||||
+--ro fa-ex-srlg-sub-tlv | ||||
| +--ro srlgs* uint32 | ||||
+--ro unknown-tlvs | ||||
+--ro unknown-tlv* [] | ||||
+--ro type? uint16 | ||||
+--ro length? uint16 | ||||
+--ro value? yang:hex-string | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:interfaces/ospf:interface/ospf:database | ||||
/ospf:link-scope-lsa-type/ospf:link-scope-lsas | ||||
/ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
/ospf:body/ospf:opaque/ospf:extended-prefix-opaque | ||||
/ospf:extended-prefix-tlv: | ||||
+--ro fapm-sub-tlvs | ||||
+--ro fapm-sub-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro fapm-flags* identityref | ||||
+--ro metric? uint32 | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | ||||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
/ospf:body/ospf:opaque/ospf:extended-prefix-opaque | ||||
/ospf:extended-prefix-tlv: | ||||
+--ro fapm-sub-tlvs | ||||
+--ro fapm-sub-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro fapm-flags* identityref | ||||
+--ro metric? uint32 | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:database | ||||
/ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | ||||
/ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | ||||
/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: | ||||
+--ro fapm-sub-tlvs | ||||
+--ro fapm-sub-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro fapm-flags* identityref | ||||
+--ro metric? uint32 | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | ||||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | ||||
/ospf:body/ospfv3-e-lsa:e-inter-area-prefix | ||||
/ospfv3-e-lsa:e-inter-prefix-tlvs | ||||
/ospfv3-e-lsa:inter-prefix-tlv: | ||||
+--ro fapm-sub-tlvs | ||||
+--ro fapm-sub-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro fapm-flags* identityref | ||||
+--ro metric? uint32 | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:database | ||||
/ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | ||||
/ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body | ||||
/ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs | ||||
/ospfv3-e-lsa:external-prefix-tlv: | ||||
+--ro fapm-sub-tlvs | ||||
+--ro fapm-sub-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro fapm-flags* identityref | ||||
+--ro metric? uint32 | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | ||||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
/ospf:body/ospf:opaque: | ||||
+--ro eia-asbr-opaque | ||||
+--ro eia-asbr-tlv | ||||
| +--ro asbr-rtr-id? rt-types:router-id | ||||
| +--ro faam-sub-tlvs | ||||
| | +--ro faam-sub-tlv* [] | ||||
| | +--ro flex-algo? uint8 | ||||
| | +--ro metric? uint32 | ||||
| +--ro unknown-tlvs | ||||
| +--ro unknown-tlv* [] | ||||
| +--ro type? uint16 | ||||
| +--ro length? uint16 | ||||
| +--ro value? yang:hex-string | ||||
+--ro unknown-tlvs | ||||
+--ro unknown-tlv* [] | ||||
+--ro type? uint16 | ||||
+--ro length? uint16 | ||||
+--ro value? yang:hex-string | ||||
augment /rt:routing/rt:control-plane-protocols | ||||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | ||||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | ||||
/ospf:body/ospfv3-e-lsa:e-inter-area-router | ||||
/ospfv3-e-lsa:e-inter-router-tlvs | ||||
/ospfv3-e-lsa:inter-router-tlv: | ||||
+--ro faam-sub-tlvs | ||||
+--ro faam-sub-tlv* [] | ||||
+--ro flex-algo? uint8 | ||||
+--ro metric? uint32 | ||||
<CODE BEGINS> file "ietf-ospf-flex-algo@2021-06-18.yang" | ||||
module ietf-ospf-flex-algo { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo"; | ||||
prefix ospf-flex-algo; | ||||
import ietf-routing { | ||||
prefix rt; | ||||
reference "RFC 8349: A YANG Data Model for Routing | ||||
Management (NMDA Version)"; | ||||
} | ||||
import ietf-routing-types { | ||||
prefix "rt-types"; | ||||
reference "RFC 8294: Common YANG Data Types for the | ||||
Routing Area"; | ||||
} | ||||
import ietf-te-types { | ||||
prefix te-types; | ||||
reference | ||||
"RFC8776: Common YANG Data Types for Traffic Engineering."; | ||||
} | ||||
import ietf-ospf { | ||||
prefix "ospf"; | ||||
} | ||||
import ietf-ospfv3-extended-lsa { | ||||
prefix "ospfv3-e-lsa"; | ||||
} | ||||
import ietf-te { | ||||
prefix "te"; | ||||
} | ||||
organization | ||||
"IETF LSR - Link State Routing Working Group"; | ||||
contact | ||||
"WG Web: <https://tools.ietf.org/wg/spring/> | ||||
WG List: <mailto:spring@ietf.org> | ||||
Author: Yingzhen Qu | ||||
<mailto:yingzhen.qu@futurewei.com> | ||||
Author: Acee Lindem | ||||
<mailto:acee@cisco.com> | ||||
Author: Stephane Litkowski | ||||
<mailto:slitkows.ietf@gmail.com> | ||||
"; | ||||
description | ||||
"The YANG module defines the configuration and operational | ||||
state for OSPF Flexible Algorithm as defined in RFC xxxx. | ||||
This YANG model conforms to the Network Management | ||||
Datastore Architecture (NMDA) as described in RFC 8342. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | ||||
without modification, is permitted pursuant to, and subject | ||||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; | ||||
see the RFC itself for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here."; | ||||
reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; | ||||
revision 2021-06-18 { | ||||
description | ||||
"Initial Version"; | ||||
reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; | ||||
} | ||||
/* Identities */ | ||||
identity metric-type { | ||||
description | ||||
"Base identity for route metric types."; | ||||
} | ||||
identity igp-metric { | ||||
base metric-type; | ||||
description | ||||
"Identity for the IGP metric type."; | ||||
} | ||||
identity min-uni-delay { | ||||
base metric-type; | ||||
description | ||||
"Min unidirectional link delay metric type."; | ||||
reference | ||||
"RFC 7471 - OSPF Traffic Engineering (TE) Metric Extensions"; | ||||
} | ||||
identity te-metric { | ||||
base metric-type; | ||||
description | ||||
"Traffic engineering metric type."; | ||||
reference | ||||
"RFC 3630 - Traffic Engineering (TE) Extensions to OSPF | ||||
Version 2"; | ||||
} | ||||
identity fad-flags { | ||||
description | ||||
"Base identity for OSPF FAD flags."; | ||||
} | ||||
identity m-bit { | ||||
base fad-flags; | ||||
description | ||||
"M bit, when set, the fex-algo specific prefix and ASBR | ||||
metric MUST be used for inter-area and external prefix | ||||
calculation."; | ||||
} | ||||
identity fapm-flags { | ||||
description | ||||
"Base identity for OSPF flex-algo prefix metric flags."; | ||||
} | ||||
identity e-bit { | ||||
base fapm-flags; | ||||
description | ||||
"External metric, if set, the metric specified is a | ||||
type 2 external metric."; | ||||
} | ||||
/* Groupings */ | ||||
grouping fa-ex-ag-sub-tlv { | ||||
container fa-ex-ag-sub-tlv { | ||||
leaf-list extended-admin-groups { | ||||
type uint64; | ||||
description | ||||
"Extended administrative group as defined in RFC 7308."; | ||||
} | ||||
description | ||||
"The flex-algo exclude admin group sub-tlv."; | ||||
} | ||||
description | ||||
"The flex-algo exclude admin group sub-tlv."; | ||||
} | ||||
grouping fa-in-any-ag-sub-tlv { | ||||
container fa-in-any-ag-sub-tlv { | ||||
leaf-list extended-admin-groups { | ||||
type uint64; | ||||
description | ||||
"Extended administrative group as defined in RFC 7308."; | ||||
} | ||||
description | ||||
"The flex-algo include-any admin group sub-tlv."; | ||||
} | ||||
description | ||||
"The flex-algo include-any admin group sub-tlv."; | ||||
} | ||||
grouping fa-in-all-ag-sub-tlv { | ||||
container fa-in-all-ag-sub-tlv { | ||||
leaf-list extended-admin-groups { | ||||
type uint64; | ||||
description | ||||
"Extended administrative group as defined in RFC 7308."; | ||||
} | ||||
description | ||||
"The flex-algo include-all admin group sub-tlv."; | ||||
} | ||||
description | ||||
"The flex-algo include-all admin group sub-tlv."; | ||||
} | ||||
grouping fad-flags-sub-tlv { | ||||
container fad-flags-sub-tlv { | ||||
leaf-list fad-flags { | ||||
type identityref { | ||||
base fad-flags; | ||||
} | ||||
description | ||||
"Flex-algo definition flags list."; | ||||
} | ||||
description | ||||
"OSPF flex-algo definition flags."; | ||||
} | ||||
description | ||||
"The flex-algo definition flags sub-tlv."; | ||||
} | ||||
grouping fa-ex-srlg-sub-tlv { | ||||
container fa-ex-srlg-sub-tlv { | ||||
leaf-list srlgs { | ||||
type uint32; | ||||
description | ||||
"SRLG value as defined in RFC 4203."; | ||||
} | ||||
description | ||||
"The flex-algo exclude SRLG sub-tlv."; | ||||
} | ||||
description | ||||
"The flex-algo exclude SRLG sub-tlv."; | ||||
} | ||||
grouping fad-tlvs { | ||||
container fad-tlvs { | ||||
list fad-tlv { | ||||
leaf flex-algo { | ||||
type uint8; | ||||
description | ||||
"Flex-algo number, value between 128 and 255 inclusive."; | ||||
} | ||||
leaf metric-type { | ||||
type identityref { | ||||
base metric-type; | ||||
} | ||||
description | ||||
"Type of metric to be used during the calculation."; | ||||
} | ||||
leaf calc-type { | ||||
type uint8 { | ||||
range "0..127"; | ||||
} | ||||
description | ||||
"IGP algorithm types, value from 0 to 127 as | ||||
defined under 'Interior Gateway Protocol (IGP) | ||||
Parameter' by IANA."; | ||||
} | ||||
leaf priority { | ||||
type uint8; | ||||
description | ||||
"Priority of the advertisement."; | ||||
} | ||||
uses fa-ex-ag-sub-tlv; | ||||
uses fa-in-any-ag-sub-tlv; | ||||
uses fa-in-all-ag-sub-tlv; | ||||
uses fad-flags-sub-tlv; | ||||
uses fa-ex-srlg-sub-tlv; | ||||
uses ospf:unknown-tlvs; | ||||
description | ||||
"List of flex-algo definition TLVs."; | ||||
} | ||||
description | ||||
"OSPF Flexible Algorithm Definition TLV."; | ||||
} | ||||
description | ||||
"OSPF Flexible Algorithm Definition (FAD) TLV."; | ||||
} | ||||
grouping fapm-sub-tlvs { | ||||
container fapm-sub-tlvs { | ||||
list fapm-sub-tlv { | ||||
leaf flex-algo { | ||||
type uint8; | ||||
description | ||||
"Flex-algo number, value between 128 and 255 | ||||
inclusive."; | ||||
} | ||||
leaf-list fapm-flags { | ||||
type identityref { | ||||
base fapm-flags; | ||||
} | ||||
description | ||||
"Flex-algo prefix metric flags list."; | ||||
} | ||||
leaf metric { | ||||
type uint32; | ||||
description | ||||
"Prefix metric."; | ||||
} | ||||
description | ||||
"List of flex-algo prefix sub-tlvs."; | ||||
} | ||||
description | ||||
"Flex-algo prefix metric sub-tlvs."; | ||||
} | ||||
description | ||||
"Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; | ||||
} | ||||
grouping faam-sub-tlvs { | ||||
container faam-sub-tlvs { | ||||
list faam-sub-tlv { | ||||
leaf flex-algo { | ||||
type uint8; | ||||
description | ||||
"Flex-algo number, value between 128 and 255 | ||||
inclusive."; | ||||
} | ||||
leaf metric { | ||||
type uint32; | ||||
description | ||||
"Prefix metric."; | ||||
} | ||||
description | ||||
"List of faam sub-tlvs."; | ||||
} | ||||
description | ||||
"Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; | ||||
} | ||||
description | ||||
"Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs."; | ||||
} | ||||
/* Configurations */ | ||||
augment "/rt:routing/rt:control-plane-protocols" | ||||
+ "/rt:control-plane-protocol/ospf:ospf" { | ||||
when "../rt:type = 'ospf:ospfv2' or " | ||||
+ "../rt:type = 'ospf:ospfv3'" { | ||||
description | ||||
"This augments the OSPF routing protocol when used."; | ||||
} | ||||
description | ||||
"This augments OSPF protocol with Flexible | ||||
Algorithm."; | ||||
container ospf-flex-algo { | ||||
list flex-algo { | ||||
key "algo-number"; | ||||
leaf algo-number { | ||||
type uint8 { | ||||
range "128..255"; | ||||
} | ||||
description | ||||
"An identifier in the range 128-255 that's associated | ||||
with the Flexible Algorithm Definition."; | ||||
} | ||||
leaf advertise-definition { | ||||
type boolean; | ||||
default true; | ||||
description | ||||
"Enable to advertise the flex-algo definition."; | ||||
} | ||||
container admin-groups { | ||||
if-feature "te-types:extended-admin-groups"; | ||||
if-feature "te-types:named-extended-admin-groups"; | ||||
leaf-list exclude-admin-groups { | ||||
type leafref { | ||||
path "/te:te/te:globals/te:named-admin-groups/" | ||||
+ "te:named-admin-group/te:name"; | ||||
} | ||||
description | ||||
"Exclude rule used during the flex-algo | ||||
path computation."; | ||||
} | ||||
leaf-list include-any-admin-groups { | ||||
type leafref { | ||||
path "/te:te/te:globals/te:named-admin-groups/" | ||||
+ "te:named-admin-group/te:name"; | ||||
} | ||||
description | ||||
"Include-any rule used during the flex-algo | ||||
path computation."; | ||||
} | ||||
leaf-list include-all-admin-groups { | ||||
type leafref { | ||||
path "/te:te/te:globals/te:named-admin-groups/" | ||||
+ "te:named-admin-group/te:name"; | ||||
} | ||||
description | ||||
"Include-all rule used during the flex-algo | ||||
path computation."; | ||||
} | ||||
description | ||||
"Specify links for the flex-algo path computation."; | ||||
} | ||||
leaf-list exclude-srlgs { | ||||
if-feature "te-types:named-srlg-groups"; | ||||
type leafref { | ||||
path "/te:te/te:globals/te:named-srlgs/te:named-srlg/" | ||||
+ "te:name"; | ||||
} | ||||
description | ||||
"Shared Risk Link Groups (SRLGs) to be excluded during | ||||
the flex-algo path computation."; | ||||
} | ||||
leaf fast-reroute { | ||||
type boolean; | ||||
default true; | ||||
description | ||||
"Enable fast reroute."; | ||||
} | ||||
leaf metric-type { | ||||
type identityref { | ||||
base metric-type; | ||||
} | ||||
description | ||||
"Type of metric to be used during the calculation."; | ||||
} | ||||
leaf microloop-avoidance { | ||||
type boolean; | ||||
default true; | ||||
description | ||||
"Enable microloop avoidance."; | ||||
} | ||||
container prefix-metric { | ||||
presence | ||||
"Use flex-algo specific prefix metric."; | ||||
description | ||||
"Use flex-algo prefix metric."; | ||||
} | ||||
leaf priority { | ||||
type uint8; | ||||
description | ||||
"Priority of the advertisement."; | ||||
} | ||||
description | ||||
"List of flex-algo configurations."; | ||||
} | ||||
description | ||||
"Flexible Algorithm configuration."; | ||||
} | ||||
} | ||||
/* Database */ | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/ospf:area/" | ||||
+ "ospf:interfaces/ospf:interface/ospf:database/" | ||||
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | ||||
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
+ "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | ||||
when "../../../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv2'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv2 type 9 opaque RI LSA."; | ||||
uses fad-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/" | ||||
+ "ospf:area/ospf:database/" | ||||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
+ "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | ||||
when "../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv2'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv2 type 10 opaque RI LSA."; | ||||
uses fad-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:database/" | ||||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | ||||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
+ "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | ||||
when "../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv2'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv2 type 11 opaque RI LSA."; | ||||
uses fad-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/ospf:area/" | ||||
+ "ospf:interfaces/ospf:interface/ospf:database/" | ||||
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | ||||
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" | ||||
+ "ospf:ospfv3/ospf:body/ospf:router-information" { | ||||
when "../../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv3'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3."; | ||||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | ||||
uses fad-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/" | ||||
+ "ospf:area/ospf:database/" | ||||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | ||||
+ "ospf:ospfv3/ospf:body/ospf:router-information" { | ||||
when "../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv3'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3."; | ||||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | ||||
uses fad-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:database/" | ||||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | ||||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | ||||
+ "ospf:ospfv3/ospf:body/ospf:router-information" { | ||||
when "../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv3'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3."; | ||||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | ||||
uses fad-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/ospf:area/" | ||||
+ "ospf:interfaces/ospf:interface/ospf:database/" | ||||
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | ||||
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | ||||
when "../../../../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv2'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | ||||
in type 9 opaque LSA."; | ||||
uses fapm-sub-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/" | ||||
+ "ospf:area/ospf:database/" | ||||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | ||||
when "../../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv2'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | ||||
in type 10 opaque LSA."; | ||||
uses fapm-sub-tlvs; | ||||
} | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:database/" | ||||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | ||||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | ||||
when "../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv2'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | ||||
in type 11 opaque LSA."; | ||||
uses fapm-sub-tlvs; | ||||
} | ||||
/* Flex-algo prefix metric Sub-TLV in OSPFv3 Inter-Area Prefix TLV */ | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | ||||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | ||||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" | ||||
+ "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { | ||||
when "../../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv3'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3 | ||||
E-Router LSAs"; | ||||
} | ||||
uses fapm-sub-tlvs; | ||||
description | ||||
"OSPFv3 Area-Scoped Inter-Area Prefix TLV."; | ||||
} | ||||
/* Flex-algo prefix metric Sub-TLV in OSPFv3 External Prefix TLV */ | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:database/" | ||||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | ||||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | ||||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" | ||||
+ "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { | ||||
when "'ospf:../../../../../../../../../" | ||||
+ "rt:type' = 'ospf:ospfv3'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3."; | ||||
} | ||||
uses fapm-sub-tlvs; | ||||
description | ||||
"OSPFv3 AS-Scoped External Prefix TLV."; | ||||
} | ||||
/* OSPFv2 Extended Inter-Area ASBR LSA */ | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/" | ||||
+ "ospf:area/ospf:database/" | ||||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
+ "ospf:ospfv2/ospf:body/ospf:opaque" { | ||||
when "../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv2'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"OSPFv2 Extended Inter-Area ASBR LSA in type 10 | ||||
opaque LSA."; | ||||
container eia-asbr-opaque { | ||||
container eia-asbr-tlv { | ||||
leaf asbr-rtr-id { | ||||
type rt-types:router-id; | ||||
description | ||||
"The OSPF Router ID of the ASBR."; | ||||
} | ||||
uses faam-sub-tlvs; | ||||
uses ospf:unknown-tlvs; | ||||
description | ||||
"EIA-ASBR TLV, used to advertise additional attributes | ||||
associated with the reachability of an ASBR."; | ||||
} | ||||
uses ospf:unknown-tlvs; | ||||
description | ||||
"OSPFv2 Extended Inter-Area (EIA-ASBR) opaque LSA."; | ||||
} | ||||
} | ||||
/* FAAM Sub-TLV in OSPFv3 Inter-Area-Router TLV */ | ||||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | ||||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | ||||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-router/" | ||||
+ "ospfv3-e-lsa:e-inter-router-tlvs/" | ||||
+ "ospfv3-e-lsa:inter-router-tlv" { | ||||
when "../../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv3'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3 | ||||
Inter-Area-Router TLV."; | ||||
} | ||||
uses faam-sub-tlvs; | ||||
description | ||||
"OSPFv3 Area-Scoped Inter-Area-Router TLV."; | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
8. Security Considerations | ||||
The YANG modules specified in this document define a schema for data | The YANG modules specified in this document define a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | [RFC5246]. | |||
The NETCONF access control model [RFC6536] provides the means to | The NETCONF access control model [RFC6536] provides the means to | |||
skipping to change at page 26, line 36 ¶ | skipping to change at page 47, line 9 ¶ | |||
Some of the readable data nodes in the modules may be considered | Some of the readable data nodes in the modules may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. The exposure of the Link State | notification) to these data nodes. The exposure of the Link State | |||
Database (LSDB) will expose the detailed topology of the network. | Database (LSDB) will expose the detailed topology of the network. | |||
This may be undesirable since both due to the fact that exposure may | This may be undesirable since both due to the fact that exposure may | |||
facilitate other attacks. Additionally, network operators may | facilitate other attacks. Additionally, network operators may | |||
consider their topologies to be sensitive confidential data. | consider their topologies to be sensitive confidential data. | |||
8. IANA Considerations | 9. IANA Considerations | |||
This document registers URIs in the IETF XML registry [RFC3688]. | This document registers URIs in the IETF XML registry [RFC3688]. | |||
Following the format in [RFC3688], the following registrations is | Following the format in [RFC3688], the following registrations is | |||
requested to be made: | requested to be made: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te | URI: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric | URI: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric | |||
skipping to change at page 27, line 13 ¶ | skipping to change at page 47, line 35 ¶ | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid | URI: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr | URI: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
This document registers the YANG modules in the YANG Module Names | This document registers the YANG modules in the YANG Module Names | |||
registry [RFC6020]. | registry [RFC6020]. | |||
name: ietf-ospfv3-te | name: ietf-ospfv3-te | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te | namespace: urn:ietf:params:xml:ns:yang:ietf-ospfv3-te | |||
prefix: ospfv3-te | prefix: ospfv3-te | |||
reference: RFC XXXX | reference: RFC XXXX | |||
name: ietf-ospf-two-metric | name: ietf-ospf-two-metric | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric | namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-two-metric | |||
skipping to change at page 27, line 41 ¶ | skipping to change at page 48, line 19 ¶ | |||
name: ietf-ospf-lls-localid | name: ietf-ospf-lls-localid | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid | namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-lls-localid | |||
prefix: ospf-lls-localid | prefix: ospf-lls-localid | |||
reference: RFC XXXX | reference: RFC XXXX | |||
name: ietf-ospf-link-attr | name: ietf-ospf-link-attr | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr | namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr | |||
prefix: ospf-link-attr | prefix: ospf-link-attr | |||
reference: RFC XXXX | reference: RFC XXXX | |||
9. Acknowledgements | name: ietf-ospf-flex-algo | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo | ||||
prefix: ospf-flex-algo | ||||
reference: RFC XXXX | ||||
10. Acknowledgements | ||||
This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
The YANG model was developed using the suite of YANG tools written | The YANG model was developed using the suite of YANG tools written | |||
and maintained by numerous authors. | and maintained by numerous authors. | |||
10. Normative References | 11. Normative References | |||
[I-D.ietf-lsr-flex-algo] | ||||
Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and | ||||
A. Gulko, "IGP Flexible Algorithm", draft-ietf-lsr-flex- | ||||
algo-15 (work in progress), April 2021. | ||||
[I-D.ietf-ospf-yang] | [I-D.ietf-ospf-yang] | |||
Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, | |||
"YANG Data Model for OSPF Protocol", draft-ietf-ospf- | "YANG Data Model for OSPF Protocol", draft-ietf-ospf- | |||
yang-29 (work in progress), October 2019. | yang-29 (work in progress), October 2019. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[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, | |||
End of changes. 14 change blocks. | ||||
18 lines changed or deleted | 1014 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |