| rfc9502v4.txt | rfc9502.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) W. Britto | Internet Engineering Task Force (IETF) W. Britto | |||
| Request for Comments: 9502 S. Hegde | Request for Comments: 9502 S. Hegde | |||
| Category: Standards Track P. Kaneriya | Category: Standards Track P. Kaneriya | |||
| ISSN: 2070-1721 R. Shetty | ISSN: 2070-1721 R. Shetty | |||
| R. Bonica | R. Bonica | |||
| Juniper Networks | Juniper Networks | |||
| P. Psenak | P. Psenak | |||
| Cisco Systems | Cisco Systems | |||
| October 2023 | November 2023 | |||
| IGP Flexible Algorithm in IP Networks | IGP Flexible Algorithm in IP Networks | |||
| Abstract | Abstract | |||
| This document extends IGP Flexible Algorithm so that it can be used | This document extends IGP Flexible Algorithm so that it can be used | |||
| with regular IPv4 and IPv6 forwarding. | with regular IPv4 and IPv6 forwarding. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at line 53 ¶ | skipping to change at line 53 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
| Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | in the Revised BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction | 1. Introduction | |||
| 2. Requirements Language | 2. Requirements Language | |||
| 3. Use Case Example | 3. Use Case Example | |||
| 4. Advertising Flexible Algorithm Definitions (FAD) | 4. Advertising Flexible Algorithm Definitions (FADs) | |||
| 5. Advertising IP Flexible Algorithm Participation | 5. Advertising IP Flexible Algorithm Participation | |||
| 5.1. The IS-IS IP Algorithm Sub-TLV | 5.1. The IS-IS IP Algorithm Sub-TLV | |||
| 5.2. The OSPF IP Algorithm TLV | 5.2. The OSPF IP Algorithm TLV | |||
| 6. Advertising IP Flexible Algorithm Reachability | 6. Advertising IP Flexible Algorithm Reachability | |||
| 6.1. The IS-IS IPv4 Algorithm Prefix Reachability TLV | 6.1. The IS-IS IPv4 Algorithm Prefix Reachability TLV | |||
| 6.2. The IS-IS IPv6 Algorithm Prefix Reachability TLV | 6.2. The IS-IS IPv6 Algorithm Prefix Reachability TLV | |||
| 6.3. The OSPFv2 IP Algorithm Prefix Reachability Sub-TLV | 6.3. The OSPFv2 IP Algorithm Prefix Reachability Sub-TLV | |||
| 6.3.1. The OSPFv2 IP Forwarding Address Sub-TLV | 6.3.1. The OSPFv2 IP Forwarding Address Sub-TLV | |||
| 6.4. The OSPFv3 IP Algorithm Prefix Reachability Sub-TLV | 6.4. The OSPFv3 IP Algorithm Prefix Reachability Sub-TLV | |||
| 6.5. The OSPF IP Flexible Algorithm ASBR Metric Sub-TLV | 6.5. The OSPF IP Flexible Algorithm ASBR Metric Sub-TLV | |||
| skipping to change at line 129 ¶ | skipping to change at line 129 ¶ | |||
| traffic for different sessions is destined to a different destination | traffic for different sessions is destined to a different destination | |||
| IP address. | IP address. | |||
| The IP address allocated to the UPF can be associated with an | The IP address allocated to the UPF can be associated with an | |||
| algorithm. The mobile user traffic is then forwarded along the path | algorithm. The mobile user traffic is then forwarded along the path | |||
| based on the algorithm-specific metric and constraints. As a result, | based on the algorithm-specific metric and constraints. As a result, | |||
| traffic can be sent over a path that is optimized for minimal latency | traffic can be sent over a path that is optimized for minimal latency | |||
| or highest bandwidth. This mechanism is used to achieve Service | or highest bandwidth. This mechanism is used to achieve Service | |||
| Level Agreement (SLA) appropriate for a user session. | Level Agreement (SLA) appropriate for a user session. | |||
| 4. Advertising Flexible Algorithm Definitions (FAD) | 4. Advertising Flexible Algorithm Definitions (FADs) | |||
| To guarantee loop-free forwarding, all routers that participate in a | To guarantee loop-free forwarding, all routers that participate in a | |||
| Flex-Algorithm MUST agree on the Flex-Algorithm Definition (FAD). | Flex-Algorithm MUST agree on the Flexible Algorithm Definition (FAD). | |||
| Selected nodes within the IGP domain MUST advertise FADs as described | Selected nodes within the IGP domain MUST advertise FADs as described | |||
| in Sections 5, 6, and 7 of [RFC9350]. | in Sections 5, 6, and 7 of [RFC9350]. | |||
| 5. Advertising IP Flexible Algorithm Participation | 5. Advertising IP Flexible Algorithm Participation | |||
| A node may use various algorithms when calculating paths to nodes and | A node may use various algorithms when calculating paths to nodes and | |||
| prefixes. Algorithm values are defined in the "IGP Algorithm Types" | prefixes. Algorithm values are defined in the "IGP Algorithm Types" | |||
| registry [IANA-ALG]. | registry [IANA-ALG]. | |||
| Only a node that is participating in a Flex-Algorithm is: | Only a node that is participating in a Flex-Algorithm is: | |||
| * Able to compute a path for such Flex-Algorithm | * Able to compute a path for such Flex-Algorithm | |||
| * Part of the topology for such Flex-Algorithm | * Part of the topology for such Flex-Algorithm | |||
| Flexible Algorithm participation MUST be advertised for each Flexibel | Flexible Algorithm participation MUST be advertised for each Flexible | |||
| Algorithm data plane independently, as specified in [RFC9350]. Using | Algorithm data plane independently, as specified in [RFC9350]. Using | |||
| Flexible Algorithm for regular IPv4 and IPv6 prefixes represents an | Flexible Algorithm for regular IPv4 and IPv6 prefixes represents an | |||
| independent Flexible Algorithm data plane; as such, the Flexible | independent Flexible Algorithm data plane; as such, the Flexible | |||
| Algorithm participation for the IP Flexible Algorithm data plane MUST | Algorithm participation for the IP Flexible Algorithm data plane MUST | |||
| be signaled independently of any other Flexible Algorithm data plane | be signaled independently of any other Flexible Algorithm data plane | |||
| (e.g., SR). | (e.g., SR). | |||
| All routers in an IGP domain participate in default algorithm 0. | All routers in an IGP domain participate in default algorithm 0. | |||
| Advertisement of participation in IP Flex-Algorithm does not impact | Advertisement of participation in IP Flexible Algorithm does not | |||
| the router participation in default algorithm 0. | impact the router participation in default algorithm 0. | |||
| Advertisement of participation in IP Flexible Algorithm does not | Advertisement of participation in IP Flexible Algorithm does not | |||
| impact the router participation signaled for other data planes. For | impact the router participation signaled for other data planes. For | |||
| example, it is possible that a router participates in a particular | example, it is possible that a router participates in a particular | |||
| Flex-Algorithm for the IP data plane but does not participate in the | Flex-Algorithm for the IP data plane but does not participate in the | |||
| same Flex-Algorithm for the SR data plane. | same Flex-Algorithm for the SR data plane. | |||
| The following sections describe how the IP Flexible Algorithm | The following sections describe how the IP Flexible Algorithm | |||
| participation is advertised in IGP protocols. | participation is advertised in IGP protocols. | |||
| skipping to change at line 445 ¶ | skipping to change at line 445 ¶ | |||
| Flags (1 octet): The following flags are defined: | Flags (1 octet): The following flags are defined: | |||
| 0 1 2 3 4 5 6 7 8 | 0 1 2 3 4 5 6 7 8 | |||
| +-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+ | |||
| |E| Reserved | | |E| Reserved | | |||
| +-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+ | |||
| Where: | Where: | |||
| E bit: The same as the E bit defined in Section A.4.5 of | E bit: The same as the E bit defined in Appendix A.4.5 of | |||
| [RFC2328]. | [RFC2328]. | |||
| The remaining bits: Are reserved for future use. They MUST be | The remaining bits: Are reserved for future use. They MUST be | |||
| set to zero on transmission and MUST be ignored on receipt. | set to zero on transmission and MUST be ignored on receipt. | |||
| Reserved (1 octet): SHOULD be set to 0 on transmission and MUST be | Reserved (1 octet): SHOULD be set to 0 on transmission and MUST be | |||
| ignored on reception. | ignored on reception. | |||
| Metric (4 octets): The algorithm-specific metric value. The metric | Metric (4 octets): The algorithm-specific metric value. The metric | |||
| value of 0XFFFFFFFF MUST be considered unreachable. | value of 0XFFFFFFFF MUST be considered unreachable. | |||
| skipping to change at line 513 ¶ | skipping to change at line 513 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Forwarding Address | | | Forwarding Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 6: OSPFv2 IP Forwarding Address Sub-TLV | Figure 6: OSPFv2 IP Forwarding Address Sub-TLV | |||
| Type (2 octets): The value is 7 | Type (2 octets): The value is 7 | |||
| Length (2 octets): 4 | Length (2 octets): 4 | |||
| Forwarding Address (4 octets): The same as defined in Section A.4.5 | Forwarding Address (4 octets): The same as defined in Appendix A.4.5 | |||
| of [RFC2328] | of [RFC2328] | |||
| The OSPFv2 IP Forwarding Address Sub-TLV MUST NOT be used for | The OSPFv2 IP Forwarding Address Sub-TLV MUST NOT be used for | |||
| computing algorithm 0 prefix reachability and MUST be ignored for | computing algorithm 0 prefix reachability and MUST be ignored for | |||
| algorithm 0 prefixes. | algorithm 0 prefixes. | |||
| The OSPFv2 IP Forwarding Address Sub-TLV is optional. If it is not | The OSPFv2 IP Forwarding Address Sub-TLV is optional. If it is not | |||
| present, the forwarding address for computing the IP Algorithm Prefix | present, the forwarding address for computing the IP Algorithm Prefix | |||
| reachability is assumed to be equal to 0.0.0.0. | reachability is assumed to be equal to 0.0.0.0. | |||
| skipping to change at line 697 ¶ | skipping to change at line 697 ¶ | |||
| Participation in the IP Flexible Algorithm is signaled as described | Participation in the IP Flexible Algorithm is signaled as described | |||
| in Section 5 and is specific to the IP Flexible Algorithm data plane. | in Section 5 and is specific to the IP Flexible Algorithm data plane. | |||
| Calculation of IP Flexible Algorithm paths follows what is described | Calculation of IP Flexible Algorithm paths follows what is described | |||
| in [RFC9350]. This computation uses the IP Flexible Algorithm data | in [RFC9350]. This computation uses the IP Flexible Algorithm data | |||
| plane participation and is independent of the Flexible Algorithm | plane participation and is independent of the Flexible Algorithm | |||
| calculation done for any other Flexible Algorithm data plane (e.g., | calculation done for any other Flexible Algorithm data plane (e.g., | |||
| SR, SRv6). | SR, SRv6). | |||
| The IP Flexibel Algorithm data plane only considers participating | The IP Flexible Algorithm data plane only considers participating | |||
| nodes during the Flexible Algorithm calculation. When computing | nodes during the Flexible Algorithm calculation. When computing | |||
| paths for a given Flex-Algorithm, all nodes that do not advertise | paths for a given Flex-Algorithm, all nodes that do not advertise | |||
| participation for such IP Flex-Algorithm, as described in Section 5, | participation for such IP Flex-Algorithm, as described in Section 5, | |||
| MUST be pruned from the topology. | MUST be pruned from the topology. | |||
| 8. IP Flexible Algorithm Forwarding | 8. IP Flexible Algorithm Forwarding | |||
| The IP Algorithm Prefix Reachability advertisement as described in | The IP Algorithm Prefix Reachability advertisement as described in | |||
| Section 5 includes the MTID value that associates the prefix with a | Section 5 includes the MTID value that associates the prefix with a | |||
| specific topology. Algorithm Prefix Reachability advertisement also | specific topology. Algorithm Prefix Reachability advertisement also | |||
| skipping to change at line 729 ¶ | skipping to change at line 729 ¶ | |||
| 9. Deployment Considerations | 9. Deployment Considerations | |||
| IGP Flexible Algorithm can be used by many data planes. The original | IGP Flexible Algorithm can be used by many data planes. The original | |||
| specification was done for SR and SRv6; this specification adds IP as | specification was done for SR and SRv6; this specification adds IP as | |||
| another data plane that can use IGP Flexible Algorithm. Other data | another data plane that can use IGP Flexible Algorithm. Other data | |||
| planes may be defined in the future. This section provides some | planes may be defined in the future. This section provides some | |||
| details about the coexistence of the various data planes of an IGP | details about the coexistence of the various data planes of an IGP | |||
| Flexible Algorithm. | Flexible Algorithm. | |||
| Flexibel Algorithm Definition (FAD), as described in [RFC9350], is | Flexible Algorithm Definition (FAD), as described in [RFC9350], is | |||
| data plane independent and is used by all Flexible Algorithm data | data plane independent and is used by all Flexible Algorithm data | |||
| planes. | planes. | |||
| Participation in the Flexible Algorithm, as described in [RFC9350], | Participation in the Flexible Algorithm, as described in [RFC9350], | |||
| is data plane specific. | is data plane specific. | |||
| Calculation of the Flexible Algorithm paths is data plane specific | Calculation of the Flexible Algorithm paths is data plane specific | |||
| and uses data-plane-specific participation advertisements. | and uses data-plane-specific participation advertisements. | |||
| Data-plane-specific participation and calculation guarantee that the | Data-plane-specific participation and calculation guarantee that the | |||
| skipping to change at line 776 ¶ | skipping to change at line 776 ¶ | |||
| LFA and R-LFA computations MUST be restricted to the Flex-Algorithm | LFA and R-LFA computations MUST be restricted to the Flex-Algorithm | |||
| topology and the computed backup next hops should be programmed for | topology and the computed backup next hops should be programmed for | |||
| the IP Flex-Algorithm prefixes. | the IP Flex-Algorithm prefixes. | |||
| 11. IANA Considerations | 11. IANA Considerations | |||
| This specification updates the "OSPF Router Information (RI) TLVs" | This specification updates the "OSPF Router Information (RI) TLVs" | |||
| registry as follows: | registry as follows: | |||
| +=======+==============+========================+ | +=======+==============+=======================+ | |||
| | Value | TLV Name | Reference | | | Value | TLV Name | Reference | | |||
| +=======+==============+========================+ | +=======+==============+=======================+ | |||
| | 21 | IP Algorithm | RFC 9502], Section 5.2 | | | 21 | IP Algorithm | RFC 9502, Section 5.2 | | |||
| +-------+--------------+------------------------+ | +-------+--------------+-----------------------+ | |||
| Table 1 | Table 1 | |||
| This document also updates the "IS-IS Sub-TLVs for IS-IS Router | This document also updates the "IS-IS Sub-TLVs for IS-IS Router | |||
| CAPABILITY TLV" registry as follows: | CAPABILITY TLV" registry as follows: | |||
| +=======+==============+=======================+ | +=======+==============+=======================+ | |||
| | Value | TLV Name | Reference | | | Value | TLV Name | Reference | | |||
| +=======+==============+=======================+ | +=======+==============+=======================+ | |||
| | 29 | IP Algorithm | RFC 9502, Section 5.1 | | | 29 | IP Algorithm | RFC 9502, Section 5.1 | | |||
| +-------+--------------+-----------------------+ | +-------+--------------+-----------------------+ | |||
| skipping to change at line 1017 ¶ | skipping to change at line 1017 ¶ | |||
| 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>. | |||
| [RFC9352] Psenak, P., Ed., Filsfils, C., Bashandy, A., Decraene, B., | [RFC9352] Psenak, P., Ed., Filsfils, C., Bashandy, A., Decraene, B., | |||
| and Z. Hu, "IS-IS Extensions to Support Segment Routing | and Z. Hu, "IS-IS Extensions to Support Segment Routing | |||
| over the IPv6 Data Plane", RFC 9352, DOI 10.17487/RFC9352, | over the IPv6 Data Plane", RFC 9352, DOI 10.17487/RFC9352, | |||
| February 2023, <https://www.rfc-editor.org/info/rfc9352>. | February 2023, <https://www.rfc-editor.org/info/rfc9352>. | |||
| 13.2. Informative References | 13.2. Informative References | |||
| [IANA-ALG] IANA, "IS-IS Sub-TLVs for IS-IS Router CAPABILITY TLV", | [IANA-ALG] IANA, "IGP Algorithm Types", | |||
| <https://www.iana.org/assignments/igp-parameters>. | <https://www.iana.org/assignments/igp-parameters>. | |||
| [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | |||
| IP Fast Reroute: Loop-Free Alternates", RFC 5286, | IP Fast Reroute: Loop-Free Alternates", RFC 5286, | |||
| DOI 10.17487/RFC5286, September 2008, | DOI 10.17487/RFC5286, September 2008, | |||
| <https://www.rfc-editor.org/info/rfc5286>. | <https://www.rfc-editor.org/info/rfc5286>. | |||
| [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. | [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. | |||
| So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", | So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", | |||
| RFC 7490, DOI 10.17487/RFC7490, April 2015, | RFC 7490, DOI 10.17487/RFC7490, April 2015, | |||
| End of changes. 13 change blocks. | ||||
| 18 lines changed or deleted | 18 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||