IGP Flexible Algorithms Reverse Affinity Constraint
Peter Psenak
Cisco Systems
Apollo Business Center
Mlynske nivy 43
Bratislava
82109
Slovakia
ppsenak@cisco.com
Jakub Horn
Cisco Systems
Milpitas
95035
CA
USA
jakuhorn@cisco.com
Amit Dhamija
Rakuten
amit.dhamija@rakuten.com
Routing Area
LSR Working Group
IGP
Draft
An IGP Flexible Algorithm (Flex-Algorithm) allows IGPs to compute constraint-based paths.
This document extends IGP Flex-Algorithm with additional constraints.

Introduction
An IGP Flex-Algorithm as specified in [RFC9350] computes a constraint-based path.
This document extends IGP Flex-Algorithm with additional constraints.

Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC8174] when, and only when, they appear in all capitals, as shown here.

Use Case Example
The Flexible Algorithm definition can specify 'colors' that are used by the operator to include or exclude links during the Flex-Algorithm path computation. These link 'colors' are checked in the forwarding direction of the SPF computation - e.g. in the direction from the parent to the child.
In some cases, it is beneficial to check the 'colors' of the link from the reverse direction of the traffic flow. For example, on a point-to-point link between endpoints A and B and for the traffic flowing in a direction from A to B, the input errors can only be detected at node B. An operator may measure the rate of such input errors and set certain 'color' on a link locally on node B when the input error rate crosses a certain threshold. When Flex-Algorithm calculation processes the link A to B, it may look at the 'colors' of the link in the reverse direction, e.g., link B to A. This would allow the operator to exclude such link from the Flex-Algorithm topology.

IS-IS Flexible Algorithm Exclude Reverse Admin Group Sub-TLV
The IS-IS Flexible Algorithm Exclude Reverse Admin Group (FAERAG) Sub-TLV is used to advertise the exclude rule that is used during the Flex-Algorithm path calculation as specified in Section 10.
The IS-IS FAERAG Sub-TLV is a Sub-TLV of the IS-IS FAD Sub-TLV. It has the following format:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Type     |    Length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Extended Admin Group                     |
+-                                                             -+
|                            ...                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
where:

Type: 10
Length: variable, dependent on the size of the Extended Admin Group. MUST be a multiple of 4 octets.
Extended Administrative Group: Extended Administrative Group as defined in [RFC7308].
The IS-IS FAERAG Sub-TLV MUST NOT appear more than once in a single IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLV MUST be ignored by the receiver.
The IS-IS FAERAG Sub-TLV MUST NOT appear more than once in the set of FAD sub-TLVs for a given Flex-Algorithm from a given IS. If it appears more than once in such set, the IS-IS FAERAG Sub-TLV in the first occurrence in the lowest numbered LSP from a given IS MUST be used and any other occurrences MUST be ignored.

IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV
The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV is used to advertise include-any rule that is used during the Flex-Algorithm path calculation as specified in Section 10.
The format of the IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV is identical to the format of the FAERAG Sub-TLV in Section 4.
The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV Type is 11.
The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV MUST NOT appear more than once in a single IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLV MUST be ignored by the receiver.
The IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV MUST NOT appear more than once in the set of FAD sub-TLVs for a given Flex-Algorithm from a given IS. If it appears more than once in such set, the IS-IS Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV in the first occurrence in the lowest numbered LSP from a given IS MUST be used and any other occurrences MUST be ignored.

IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV
The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV is used to advertise include-any rule that is used during the Flex-Algorithm path calculation as specified in Section 10.
The format of the IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV is identical to the format of the FAERAG Sub-TLV in Section 4.
The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV Type is 12.
The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV MUST NOT appear more than once in a single IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLV MUST be ignored by the receiver.
The IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV MUST NOT appear more than once in the set of FAD sub-TLVs for a given Flex-Algorithm from a given IS. If it appears more than once in such set, the IS-IS Flexible Algorithm Include-All Reverse Admin Group Sub-TLV in the first occurrence in the lowest numbered LSP from a given IS MUST be used and any other occurrences MUST be ignored.

