| rfc9917v1.txt | rfc9917.txt | |||
|---|---|---|---|---|
| skipping to change at line 21 ¶ | skipping to change at line 21 ¶ | |||
| Abstract | Abstract | |||
| An IGP Flexible Algorithm (Flex-Algorithm) enables the computation of | An IGP Flexible Algorithm (Flex-Algorithm) enables the computation of | |||
| constraint-based paths within an IGP domain, allowing operators to | constraint-based paths within an IGP domain, allowing operators to | |||
| influence path selection according to administrative policies. This | influence path selection according to administrative policies. This | |||
| document defines an extension to Flex-Algorithm that allows the | document defines an extension to Flex-Algorithm that allows the | |||
| inclusion or exclusion of links from path computation based on | inclusion or exclusion of links from path computation based on | |||
| Administrative Groups (also known as link affinities) associated with | Administrative Groups (also known as link affinities) associated with | |||
| the reverse direction of the path under computation. | the reverse direction of the path under computation. | |||
| This extension enhances the path selection capabilities of Flex- | ||||
| Algorithm by enabling reverse-affinity-based constraints, which are | ||||
| particularly useful for scenarios where path symmetry or directional | ||||
| link attributes are operationally significant. | ||||
| This document updates RFCs 9350 and 9843 by introducing the new IANA | This document updates RFCs 9350 and 9843 by introducing the new IANA | |||
| registry that specifies the ordered set of rules that are used to | registry that specifies the ordered set of rules that are used to | |||
| prune links from the topology during the Flex-Algorithm path | prune links from the topology during the Flex-Algorithm path | |||
| computation. | computation. | |||
| Status of This Memo | Status of This Memo | |||
| This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
| This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
| skipping to change at line 75 ¶ | skipping to change at line 70 ¶ | |||
| 4. Deployment Consideration | 4. Deployment Consideration | |||
| 5. IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-TLV | 5. IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-TLV | |||
| 6. IS-IS Flexible Algorithm Include-Any Reverse Admin Group | 6. IS-IS Flexible Algorithm Include-Any Reverse Admin Group | |||
| Sub-TLV | Sub-TLV | |||
| 7. IS-IS Flexible Algorithm Include-All Reverse Admin Group | 7. IS-IS Flexible Algorithm Include-All Reverse Admin Group | |||
| Sub-TLV | Sub-TLV | |||
| 8. OSPF Flexible Algorithm Exclude Reverse Admin Group Sub-TLV | 8. OSPF Flexible Algorithm Exclude Reverse Admin Group Sub-TLV | |||
| 9. OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV | 9. OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV | |||
| 10. OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV | 10. OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV | |||
| 11. Calculation of Flexible Algorithm Paths | 11. Calculation of Flexible Algorithm Paths | |||
| 12. IGP Flex-Algorithm Path Computation Rules Registry | 12. IANA Considerations | |||
| 13. IANA Considerations | 12.1. Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV | |||
| 13.1. Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV | 12.2. OSPF Flexible Algorithm Definition TLV Sub-TLV Registry | |||
| 13.2. OSPF Flexible Algorithm Definition TLV Sub-TLV Registry | 12.3. IGP Flex-Algorithm Path Computation Rules Registry | |||
| 13.3. IGP Flex-Algorithm Path Computation Rules Registry | 12.3.1. Guidance for Designated Experts | |||
| 14. Security Considerations | 13. Security Considerations | |||
| 15. Normative References | 14. References | |||
| 16. Informative References | 14.1. Normative References | |||
| Acknowledgments | 14.2. Informative References | |||
| Authors' Addresses | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| IGP protocols historically computed the best paths over the network | IGP protocols historically computed the best paths over the network | |||
| solely based on the IGP metric assigned to the links. An IGP Flex- | solely based on the IGP metric assigned to the links. An IGP Flex- | |||
| Algorithm as specified in [RFC9350] allows IGPs to compute | Algorithm as specified in [RFC9350] allows IGPs to compute | |||
| constraint-based paths. Several mechanisms to include or exclude the | constraint-based paths. Several mechanisms to include or exclude the | |||
| link during the Flex-Algorithm path calculation have been defined | link during the Flex-Algorithm path calculation have been defined | |||
| already: | already: | |||
| skipping to change at line 113 ¶ | skipping to change at line 108 ¶ | |||
| * link exclusion based on maximum delay [RFC9843] | * link exclusion based on maximum delay [RFC9843] | |||
| This document extends IGP Flex-Algorithm with additional constraints | This document extends IGP Flex-Algorithm with additional constraints | |||
| for inclusion or exclusion of links in the path based on Admin Groups | for inclusion or exclusion of links in the path based on Admin Groups | |||
| associated with the reverse direction of the Shortest Path First | associated with the reverse direction of the Shortest Path First | |||
| (SPF) computation. | (SPF) computation. | |||
| This document updates [RFC9350] and [RFC9843] by creating the new | This document updates [RFC9350] and [RFC9843] by creating the new | |||
| IANA registry that specifies the ordered set of rules that are used | IANA registry that specifies the ordered set of rules that are used | |||
| to prune links from the topology during the Flex-Algorithm path | to prune links from the topology during the Flex-Algorithm path | |||
| computation (refer to Section 12). | computation (refer to Section 12.3.1). | |||
| The term OSPF in this document is used to cover both OSPFv2 and | The term OSPF in this document is used to cover both OSPFv2 and | |||
| OSPFv3 protocols. | OSPFv3 protocols. | |||
| 2. Requirements Language | 2. 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 | |||
| skipping to change at line 170 ¶ | skipping to change at line 165 ¶ | |||
| Algorithm path recalculation. | Algorithm path recalculation. | |||
| One possible approach is to use two different thresholds when setting | One possible approach is to use two different thresholds when setting | |||
| and unsetting the Extended Administrative Group on the link. For | and unsetting the Extended Administrative Group on the link. For | |||
| example, when setting the Extended Administrative Group on the link | example, when setting the Extended Administrative Group on the link | |||
| based on the percentage of certain incoming errors, higher threshold | based on the percentage of certain incoming errors, higher threshold | |||
| is used for setting and lower threshold is used for unsetting the | is used for setting and lower threshold is used for unsetting the | |||
| Extended Administrative Group on the link. | Extended Administrative Group on the link. | |||
| Many implementations provide a throttling mechanism that limits the | Many implementations provide a throttling mechanism that limits the | |||
| rate at which the Label Switched Path (LSP) in case of IS-IS, or Link | rate at which the Link State PDU (LSP) in case of IS-IS, or Link | |||
| State Advertisement (LSA) in case of OSPFv2 and OSPFv3, is updated at | State Advertisement (LSA) in case of OSPFv2 and OSPFv3, is updated at | |||
| the originator. Such mechanism is typically not specific to any | the originator. Such mechanism is typically not specific to any | |||
| particular link attribute, but rather considers any change in the LSP | particular link attribute, but rather considers any change in the LSP | |||
| or LSA. Usage of such throttling mechanism can also be used to avoid | or LSA. Application of such throttling mechanism can also be used to | |||
| frequent changes in the setting of the Extended Administrative Group | avoid frequent changes in the setting of the Extended Administrative | |||
| on a link to affect the stability of the receivers. | Group on a link to affect the stability of the receivers. | |||
| 5. IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-TLV | 5. IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-TLV | |||
| The IS-IS Flexible Algorithm Exclude Reverse Admin Group (FAERAG) | The IS-IS Flexible Algorithm Exclude Reverse Admin Group (FAERAG) | |||
| Sub-TLV is used to advertise the exclude rule that is used during the | Sub-TLV is used to advertise the exclude rule that is used during the | |||
| Flex-Algorithm path calculation as specified in Section 11. | Flex-Algorithm path calculation as specified in Section 11. | |||
| The IS-IS FAERAG Sub-TLV is a sub-TLV of the IS-IS FAD Sub-TLV. It | The IS-IS FAERAG Sub-TLV is a sub-TLV of the IS-IS FAD Sub-TLV. It | |||
| has the following format: | has the following format: | |||
| skipping to change at line 368 ¶ | skipping to change at line 363 ¶ | |||
| is set on the link in the reverse direction, the link MUST be | is set on the link in the reverse direction, the link MUST be | |||
| pruned from the computation. | pruned from the computation. | |||
| * Check if any include-all reverse Admin Group rule is part of the | * Check if any include-all reverse Admin Group rule is part of the | |||
| Flex-Algorithm definition. If such include-all rule exists, check | Flex-Algorithm definition. If such include-all rule exists, check | |||
| if all Admin Groups that are part of the include-all rule are also | if all Admin Groups that are part of the include-all rule are also | |||
| set on the link in the reverse direction. If all such Admin | set on the link in the reverse direction. If all such Admin | |||
| Groups are not set on the link in the reverse direction, the link | Groups are not set on the link in the reverse direction, the link | |||
| MUST be pruned from the computation. | MUST be pruned from the computation. | |||
| Please see rules 8, 9, and 10 in Section 13.3 for these added rules. | Please see rules 8, 9, and 10 in Section 12.3 for these added rules. | |||
| 12. IGP Flex-Algorithm Path Computation Rules Registry | ||||
| Since the original Flex-Algorithm specification [RFC9350], many Flex- | ||||
| Algorithm extensions have been proposed and standardized. Many of | ||||
| them added additional rules to the Flex-Algorithm path computation. | ||||
| Maintaining an IANA registry for these rules allows specification | ||||
| across multiple documents progressing independently. The new "IGP | ||||
| Flex-Algorithm Path Computation Rules" registry has been created and | ||||
| is specified in Section 13.3. | ||||
| This section provides the guidance for designated experts on | ||||
| evaluating new registrations in the "IGP Flex-Algorithm Path | ||||
| Computation Rules" registry: | ||||
| 1. When a new constraint is defined, the rule associated with that | ||||
| constraint MAY be inserted at any position. Backwards | ||||
| compatibility is guaranteed because nodes that don't support the | ||||
| new constraint will not participate in an algorithm where the FAD | ||||
| specifies a constraint they don't support. | ||||
| 2. The relative ordering of existing rules MUST NOT be altered. | ||||
| Doing so has the potential to create backwards compatibility | ||||
| issues. | ||||
| 3. Deletion of the rules MUST NOT be done. Given that the rules are | ||||
| only used conditionally based on the information carried in the | ||||
| winning FAD, deletion of the rule is not necessary. | ||||
| 4. Merging or repeating of the rules MUST NOT be done. | ||||
| 13. IANA Considerations | 12. IANA Considerations | |||
| 13.1. Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV | 12.1. Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV | |||
| IANA has registered the following in the "IS-IS Sub-Sub-TLVs for | IANA has registered the following in the "IS-IS Sub-Sub-TLVs for | |||
| Flexible Algorithm Definition Sub-TLV" registry under the "IS-IS TLV | Flexible Algorithm Definition Sub-TLV" registry under the "IS-IS TLV | |||
| Codepoints" registry group: | Codepoints" registry group: | |||
| Type: 10 | Type: 10 | |||
| Description: Flexible Algorithm Exclude Reverse Admin Group | Description: Flexible Algorithm Exclude Reverse Admin Group | |||
| MP: n | MP: n | |||
| Reference: RFC 9917, Section 5 | Reference: RFC 9917, Section 5 | |||
| Type: 11 | Type: 11 | |||
| Description: Flexible Algorithm Include-Any Reverse Admin Group | Description: Flexible Algorithm Include-Any Reverse Admin Group | |||
| MP: n | MP: n | |||
| Reference: RFC 9917, Section 6 | Reference: RFC 9917, Section 6 | |||
| Type: 12 | Type: 12 | |||
| Description: Flexible Algorithm Include-All Reverse Admin Group | Description: Flexible Algorithm Include-All Reverse Admin Group | |||
| MP: n | MP: n | |||
| Reference: RFC 9917, Section 7 | Reference: RFC 9917, Section 7 | |||
| 13.2. OSPF Flexible Algorithm Definition TLV Sub-TLV Registry | 12.2. OSPF Flexible Algorithm Definition TLV Sub-TLV Registry | |||
| This document makes the following registration in the "OSPF Flexible | This document makes the following registration in the "OSPF Flexible | |||
| Algorithm Definition TLV Sub-TLVs" registry under the "Open Shortest | Algorithm Definition TLV Sub-TLVs" registry under the "Open Shortest | |||
| Path First (OSPF) Parameters" registry group: | Path First (OSPF) Parameters" registry group: | |||
| Type: 10 | Type: 10 | |||
| Description: Flexible Algorithm Exclude Reverse Admin Group | Description: Flexible Algorithm Exclude Reverse Admin Group | |||
| Reference: RFC 9917, Section 8 | Reference: RFC 9917, Section 8 | |||
| Type: 11 | Type: 11 | |||
| Description: Flexible Algorithm Include-Any Reverse Admin Group | Description: Flexible Algorithm Include-Any Reverse Admin Group | |||
| Reference: RFC 9917, Section 9 | Reference: RFC 9917, Section 9 | |||
| Type: 12 | Type: 12 | |||
| Description: Flexible Algorithm Include-All Reverse Admin Group | Description: Flexible Algorithm Include-All Reverse Admin Group | |||
| Reference: RFC 9917, Section 10 | Reference: RFC 9917, Section 10 | |||
| 13.3. IGP Flex-Algorithm Path Computation Rules Registry | 12.3. IGP Flex-Algorithm Path Computation Rules Registry | |||
| IANA has created a new registry called "IGP Flex-Algorithm Path | IANA has created a new registry called "IGP Flex-Algorithm Path | |||
| Computation Rules" within the "Interior Gateway Protocol (IGP) | Computation Rules" within the "Interior Gateway Protocol (IGP) | |||
| Parameters" registry group. The registration procedure for the new | Parameters" registry group. The registration procedure for the new | |||
| registry is Expert Review [RFC8126]. Section 12 provides guidance | registry is Expert Review [RFC8126]. Section 12.3.1 provides | |||
| for designated experts. | guidance for designated experts. | |||
| The "IGP Flex-Algorithm Path Computation Rules" registry specifies | The "IGP Flex-Algorithm Path Computation Rules" registry specifies | |||
| the ordered set of rules that are used to prune links from the | the ordered set of rules that are used to prune links from the | |||
| topology during the Flex-Algorithm path computation. | topology during the Flex-Algorithm path computation. | |||
| There is no upper bound on the number of rules that the registry | There is no upper bound on the number of rules that the registry | |||
| supports. | supports. | |||
| In Table 1, "FAEMB" means "Flex-Algorithm Exclude Minimum Bandwidth", | ||||
| and "FAEMD" means "Flex-Algorithm Exclude Maximum Delay". | ||||
| +==========+===========================================+===========+ | +==========+===========================================+===========+ | |||
| | Sequence | Description | Reference | | | Sequence | Description | Reference | | |||
| | Number | | | | | Number | | | | |||
| +==========+===========================================+===========+ | +==========+===========================================+===========+ | |||
| | 1 | Check if any exclude Administrative Group | Section | | | 1 | Check if any exclude Administrative Group | Section | | |||
| | | rule is part of the Flex-Algorithm | 13 of | | | | rule is part of the Flex-Algorithm | 13 of | | |||
| | | Definition. If such exclude rule exists, | [RFC9350] | | | | Definition. If such exclude rule exists, | [RFC9350] | | |||
| | | check if any color that is part of the | | | | | check if any color that is part of the | | | |||
| | | exclude rule is also set on the link. If | | | | | exclude rule is also set on the link. If | | | |||
| | | such a color is set, the link MUST be | | | | | such a color is set, the link MUST be | | | |||
| skipping to change at line 553 ¶ | skipping to change at line 521 ¶ | |||
| | | exists, check if all Admin Groups that | | | | | exists, check if all Admin Groups that | | | |||
| | | are part of the include-all rule are also | | | | | are part of the include-all rule are also | | | |||
| | | set on the link in the reverse direction. | | | | | set on the link in the reverse direction. | | | |||
| | | If all such Admin Groups are not set on | | | | | If all such Admin Groups are not set on | | | |||
| | | the link in the reverse direction, the | | | | | the link in the reverse direction, the | | | |||
| | | link MUST be pruned from the computation. | | | | | link MUST be pruned from the computation. | | | |||
| +----------+-------------------------------------------+-----------+ | +----------+-------------------------------------------+-----------+ | |||
| Table 1: IGP Flex-Algorithm Path Calculation Rules | Table 1: IGP Flex-Algorithm Path Calculation Rules | |||
| 14. Security Considerations | 12.3.1. Guidance for Designated Experts | |||
| Since the original Flex-Algorithm specification [RFC9350], many Flex- | ||||
| Algorithm extensions have been proposed and standardized. Many of | ||||
| them added additional rules to the Flex-Algorithm path computation. | ||||
| Maintaining an IANA registry for these rules allows specification | ||||
| across multiple documents progressing independently. The new "IGP | ||||
| Flex-Algorithm Path Computation Rules" registry has been created and | ||||
| is specified in Section 12.3. | ||||
| This section provides the guidance for designated experts on | ||||
| evaluating new registrations in the "IGP Flex-Algorithm Path | ||||
| Computation Rules" registry: | ||||
| 1. When a new constraint is defined, the rule associated with that | ||||
| constraint MAY be inserted at any position. Backwards | ||||
| compatibility is guaranteed because nodes that don't support the | ||||
| new constraint will not participate in an algorithm where the FAD | ||||
| specifies a constraint they don't support. | ||||
| 2. The relative ordering of existing rules MUST NOT be altered. | ||||
| Doing so has the potential to create backwards compatibility | ||||
| issues. | ||||
| 3. Deletion of the rules MUST NOT be done. Given that the rules are | ||||
| only used conditionally based on the information carried in the | ||||
| winning FAD, deletion of the rule is not necessary. | ||||
| 4. Merging or repeating of the rules MUST NOT be done. | ||||
| 13. Security Considerations | ||||
| This document inherits security considerations from [RFC9350]. | This document inherits security considerations from [RFC9350]. | |||
| 15. Normative References | 14. References | |||
| 14.1. Normative References | ||||
| [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>. | |||
| [RFC7308] Osborne, E., "Extended Administrative Groups in MPLS | [RFC7308] Osborne, E., "Extended Administrative Groups in MPLS | |||
| Traffic Engineering (MPLS-TE)", RFC 7308, | Traffic Engineering (MPLS-TE)", RFC 7308, | |||
| DOI 10.17487/RFC7308, July 2014, | DOI 10.17487/RFC7308, July 2014, | |||
| <https://www.rfc-editor.org/info/rfc7308>. | <https://www.rfc-editor.org/info/rfc7308>. | |||
| skipping to change at line 583 ¶ | skipping to change at line 583 ¶ | |||
| [RFC9350] Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | [RFC9350] Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | |||
| and A. Gulko, "IGP Flexible Algorithm", RFC 9350, | and A. Gulko, "IGP Flexible Algorithm", RFC 9350, | |||
| DOI 10.17487/RFC9350, February 2023, | DOI 10.17487/RFC9350, February 2023, | |||
| <https://www.rfc-editor.org/info/rfc9350>. | <https://www.rfc-editor.org/info/rfc9350>. | |||
| [RFC9843] Hegde, S., Britto, W., Shetty, R., Decraene, B., Psenak, | [RFC9843] Hegde, S., Britto, W., Shetty, R., Decraene, B., Psenak, | |||
| P., and T. Li, "IGP Flexible Algorithms: Bandwidth, Delay, | P., and T. Li, "IGP Flexible Algorithms: Bandwidth, Delay, | |||
| Metrics, and Constraints", RFC 9843, DOI 10.17487/RFC9843, | Metrics, and Constraints", RFC 9843, DOI 10.17487/RFC9843, | |||
| September 2025, <https://www.rfc-editor.org/info/rfc9843>. | September 2025, <https://www.rfc-editor.org/info/rfc9843>. | |||
| 16. Informative References | 14.2. Informative References | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| Acknowledgments | ||||
| TBD | ||||
| Authors' Addresses | Authors' Addresses | |||
| Peter Psenak | Peter Psenak | |||
| Cisco Systems | Cisco Systems | |||
| Apollo Business Center | Apollo Business Center | |||
| Mlynske nivy 43 | Mlynske nivy 43 | |||
| 82109 Bratislava | 82109 Bratislava | |||
| Slovakia | Slovakia | |||
| Email: ppsenak@cisco.com | Email: ppsenak@cisco.com | |||
| End of changes. 16 change blocks. | ||||
| 63 lines changed or deleted | 59 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||