| rfc9903v2.txt | rfc9903.txt | |||
|---|---|---|---|---|
| skipping to change at line 73 ¶ | skipping to change at line 73 ¶ | |||
| Authors' Addresses | 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 [RFC2328] [RFC8665] and | manage OSPFv2 extensions for Segment Routing [RFC2328] [RFC8665] and | |||
| OSPFv3 extensions for Segment Routing [RFC5340] [RFC8666] over the | OSPFv3 extensions for Segment Routing [RFC5340] [RFC8666] over the | |||
| MPLS data plane. The defined YANG data model is an augmentation to | MPLS data plane. The defined YANG data model is an augmentation to | |||
| the OSPF YANG data model [RFC9129]. | the OSPF YANG data model [RFC9129]. | |||
| The YANG data model in this document conforms to the Network | ||||
| 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 | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 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 | |||
| skipping to change at line 104 ¶ | skipping to change at line 101 ¶ | |||
| 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 the OSPF base model [RFC9129], which | configuration, and support of the OSPF base model [RFC9129], which | |||
| defines the basic OSPF configuration and state. | defines the basic OSPF configuration and state. | |||
| The "ietf-ospf-sr-mpls" module defines both the data nodes to | The "ietf-ospf-sr-mpls" module defines both the data nodes to | |||
| configure OSPF Segment Routing MPLS extensions and the additions to | configure OSPF Segment Routing MPLS extensions and the additions to | |||
| the OSPF Link State Advertisements (LSAs) necessary to support | OSPF Link State Advertisements (LSAs) necessary to support Segment | |||
| Segment Routing over MPLS (SR-MPLS). The OSPF configuration | Routing over MPLS (SR-MPLS). The OSPF configuration includes: | |||
| 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 | routing-mpls" YANG module, including the mapping server bindings | |||
| and the per-protocol Segment Routing Global Block (SRGB) (refer to | and the per-protocol Segment Routing Global Block (SRGB) (refer to | |||
| the "sr-control-plane" grouping [RFC9020]). | the "sr-control-plane" grouping [RFC9020]). | |||
| * OSPF area level configuration, which enables SR-MPLS on all | * OSPF area level configuration, which enables SR-MPLS on all | |||
| interfaces as well as advertisement of SR-MPLS information in Link | interfaces as well as advertisement of SR-MPLS information in Link | |||
| State Advertisements (LSAs). | State Advertisements (LSAs). | |||
| skipping to change at line 347 ¶ | skipping to change at line 343 ¶ | |||
| "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-LSAs."; | |||
| 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"; | |||
| skipping to change at line 499 ¶ | skipping to change at line 495 ¶ | |||
| } | } | |||
| } | } | |||
| 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, Section 4"; | "RFC 8665: OSPF Extensions for Segment Routing, Section 4"; | |||
| container extended-prefix-range-tlvs { | container extended-prefix-range-tlvs { | |||
| description | description | |||
| "List of range of prefixes."; | "List of prefix ranges."; | |||
| 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 line 661 ¶ | skipping to change at line 657 ¶ | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 3.2"; | "RFC 8665: OSPF Extensions for Segment Routing, 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. The return of a zero value would indicate | |||
| an error."; | ||||
| } | } | |||
| 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."; | |||
| skipping to change at line 693 ¶ | skipping to change at line 690 ¶ | |||
| "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 SRMS Preference TLV is used to advertise a preference | "The Segment Routing Mapping Server (SRMS) Preference TLV is | |||
| associated with the node that acts as an SRMS. SRMS | used to advertise a preference associated with the node that | |||
| advertisements with a higher preference value are preferred | acts as an SRMS. SRMS advertisements with a higher | |||
| over those with a lower preference value."; | preference value are preferred over those with a lower | |||
| preference value."; | ||||
| reference | reference | |||
| "RFC 8665: OSPF Extensions for Segment Routing, Section 3.4"; | "RFC 8665: OSPF Extensions for Segment Routing, 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."; | |||
| skipping to change at line 868 ¶ | skipping to change at line 866 ¶ | |||
| + "/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 is to be performed for the configuration data: | validation is to be performed for the configuration data: | |||
| - Assure the binding policies prefixes do not overlap."; | - Assure prefixes specified in binding policies do not | |||
| overlap."; | ||||
| 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."; | |||
| } | } | |||
| } | } | |||
| skipping to change at line 933 ¶ | skipping to change at line 932 ¶ | |||
| 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 with Segment Routing interface | interface with Segment Routing interface | |||
| configuration."; | configuration."; | |||
| } | } | |||
| description | description | |||
| "This augments LAN interface adj-sid with neighbor-id."; | "This augments multi-access interface adj-sids with a | |||
| 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 line 1071 ¶ | skipping to change at line 1071 ¶ | |||
| "Value of the Adj-SID."; | "Value of the Adj-SID."; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Weight associated with the Adj-SID."; | "Weight associated with the Adj-SID."; | |||
| } | } | |||
| leaf protection-requested { | leaf protection-requested { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Describe if the Adj-SID is protected."; | "Indicate if the Adj-SID is protected."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | /* | |||
| * Augmentations for read-only data nodes corresponding to Segment | * Augmentations for read-only data nodes corresponding to Segment | |||
| * Routing encodings in OSPFv2 and OSPFv3 Link State Advertisements | * Routing encodings in OSPFv2 and OSPFv3 Link State Advertisements | |||
| * (LSAs) in OSPF Link State Databases (LSDBs) at the instance, | * (LSAs) in OSPF Link State Databases (LSDBs) at the instance, | |||
| * area, and interface level. | * area, and interface level. | |||
| */ | */ | |||
| skipping to change at line 1413 ¶ | skipping to change at line 1413 ¶ | |||
| + "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-Prefix | "SR Prefix-SID Sub-TLV in OSPFv3 Intra-Area-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, Section 6"; | "RFC 8666: OSPFv3 Extensions for Segment Routing, 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/" | |||
| skipping to change at line 1479 ¶ | skipping to change at line 1479 ¶ | |||
| + "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 Router-Link TLV for OSPFv3 E-Router | |||
| LSAs."; | ||||
| reference | reference | |||
| "RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7"; | "RFC 8666: OSPFv3 Extensions for Segment Routing, 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 | |||
| skipping to change at line 1721 ¶ | skipping to change at line 1722 ¶ | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [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>. | |||
| [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>. | |||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
| and R. Wilton, "Network Management Datastore Architecture | ||||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8342>. | ||||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
| <https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [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 | |||
| End of changes. 12 change blocks. | ||||
| 23 lines changed or deleted | 19 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||