| rfc9903.original | rfc9903.txt | |||
|---|---|---|---|---|
| Internet Y. Qu | Internet Engineering Task Force (IETF) Y. Qu | |||
| Internet-Draft Futurewei Technologies | Request for Comments: 9903 Futurewei Technologies | |||
| Intended status: Standards Track A. Lindem | Category: Standards Track A. Lindem | |||
| Expires: 10 November 2025 LabN Consulting, L.L.C. | ISSN: 2070-1721 LabN Consulting, L.L.C. | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| I. Chen | I. Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| 9 May 2025 | November 2025 | |||
| A YANG Data Model for OSPF Segment Routing over the MPLS Data Plane | A YANG Data Model for OSPF Segment Routing over the MPLS Data Plane | |||
| draft-ietf-ospf-sr-yang-50 | ||||
| Abstract | Abstract | |||
| This document defines a YANG data model that can be used to manage | This document defines a YANG data model that can be used to manage | |||
| OSPF Extensions for Segment Routing over the MPLS data plane. | OSPF extensions for Segment Routing over the MPLS data plane. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 10 November 2025. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9903. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language | |||
| 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams | |||
| 2. OSPF Segment Routing over MPLS YANG Data Model Scope . . . . 3 | 2. OSPF Segment Routing over MPLS YANG Data Model Scope | |||
| 3. OSPF Segment Routing over MPLS YANG Module . . . . . . . . . 4 | 3. OSPF Segment Routing over MPLS YANG Module | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 33 | 4. Security Considerations | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | 5. IANA Considerations | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | 6. References | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 6.1. Normative References | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 35 | 6.2. Informative References | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 38 | Appendix A. A Configuration Example | |||
| Appendix A. A Configuration Example . . . . . . . . . . . . . . 39 | Appendix B. Full Tree Diagram | |||
| Appendix B. Full Tree Diagram . . . . . . . . . . . . . . . . . 42 | Acknowledgements | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 | Authors' Addresses | |||
| 1. Overview | 1. Overview | |||
| This document defines a YANG data model [RFC7950] that can be used to | This document defines a YANG data model [RFC7950] that can be used to | |||
| manage OSPFv2 extensions for Segment Routing [RFC8665] and OSPFv3 | manage OSPFv2 extensions for Segment Routing [RFC8665] and OSPFv3 | |||
| extensions for Segment Routing [RFC8666] over the MPLS data plane. | extensions for Segment Routing [RFC8666] over the MPLS data plane. | |||
| The defined YANG data model is an augmentation to the OSPF YANG data | The defined YANG data model is an augmentation to the OSPF YANG data | |||
| model [RFC9129]. | model [RFC9129]. | |||
| The YANG data model in this document conforms to the Network | The YANG data model in this document conforms to the Network | |||
| Management Datastore Architecture (NMDA) [RFC8342]. | Management Datastore Architecture (NMDA) [RFC8342]. | |||
| 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", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
| This document uses the graphical representation of data model defined | This document uses the graphical representation of a data model as | |||
| in [RFC8340]. | defined in [RFC8340]. | |||
| 2. OSPF Segment Routing over MPLS YANG Data Model Scope | 2. OSPF Segment Routing over MPLS YANG Data Model Scope | |||
| The YANG data model in this document consists of a single YANG | The YANG data model in this document consists of a single YANG | |||
| module, ietf-ospf-sr-mpls. The ietf-ospf-sr-mpls YANG module | module, "ietf-ospf-sr-mpls". The "ietf-ospf-sr-mpls" YANG module | |||
| includes OSPF Segment Routing Extensions for the MPLS data plane for | includes OSPF Segment Routing extensions for the MPLS data plane for | |||
| both OSPFv2 [RFC8665] and OSPFv3 [RFC8666]. | both OSPFv2 [RFC8665] and OSPFv3 [RFC8666]. | |||
| The ietf-ospf-sr-mpls YANG module requires support for the base | The "ietf-ospf-sr-mpls" YANG module requires support for the base | |||
| segment routing module [RFC9020], which defines the global segment | Segment Routing module [RFC9020], which defines the global Segment | |||
| routing configuration independent of any specific routing protocol | Routing configuration independent of any specific routing protocol | |||
| configuration, and support of OSPF base model [RFC9129] which defines | configuration, and support of the OSPF base model [RFC9129], which | |||
| basic OSPF configuration and state. | defines the basic OSPF configuration and state. | |||
| The ietf-ospf-sr-mpls module defines both the data nodes to configure | The "ietf-ospf-sr-mpls" module defines both the data nodes to | |||
| OSPF segment routing MPLS extensions and the additions to the OSPF | configure OSPF Segment Routing MPLS extensions and the additions to | |||
| Link State Advertisements (LSAs) necessary to support SR-MPLS. The | the OSPF Link State Advertisements (LSAs) necessary to support | |||
| OSPF configuration includes: | Segment Routing over MPLS (SR-MPLS). The OSPF configuration | |||
| includes: | ||||
| * OSPF instance level configuration imported from the ietf-segment- | * OSPF instance level configuration imported from the "ietf-segment- | |||
| routing-mpls YANG module including the mapping server bindings and | routing-mpls" YANG module, including the mapping server bindings | |||
| the per-protocol Segment Routing Global Block (SRGB) (refer to the | and the per-protocol Segment Routing Global Block (SRGB) (refer to | |||
| sr-protocol grouping [RFC9020]). | the "sr-protocol" grouping [RFC9020]). | |||
| * OSPF area level configuration which enables segment routing over | * OSPF area level configuration, which enables Segment Routing over | |||
| MPLS on all interfaces as wall as advertisement of segment routing | MPLS on all interfaces as well as advertisement of Segment Routing | |||
| over MPLS information in Link State Advertisements (LSAs). | over MPLS information in Link State Advertisements (LSAs). | |||
| * OSPF interface level configuration for adjacency SIDs | * OSPF interface level configuration for Adjacency Segment | |||
| corresponding to specific neighbors on multi-access interfaces | Identifiers (Adj-SIDs) corresponding to specific neighbors on | |||
| (OSPF interface type broadcast or Non-Broadcast Multi-Access | multi-access interfaces (OSPF interface type broadcast or Non- | |||
| (NBMA)). The adjacency-sid definitions are imported from tht | Broadcast Multi-Access (NBMA)). The adjacency-sid definitions are | |||
| ietf-segment-routing-mpls YANG module (refer to the igp-interface | imported from the "ietf-segment-routing-mpls" YANG module (refer | |||
| grouping [RFC9020]). | to the "igp-interface" grouping [RFC9020]). | |||
| * OSPF interface level configuration for Topology-Independent Loop- | * OSPF interface level configuration for Topology Independent Loop- | |||
| Free Alternative (TI-LFA) using the MPLS data plane. TI-LFA is | Free Alternative (TI-LFA) using the MPLS data plane. TI-LFA is | |||
| described in [I-D.ietf-rtgwg-segment-routing-ti-lfa]. | described in [RFC9855]. | |||
| The operational state (read-only) additions to specifc to OSPFv2 LSA | The operational state (read-only) additions specific to OSPFv2 LSA | |||
| include: | include: | |||
| * OSPFv2 extended range TLV encodings [RFC8665] in the OSPF | * OSPFv2 extended range TLV encodings [RFC8665] in the OSPF Extended | |||
| Extended-Prefix Opaque LSA [RFC7684]. | ||||
| * OSPFv2 Prefix SID Sub-TLV encodings [RFC8665] included the OSPF | ||||
| Extended Prefix TLV which is advertised in the OSPF Extended | ||||
| Prefix Opaque LSA [RFC7684]. | Prefix Opaque LSA [RFC7684]. | |||
| * OSPFv2 Prefix SID Sub-TLV encodings [RFC8665] included the OSPF | * OSPFv2 Prefix-SID Sub-TLV encodings [RFC8665], including the OSPF | |||
| Extended Prefix TLV which is advertised in the OSPF Extended | Extended Prefix TLV, which is advertised in the OSPF Extended | |||
| Prefix Opaque LSA [RFC7684]. | Prefix Opaque LSA [RFC7684]. | |||
| * OSPFv2 SR-Algorithm, SID/Label Range TLVs, SR Local Block TLVs, | * OSPFv2 SR-Algorithm, SID/Label Range TLV, SR Local Block TLV, and | |||
| Segment Routing Mapping Server (SRMS) preference TLV [RFC8665] | Segment Routing Mapping Server (SRMS) Preference TLV [RFC8665] | |||
| advertised in the OSPFv2 Router Information Opaque LSA [RFC7770]. | advertised in the OSPFv2 Router Information Opaque LSA [RFC7770]. | |||
| The operational state (read-only) additions to specifc to OSPFv3 LSA | The operational state (read-only) additions specific to OSPFv3 LSA | |||
| include: | include: | |||
| * OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E- | * OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E- | |||
| Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, | Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, | |||
| and E-Type-7-LSA [RFC8362]. | and E-Type-7-LSA [RFC8362]. | |||
| * OSPFv3 extended range TLV encodings [RFC8666] in the OSPFv3 E- | ||||
| Intra-Area-Prefix-LSA, E-Inter-Area-Prefix-LSA, E-AS-External-LSA, | ||||
| and E-Type-7-LSA [RFC8362]. | ||||
| * OSPFv3 Prefix-SID Sub-TLV encodings [RFC8666] in the OSPFv3 Intra- | * OSPFv3 Prefix-SID Sub-TLV encodings [RFC8666] in the OSPFv3 Intra- | |||
| Area Prefix TLV, Inter-Area Prefix TLV, External Prefix TLV, and | Area-Prefix TLV, Inter-Area-Prefix TLV, External-Prefix TLV, and | |||
| OSPFv3 Extended Prefix Range TLV [RFC8362]. | OSPFv3 Extended Prefix Range TLV [RFC8362]. | |||
| * OSPFv3 Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV | * OSPFv3 Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV | |||
| [RFC8362]. | [RFC8362]. | |||
| * OSPFv3 Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV | ||||
| [RFC8362]. | ||||
| * OSPFv3 LAN Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV | * OSPFv3 LAN Adj-SID Sub-TLV [RFC8666] in the OSPFv3 Router-Link TLV | |||
| [RFC8362]. | [RFC8362]. | |||
| * OSPFv3 SR-Algorithm, SID/Label Range TLVs, SR Local Block TLVs, | * OSPFv3 SR-Algorithm, SID/Label Range TLV, SR Local Block TLV, and | |||
| Segment Routing Mapping Server (SRMS) preference TLV [RFC8666] | Segment Routing Mapping Server (SRMS) Preference TLV [RFC8666] | |||
| advertised in the OSPFv3 Router Information LSA [RFC7770]. | advertised in the OSPFv3 Router Information LSA [RFC7770]. | |||
| 3. OSPF Segment Routing over MPLS YANG Module | 3. OSPF Segment Routing over MPLS YANG Module | |||
| [RFC2328], [RFC4915], [RFC5340], [RFC6991], [RFC8102], [RFC8294], | [RFC2328], [RFC4915], [RFC5340], [RFC6991], [RFC8102], [RFC8294], | |||
| [RFC8349], [RFC9587], and [I-D.ietf-rtgwg-segment-routing-ti-lfa] are | [RFC8349], [RFC9587], and [RFC9855] are referenced in the YANG | |||
| referenced in the YANG module. | module. | |||
| <CODE BEGINS> file "ietf-ospf-sr-mpls@2025-05-09.yang" | <CODE BEGINS> file "ietf-ospf-sr-mpls@2025-11-21.yang" | |||
| module ietf-ospf-sr-mpls { | module ietf-ospf-sr-mpls { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls"; | |||
| prefix ospf-sr-mpls; | prefix ospf-sr-mpls; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at line 216 ¶ | |||
| import ietf-ospf { | import ietf-ospf { | |||
| prefix ospf; | prefix ospf; | |||
| reference | reference | |||
| "RFC 9129: YANG Data Model for the OSPF Protocol"; | "RFC 9129: YANG Data Model for the OSPF Protocol"; | |||
| } | } | |||
| import ietf-ospfv3-extended-lsa { | import ietf-ospfv3-extended-lsa { | |||
| prefix ospfv3-e-lsa; | prefix ospfv3-e-lsa; | |||
| reference | reference | |||
| "RFC 9587: YANG Data Model for OSPFv3 Extended LSAs"; | "RFC 9587: YANG Data Model for OSPFv3 Extended LSAs"; | |||
| } | } | |||
| organization | organization | |||
| "IETF LSR - Link State Routing Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/lsr/> | "WG Web: <https://datatracker.ietf.org/wg/lsr/> | |||
| WG List: <mailto:lsr@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
| Author: Yingzhen Qu | Author: Yingzhen Qu | |||
| <mailto:yingzhen.ietf@gmail.com> | <mailto:yingzhen.ietf@gmail.com> | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee.ietf@gmail.com> | <mailto:acee.ietf@gmail.com> | |||
| Author: Derek Yeung | Author: Derek Yeung | |||
| <mailto:derek@arrcus.com> | <mailto:derek@arrcus.com> | |||
| Author: Jeffrey Zhang | Author: Jeffrey Zhang | |||
| <mailto:zzhang@juniper.net> | <mailto:zzhang@juniper.net> | |||
| Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
| <mailto:ingwherchen@mitre.org>"; | <mailto:ingwherchen@mitre.org>"; | |||
| description | description | |||
| "This YANG module defines the generic configuration | "This YANG module defines the generic configuration | |||
| and operational state for OSPF Segment Routing (SR). | and operational state for OSPF Segment Routing (SR). | |||
| 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. | ||||
| Copyright (c) 2025 IETF Trust and the persons | Copyright (c) 2025 IETF Trust and the persons | |||
| identified as authors of the code. All rights reserved. | identified as authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
| to the license terms contained in, the Revised BSD License | to the license terms contained in, the Revised BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| All revisions of IETF and IANA published modules can be found | All revisions of IETF and IANA published modules can be found | |||
| at the YANG Parameters registry | at the YANG Parameters registry | |||
| (https://www.iana.org/assignments/yang-parameters). | (https://www.iana.org/assignments/yang-parameters). | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | This version of this YANG module is part of RFC 9903; see | |||
| 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. | ||||
| This version of this YANG module is part of RFC XXXX; see | ||||
| the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
| // RFC Ed.: Replace XXXX with actual RFC number and remove | revision 2025-11-21 { | |||
| // this note | ||||
| revision 2025-05-09 { | ||||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for OSPF Segment Routing for | "RFC 9903: A YANG Data Model for OSPF Segment Routing | |||
| over MPLS Data Plane"; | over the MPLS Data Plane"; | |||
| } | } | |||
| // RFC Ed.: Replace XXXX with actual RFC number. | ||||
| // Also, replace '2025-04-14' with the module publication date | ||||
| // in the format (YYYY-MM-DD) and remove this note. | ||||
| feature remote-lfa-sr { | feature remote-lfa-sr { | |||
| description | description | |||
| "Enhance rLFA to use SR path."; | "Enhance Remote Loop-Free Alternate (RLFA) to use an SR path."; | |||
| reference | reference | |||
| "RFC 8102: Remote-LFA Node Protection and Manageability"; | "RFC 8102: Remote-LFA Node Protection and Manageability"; | |||
| } | } | |||
| feature ti-lfa { | feature ti-lfa { | |||
| description | description | |||
| "Topology-Independent Loop-Free Alternate (TI-LFA) | "Topology Independent Loop-Free Alternate (TI-LFA) | |||
| computation using segment routing."; | computation using segment routing."; | |||
| reference | reference | |||
| "draft-ietf-rtgwg-segment-routing-ti-lfa: | "RFC 9855: Topology Independent Fast Reroute Using Segment | |||
| Topology-Independent Fast Reroute using Segment Routing"; | Routing"; | |||
| } | } | |||
| identity prefix-sid-flag { | identity prefix-sid-flag { | |||
| description | description | |||
| "Base identity for prefix SID sub-TLV flags."; | "Base identity for Prefix-SID Sub-TLV flags."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 5 | "RFC 8665: OSPF Extensions for Segment Routing, Section 5 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| } | } | |||
| identity np-flag { | identity np-flag { | |||
| base prefix-sid-flag; | base prefix-sid-flag; | |||
| description | description | |||
| "No-PHP flag."; | "No-PHP (No Penultimate Hop-Popping) flag."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 5 | "RFC 8665: OSPF Extensions for Segment Routing, Section 5 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| } | } | |||
| identity m-flag { | identity m-flag { | |||
| base prefix-sid-flag; | base prefix-sid-flag; | |||
| description | description | |||
| "Mapping server flag."; | "Mapping server flag."; | |||
| reference | reference | |||
| skipping to change at page 8, line 37 ¶ | skipping to change at line 339 ¶ | |||
| base prefix-sid-flag; | base prefix-sid-flag; | |||
| description | description | |||
| "Local flag."; | "Local flag."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 5 | "RFC 8665: OSPF Extensions for Segment Routing, Section 5 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| } | } | |||
| identity extended-prefix-range-flag { | identity extended-prefix-range-flag { | |||
| description | description | |||
| "Base identity for extended prefix range TLV flags."; | "Base identity for Extended Prefix Range TLV flags."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 4 | "RFC 8665: OSPF Extensions for Segment Routing, Section 4 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5"; | |||
| } | } | |||
| identity ia-flag { | identity ia-flag { | |||
| base extended-prefix-range-flag; | base extended-prefix-range-flag; | |||
| description | description | |||
| "Inter-Area flag. Note that this is only applicable to OSPFv2 | "Inter-Area flag. Note that this is only applicable to OSPFv2 | |||
| since OSPFv3 advertises separate Inter-Area extended-LSA."; | since OSPFv3 advertises separate Inter-Area extended-LSA."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 4"; | "RFC 8665: OSPF Extensions for Segment Routing, Section 4"; | |||
| } | } | |||
| identity adj-sid-flag { | identity adj-sid-flag { | |||
| description | description | |||
| "Base identity for Adj-SID sub-TLV flags."; | "Base identity for Adj-SID Sub-TLV flags."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| } | } | |||
| identity b-flag { | identity b-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Backup flag."; | "Backup flag."; | |||
| reference | reference | |||
| skipping to change at page 9, line 33 ¶ | skipping to change at line 383 ¶ | |||
| description | description | |||
| "Value/Index flag - corresponds to V-Flag in references."; | "Value/Index flag - corresponds to V-Flag in references."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| } | } | |||
| identity lg-flag { | identity lg-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Local/Global flag - corresponds to L-flag in references."; | "Local/Global flag - corresponds to L-Flag in references."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| } | } | |||
| identity g-flag { | identity g-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Group flag."; | "Group flag."; | |||
| reference | reference | |||
| skipping to change at page 10, line 4 ¶ | skipping to change at line 402 ¶ | |||
| "Group flag."; | "Group flag."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| } | } | |||
| identity p-flag { | identity p-flag { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| description | description | |||
| "Persistent flag."; | "Persistent flag."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | "RFC 8665: OSPF Extensions for Segment Routing, Section 6 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| } | } | |||
| /* Groupings */ | /* Groupings */ | |||
| grouping sid-tlv-encoding { | grouping sid-tlv-encoding { | |||
| description | description | |||
| "SID TLV Encoding - 20-bit label or 32-bit SID index whose | "SID TLV Encoding - 20-bit label or 32-bit SID index whose | |||
| interpretation is dependent on the TLV length (3 for an | interpretation is dependent on the TLV length (3 for an | |||
| MPLS label or 4 for a 32-bit value) or the TLV V-Flag and | MPLS label or 4 for a 32-bit value) or the TLV V-Flag and | |||
| L-Flag settings: | L-Flag settings: | |||
| If the V-Flag is set to 0 and L-Flag is set to 0: | If the V-Flag is set to 0 and L-Flag is set to 0: | |||
| The SID/Index/Label field is a 4-octet index defining | The SID/Index/Label field is a 4-octet index defining | |||
| the offset in the SID/Label space advertised by this | the offset in the SID/Label space advertised by this | |||
| router. | router. | |||
| If V-Flag is set to 1 and L-Flag is set to 1: The | If the V-Flag is set to 1 and L-Flag is set to 1: | |||
| ID/Index/Label field is a 3-octet local label where the | The SID/Index/Label field is a 3-octet local label where the | |||
| 20 rightmost bits are used for encoding the label value."; | 20 rightmost bits are used for encoding the label value."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 2.1 | "RFC 8665: OSPF Extensions for Segment Routing, Section 2.1 | |||
| RFC 8665: OSPF Extensions for Segment Routing, Section 5 | RFC 8665: OSPF Extensions for Segment Routing, Section 5 | |||
| RFC 8666: OSPFv3 Extensions for Segment Routing, Section 3"; | RFC 8666: OSPFv3 Extensions for Segment Routing, Section 3"; | |||
| choice sid { | choice sid { | |||
| case sid-label { | case sid-label { | |||
| leaf label-value { | leaf label-value { | |||
| type uint32 { | type uint32 { | |||
| range "0 .. 1048575"; | range "0 .. 1048575"; | |||
| } | } | |||
| description | description | |||
| "A 20-bit MPLS Label"; | "A 20-bit MPLS label."; | |||
| } | } | |||
| } | } | |||
| case sid-index { | case sid-index { | |||
| leaf index-value { | leaf index-value { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Index into a label space advertised by this router."; | "Index into a label space advertised by this router."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| skipping to change at page 11, line 4 ¶ | skipping to change at line 450 ¶ | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Index into a label space advertised by this router."; | "Index into a label space advertised by this router."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Choice of either a 20-bit MPLS label or 32-bit index into | "Choice of either a 20-bit MPLS label or 32-bit index into | |||
| an advertised label space."; | an advertised label space."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv2-prefix-sid-sub-tlvs { | grouping ospfv2-prefix-sid-sub-tlvs { | |||
| description | description | |||
| "OSPFv2 Prefix Segment ID (SID) sub-TLVs."; | "OSPFv2 Prefix Segment ID (SID) Sub-TLVs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 5"; | |||
| (Section 5)"; | ||||
| container prefix-sid-sub-tlvs { | container prefix-sid-sub-tlvs { | |||
| description | description | |||
| "Prefix SID sub-TLV."; | "Prefix-SID Sub-TLV."; | |||
| list prefix-sid-sub-tlv { | list prefix-sid-sub-tlv { | |||
| description | description | |||
| "Prefix SID sub-TLV."; | "Prefix-SID Sub-TLV."; | |||
| container prefix-sid-flags { | container prefix-sid-flags { | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base prefix-sid-flag; | base prefix-sid-flag; | |||
| } | } | |||
| description | description | |||
| "Prefix SID Sub-TLV flags."; | "Prefix-SID Sub-TLV flags."; | |||
| } | } | |||
| description | description | |||
| "Segment Identifier (SID) Flags."; | "Segment Identifier (SID) flags."; | |||
| } | } | |||
| leaf mt-id { | leaf mt-id { | |||
| type uint8 { | type uint8 { | |||
| range "0 .. 127"; | range "0 .. 127"; | |||
| } | } | |||
| description | description | |||
| "Multi-topology ID."; | "Multi-topology ID."; | |||
| reference | reference | |||
| "RFC 4915: Multi-Topology (MT) Routing in OSPF"; | "RFC 4915: Multi-Topology (MT) Routing in OSPF"; | |||
| } | } | |||
| leaf algorithm { | leaf algorithm { | |||
| type identityref { | type identityref { | |||
| base sr-cmn:prefix-sid-algorithm; | base sr-cmn:prefix-sid-algorithm; | |||
| } | } | |||
| description | description | |||
| "Algorithm associated with the prefix-SID."; | "Algorithm associated with the Prefix-SID."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv2-extended-prefix-range-tlvs { | grouping ospfv2-extended-prefix-range-tlvs { | |||
| description | description | |||
| "OSPFv2 Extended prefix range TLV grouping."; | "OSPFv2 Extended Prefix Range TLV grouping."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 4"; | |||
| (Section 4)"; | ||||
| container extended-prefix-range-tlvs { | container extended-prefix-range-tlvs { | |||
| description | description | |||
| "List of range of prefixes."; | "List of range of prefixes."; | |||
| list extended-prefix-range-tlv { | list extended-prefix-range-tlv { | |||
| description | description | |||
| "Range of prefixes."; | "Range of prefixes."; | |||
| leaf prefix-length { | leaf prefix-length { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Length of prefix in bits."; | "Length of prefix in bits."; | |||
| skipping to change at page 12, line 34 ¶ | skipping to change at line 527 ¶ | |||
| description | description | |||
| "Number of prefixes covered by the | "Number of prefixes covered by the | |||
| advertisement."; | advertisement."; | |||
| } | } | |||
| container extended-prefix-range-flags { | container extended-prefix-range-flags { | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base extended-prefix-range-flag; | base extended-prefix-range-flag; | |||
| } | } | |||
| description | description | |||
| "Extended prefix range TLV flags."; | "Extended Prefix Range TLV flags."; | |||
| } | } | |||
| description | description | |||
| "Extended Prefix Range TLV flags."; | "Extended Prefix Range TLV flags."; | |||
| } | } | |||
| leaf prefix { | leaf prefix { | |||
| type inet:ipv4-prefix; | type inet:ipv4-prefix; | |||
| description | description | |||
| "IPv4 prefix."; | "IPv4 prefix."; | |||
| } | } | |||
| uses ospfv2-prefix-sid-sub-tlvs; | uses ospfv2-prefix-sid-sub-tlvs; | |||
| uses ospf:unknown-tlvs; | uses ospf:unknown-tlvs; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv2-adj-sid-sub-tlvs { | grouping ospfv2-adj-sid-sub-tlvs { | |||
| description | description | |||
| "OSPFv2 Adj-SID sub-TLV grouping."; | "OSPFv2 Adj-SID Sub-TLV grouping."; | |||
| container adj-sid-sub-tlvs { | container adj-sid-sub-tlvs { | |||
| description | description | |||
| "Adj-SID optional sub-TLVs."; | "Adj-SID optional sub-TLVs."; | |||
| list adj-sid-sub-tlv { | list adj-sid-sub-tlv { | |||
| description | description | |||
| "List of Adj-SID sub-TLVs."; | "List of Adj-SID Sub-TLVs."; | |||
| container adj-sid-flags { | container adj-sid-flags { | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| } | } | |||
| description | description | |||
| "Adj-SID sub-TLV flags."; | "Adj-SID Sub-TLV flags."; | |||
| } | } | |||
| description | description | |||
| "Adj-SID sub-TLV flags."; | "Adj-SID Sub-TLV flags."; | |||
| } | } | |||
| leaf mt-id { | leaf mt-id { | |||
| type uint8 { | type uint8 { | |||
| range "0 .. 127"; | range "0 .. 127"; | |||
| } | } | |||
| description | description | |||
| "Multi-topology ID. Topologies range from 0-127 and | "Multi-topology ID. Topologies range from 0-127 and | |||
| return of any other value would indicate an error."; | return of any other value would indicate an error."; | |||
| reference | reference | |||
| "RFC 4915: Multi-Topology (MT) Routing in OSPF"; | "RFC 4915: Multi-Topology (MT) Routing in OSPF"; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Weight used for load-balancing."; | "Weight used for load-balancing."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv2-lan-adj-sid-sub-tlvs { | grouping ospfv2-lan-adj-sid-sub-tlvs { | |||
| description | description | |||
| "OSPFv2 LAN Adj-SID sub-TLV grouping."; | "OSPFv2 LAN Adj-SID Sub-TLV grouping."; | |||
| container lan-adj-sid-sub-tlvs { | container lan-adj-sid-sub-tlvs { | |||
| description | description | |||
| "LAN Adj-SID optional sub-TLVs."; | "LAN Adj-SID optional sub-TLVs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| list lan-adj-sid-sub-tlv { | list lan-adj-sid-sub-tlv { | |||
| description | description | |||
| "List of LAN Adj-SID sub-TLVs."; | "List of LAN Adj-SID Sub-TLVs."; | |||
| container lan-adj-sid-flags { | container lan-adj-sid-flags { | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| } | } | |||
| description | description | |||
| "LAN Adj-SID sub-TLV flags."; | "LAN Adj-SID Sub-TLV flags."; | |||
| } | } | |||
| description | description | |||
| "LAN Adj-SID sub-TLV flags."; | "LAN Adj-SID Sub-TLV flags."; | |||
| } | } | |||
| leaf mt-id { | leaf mt-id { | |||
| type uint8 { | type uint8 { | |||
| range "0 .. 127"; | range "0 .. 127"; | |||
| } | } | |||
| description | description | |||
| "Multi-topology ID. Topologies range from 0-127 and | "Multi-topology ID. Topologies range from 0-127 and | |||
| return of any other value would indicate an error."; | return of any other value would indicate an error."; | |||
| reference | reference | |||
| "RFC 4915: Multi-Topology (MT) Routing in OSPF"; | "RFC 4915: Multi-Topology (MT) Routing in OSPF"; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Weight used for load-balancing."; | "Weight used for load-balancing."; | |||
| } | } | |||
| leaf neighbor-router-id { | leaf neighbor-router-id { | |||
| skipping to change at page 14, line 44 ¶ | skipping to change at line 632 ¶ | |||
| description | description | |||
| "Neighbor router ID."; | "Neighbor router ID."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping sr-algorithm-tlv { | grouping sr-algorithm-tlv { | |||
| description | description | |||
| "SR algorithm TLV grouping."; | "SR-Algorithm TLV grouping."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 3.1"; | |||
| (Section 3.1)"; | ||||
| container sr-algorithm-tlv { | container sr-algorithm-tlv { | |||
| description | description | |||
| "All SR algorithm TLVs."; | "All SR-Algorithm TLVs."; | |||
| leaf-list sr-algorithm { | leaf-list sr-algorithm { | |||
| type identityref { | type identityref { | |||
| base sr-cmn:prefix-sid-algorithm; | base sr-cmn:prefix-sid-algorithm; | |||
| } | } | |||
| description | description | |||
| "Segment Routing (SR) algorithms that the router is | "Segment Routing (SR) algorithms that the router is | |||
| currently using."; | currently using."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping sid-range-tlvs { | grouping sid-range-tlvs { | |||
| description | description | |||
| "SID Range TLV grouping."; | "SID Range TLV grouping."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 3.2"; | |||
| (Section 3.2)"; | ||||
| container sid-range-tlvs { | container sid-range-tlvs { | |||
| description | description | |||
| "List of SID range TLVs."; | "List of SID Range TLVs."; | |||
| list sid-range-tlv { | list sid-range-tlv { | |||
| description | description | |||
| "SID range TLV."; | "SID Range TLV."; | |||
| leaf range-size { | leaf range-size { | |||
| type rt-types:uint24; | type rt-types:uint24; | |||
| description | description | |||
| "SID range."; | "SID range."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping local-block-tlvs { | grouping local-block-tlvs { | |||
| description | description | |||
| "The SR local block TLV contains the | "The SR Local Block TLV contains the | |||
| range of labels reserved for local SIDs."; | range of labels reserved for local SIDs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 3.3"; | |||
| (Section 3.3)"; | ||||
| container local-block-tlvs { | container local-block-tlvs { | |||
| description | description | |||
| "List of SRLB TLVs."; | "List of Segment Routing Local Block (SRLB) TLVs."; | |||
| list local-block-tlv { | list local-block-tlv { | |||
| description | description | |||
| "SRLB TLV."; | "SRLB TLV."; | |||
| leaf range-size { | leaf range-size { | |||
| type rt-types:uint24; | type rt-types:uint24; | |||
| description | description | |||
| "SID range. The return of a zero value would indicate | "SID range. The return of a zero value would indicate | |||
| an error."; | an error."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping srms-preference-tlv { | grouping srms-preference-tlv { | |||
| description | description | |||
| "The SR Mapping Server (SRMS) preference TLV is | "The SR Mapping Server (SRMS) Preference TLV is | |||
| used to advertise a preference associated with | used to advertise a preference associated with | |||
| the node that acts as an SR Mapping Server. SR | the node that acts as an SR Mapping Server. SR | |||
| Mapping Server advertisements with a higher | Mapping Server advertisements with a higher | |||
| preference value are preferred over those with | preference value are preferred over those with | |||
| a lower preference value."; | a lower preference value."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 3.4"; | |||
| (Section 3.4)"; | ||||
| container srms-preference-tlv { | container srms-preference-tlv { | |||
| description | description | |||
| "SRMS Preference TLV."; | "SRMS Preference TLV."; | |||
| leaf preference { | leaf preference { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "SRMS preference TLV, value from 0 to 255 with | "SRMS Preference TLV, value from 0 to 255 with | |||
| 255 being the most preferred."; | 255 being the most preferred."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-prefix-sid-sub-tlvs { | grouping ospfv3-prefix-sid-sub-tlvs { | |||
| description | description | |||
| "OSPFv3 Prefix Segment ID (SID) sub-TLVs."; | "OSPFv3 Prefix-SID Sub-TLVs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| container prefix-sid-sub-tlvs { | container prefix-sid-sub-tlvs { | |||
| description | description | |||
| "Prefix SID sub-TLV."; | "Prefix-SID Sub-TLV."; | |||
| list prefix-sid-sub-tlv { | list prefix-sid-sub-tlv { | |||
| description | description | |||
| "Prefix SID sub-TLV."; | "Prefix-SID Sub-TLV."; | |||
| container ospfv3-prefix-sid-flags { | container ospfv3-prefix-sid-flags { | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base prefix-sid-flag; | base prefix-sid-flag; | |||
| } | } | |||
| description | description | |||
| "Prefix SID sub-TLV flags."; | "Prefix-SID Sub-TLV flags."; | |||
| } | } | |||
| description | description | |||
| "Segment Identifier (SID) Flags."; | "Segment Identifier (SID) flags."; | |||
| } | } | |||
| leaf algorithm { | leaf algorithm { | |||
| type identityref { | type identityref { | |||
| base sr-cmn:prefix-sid-algorithm; | base sr-cmn:prefix-sid-algorithm; | |||
| } | } | |||
| description | description | |||
| "Algorithm associated with the prefix-SID."; | "Algorithm associated with the Prefix-SID."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-extended-prefix-range-tlvs { | grouping ospfv3-extended-prefix-range-tlvs { | |||
| description | description | |||
| "OSPFv3 Extended prefix range TLV grouping."; | "OSPFv3 Extended Prefix Range TLV grouping."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5"; | |||
| (Section 5)"; | ||||
| container ospfv3-extended-prefix-range-tlvs { | container ospfv3-extended-prefix-range-tlvs { | |||
| description | description | |||
| "List of extended prefix range TLVs."; | "List of Extended Prefix Range TLVs."; | |||
| list extended-prefix-range-tlv { | list extended-prefix-range-tlv { | |||
| description | description | |||
| "Range of prefixes."; | "Range of prefixes."; | |||
| leaf prefix-length { | leaf prefix-length { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Length of prefix in bits."; | "Length of prefix in bits."; | |||
| } | } | |||
| leaf af { | leaf af { | |||
| type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
| skipping to change at page 18, line 15 ¶ | skipping to change at line 789 ¶ | |||
| "IPv4 or IPv6 prefix."; | "IPv4 or IPv6 prefix."; | |||
| } | } | |||
| uses ospfv3-prefix-sid-sub-tlvs; | uses ospfv3-prefix-sid-sub-tlvs; | |||
| uses ospf:unknown-tlvs; | uses ospf:unknown-tlvs; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-adj-sid-sub-tlvs { | grouping ospfv3-adj-sid-sub-tlvs { | |||
| description | description | |||
| "OSPFv3 Adj-SID sub-TLV grouping."; | "OSPFv3 Adj-SID Sub-TLV grouping."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| (Section 7)"; | ||||
| container adj-sid-sub-tlvs { | container adj-sid-sub-tlvs { | |||
| description | description | |||
| "Adj-SID optional sub-TLVs."; | "Adj-SID optional sub-TLVs."; | |||
| list adj-sid-sub-tlv { | list adj-sid-sub-tlv { | |||
| description | description | |||
| "List of Adj-SID sub-TLVs."; | "List of Adj-SID Sub-TLVs."; | |||
| container adj-sid-flags { | container adj-sid-flags { | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| } | } | |||
| description | description | |||
| "Adj-SID sub-tlv flags."; | "Adj-SID Sub-tlv flags."; | |||
| } | } | |||
| description | description | |||
| "Adj-sid sub-tlv flags."; | "Adj-SID Sub-tlv flags."; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Weight used for load-balancing."; | "Weight used for load-balancing."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lan-adj-sid-sub-tlvs { | grouping ospfv3-lan-adj-sid-sub-tlvs { | |||
| description | description | |||
| "OSPFv3 LAN Adj-SID sub-TLV grouping."; | "OSPFv3 LAN Adj-SID Sub-TLV grouping."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| (Section 7)"; | ||||
| container lan-adj-sid-sub-tlvs { | container lan-adj-sid-sub-tlvs { | |||
| description | description | |||
| "LAN Adj-SID optional sub-TLVs."; | "LAN Adj-SID optional sub-TLVs."; | |||
| list lan-adj-sid-sub-tlv { | list lan-adj-sid-sub-tlv { | |||
| description | description | |||
| "List of LAN Adj-SID sub-TLVs."; | "List of LAN Adj-SID Sub-TLVs."; | |||
| container lan-adj-sid-flags { | container lan-adj-sid-flags { | |||
| leaf-list flag { | leaf-list flag { | |||
| type identityref { | type identityref { | |||
| base adj-sid-flag; | base adj-sid-flag; | |||
| } | } | |||
| description | description | |||
| "LAN Adj-SID sub-TLV flags."; | "LAN Adj-SID Sub-TLV flags."; | |||
| } | } | |||
| description | description | |||
| "LAN Adj-SID sub-TLV flags."; | "LAN Adj-SID Sub-TLV flags."; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Weight used for load-balancing."; | "Weight used for load-balancing."; | |||
| } | } | |||
| leaf neighbor-router-id { | leaf neighbor-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description | description | |||
| "Neighbor router ID."; | "Neighbor router ID."; | |||
| } | } | |||
| uses sid-tlv-encoding; | uses sid-tlv-encoding; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | /* | |||
| * Augmentations for OSPF SR MPLS Configuration (read-write) | * Augmentations for OSPF SR-MPLS Configuration (read-write) | |||
| * data nodes. | * data nodes. | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols" | augment "/rt:routing/rt:control-plane-protocols" | |||
| + "/rt:control-plane-protocol/ospf:ospf" { | + "/rt:control-plane-protocol/ospf:ospf" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | |||
| description | description | |||
| "This augments the OSPF routing protocol when used."; | "This augments the OSPF routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol configuration with segment | "This augments the OSPF protocol configuration with Segment | |||
| routing over the MPLS data plane. The following semantic | Routing over the MPLS data plane. The following semantic | |||
| validation be performed for the configuration data: | validation is to be performed for the configuration data: | |||
| - Assure the binding policies prefixes do not overlap."; | ||||
| - Assure the binding policies prefixes do not overlapp."; | ||||
| reference | reference | |||
| "RFC 9020 - YANG Data Model for Segment Routing"; | "RFC 9020: YANG Data Model for Segment Routing"; | |||
| uses sr-mpls:sr-control-plane; | uses sr-mpls:sr-control-plane; | |||
| container protocol-srgb { | container protocol-srgb { | |||
| if-feature "sr-mpls:protocol-srgb"; | if-feature "sr-mpls:protocol-srgb"; | |||
| uses sr-cmn:srgb; | uses sr-cmn:srgb; | |||
| description | description | |||
| "Per-protocol SRGB."; | "Per-protocol SRGB."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area" { | + "ospf:areas/ospf:area" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospf') and " | + "rt:control-plane-protocol/rt:type, 'ospf:ospf') and " | |||
| + "/rt:routing/rt:control-plane-protocols" | + "/rt:routing/rt:control-plane-protocols" | |||
| + "/rt:control-plane-protocol/ospf:ospf" | + "/rt:control-plane-protocol/ospf:ospf" | |||
| + "/ospf-sr-mpls:segment-routing/" | + "/ospf-sr-mpls:segment-routing/" | |||
| + "ospf-sr-mpls:enabled = 'true'" { | + "ospf-sr-mpls:enabled = 'true'" { | |||
| description | description | |||
| "This augments the OSPF area configuration when segment | "This augments the OSPF area configuration when Segment | |||
| routing is enabled at the OSPF instance level."; | Routing is enabled at the OSPF instance level."; | |||
| } | } | |||
| container segment-routing { | container segment-routing { | |||
| presence "When present segment routing over MPLS is enabled | presence "When present, Segment Routing over MPLS is enabled | |||
| for the area."; | for the area."; | |||
| description | description | |||
| "OSPF area level segment routing configuration. Enable | "OSPF area level Segment Routing configuration. Enables | |||
| segment routing over MPLS on all interfaces and enables | Segment Routing over MPLS on all interfaces, and enables | |||
| advertisement of Link State Advertisements (LSAs) and TLVs | advertisement of Link State Advertisements (LSAs) and TLVs | |||
| supporting segment routing over MPLS"; | supporting Segment Routing over MPLS."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol area configuration with | "This augments the OSPF protocol area configuration with | |||
| segment routing."; | Segment Routing."; | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospf') and " | + "rt:control-plane-protocol/rt:type, 'ospf:ospf') and " | |||
| + "/rt:routing/rt:control-plane-protocols/" | + "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area/ospf-sr-mpls:segment-routing" { | + "ospf:areas/ospf:area/ospf-sr-mpls:segment-routing" { | |||
| description | description | |||
| "This augments the OSPF interface configuration when used."; | "This augments the OSPF interface configuration when used."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol interface | "This augments the OSPF protocol interface | |||
| configuration with segment routing."; | configuration with Segment Routing."; | |||
| reference | reference | |||
| "RFC 9020 - YANG Data Model for Segment Routing"; | "RFC 9020: YANG Data Model for Segment Routing"; | |||
| uses sr-mpls:igp-interface { | uses sr-mpls:igp-interface { | |||
| augment "segment-routing/adjacency-sid/adj-sids" { | augment "segment-routing/adjacency-sid/adj-sids" { | |||
| when "((../../../ospf:interface-type = 'broadcast') or | when "((../../../ospf:interface-type = 'broadcast') or | |||
| (../../../ospf:interface-type = 'non-broadcast'))" { | (../../../ospf:interface-type = 'non-broadcast'))" { | |||
| description | description | |||
| "This augments broadcast and non-broadcast multi-access | "This augments broadcast and non-broadcast multi-access | |||
| interface segment routing interface configuration."; | interface Segment Routing interface configuration."; | |||
| } | } | |||
| description | description | |||
| "This augments LAN interface adj-sid with neighbor-id."; | "This augments LAN interface adj-sid with neighbor-id."; | |||
| leaf neighbor-id { | leaf neighbor-id { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Neighbor's Router ID, IPv4 address, or IPv6 address. | "Neighbor's Router ID, IPv4 address, or IPv6 address. | |||
| Specification is optional and, if specified, SHOULD | Specification is optional and, if specified, SHOULD | |||
| specify a neighbor reachable via the interface."; | specify a neighbor reachable via the interface."; | |||
| skipping to change at page 21, line 43 ¶ | skipping to change at line 959 ¶ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | |||
| + "ospf:fast-reroute/ospf:lfa" { | + "ospf:fast-reroute/ospf:lfa" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | |||
| description | description | |||
| "This augments the OSPF routing protocol when used."; | "This augments the OSPF routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol IP-FRR with TI-LFA."; | "This augments the OSPF protocol IP Fast Reroute (IP-FRR) with | |||
| TI-LFA."; | ||||
| container ti-lfa { | container ti-lfa { | |||
| if-feature "ti-lfa"; | if-feature "ti-lfa"; | |||
| description | description | |||
| "Topology-Independent Loop Free Alternate | "Topology Independent Loop Free Alternate | |||
| (TI-LFA) support."; | (TI-LFA) support."; | |||
| reference | reference | |||
| "draft-ietf-rtgwg-segment-routing-ti-lfa: | "RFC 9855: Topology Independent Fast Reroute Using Segment | |||
| Topology-Independent Fast Reroute using Segment Routing"; | Routing"; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Enable TI-LFA computation."; | "Enable TI-LFA computation."; | |||
| } | } | |||
| container selection-tie-breakers { | container selection-tie-breakers { | |||
| container node-protection { | container node-protection { | |||
| presence "Presence of container enables the node | presence "Presence of container enables the node | |||
| protection tie-breaker."; | protection tie-breaker."; | |||
| leaf priority { | leaf priority { | |||
| type uint8; | type uint8; | |||
| default "128"; | default "128"; | |||
| description | description | |||
| "Priority for node protection tie-breaker with | "Priority for node protection tie-breaker with | |||
| a lower priority being more preferred. By default, | a lower priority being more preferred. By default, | |||
| the priority is in the middle of the priority range."; | the priority is in the middle of the priority range."; | |||
| } | } | |||
| description | description | |||
| "Enable node protection as a TI-LFA path | "Enable node protection as a TI-LFA path | |||
| selection tie-breaker. A path providing node | selection tie-breaker. A path providing node | |||
| protection will be selected over one that | protection will be selected over one that | |||
| doesn't provide node protection."; | doesn't provide node protection."; | |||
| } | } | |||
| container srlg-disjoint { | container srlg-disjoint { | |||
| presence "Presence of container enables the SRLG | presence "Presence of container enables the SRLG | |||
| disjoint tie-breaker"; | disjoint tie-breaker."; | |||
| leaf priority { | leaf priority { | |||
| type uint8; | type uint8; | |||
| default "128"; | default "128"; | |||
| description | description | |||
| "Priority for SRLG disjoint tie-breaker with | "Priority for Shared Risk Link Group (SRLG) | |||
| a lower priority being more preferred. By default, | disjoint tie-breaker with a lower priority being | |||
| the priority is in the middle of the priority range."; | more preferred. By default, the priority is in the | |||
| middle of the priority range."; | ||||
| } | } | |||
| description | description | |||
| "Enable SRLG (Sharsed Resource Link Group) | "Enable SRLG disjoint as a TI-LFA path selection | |||
| disjoint as a TI-LFA path selection tie-breaker. | tie-breaker. A path providing a node with a disjoint | |||
| A path providing node a disjoint path for SRLG | path for SRLG links from the primary path will be | |||
| links from the primary path will be selected over | selected over a path that doesn't provide an SRLG | |||
| one that doesn't provide an SRLG disjoint path."; | disjoint path."; | |||
| } | } | |||
| description | description | |||
| "Configure path selection tie-breakers and their | "Configure path selection tie-breakers and their | |||
| respective priorities for the TI-LFA computation. | respective priorities for the TI-LFA computation. | |||
| multiple tie-breakers and priorities configured may | Multiple tie-breakers and priorities may be configured."; | |||
| be configured."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | |||
| + "ospf:fast-reroute/ospf:lfa/ospf:remote-lfa" { | + "ospf:fast-reroute/ospf:lfa/ospf:remote-lfa" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | |||
| description | description | |||
| "This augments the OSPF routing protocol when used."; | "This augments the OSPF routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol IP-FRR with remote LFA."; | "This augments the OSPF protocol IP-FRR with Remote LFA."; | |||
| reference | reference | |||
| "draft-ietf-rtgwg-segment-routing-ti-lfa: | "RFC 9855: Topology Independent Fast Reroute Using Segment | |||
| Topology-Independent Fast Reroute using Segment Routing"; | Routing"; | |||
| leaf use-segment-routing-path { | leaf use-segment-routing-path { | |||
| if-feature "remote-lfa-sr"; | if-feature "remote-lfa-sr"; | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "Force remote LFA to use segment routing path instead of LDP | "Force Remote LFA to use a Segment Routing path instead of an | |||
| path. The value of this leaf is in effect only when | LDP path. The value of this leaf is in effect only when | |||
| remote-lfa is enabled."; | remote-lfa is enabled."; | |||
| } | } | |||
| } | } | |||
| /* Operational states */ | /* Operational states */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | |||
| + "ospf:neighbors/ospf:neighbor" { | + "ospf:neighbors/ospf:neighbor" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospf')" { | |||
| description | description | |||
| "This augments the OSPF routing protocol when used."; | "This augments the OSPF routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments OSPF interface adjancency-sid state."; | "This augments the OSPF interface adjacency-sid state."; | |||
| list adjacency-sid { | list adjacency-sid { | |||
| description | description | |||
| "List of adjacency Segment IDs."; | "List of adjacency Segment IDs."; | |||
| leaf value { | leaf value { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Value of the Adj-SID."; | "Value of the Adj-SID."; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Weight associated with the adjacency SID."; | "Weight associated with the adjacency SID."; | |||
| } | } | |||
| leaf protection-requested { | leaf protection-requested { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Describe if the adjacency SID is protected."; | "Describe if the adjacency SID is protected."; | |||
| skipping to change at page 24, line 44 ¶ | skipping to change at line 1104 ¶ | |||
| + "ospf:extended-prefix-opaque" { | + "ospf:extended-prefix-opaque" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR Extended Prefix Range TLV in OSPFv2 Type 10 (area-scoped) | "SR Extended Prefix Range TLV in OSPFv2 Type 10 (area-scoped) | |||
| Extended Prefix Opaque LSAs."; | Extended Prefix Opaque LSAs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 4"; | |||
| (Section 4)"; | ||||
| uses ospfv2-extended-prefix-range-tlvs; | uses ospfv2-extended-prefix-range-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-opaque" { | + "ospf:extended-prefix-opaque" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR Extended Prefix Range TLV in OSPFv2 Type 11 (AS-scoped) | "SR Extended Prefix Range TLV in OSPFv2 Type 11 (AS-scoped) | |||
| Extended Prefix Opaque LSAs."; | Extended Prefix Opaque LSAs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 4"; | |||
| (Section 4)"; | ||||
| uses ospfv2-extended-prefix-range-tlvs; | uses ospfv2-extended-prefix-range-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR Prefix-SID sub-TLVs for OSPFv2 Extended Prefix TLVs | "SR Prefix-SID Sub-TLVs for OSPFv2 Extended Prefix TLVs | |||
| in OSPFv2 Type 10 (area-scoped) Extended Prefix Opaque LSAs."; | in OSPFv2 Type 10 (area-scoped) Extended Prefix Opaque LSAs."; | |||
| uses ospfv2-prefix-sid-sub-tlvs; | uses ospfv2-prefix-sid-sub-tlvs; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 5"; | |||
| (Section 5)"; | ||||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| skipping to change at page 26, line 4 ¶ | skipping to change at line 1158 ¶ | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR Prefix-SID sub-TLVs for OSPFv2 Extended Prefix TLVs | "SR Prefix-SID Sub-TLVs for OSPFv2 Extended Prefix TLVs | |||
| in OSPFv2 Type 11 (AS-scoped) Extended Prefix Opaque LSAs."; | in OSPFv2 Type 11 (AS-scoped) Extended Prefix Opaque LSAs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 5"; | |||
| (Section 5)"; | ||||
| uses ospfv2-prefix-sid-sub-tlvs; | uses ospfv2-prefix-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-link-opaque/ospf:extended-link-tlv" { | + "ospf:extended-link-opaque/ospf:extended-link-tlv" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR TLVs for OSPFv2 Extended Link TLV in OSPFv2 Type 10 | "SR TLVs for OSPFv2 Extended Link TLV in OSPFv2 Type 10 | |||
| (area-scoped) Extended Link Opaque LSAs."; | (area-scoped) Extended Link Opaque LSAs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| uses ospfv2-adj-sid-sub-tlvs; | uses ospfv2-adj-sid-sub-tlvs; | |||
| uses ospfv2-lan-adj-sid-sub-tlvs; | uses ospfv2-lan-adj-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR TLVs for OSPFv2 Router Information Type 10 (area-scoped) | "SR TLVs for OSPFv2 Router Information Type 10 (area-scoped) | |||
| Opaque LSAs"; | Opaque LSAs"; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 3"; | |||
| (Section 3)"; | ||||
| uses sr-algorithm-tlv; | uses sr-algorithm-tlv; | |||
| uses sid-range-tlvs; | uses sid-range-tlvs; | |||
| uses local-block-tlvs; | uses local-block-tlvs; | |||
| uses srms-preference-tlv; | uses srms-preference-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR TLVs for OSPFv2 Router Information Type 11 (AS-scoped) | "SR TLVs for OSPFv2 Router Information Type 11 (AS-scoped) | |||
| Opaque LSAs"; | Opaque LSAs."; | |||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing | "RFC 8665: OSPF Extensions for Segment Routing, Section 3"; | |||
| (Section 3)"; | ||||
| uses sr-algorithm-tlv; | uses sr-algorithm-tlv; | |||
| uses sid-range-tlvs; | uses sid-range-tlvs; | |||
| uses local-block-tlvs; | uses local-block-tlvs; | |||
| uses srms-preference-tlv; | uses srms-preference-tlv; | |||
| } | } | |||
| /* Augmentations for OSPFv3 LSAs. */ | /* Augmentations for OSPFv3 LSAs. */ | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| skipping to change at page 28, line 7 ¶ | skipping to change at line 1253 ¶ | |||
| + "ospf:ospfv3/ospf:body/ospf:router-information" { | + "ospf:ospfv3/ospf:body/ospf:router-information" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR-specific TLVs for OSPFv3 Router Information LSA | "SR-specific TLVs for OSPFv3 Router Information LSA | |||
| (area-scoped)."; | (area-scoped)."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 4"; | |||
| (Section 4)"; | ||||
| uses sr-algorithm-tlv; | uses sr-algorithm-tlv; | |||
| uses sid-range-tlvs; | uses sid-range-tlvs; | |||
| uses local-block-tlvs; | uses local-block-tlvs; | |||
| uses srms-preference-tlv; | uses srms-preference-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
| skipping to change at page 28, line 31 ¶ | skipping to change at line 1276 ¶ | |||
| + "ospf:ospfv3/ospf:body/ospf:router-information" { | + "ospf:ospfv3/ospf:body/ospf:router-information" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR-specific TLVs for OSPFv3 Router Information LSA | "SR-specific TLVs for OSPFv3 Router Information LSA | |||
| (AS-scoped)."; | (AS-scoped)."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 4"; | |||
| (Section 4)"; | ||||
| uses sr-algorithm-tlv; | uses sr-algorithm-tlv; | |||
| uses sid-range-tlvs; | uses sid-range-tlvs; | |||
| uses local-block-tlvs; | uses local-block-tlvs; | |||
| uses srms-preference-tlv; | uses srms-preference-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| skipping to change at page 29, line 23 ¶ | skipping to change at line 1315 ¶ | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" { | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR Extended Prefix Range TLVs in OSPFv3 | "SR Extended Prefix Range TLVs in OSPFv3 | |||
| E-Inter-Area-Prefix LSAs."; | E-Inter-Area-Prefix LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5"; | |||
| (Section 5)"; | ||||
| uses ospfv3-extended-prefix-range-tlvs; | uses ospfv3-extended-prefix-range-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" { | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR Extended Prefix Range TLVs in OSPFv3 E-AS-External LSAs."; | "SR Extended Prefix Range TLVs in OSPFv3 E-AS-External LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5"; | |||
| (Section 5)"; | ||||
| uses ospfv3-extended-prefix-range-tlvs; | uses ospfv3-extended-prefix-range-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" { | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR Extended Prefix Range TLVs in OSPFv3 E-NSSA LSAs."; | "SR Extended Prefix Range TLVs in OSPFv3 E-NSSA LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 5"; | |||
| (Section 5)"; | ||||
| uses ospfv3-extended-prefix-range-tlvs; | uses ospfv3-extended-prefix-range-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/" | |||
| + "ospf:interface/" | + "ospf:interface/" | |||
| + "ospf:database/ospf:link-scope-lsa-type/" | + "ospf:database/ospf:link-scope-lsa-type/" | |||
| + "ospf:link-scope-lsas/ospf:link-scope-lsa/" | + "ospf:link-scope-lsas/ospf:link-scope-lsa/" | |||
| + "ospf:version/ospf:ospfv3/ospf:ospfv3/" | + "ospf:version/ospf:ospfv3/ospf:ospfv3/" | |||
| + "ospf:body/ospfv3-e-lsa:e-link/" | + "ospf:body/ospfv3-e-lsa:e-link/" | |||
| + "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv/" | + "ospfv3-e-lsa:e-link-tlvs/ospfv3-e-lsa:intra-prefix-tlv/" | |||
| + "ospfv3-e-lsa:sub-tlvs" { | + "ospfv3-e-lsa:sub-tlvs" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area | "SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area-Prefix | |||
| Prefix TLV for OSPFv3 E-Link LSAs."; | TLV for OSPFv3 E-Link LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| uses ospfv3-prefix-sid-sub-tlvs; | uses ospfv3-prefix-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/" | |||
| + "ospfv3-e-lsa:e-intra-prefix-tlvs/" | + "ospfv3-e-lsa:e-intra-prefix-tlvs/" | |||
| + "ospfv3-e-lsa:intra-prefix-tlv/" | + "ospfv3-e-lsa:intra-prefix-tlv/" | |||
| + "ospfv3-e-lsa:sub-tlvs" { | + "ospfv3-e-lsa:sub-tlvs" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3 | "This augmentation is only valid for OSPFv3 | |||
| E-Router LSAs"; | E-Router LSAs."; | |||
| } | } | |||
| description | description | |||
| "SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area | "SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area-Prefix | |||
| Prefix TLV for OSPFv3 E-Intra-Area-Prefix LSAs."; | TLV for OSPFv3 E-Intra-Area-Prefix LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| uses ospfv3-prefix-sid-sub-tlvs; | uses ospfv3-prefix-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" | |||
| + "ospfv3-e-lsa:e-inter-prefix-tlvs/" | + "ospfv3-e-lsa:e-inter-prefix-tlvs/" | |||
| + "ospfv3-e-lsa:inter-prefix-tlv/" | + "ospfv3-e-lsa:inter-prefix-tlv/" | |||
| + "ospfv3-e-lsa:sub-tlvs" { | + "ospfv3-e-lsa:sub-tlvs" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR Prefix-SID Sub-TLV in OSPFv3 Link-Scoped Intra-Area | "SR Prefix-SID Sub-TLV in OSPFv3 Link-Scoped Intra-Area-Prefix | |||
| Prefix TLV for OSPFv3 E-Inter-Area-Prefix LSAs."; | TLV for OSPFv3 E-Inter-Area-Prefix LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| uses ospfv3-prefix-sid-sub-tlvs; | uses ospfv3-prefix-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" | |||
| + "ospfv3-e-lsa:e-external-tlvs/" | + "ospfv3-e-lsa:e-external-tlvs/" | |||
| skipping to change at page 32, line 4 ¶ | skipping to change at line 1434 ¶ | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" | |||
| + "ospfv3-e-lsa:e-external-tlvs/" | + "ospfv3-e-lsa:e-external-tlvs/" | |||
| + "ospfv3-e-lsa:external-prefix-tlv/" | + "ospfv3-e-lsa:external-prefix-tlv/" | |||
| + "ospfv3-e-lsa:sub-tlvs" { | + "ospfv3-e-lsa:sub-tlvs" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR Prefix-SID Sub-TLV in OSPFv3 External Prefix TLV | "SR Prefix-SID Sub-TLV in OSPFv3 External-Prefix TLV | |||
| for OSPFv3 E-AS-External LSAs."; | for OSPFv3 E-AS-External LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| uses ospfv3-prefix-sid-sub-tlvs; | uses ospfv3-prefix-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/" | |||
| + "ospfv3-e-lsa:e-external-tlvs/" | + "ospfv3-e-lsa:e-external-tlvs/" | |||
| + "ospfv3-e-lsa:external-prefix-tlv/" | + "ospfv3-e-lsa:external-prefix-tlv/" | |||
| + "ospfv3-e-lsa:sub-tlvs" { | + "ospfv3-e-lsa:sub-tlvs" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "SR Prefix-SID Sub-TLV in OSPFv3 External Prefix TLV | "SR Prefix-SID Sub-TLV in OSPFv3 External-Prefix TLV | |||
| for OSPFv3 E-NSSA LSAs."; | for OSPFv3 E-NSSA LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6"; | |||
| (Section 6)"; | ||||
| uses ospfv3-prefix-sid-sub-tlvs; | uses ospfv3-prefix-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
| + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-router/" | |||
| + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv/" | + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv/" | |||
| + "ospfv3-e-lsa:sub-tlvs" { | + "ospfv3-e-lsa:sub-tlvs" { | |||
| when "derived-from(/rt:routing/rt:control-plane-protocols/" | when "derived-from(/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv3 | "This augmentation is only valid for OSPFv3 | |||
| E-Router LSAs"; | E-Router LSAs."; | |||
| } | } | |||
| description | description | |||
| "SR Sub-TLVs in OSPFv3 link-tlv for OSPFv3 E-Router LSAs"; | "SR Sub-TLVs in OSPFv3 link-tlv for OSPFv3 E-Router LSAs."; | |||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing | "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | |||
| (Section 7)"; | ||||
| uses ospfv3-adj-sid-sub-tlvs; | uses ospfv3-adj-sid-sub-tlvs; | |||
| uses ospfv3-lan-adj-sid-sub-tlvs; | uses ospfv3-lan-adj-sid-sub-tlvs; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| Figure 1 | Figure 1 | |||
| 4. Security Considerations | 4. Security Considerations | |||
| The ietf-ospf-sr-mpls YANG module defines a data model that is | This section is modeled after the template described in Section 3.7 | |||
| of [YANG-GUIDE]. | ||||
| The "ietf-ospf-sr-mpls" YANG module defines a data model that is | ||||
| designed to be accessed via YANG-based management protocols, such as | designed to be accessed via YANG-based management protocols, such as | |||
| NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols have to | NETCONF [RFC6241] and RESTCONF [RFC8040]. These YANG-based | |||
| use a secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and | management protocols (1) have to use a secure transport layer (e.g., | |||
| QUIC [RFC9000]) and have to use mutual authentication. | SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and (2) have to use | |||
| mutual authentication. | ||||
| The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
| RESTCONF protocol operations and content. | RESTCONF protocol operations and content. | |||
| There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
| writable/creatable/deletable (i.e., "config true", which is the | writable/creatable/deletable (i.e., "config true", which is the | |||
| default). All writable data nodes are likely to be reasonably | default). All writable data nodes are likely to be sensitive or | |||
| sensitive or vulnerable in some network environments. Write | vulnerable in some network environments. Write operations (e.g., | |||
| operations (e.g., edit-config) and delete operations to these data | edit-config) and delete operations to these data nodes without proper | |||
| nodes without proper protection or authentication can have a negative | protection or authentication can have a negative effect on network | |||
| effect on network operations. The following subtrees and data nodes | operations. The following subtrees and data nodes have particular | |||
| have particular sensitivities/vulnerabilities: | sensitivities/vulnerabilities: | |||
| /ospf:ospf/segment-routing/enabled - Modification to the | * /ospf:ospf/segment-routing/enabled - Modification to the | |||
| enablement for SR could result in a Denial-of-Service (DoS) | enablement for SR could result in a Denial-of-Service (DoS) | |||
| attack. If an attacker disables SR, it will cause traffic | attack. If an attacker disables SR, it will cause traffic | |||
| disruption. | disruption. | |||
| /ospf:ospf/segment-routing/bindings - Modification to the local | * /ospf:ospf/segment-routing/bindings - Modification to the local | |||
| bindings could result in a Denial-of-Service (DoS) attack. | bindings could result in a Denial-of-Service (DoS) attack. | |||
| /ospf:ospf/protocol-srgb - Modification of the protocol SRGB could | * /ospf:ospf/protocol-srgb - Modification of the protocol SRGB could | |||
| be used to mount a DoS attack. For example, if the protocol SRBG | be used to mount a DoS attack. For example, if the protocol SRGB | |||
| size is reduced to a very small value, a lot of existing segments | size is reduced to a very small value, a lot of existing segments | |||
| could no longer be installed leading to a traffic disruption. | could no longer be installed, leading to a traffic disruption. | |||
| /ospf:interfaces/ospf:interface/segment-routing - Modification of | * /ospf:interfaces/ospf:interface/segment-routing - Modification of | |||
| the Adjacency Segment Identifier (Adj-SID) could be used to mount | the Adjacency Segment Identifier (Adj-SID) could be used to mount | |||
| a DoS attack. Change of an Adj-SID could be used to redirect | a DoS attack. Change of an Adj-SID could be used to redirect | |||
| traffic. | traffic. | |||
| /ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - | * /ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - | |||
| Modification of the TI-LFA enablement could lead to traffic | Modification of the TI-LFA enablement could lead to traffic | |||
| disruption. | disruption. | |||
| Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control 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. Specifically, the following | notification) to these data nodes. Specifically, the following | |||
| subtrees and data nodes have particular sensitivities/ | subtrees and data nodes have particular sensitivities/ | |||
| vulnerabilities: | vulnerabilities: | |||
| The module ietf-ospf-sr-mpls augments base OSPF module Link State | * The "ietf-ospf-sr-mpls" module augments the base OSPF module Link | |||
| Database (LSDB) with various TLVs. Knowledge of these data nodes | State Database (LSDB) with various TLVs. Knowledge of these data | |||
| can be used to attack other routers in the OSPF domain. These | nodes can be used to attack other routers in the OSPF domain. | |||
| attacks are documented in [RFC9129]. | These attacks are documented in [RFC9129]. | |||
| Knowledge of the Prefix and Adjacency SIDs advertised in LSAs | * Knowledge of the Prefix and Adjacency SIDs advertised in LSAs | |||
| could facilitate a targeted attack on the data-plane by knowing | could facilitate a targeted attack on the data plane by knowing | |||
| the topology and path for MPLS segment-routed packets. Examples | the topology and path for MPLS segment-routed packets. Examples | |||
| include the OSPFv2 extended-prefix-opaque-LSA/prefix-sid-sub-tlvs | include the OSPFv2 extended-prefix-opaque-LSA/prefix-sid-sub-tlvs | |||
| and OSPFv3 e-router-tlvs/link-tlv/sub-tlvs/ospfv3-lan-adj-sid-sub- | and OSPFv3 e-router-tlvs/link-tlv/sub-tlvs/ospfv3-lan-adj-sid-sub- | |||
| tlvs. | tlvs. | |||
| Knowledge of Prefix and Adjaceny SIDs may also divulge a view of | * Knowledge of Prefix and Adjacency SIDs may also divulge a view of | |||
| the segment routing network topology architecture which may be | the Segment Routing network topology architecture, which may be | |||
| considered a proprietary asset. | considered a proprietary asset. | |||
| Knowledge of the advertised SID/Label Range TLVs, SR Local Block | * Knowledge of the advertised SID/Label Range TLVs, SR Local Block | |||
| TLVs and Segment Routing Mapping Server (SRMS) TLVs may facilitate | TLVs, and Segment Routing Mapping Server (SRMS) TLVs may | |||
| a Denial of Service (DoS) attack on the advertising node's SR and | facilitate a Denial of Service (DoS) attack on the advertising | |||
| SRMS functionality. Examples include augmentations to the OSPFv2 | node's SR and SRMS functionality. Examples include augmentations | |||
| ri-opaque/sid-range-tlvs and OSPFv3 router-information/local- | to the OSPFv2 ri-opaque/sid-range-tlvs and OSPFv3 router- | |||
| block-tlvs. | information/local-block-tlvs. | |||
| This YANG module uses groupings from other YANG modules that define | This YANG module uses groupings from other YANG modules that define | |||
| nodes that may be considered sensitive or vulnerable in network | nodes that may be considered sensitive or vulnerable in network | |||
| environments. Refer to the Security Considerations of [RFC9020] for | environments. Refer to the Security Considerations of [RFC9020] for | |||
| information as to which nodes may be considered sensitive or | information as to which nodes may be considered sensitive or | |||
| vulnerable in network environments. | vulnerable in network environments. | |||
| 5. Acknowledgements | 5. IANA Considerations | |||
| The authors wish to thank Dean Bogdanovic and Kiran Koushik Agrahara | ||||
| Sreenivasa for their YANG module discussions. | ||||
| The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | ||||
| Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, Alan | ||||
| Davey, Divakaran Baskaran, Reshad Rahman, Tom Petch, and Corey | ||||
| Bonnell for their thorough reviews and helpful comments. | ||||
| The authors wish to thank Julien Meuric for a very meticulous Routing | ||||
| Directorate review. | ||||
| The authors wish to thank Mohamed Boucadair and Ketan Talaulikar for | ||||
| extensive AD reviews for the IESG Telechat. Thanks to Eric Vyncke | ||||
| and Mahesh Jethanandani for review comments. | ||||
| Author affiliation with The MITRE Corporation is provided for | ||||
| identification purposes only, and is not intended to convey or imply | ||||
| MITRE's concurrence with, or support for, the positions, opinions or | ||||
| viewpoints expressed. MITRE has agreed to this document for Public | ||||
| Release, Distribution Unlimited, with Public Release Case Number | ||||
| 18-3281. This approval allows the MITRE employee to release | ||||
| contributions externally and does not assert authority to publish. | ||||
| 6. IANA Considerations | ||||
| This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the "IETF XML Registry" [RFC3688]. | |||
| Following the format in [RFC3688], the following registration is | Following the format in [RFC3688], the following registration has | |||
| requested to be made: | been made: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls | URI: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls | |||
| 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. | |||
| This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the "YANG Module Names" | |||
| registry [RFC6020]. | registry [RFC6020]. | |||
| name: ietf-ospf-sr-mpls | Name: ietf-ospf-sr-mpls | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls | Maintained by IANA?: N | |||
| prefix: ospf-sr-mpls | Namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls | |||
| maintained by IANA? N | Prefix: ospf-sr-mpls | |||
| reference: RFC XXXX | Reference: RFC 9903 | |||
| 7. References | ||||
| 7.1. Normative References | 6. References | |||
| [I-D.ietf-rtgwg-segment-routing-ti-lfa] | 6.1. Normative References | |||
| Bashandy, A., Litkowski, S., Filsfils, C., Francois, P., | ||||
| Decraene, B., and D. Voyer, "Topology Independent Fast | ||||
| Reroute using Segment Routing", Work in Progress, | ||||
| Internet-Draft, draft-ietf-rtgwg-segment-routing-ti-lfa- | ||||
| 21, 12 February 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-rtgwg- | ||||
| segment-routing-ti-lfa-21>. | ||||
| [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>. | |||
| [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | |||
| DOI 10.17487/RFC2328, April 1998, | DOI 10.17487/RFC2328, April 1998, | |||
| <https://www.rfc-editor.org/info/rfc2328>. | <https://www.rfc-editor.org/info/rfc2328>. | |||
| skipping to change at page 38, line 20 ¶ | skipping to change at line 1699 ¶ | |||
| [RFC9129] Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | [RFC9129] Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | |||
| "YANG Data Model for the OSPF Protocol", RFC 9129, | "YANG Data Model for the OSPF Protocol", RFC 9129, | |||
| DOI 10.17487/RFC9129, October 2022, | DOI 10.17487/RFC9129, October 2022, | |||
| <https://www.rfc-editor.org/info/rfc9129>. | <https://www.rfc-editor.org/info/rfc9129>. | |||
| [RFC9587] Lindem, A., Palani, S., and Y. Qu, "YANG Data Model for | [RFC9587] Lindem, A., Palani, S., and Y. Qu, "YANG Data Model for | |||
| OSPFv3 Extended Link State Advertisements (LSAs)", | OSPFv3 Extended Link State Advertisements (LSAs)", | |||
| RFC 9587, DOI 10.17487/RFC9587, June 2024, | RFC 9587, DOI 10.17487/RFC9587, June 2024, | |||
| <https://www.rfc-editor.org/info/rfc9587>. | <https://www.rfc-editor.org/info/rfc9587>. | |||
| 7.2. Informative References | [RFC9855] Bashandy, A., Litkowski, S., Filsfils, C., Francois, P., | |||
| Decraene, B., and D. Voyer, "Topology Independent Fast | ||||
| Reroute Using Segment Routing", RFC 9855, | ||||
| DOI 10.17487/RFC9855, October 2025, | ||||
| <https://www.rfc-editor.org/info/rfc9855>. | ||||
| 6.2. Informative References | ||||
| [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | |||
| Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | |||
| January 2006, <https://www.rfc-editor.org/info/rfc4252>. | January 2006, <https://www.rfc-editor.org/info/rfc4252>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| skipping to change at page 39, line 10 ¶ | skipping to change at line 1743 ¶ | |||
| [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | |||
| "Handling Long Lines in Content of Internet-Drafts and | "Handling Long Lines in Content of Internet-Drafts and | |||
| RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | |||
| <https://www.rfc-editor.org/info/rfc8792>. | <https://www.rfc-editor.org/info/rfc8792>. | |||
| [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
| DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
| <https://www.rfc-editor.org/info/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
| [YANG-GUIDE] | ||||
| Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for | ||||
| Authors and Reviewers of Documents Containing YANG Data | ||||
| Models", Work in Progress, Internet-Draft, draft-ietf- | ||||
| netmod-rfc8407bis-28, 5 June 2025, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | ||||
| rfc8407bis-28>. | ||||
| Appendix A. A Configuration Example | Appendix A. A Configuration Example | |||
| The following is an XML example using the ietf-ospf-sr-mpls YANG | The following is an XML example using the "ietf-ospf-sr-mpls" YANG | |||
| module, and RFC 9020. | module and [RFC9020]. | |||
| Note: '\' line wrapping per [RFC8792]. | Note: '\' line wrapping per [RFC8792]. | |||
| <?xml version='1.0' encoding='UTF-8'?> | <?xml version='1.0' encoding='UTF-8'?> | |||
| <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
| <router-id>1.1.1.1</router-id> | <router-id>1.1.1.1</router-id> | |||
| <control-plane-protocols> | <control-plane-protocols> | |||
| <control-plane-protocol> | <control-plane-protocol> | |||
| <type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\ | <type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\ | |||
| ospf:ospfv2</type> | ospf:ospfv2</type> | |||
| skipping to change at page 52, line 32 ¶ | skipping to change at line 2361 ¶ | |||
| +--ro lan-adj-sid-flags | +--ro lan-adj-sid-flags | |||
| | +--ro flag* identityref | | +--ro flag* identityref | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro neighbor-router-id? rt-types:router-id | +--ro neighbor-router-id? rt-types:router-id | |||
| +--ro (sid)? | +--ro (sid)? | |||
| +--:(sid-label) | +--:(sid-label) | |||
| | +--ro label-value? uint32 | | +--ro label-value? uint32 | |||
| +--:(sid-index) | +--:(sid-index) | |||
| +--ro index-value? uint32 | +--ro index-value? uint32 | |||
| Acknowledgements | ||||
| The authors wish to thank Dean Bogdanovic and Kiran Koushik Agrahara | ||||
| Sreenivasa for their YANG module discussions. | ||||
| The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | ||||
| Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, Alan | ||||
| Davey, Divakaran Baskaran, Reshad Rahman, Tom Petch, and Corey | ||||
| Bonnell for their thorough reviews and helpful comments. | ||||
| The authors wish to thank Julien Meuric for a very meticulous Routing | ||||
| Directorate review. | ||||
| The authors wish to thank Mohamed Boucadair and Ketan Talaulikar for | ||||
| extensive AD reviews for the IESG Telechat. Thanks to Éric Vyncke | ||||
| and Mahesh Jethanandani for review comments. | ||||
| Author affiliation with The MITRE Corporation is provided for | ||||
| identification purposes only and is not intended to convey or imply | ||||
| MITRE's concurrence with, or support for, the positions, opinions, or | ||||
| viewpoints expressed. MITRE has agreed to this document for Public | ||||
| Release, Distribution Unlimited, with Public Release Case Number | ||||
| 18-3281. This approval allows the MITRE employee to release | ||||
| contributions externally and does not assert authority to publish. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Yingzhen Qu | Yingzhen Qu | |||
| Futurewei Technologies | Futurewei Technologies | |||
| Email: yingzhen.ietf@gmail.com | Email: yingzhen.ietf@gmail.com | |||
| Acee Lindem | Acee Lindem | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| 301 Midenhall Way | 301 Midenhall Way | |||
| Cary, NC 27513 | Cary, NC 27513 | |||
| United States of America | ||||
| Email: acee.ietf@gmail.com | Email: acee.ietf@gmail.com | |||
| Jeffrey Zhang | Jeffrey Zhang | |||
| Juniper Networks | Juniper Networks | |||
| 10 Technology Park Drive | 10 Technology Park Drive | |||
| Westford, MA 01886 | Westford, MA 01886 | |||
| United States of America | United States of America | |||
| Email: zzhang@juniper.net | Email: zzhang@juniper.net | |||
| Ing-Wher Chen | Ing-Wher Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| Email: ingwherchen@mitre.org | Email: ingwherchen@mitre.org | |||
| End of changes. 190 change blocks. | ||||
| 372 lines changed or deleted | 329 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||