OSPF Flexible Algorithm Exclude Reverse Admin Group Sub-TLV
The OSPF Flexible Algorithm Exclude Reverse Admin Group (FAERAG) Sub-TLV is used to advertise the exclude rule that is used during the Flex-Algorithm path calculation as specified in Section 10.
The OSPF FAERAG Sub-TLV is a Sub-TLV of the OSPF FAD TLV. It has the following format:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Extended Admin Group                     |
+-                                                             -+
|                            ...                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
where:

Type: 10
Length: variable, dependent on the size of the Extended Admin Group. MUST be a multiple of 4 octets.
Extended Administrative Group: Extended Administrative Group as defined in [RFC7308].
The OSPF FAERAG Sub-TLV MUST NOT appear more than once in an OSPF FAD TLV. If it appears more than once, the OSPF FAD TLV MUST be ignored by the receiver.

OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV
The usage of this Sub-TLVs is described in Section 5.
The format of the OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV is identical to the format of the OSPF FAERAG Sub-TLV in Section 7.
The OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV Type is 11.
The OSPF Flexible Algorithm Include-Any Reverse Admin Group Sub-TLV MUST NOT appear more than once in an OSPF FAD TLV. If it appears more than once, the OSPF FAD TLV MUST be ignored by the receiver.

OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV
The usage of this Sub-TLVs is described in Section 6.
The format of the OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV is identical to the format of the OSPF FAERAG Sub-TLV in Section 7.
The OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV Type is 12.
The OSPF Flexible Algorithm Include-All Reverse Admin Group Sub-TLV MUST NOT appear more than once in an OSPF FAD TLV. If it appears more than once, the OSPF FAD TLV MUST be ignored by the receiver.

Calculation of Flexible Algorithm Paths
Three new rules are added to the existing rules specified in sec 13 of [RFC9350].
6. Check if any exclude reverse AG rule is part of the Flex-Algorithm definition. If such exclude rule exists, check if any color that is part of the exclude rule is also set on the link from the reverse direction. If such a color is set on the link from the reverse direction, the link MUST be pruned from the computation.
7. Check if any include-any reverse AG rule is part of the Flex-Algorithm definition. If such include-any rule exists, check if any color that is part of the include-any rule is also set on the link from the reverse direction. If no such color is set on the link from the reverse direction, the link MUST be pruned from the computation.
8. Check if any include-all reverse AG rule is part of the Flex-Algorithm definition. If such include-all rule exists, check if all colors that are part of the include-all rule are also set on the link from the reverse direction. If all such colors are not set on the link from the reverse direction, the link MUST be pruned from the computation.

IANA Considerations

Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV
This document defines the following Sub-Sub-TLVs in the "ISIS Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV" registry:
Type: 10
Description: Flexible Algorithm Exclude Reverse Admin Group
Reference: This document (Section 4).
Type: 11
Description: Flexible Algorithm Include-Any Reverse Admin Group
Reference: This document (Section 5).
Type: 12
Description: Flexible Algorithm Include-All Reverse Admin Group
Reference: This document (Section 6).

OSPF Flexible Algorithm Definition TLV Sub-TLV Registry
This document registers following Sub-TLVs in the "OSPF TLVs for Flexible Algorithm Definition TLV" registry:
Type: 10
Description: Flexible Algorithm Exclude Reverse Admin Group
Reference: This document (Section 7).
Type: 11
Description: Flexible Algorithm Include-Any Reverse Admin Group
Reference: This document (Section 8).
Type: 12
Description: Flexible Algorithm Include-All ReverseAdmin Group
Reference: This document (Section 9).

Security Considerations
This document inherits security considerations from [RFC9350].

Acknowledgements
TBD

Normative References
[RFC9350]
[RFC8174]
[RFC7308]