| < draft-ietf-ospf-sr-yang-14.txt | draft-ietf-ospf-sr-yang-15.txt > | |||
|---|---|---|---|---|
| Internet D. Yeung | Internet D. Yeung | |||
| Internet-Draft Arrcus | Internet-Draft Arrcus | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: August 25, 2021 Futurewei | Expires: January 3, 2022 Futurewei | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| I. Chen | I. Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| February 21, 2021 | July 2, 2021 | |||
| YANG Data Model for OSPF SR (Segment Routing) Protocol | YANG Data Model for OSPF SR (Segment Routing) Protocol | |||
| draft-ietf-ospf-sr-yang-14 | draft-ietf-ospf-sr-yang-15 | |||
| Abstract | Abstract | |||
| This document defines a YANG data module that can be used to | This document defines a YANG data module that can be used to | |||
| configure and manage OSPF Segment Routing. It also defines a module | configure and manage OSPF Extensions for Segment Routing. It also | |||
| for management of Signaling Maximum SID Depth (MSD) Using OSPF. The | defines a module for management of Signaling Maximum SID Depth (MSD) | |||
| modules are based on YANG 1.1 as defined in RFC 7950 and conform to | Using OSPF. | |||
| the Network Management Datastore Architecture (NDMA) as described in | ||||
| RFC 8342. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on August 25, 2021. | This Internet-Draft will expire on January 3, 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 24 ¶ | skipping to change at page 2, line 20 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. OSPF MSD . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. OSPF MSD . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. OSPF MSD YANG Module . . . . . . . . . . . . . . . . . . 5 | 2.1. OSPF MSD YANG Module . . . . . . . . . . . . . . . . . . 5 | |||
| 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 11 | 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.1. OSPF Segment Routing YANG Module . . . . . . . . . . . . 16 | 3.1. OSPF Segment Routing YANG Module . . . . . . . . . . . . 16 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 29 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 30 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 32 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 32 | 7.2. Informative References . . . . . . . . . . . . . . . . . 34 | |||
| Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 33 | Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 35 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 1. Overview | 1. Overview | |||
| YANG [RFC6020] [RFC7950] is a data definition language used to define | YANG [RFC6020] [RFC7950] is a data definition language used to define | |||
| the contents of a conceptual data store that allows networked devices | the contents of a conceptual data store that allows networked devices | |||
| to be managed using NETCONF [RFC6241]. YANG is proving relevant | to be managed using NETCONF [RFC6241]. YANG is proving relevant | |||
| beyond its initial confines, as bindings to other interfaces (e.g., | beyond its initial confines, as bindings to other interfaces (e.g., | |||
| ReST) and encodings other than XML (e.g., JSON) are being defined. | ReST) and encodings other than XML (e.g., JSON) are being defined. | |||
| Furthermore, YANG data models can be used as the basis for | Furthermore, YANG data models can be used as the basis for | |||
| implementation of other interfaces, such as CLI and programmatic | implementation of other interfaces, such as CLI and programmatic | |||
| APIs. | APIs. | |||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage OSPF Segment Routing [RFC8665] and it is an augmentation | and manage OSPFv2 extensions for Segment Routing [RFC8665] and it is | |||
| to the OSPF YANG data model. | an augmentation to the OSPF YANG data model. | |||
| This document also defines a YANG data model for Signaling Maximum | This document also defines a YANG data model for Signaling Maximum | |||
| SID Depth (MSD) Using OSPF [RFC8476], which augments the base OSPF | SID Depth (MSD) Using OSPF [RFC8476], which augments the base OSPF | |||
| YANG data model. | YANG data model. | |||
| The YANG module in this document conforms to the Network Management | The YANG module in this document conforms to the Network Management | |||
| Datastore Architecture (NMDA) [RFC8342]. | Datastore Architecture (NMDA) [RFC8342]. | |||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| skipping to change at page 11, line 30 ¶ | skipping to change at page 11, line 30 ¶ | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 3. OSPF Segment Routing | 3. OSPF Segment Routing | |||
| This document defines a model for OSPF Segment Routing feature | This document defines a model for OSPF Segment Routing feature | |||
| [RFC8665]. It is an augmentation of the OSPF base model. | [RFC8665]. It is an augmentation of the OSPF base model. | |||
| The OSPF SR YANG module requires support for the base segment routing | The OSPF SR YANG module requires support for the base segment routing | |||
| module [I-D.ietf-spring-sr-yang], which defines the global segment | module [RFC9020], which defines the global segment routing | |||
| routing configuration independent of any specific routing protocol | configuration independent of any specific routing protocol | |||
| configuration, and support of OSPF base model[I-D.ietf-ospf-yang] | configuration, and support of OSPF base model[I-D.ietf-ospf-yang] | |||
| which defines basic OSPF configuration and state. | which defines basic OSPF configuration and state. | |||
| module: ietf-ospf-sr | module: ietf-ospf-sr | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf: | /rt:control-plane-protocol/ospf:ospf: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| | +--rw enabled? boolean | | +--rw enabled? boolean | |||
| | +--rw bindings | | +--rw bindings {mapping-server}? | |||
| | +--rw advertise | | +--rw advertise | |||
| | | +--rw policies* string | | | +--rw policies* -> /rt:routing/sr:segment-routing | |||
| | | /sr-mpls:sr-mpls/bindings | ||||
| | | /mapping-server/policy/name | ||||
| | +--rw receive? boolean | | +--rw receive? boolean | |||
| +--rw protocol-srgb {sr-mpls:protocol-srgb}? | +--rw protocol-srgb {sr-mpls:protocol-srgb}? | |||
| +--rw srgb* [lower-bound upper-bound] | +--rw srgb* [lower-bound upper-bound] | |||
| +--rw lower-bound uint32 | +--rw lower-bound uint32 | |||
| +--rw upper-bound uint32 | +--rw upper-bound uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:area/ospf:interfaces/ospf:interface: | /ospf:interfaces/ospf:interface: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| +--rw adjacency-sid | +--rw adjacency-sid | |||
| +--rw adj-sids* [value] | +--rw adj-sids* [value] | |||
| | +--rw value-type? enumeration | | +--rw value-type? enumeration | |||
| | +--rw value uint32 | | +--rw value uint32 | |||
| | +--rw protected? boolean | | +--rw protected? boolean | |||
| | +--rw weight? uint8 | ||||
| +--rw advertise-adj-group-sid* [group-id] | +--rw advertise-adj-group-sid* [group-id] | |||
| | +--rw group-id uint32 | | +--rw group-id uint32 | |||
| +--rw advertise-protection? enumeration | +--rw advertise-protection? enumeration | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:area/ospf:interfaces/ospf:interface/ospf:fast-reroute: | /ospf:interfaces/ospf:interface/ospf:fast-reroute: | |||
| +--rw ti-lfa {ti-lfa}? | +--rw ti-lfa {ti-lfa}? | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:area/ospf:interfaces/ospf:interface/ospf:database | /ospf:interfaces/ospf:interface/ospf:database | |||
| /ospf:link-scope-lsa-type/ospf:link-scope-lsas | ||||
| /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
| /ospf:body/ospf:opaque/ospf:extended-prefix-opaque: | ||||
| +--ro extended-prefix-range-tlvs | ||||
| +--ro extended-prefix-range-tlv* [] | ||||
| +--ro prefix-length? uint8 | ||||
| +--ro af? uint8 | ||||
| +--ro range-size? uint16 | ||||
| +--ro extended-prefix-range-flags | ||||
| | +--ro bits* identityref | ||||
| +--ro prefix? inet:ip-prefix | ||||
| +--ro perfix-sid-sub-tlvs | ||||
| | +--ro prefix-sid-sub-tlv* [] | ||||
| | +--ro prefix-sid-flags | ||||
| | | +--ro bits* identityref | ||||
| | +--ro mt-id? uint8 | ||||
| | +--ro algorithm? uint8 | ||||
| | +--ro sid? uint32 | ||||
| +--ro unknown-tlvs | ||||
| +--ro unknown-tlv* [] | ||||
| +--ro type? uint16 | ||||
| +--ro length? uint16 | ||||
| +--ro value? yang:hex-string | ||||
| augment /rt:routing/rt:control-plane-protocols | ||||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
| /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | ||||
| /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
| /ospf:body/ospf:opaque/ospf:extended-prefix-opaque: | ||||
| +--ro extended-prefix-range-tlvs | ||||
| +--ro extended-prefix-range-tlv* [] | ||||
| +--ro prefix-length? uint8 | ||||
| +--ro af? uint8 | ||||
| +--ro range-size? uint16 | ||||
| +--ro extended-prefix-range-flags | ||||
| | +--ro bits* identityref | ||||
| +--ro prefix? inet:ip-prefix | ||||
| +--ro perfix-sid-sub-tlvs | ||||
| | +--ro prefix-sid-sub-tlv* [] | ||||
| | +--ro prefix-sid-flags | ||||
| | | +--ro bits* identityref | ||||
| | +--ro mt-id? uint8 | ||||
| | +--ro algorithm? uint8 | ||||
| | +--ro sid? uint32 | ||||
| +--ro unknown-tlvs | ||||
| +--ro unknown-tlv* [] | ||||
| +--ro type? uint16 | ||||
| +--ro length? uint16 | ||||
| +--ro value? yang:hex-string | ||||
| augment /rt:routing/rt:control-plane-protocols | ||||
| /rt:control-plane-protocol/ospf:ospf/ospf:database | ||||
| /ospf:as-scope-lsa-type/ospf:as-scope-lsas | ||||
| /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | ||||
| /ospf:body/ospf:opaque/ospf:extended-prefix-opaque: | ||||
| +--ro extended-prefix-range-tlvs | ||||
| +--ro extended-prefix-range-tlv* [] | ||||
| +--ro prefix-length? uint8 | ||||
| +--ro af? uint8 | ||||
| +--ro range-size? uint16 | ||||
| +--ro extended-prefix-range-flags | ||||
| | +--ro bits* identityref | ||||
| +--ro prefix? inet:ip-prefix | ||||
| +--ro perfix-sid-sub-tlvs | ||||
| | +--ro prefix-sid-sub-tlv* [] | ||||
| | +--ro prefix-sid-flags | ||||
| | | +--ro bits* identityref | ||||
| | +--ro mt-id? uint8 | ||||
| | +--ro algorithm? uint8 | ||||
| | +--ro sid? uint32 | ||||
| +--ro unknown-tlvs | ||||
| +--ro unknown-tlv* [] | ||||
| +--ro type? uint16 | ||||
| +--ro length? uint16 | ||||
| +--ro value? yang:hex-string | ||||
| augment /rt:routing/rt:control-plane-protocols | ||||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | ||||
| /ospf:interfaces/ospf:interface/ospf:database | ||||
| /ospf:link-scope-lsa-type/ospf:link-scope-lsas | /ospf:link-scope-lsa-type/ospf:link-scope-lsas | |||
| /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:body/ospf:opaque/ospf:extended-prefix-opaque | /ospf:body/ospf:opaque/ospf:extended-prefix-opaque | |||
| /ospf:extended-prefix-tlv: | /ospf:extended-prefix-tlv: | |||
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs | |||
| +--ro prefix-sid-sub-tlv* | +--ro prefix-sid-sub-tlv* [] | |||
| +--ro prefix-sid-flags | +--ro prefix-sid-flags | |||
| | +--ro bits* identityref | | +--ro bits* identityref | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:area/ospf:database/ospf:area-scope-lsa-type | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | |||
| /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | /ospf:body/ospf:opaque/ospf:extended-prefix-opaque | |||
| /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: | /ospf:extended-prefix-tlv: | |||
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs | |||
| +--ro prefix-sid-sub-tlv* | +--ro prefix-sid-sub-tlv* [] | |||
| +--ro prefix-sid-flags | +--ro prefix-sid-flags | |||
| | +--ro bits* identityref | | +--ro bits* identityref | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:database | /rt:control-plane-protocol/ospf:ospf/ospf:database | |||
| /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | |||
| /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | |||
| /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: | /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: | |||
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs | |||
| +--ro prefix-sid-sub-tlv* | +--ro prefix-sid-sub-tlv* [] | |||
| +--ro prefix-sid-flags | +--ro prefix-sid-flags | |||
| | +--ro bits* identityref | | +--ro bits* identityref | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:area/ospf:database/ospf:area-scope-lsa-type | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | |||
| /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | /ospf:body/ospf:opaque/ospf:extended-link-opaque | |||
| /ospf:extended-link-opaque/ospf:extended-link-tlv: | /ospf:extended-link-tlv: | |||
| +--ro adj-sid-sub-tlvs | +--ro adj-sid-sub-tlvs | |||
| | +--ro adj-sid-sub-tlv* | | +--ro adj-sid-sub-tlv* [] | |||
| | +--ro adj-sid-flags | | +--ro adj-sid-flags | |||
| | | +--ro bits* identityref | | | +--ro bits* identityref | |||
| | +--ro mt-id? uint8 | | +--ro mt-id? uint8 | |||
| | +--ro weight? uint8 | | +--ro weight? uint8 | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro lan-adj-sid-sub-tlvs | +--ro lan-adj-sid-sub-tlvs | |||
| +--ro lan-adj-sid-sub-tlv* | +--ro lan-adj-sid-sub-tlv* [] | |||
| +--ro lan-adj-sid-flags | +--ro lan-adj-sid-flags | |||
| | +--ro bits* identityref | | +--ro bits* identityref | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro neighbor-router-id? yang:dotted-quad | +--ro neighbor-router-id? yang:dotted-quad | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:area/ospf:interfaces/ospf:interface/ospf:database | /ospf:interfaces/ospf:interface/ospf:database | |||
| /ospf:link-scope-lsa-type/ospf:link-scope-lsas | /ospf:link-scope-lsa-type/ospf:link-scope-lsas | |||
| /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:body/ospf:opaque: | /ospf:body/ospf:opaque/ospf:ri-opaque: | |||
| +--ro extended-prefix-range-tlvs | ||||
| | +--ro extended-prefix-range-tlv* | ||||
| | +--ro prefix-length? uint8 | ||||
| | +--ro af? uint8 | ||||
| | +--ro range-size? uint16 | ||||
| | +--ro extended-prefix-range-flags | ||||
| | | +--ro bits* identityref | ||||
| | +--ro prefix? inet:ip-prefix | ||||
| | +--ro perfix-sid-sub-tlvs | ||||
| | | +--ro prefix-sid-sub-tlv* | ||||
| | | +--ro prefix-sid-flags | ||||
| | | | +--ro bits* identityref | ||||
| | | +--ro mt-id? uint8 | ||||
| | | +--ro algorithm? uint8 | ||||
| | | +--ro sid? uint32 | ||||
| | +--ro unknown-tlvs | ||||
| | +--ro unknown-tlv* | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro sr-algorithm-tlv | +--ro sr-algorithm-tlv | |||
| | +--ro sr-algorithm* uint8 | | +--ro sr-algorithm* uint8 | |||
| +--ro sid-range-tlvs | +--ro sid-range-tlvs | |||
| | +--ro sid-range-tlv* | | +--ro sid-range-tlv* [] | |||
| | +--ro range-size? uint24 | | +--ro range-size? uint24 | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro local-block-tlvs | +--ro local-block-tlvs | |||
| | +--ro local-block-tlv* | | +--ro local-block-tlv* [] | |||
| | +--ro range-size? uint24 | | +--ro range-size? uint24 | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro srms-preference-tlv | +--ro srms-preference-tlv | |||
| +--ro preference? uint8 | +--ro preference? uint8 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:area/ospf:database/ospf:area-scope-lsa-type | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | |||
| /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: | /ospf:body/ospf:opaque/ospf:ri-opaque: | |||
| +--ro extended-prefix-range-tlvs | ||||
| | +--ro extended-prefix-range-tlv* | ||||
| | +--ro prefix-length? uint8 | ||||
| | +--ro af? uint8 | ||||
| | +--ro range-size? uint16 | ||||
| | +--ro extended-prefix-range-flags | ||||
| | | +--ro bits* identityref | ||||
| | +--ro prefix? inet:ip-prefix | ||||
| | +--ro perfix-sid-sub-tlvs | ||||
| | | +--ro prefix-sid-sub-tlv* | ||||
| | | +--ro prefix-sid-flags | ||||
| | | | +--ro bits* identityref | ||||
| | | +--ro mt-id? uint8 | ||||
| | | +--ro algorithm? uint8 | ||||
| | | +--ro sid? uint32 | ||||
| | +--ro unknown-tlvs | ||||
| | +--ro unknown-tlv* | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro sr-algorithm-tlv | +--ro sr-algorithm-tlv | |||
| | +--ro sr-algorithm* uint8 | | +--ro sr-algorithm* uint8 | |||
| +--ro sid-range-tlvs | +--ro sid-range-tlvs | |||
| | +--ro sid-range-tlv* | | +--ro sid-range-tlv* [] | |||
| | +--ro range-size? uint24 | | +--ro range-size? uint24 | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro local-block-tlvs | +--ro local-block-tlvs | |||
| | +--ro local-block-tlv* | | +--ro local-block-tlv* [] | |||
| | +--ro range-size? uint24 | | +--ro range-size? uint24 | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro srms-preference-tlv | +--ro srms-preference-tlv | |||
| +--ro preference? uint8 | +--ro preference? uint8 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:database | /rt:control-plane-protocol/ospf:ospf/ospf:database | |||
| /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | |||
| /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: | /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | |||
| +--ro extended-prefix-range-tlvs | /ospf:ri-opaque: | |||
| | +--ro extended-prefix-range-tlv* | ||||
| | +--ro prefix-length? uint8 | ||||
| | +--ro af? uint8 | ||||
| | +--ro range-size? uint16 | ||||
| | +--ro extended-prefix-range-flags | ||||
| | | +--ro bits* identityref | ||||
| | +--ro prefix? inet:ip-prefix | ||||
| | +--ro perfix-sid-sub-tlvs | ||||
| | | +--ro prefix-sid-sub-tlv* | ||||
| | | +--ro prefix-sid-flags | ||||
| | | | +--ro bits* identityref | ||||
| | | +--ro mt-id? uint8 | ||||
| | | +--ro algorithm? uint8 | ||||
| | | +--ro sid? uint32 | ||||
| | +--ro unknown-tlvs | ||||
| | +--ro unknown-tlv* | ||||
| | +--ro type? uint16 | ||||
| | +--ro length? uint16 | ||||
| | +--ro value? yang:hex-string | ||||
| +--ro sr-algorithm-tlv | +--ro sr-algorithm-tlv | |||
| | +--ro sr-algorithm* uint8 | | +--ro sr-algorithm* uint8 | |||
| +--ro sid-range-tlvs | +--ro sid-range-tlvs | |||
| | +--ro sid-range-tlv* | | +--ro sid-range-tlv* [] | |||
| | +--ro range-size? uint24 | | +--ro range-size? uint24 | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro local-block-tlvs | +--ro local-block-tlvs | |||
| | +--ro local-block-tlv* | | +--ro local-block-tlv* [] | |||
| | +--ro range-size? uint24 | | +--ro range-size? uint24 | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro srms-preference-tlv | +--ro srms-preference-tlv | |||
| +--ro preference? uint8 | +--ro preference? uint8 | |||
| 3.1. OSPF Segment Routing YANG Module | 3.1. OSPF Segment Routing YANG Module | |||
| <CODE BEGINS> file "ietf-ospf-sr@2021-01-10.yang" | <CODE BEGINS> file "ietf-ospf-sr@2021-07-02.yang" | |||
| module ietf-ospf-sr { | module ietf-ospf-sr { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; | |||
| prefix ospf-sr; | prefix ospf-sr; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991 - Common YANG Data Types"; | reference "RFC 6991 - Common YANG Data Types"; | |||
| } | } | |||
| skipping to change at page 16, line 31 ¶ | skipping to change at page 16, line 49 ¶ | |||
| reference "RFC 6991 - Common YANG Data Types"; | reference "RFC 6991 - Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8349 - A YANG Data Model for Routing | reference "RFC 8349 - A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | Management (NMDA Version)"; | |||
| } | } | |||
| import ietf-segment-routing-common { | import ietf-segment-routing-common { | |||
| prefix "sr-cmn"; | prefix "sr-cmn"; | |||
| reference "RFC 9020 - YANG Data Model for Segment | ||||
| Routing"; | ||||
| } | } | |||
| import ietf-segment-routing-mpls { | import ietf-segment-routing-mpls { | |||
| prefix "sr-mpls"; | prefix "sr-mpls"; | |||
| reference "RFC 9020 - YANG Data Model for Segment | ||||
| Routing"; | ||||
| } | } | |||
| import ietf-ospf { | import ietf-ospf { | |||
| prefix "ospf"; | prefix "ospf"; | |||
| } | } | |||
| organization | organization | |||
| "IETF LSR - Link State Routing Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/lsr/> | "WG Web: <http://tools.ietf.org/wg/lsr/> | |||
| skipping to change at page 17, line 21 ¶ | skipping to change at page 17, line 46 ¶ | |||
| description | description | |||
| "This YANG module defines the generic configuration | "This YANG module defines the generic configuration | |||
| and operational state for OSPF Segment Routing, which is | and operational state for OSPF Segment Routing, which is | |||
| common across all of the vendor implementations. It is | common across all of the vendor implementations. It is | |||
| intended that the module will be extended by vendors to | intended that the module will be extended by vendors to | |||
| define vendor-specific OSPF Segment Routing configuration | define vendor-specific OSPF Segment Routing configuration | |||
| and operational parameters and policies. | and operational parameters and policies. | |||
| This YANG model conforms to the Network Management | This YANG model conforms to the Network Management | |||
| Datastore Architecture (NMDA) as described in RFC 8242. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | Copyright (c) 2021 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| skipping to change at page 17, line 48 ¶ | skipping to change at page 18, line 25 ¶ | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2021-01-10 { | revision 2021-07-02 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; | "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; | |||
| } | } | |||
| 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."; | |||
| skipping to change at page 21, line 4 ¶ | skipping to change at page 21, line 30 ¶ | |||
| description | description | |||
| "The algorithm associated with the prefix-SID."; | "The algorithm associated with the prefix-SID."; | |||
| } | } | |||
| leaf sid { | leaf sid { | |||
| type uint32; | type uint32; | |||
| description "An index or label."; | description "An index or label."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping extended-prefix-range-tlvs { | grouping extended-prefix-range-tlvs { | |||
| description "Extended prefix range TLV grouping."; | description "Extended prefix range TLV grouping."; | |||
| container extended-prefix-range-tlvs { | container extended-prefix-range-tlvs { | |||
| description "The list of range of prefixes."; | description "The list of range of prefixes."; | |||
| list extended-prefix-range-tlv { //type=2? | list extended-prefix-range-tlv { | |||
| description "The range of prefixes."; | description "The range of prefixes."; | |||
| leaf prefix-length { | leaf prefix-length { | |||
| type uint8; | type uint8; | |||
| description "Length of prefix in bits."; | description "Length of prefix in bits."; | |||
| } | } | |||
| leaf af { | leaf af { | |||
| type uint8; | type uint8; | |||
| description "Address family for the prefix."; | description "Address family for the prefix."; | |||
| } | } | |||
| leaf range-size { | leaf range-size { | |||
| skipping to change at page 22, line 50 ¶ | skipping to change at page 23, line 28 ¶ | |||
| grouping srms-preference-tlv { | grouping srms-preference-tlv { | |||
| description "The SRMS preference TLV is used to advertise | description "The SRMS preference TLV is used to advertise | |||
| a preference associated with the node that acts | a preference associated with the node that acts | |||
| as an SR Mapping Server."; | as an SR Mapping Server."; | |||
| container srms-preference-tlv { | container srms-preference-tlv { | |||
| description "SRMS Preference TLV."; | description "SRMS Preference TLV."; | |||
| leaf preference { | leaf preference { | |||
| type uint8 { | type uint8 { | |||
| range "0 .. 255"; | range "0 .. 255"; | |||
| } | } | |||
| description "SRMS preference TLV, vlaue from 0 to 255."; | description "SRMS preference TLV, value from 0 to 255."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* Configuration */ | /* Configuration */ | |||
| augment "/rt:routing/rt:control-plane-protocols" | augment "/rt:routing/rt:control-plane-protocols" | |||
| + "/rt:control-plane-protocol/ospf:ospf" { | + "/rt:control-plane-protocol/ospf:ospf" { | |||
| when "../rt:type = 'ospf:ospfv2' or " | when "../rt:type = 'ospf:ospfv2' or " | |||
| + "../rt:type = 'ospf:ospfv3'" { | + "../rt:type = 'ospf:ospfv3'" { | |||
| description | description | |||
| "This augments the OSPF routing protocol when used."; | "This augments the OSPF routing protocol when used."; | |||
| } | } | |||
| skipping to change at page 24, line 27 ¶ | skipping to change at page 25, line 5 ¶ | |||
| } | } | |||
| /* Database */ | /* Database */ | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/" | + "ospf:ospf/ospf:areas/ospf:area/" | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 9 opaque LSA."; | ||||
| uses extended-prefix-range-tlvs; | ||||
| } | ||||
| augment "/rt:routing/" | ||||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
| + "ospf:ospf/ospf:areas/" | ||||
| + "ospf:area/ospf:database/" | ||||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 10 opaque LSA."; | ||||
| uses extended-prefix-range-tlvs; | ||||
| } | ||||
| augment "/rt:routing/" | ||||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
| + "ospf:ospf/ospf:database/" | ||||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | ||||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 11 opaque LSA."; | ||||
| uses extended-prefix-range-tlvs; | ||||
| } | ||||
| augment "/rt:routing/" | ||||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
| + "ospf:ospf/ospf:areas/ospf:area/" | ||||
| + "ospf:interfaces/ospf:interface/ospf:database/" | ||||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | ||||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
| when "../../../../../../../../../../../../../../" | when "../../../../../../../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR specific TLVs for OSPFv2 extended prefix TLV | "SR specific TLVs for OSPFv2 extended prefix TLV | |||
| in type 9 opaque LSA."; | in type 9 opaque LSA."; | |||
| uses prefix-sid-sub-tlvs; | uses prefix-sid-sub-tlvs; | |||
| skipping to change at page 27, line 16 ¶ | skipping to change at page 29, line 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:areas/ospf:area/" | + "ospf:ospf/ospf:areas/ospf:area/" | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque" { | + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | |||
| when "../../../../../../../../../../../../" | when "../../../../../../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR specific TLVs for OSPFv2 type 9 opaque LSA."; | "SR specific TLVs for OSPFv2 type 9 opaque LSA."; | |||
| uses extended-prefix-range-tlvs; | ||||
| 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/" | |||
| + "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:ri-opaque" { | |||
| when "../../../../../../../../../../" | when "../../../../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR specific TLVs for OSPFv2 type 10 opaque LSA."; | "SR specific TLVs for OSPFv2 type 10 opaque LSA."; | |||
| uses extended-prefix-range-tlvs; | ||||
| 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:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | |||
| when "../../../../../../../../" | when "../../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR specific TLVs for OSPFv2 type 11 opaque LSA."; | "SR specific TLVs for OSPFv2 type 11 opaque LSA."; | |||
| uses extended-prefix-range-tlvs; | ||||
| 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; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 4. Security Considerations | 4. Security Considerations | |||
| The YANG modules specified in this document define a schema for data | The YANG modules specified in this document define a schema for data | |||
| that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
| as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
| transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| [RFC5246]. | [RFC8446]. | |||
| The NETCONF access control model [RFC6536] provides the means to | The NETCONF Configuration Access Control model (NACM) [RFC8341] | |||
| restrict access for particular NETCONF or RESTCONF users to a pre- | provides the means to restrict access for particular NETCONF or | |||
| configured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a pre-configured subset of all available NETCONF or | |||
| operations and content. | RESTCONF protocol operations and content. | |||
| There are a number of data nodes defined in the modules that are | There are a number of data nodes defined in the modules that are | |||
| writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
| default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
| in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
| to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
| effect on network operations. | effect on network operations. These are the subtrees and data nodes | |||
| and their sensitivity/vulnerability: | ||||
| /ospf:ospf/segment-routing/enabled - Modification to the | ||||
| enablement for SR could result in a Denial-of-Service (Dos) | ||||
| attack. If an attacker disables SR, it will cause traffic | ||||
| disruption. | ||||
| /ospf:ospf/segment-routing/bindings - Modification to the local | ||||
| bindings could result in a Denial-of-Service (Dos) attack. | ||||
| /ospf:ospf/protocol-srgb - Modification of the protocol SRGB could | ||||
| be used to mount a DoS attack. For example, if the protocol SRBG | ||||
| size is reduced to a very small value, a lot of existing segments | ||||
| could no longer be installed leading to a traffic disruption. | ||||
| /ospf:interfaces/ospf:interface/segment-routing - Modification of | ||||
| the Adjacency Segment Identifier (Adj-SID) could be used to mount | ||||
| a DoS attack. Change of an Adj-SID could be used to redirect | ||||
| traffic. | ||||
| /ospf:interfaces/ospf:interface/ospf:fast-reroute/ti-lfa - | ||||
| Modification of the TI-LFA enablement could lead to traffic | ||||
| disruption. | ||||
| Some of the readable data nodes in the modules may be considered | Some of the readable data nodes in the modules may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
| notification) to these data nodes. | notification) to these data nodes. | |||
| Both module ietf-ospf-sr and ietf-ospf-msd augment base OSPF module | ||||
| data base with various TLVs. Knowledge of these data nodes ca be | ||||
| used to attack other routers in the OSPF domain. | ||||
| 5. Acknowledgements | 5. Acknowledgements | |||
| The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | |||
| Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | |||
| Alan Davey for their thorough reviews and helpful comments. | Alan Davey for their thorough reviews and helpful comments. | |||
| This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
| Author affiliation with The MITRE Corporation is provided for | Author affiliation with The MITRE Corporation is provided for | |||
| identification purposes only, and is not intended to convey or imply | identification purposes only, and is not intended to convey or imply | |||
| skipping to change at page 30, line 10 ¶ | skipping to change at page 32, line 23 ¶ | |||
| name: ietf-ospf-msd | name: ietf-ospf-msd | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-msd | namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-msd | |||
| prefix: ospf-msd | prefix: ospf-msd | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.ietf-ospf-yang] | [I-D.ietf-ospf-yang] | |||
| Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, | |||
| "YANG Data Model for OSPF Protocol", draft-ietf-ospf- | "YANG Data Model for OSPF Protocol", draft-ietf-ospf- | |||
| yang-29 (work in progress), October 2019. | yang-29 (work in progress), October 2019. | |||
| [I-D.ietf-spring-sr-yang] | ||||
| Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. | ||||
| Tantsura, "YANG Data Model for Segment Routing", draft- | ||||
| ietf-spring-sr-yang-30 (work in progress), January 2021. | ||||
| [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>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | |||
| Coltun, R., and F. Baker, "OSPF Version 2 Management | Coltun, R., and F. Baker, "OSPF Version 2 Management | |||
| Information Base", RFC 4750, DOI 10.17487/RFC4750, | Information Base", RFC 4750, DOI 10.17487/RFC4750, | |||
| December 2006, <https://www.rfc-editor.org/info/rfc4750>. | December 2006, <https://www.rfc-editor.org/info/rfc4750>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.2", RFC 5246, | ||||
| DOI 10.17487/RFC5246, August 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5246>. | ||||
| [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | |||
| for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | |||
| <https://www.rfc-editor.org/info/rfc5340>. | <https://www.rfc-editor.org/info/rfc5340>. | |||
| [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information | [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information | |||
| Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August | Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August | |||
| 2009, <https://www.rfc-editor.org/info/rfc5643>. | 2009, <https://www.rfc-editor.org/info/rfc5643>. | |||
| [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and | [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and | |||
| R. Aggarwal, "Support of Address Families in OSPFv3", | R. Aggarwal, "Support of Address Families in OSPFv3", | |||
| skipping to change at page 31, line 24 ¶ | skipping to change at page 33, line 24 ¶ | |||
| [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>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
| Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
| DOI 10.17487/RFC6536, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6536>. | ||||
| [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | |||
| <https://www.rfc-editor.org/info/rfc7223>. | <https://www.rfc-editor.org/info/rfc7223>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
| Access Control Model", STD 91, RFC 8341, | ||||
| DOI 10.17487/RFC8341, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8341>. | ||||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | |||
| "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, | "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, | |||
| DOI 10.17487/RFC8476, December 2018, | DOI 10.17487/RFC8476, December 2018, | |||
| <https://www.rfc-editor.org/info/rfc8476>. | <https://www.rfc-editor.org/info/rfc8476>. | |||
| [RFC8665] Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler, | [RFC8665] Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler, | |||
| H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF | H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF | |||
| Extensions for Segment Routing", RFC 8665, | Extensions for Segment Routing", RFC 8665, | |||
| DOI 10.17487/RFC8665, December 2019, | DOI 10.17487/RFC8665, December 2019, | |||
| <https://www.rfc-editor.org/info/rfc8665>. | <https://www.rfc-editor.org/info/rfc8665>. | |||
| [RFC9020] Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. | ||||
| Tantsura, "YANG Data Model for Segment Routing", RFC 9020, | ||||
| DOI 10.17487/RFC9020, May 2021, | ||||
| <https://www.rfc-editor.org/info/rfc9020>. | ||||
| 7.2. Informative References | 7.2. Informative References | |||
| [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | |||
| Management", RFC 8022, DOI 10.17487/RFC8022, November | Management", RFC 8022, DOI 10.17487/RFC8022, November | |||
| 2016, <https://www.rfc-editor.org/info/rfc8022>. | 2016, <https://www.rfc-editor.org/info/rfc8022>. | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| End of changes. 57 change blocks. | ||||
| 155 lines changed or deleted | 259 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||