| < 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 25 ¶ | skipping to change at page 48, line 4 ¶ | |||
| 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 | |||
| prefix: ospf-two-metric | prefix: ospf-two-metric | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| name: ietf-ospf-grace-linkdown | name: ietf-ospf-grace-linkdown | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown | namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-grace-linkdown | |||
| prefix: ospf-grace-linkdown | prefix: ospf-grace-linkdown | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 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. 15 change blocks. | ||||
| 19 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/ | ||||