This document defines a new optional BGP-LS Attribute TLV associated with the Node NLRI called the "Flexible Algorithm Definition TLV" ("FAD TLV" for short), and its format is as follows:
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flex Algo | Metric-Type | Calc-Type | Priority |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-TLVs ... //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
where:
-
-
Type:
-
1039
-
Length:
-
The total length of the value field (including any sub-TLVs) in octets. The length value MUST be 4 or larger.
-
Flexible Algorithm (Flex Algo):
-
Single octet value carrying the Flexible Algorithm number between 128 and 255 inclusive, as defined in [RFC 9350].
-
Metric-Type:
-
Single octet value carrying the metric type, as defined in [RFC 9350].
-
Calc-Type:
-
Single octet value carrying the calculation type, as defined in [RFC 9350].
-
Priority:
-
Single octet value carrying the priority of the FAD advertisement, as defined in [RFC 9350].
-
sub-TLVs:
-
Zero or more sub-TLVs may be included, as described further in this section.
The FAD TLV that is advertised in the BGP-LS Attribute along with the Node NLRI of a node is derived from the following IGP protocol-specific advertisements:
-
in the case of IS-IS, from the IS-IS Flexible Algorithm Definition sub-TLV in [RFC 9350]
-
in the case of OSPFv2/OSPFv3, from the OSPF Flexible Algorithm Definition TLV in [RFC 9350]
The BGP-LS Attribute associated with a Node NLRI may include one or more FAD TLVs corresponding to the FAD for each algorithm that the particular node is advertising.
The following subsections define sub-TLVs of the FAD TLV.
The Flexible Algorithm Exclude-Any Affinity sub-TLV is an optional sub-TLV that is used to carry the affinity constraints associated with the FAD and enable the exclusion of links carrying any of the specified affinities from the computation of the specific algorithm, as described in [
RFC 9350]. The affinity is expressed in terms of the Extended Admin Group (EAG), as defined in [
RFC 7308].
The sub-TLV 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Exclude-Any EAG (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
where:
-
-
Type:
-
1040
-
Length:
-
The total length of the value field in octets dependent on the size of the EAG. It MUST be a non-zero value and a multiple of 4.
-
Exclude-Any EAG:
-
The EAG value, as defined in [RFC 9350].
The information in the Flexible Algorithm Exclude-Any Affinity sub-TLV is derived from the IS-IS and OSPF protocol-specific Flexible Algorithm Exclude Admin Group sub-TLV, as defined in [
RFC 9350].
The Flexible Algorithm Include-Any Affinity sub-TLV is an optional sub-TLV that is used to carry the affinity constraints associated with the FAD and enable the inclusion of links carrying any of the specified affinities in the computation of the specific algorithm, as described in [
RFC 9350]. The affinity is expressed in terms of the EAG, as defined in [
RFC 7308].
The sub-TLV 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Include-Any EAG (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
where:
-
-
Type:
-
1041
-
Length:
-
The total length of the value field in octets dependent on the size of the EAG. It MUST be a non-zero value and a multiple of 4.
-
Include-Any EAG:
-
The EAG value, as defined in [RFC 9350].
The information in the Flexible Algorithm Include-Any Affinity sub-TLV is derived from the IS-IS and OSPF protocol-specific Flexible Algorithm Include-Any Admin Group sub-TLV, as defined in [
RFC 9350].
The Flexible Algorithm Include-All Affinity sub-TLV is an optional sub-TLV that is used to carry the affinity constraints associated with the FAD and enable the inclusion of links carrying all of the specified affinities in the computation of the specific algorithm, as described in [
RFC 9350]. The affinity is expressed in terms of the EAG, as defined in [
RFC 7308].
The sub-TLV 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Include-All EAG (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
where:
-
-
Type:
-
1042
-
Length:
-
The total length of the value field in octets dependent on the size of the EAG. It MUST be a non-zero value and a multiple of 4.
-
Include-All EAG:
-
The EAG value, as defined in [RFC 9350].
The information in the Flexible Algorithm Include-All Affinity sub-TLV is derived from the IS-IS and OSPF protocol-specific Flexible Algorithm Include-All Admin Group sub-TLV, as defined in [
RFC 9350].
The Flexible Algorithm Definition Flags sub-TLV is an optional sub-TLV that is used to carry the flags associated with the FAD that are used in the computation of the specific algorithm, as described in [
RFC 9350].
The sub-TLV 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
where:
-
-
Type:
-
1043
-
Length:
-
The total length of the value field in octets dependent on the size of the flags. It MUST be a non-zero value and a multiple of 4.
-
Flags:
-
The bitmask used to represent the flags for the FAD, as defined in [RFC 9350].
The information in the Flexible Algorithm Definition Flags sub-TLV is derived from the IS-IS and OSPF protocol-specific Flexible Algorithm Definition Flags sub-TLV, as defined in [
RFC 9350].
The Flexible Algorithm Exclude SRLG sub-TLV is an optional sub-TLV that is used to carry the Shared Risk Link Group (SRLG) information associated with the FAD and enable the exclusion of links that are associated with any of the specified SRLG in the computation of the specific algorithm, as described in [
RFC 9350]. The SRLGs associated with a link are carried in the BGP-LS Shared Risk Link Group (TLV 1096) [
RFC 7752].
The sub-TLV 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Shared Risk Link Group Values (variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
where:
-
-
Type:
-
1045
-
Length:
-
The total length of the value field in octets dependent on the number of SRLG values carried. It MUST be a non-zero value and a multiple of 4.
-
Shared Risk Link Group Values:
-
One or more SRLG values, each with a size of 4 octets, as defined in [RFC 9350].
The information in the Flexible Algorithm Exclude SRLG sub-TLV is derived from the IS-IS and OSPF protocol-specific Flexible Algorithm Exclude SRLG sub-TLV, as defined in [
RFC 9350].
The OSPF and IS-IS signaling for FAD allows for extensions via new sub-TLVs under the respective IGP's Flexible Algorithm Definition TLV. As specified in
Section 5.3 of
RFC 9350, it is important that the entire FAD be understood by anyone using it for computation purposes. Therefore, the FAD is different from most other protocol extensions, where the skipping or ignoring of unsupported sub-TLV information does not affect the base behavior.
The Flexible Algorithm Unsupported sub-TLV is an optional sub-TLV that is used to indicate the presence of unsupported FAD sub-TLVs. The need for this sub-TLV arises when the BGP-LS implementation on the advertising node does not support one or more of the FAD sub-TLVs present in the IGP advertisement.
The sub-TLV 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Protocol-ID | sub-TLV types (variable) ... //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
where:
-
-
Type:
-
1046
-
Length:
-
The total length of the value field in octets (including any included sub-TLV types).
-
Protocol-ID:
-
Indicates the BGP-LS Protocol-ID of the protocol from which the FAD is being advertised via BGP-LS. The values are from the IANA "BGP-LS Protocol-IDs" subregistry under the "Border Gateway Protocol - Link State (BGP-LS) Parameters" registry <https://www.iana.org/assignments/bgp-ls-parameters/>.
-
sub-TLV types:
-
Zero or more sub-TLV types that are not supported by the node originating the BGP-LS advertisement. The size of each sub-TLV type depends on the protocol indicated by the Protocol-ID field. For example, for IS-IS, each sub-TLV type would be 1 octet in size, while for OSPF, each sub-TLV type would be 2 octets in size.
The node originating the advertisement
MUST include the Flexible Algorithm Unsupported sub-TLV when it comes across an unsupported sub-TLV in the corresponding FAD in the IS-IS and OSPF advertisement. When advertising the Flexible Algorithm Unsupported sub-TLV, the protocol-specific sub-TLV types that are not supported
SHOULD be included. This information serves as a diagnostic aid.
The discussion on the use of the FAD information by the consumers of the BGP-LS information is beyond the scope of this document. However, it is
RECOMMENDED that the choice of the node used for originating the IGP topology information into BGP-LS be made such that the advertising node supports all the FAD extensions in use in its part of the network. This avoids the scenario where an incomplete FAD gets advertised via BGP-LS.