doc: add isisd flex-algo documentation

Add the isisd flex-algo documentation

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
This commit is contained in:
Louis Scalbert 2022-08-29 13:32:20 +02:00
parent b95f9f37ea
commit cba6998236

View File

@ -316,12 +316,12 @@ Showing ISIS information
Show the ISIS database globally, for a specific LSP id without or with
details.
.. clicmd:: show isis topology [level-1|level-2]
.. clicmd:: show isis topology [level-1|level-2] [algorithm (128-255)]
Show topology IS-IS paths to Intermediate Systems, globally, in area
(level-1) or domain (level-2).
.. clicmd:: show isis route [level-1|level-2] [prefix-sid|backup]
.. clicmd:: show isis route [level-1|level-2] [prefix-sid|backup] [algorithm (128-255)]
Show the ISIS routing table, as determined by the most recent SPF
calculation.
@ -422,7 +422,7 @@ Known limitations:
MPLS dataplane. E.g. for Linux kernel, since version 4.13 the maximum value
is 32.
.. clicmd:: segment-routing prefix <A.B.C.D/M|X:X::X:X/M> <absolute (16-1048575)|index (0-65535) [no-php-flag|explicit-null] [n-flag-clear]
.. clicmd:: segment-routing prefix <A.B.C.D/M|X:X::X:X/M> [algorithm (128-255)] <absolute (16-1048575)|index (0-65535) [no-php-flag|explicit-null] [n-flag-clear]
prefix. The 'no-php-flag' means NO Penultimate Hop Popping that allows SR
node to request to its neighbor to not pop the label. The 'explicit-null'
@ -431,11 +431,163 @@ Known limitations:
clear the Node flag that is set by default for Prefix-SIDs associated to
loopback addresses. This option is necessary to configure Anycast-SIDs.
.. clicmd:: show isis segment-routing node
.. clicmd:: show isis segment-routing node [algorithm (128-255)]
Show detailed information about all learned Segment Routing Nodes.
.. _debugging-isis:
.. _isis-flex-algo:
Flex-Algos (Flex-Algo)
======================
*isisd* supports some features of
`RFC 9350 <https://tools.ietf.org/html/rfc9350>`_ on an MPLS Segment-Routing
dataplane. The compatibility has been tested against Cisco.
IS-IS uses by default the `Shortest-Path-First` algorithm that basically
calculates paths based on the shortest total metric to the destinations.
Flex-Algo allows new algorithms to run in parallel to compute paths in different
manners, based on metrics (IGP metric or a new type of metrics such as Traffic
Engineering (TE) metric and minimum delay...) and constraints. New metric types
are not yet implemented but constraints are already operational. Constraints can
restrict paths to links with specific affinities or avoid links with specific
affinities. Combinations of these are also possible.
The administrator can configure up to 128 Flex-Algos in an IS-IS area.
To do so, it defines a set of Flex-Algo Definitions (FAD) which
have the following characteristics:
- a numeric identifier (ID) between 128 and 255 inclusive
- a set of constraints (basically, include or exclude a certain given set of
links, designated by a admin-group)
- the calculation type (only the `Shortest-Path-First` is currently supported)
- the metric type (only the IGP inherited metric type is currently supported)
- some additional flags (not supported for the moment).
A subset of routers advertises the Flex-Algo Definitions (FAD) to the other
routers within an area. In order to use a common set of FADs, each router runs a
FAD election process for each locally configured algorithm, using the following
rules:
- If a locally configured FAD is not advertised to the area, the router does not
participate in the particular flex algorithm.
- If a given flex algorithm is running, the participation in this particular
flex algorithm stops when its advertisements are over.
- A router includes its own FAD in the election process if and only if it is
advertised to the other routers.
- If only one router advertises the FAD, the FAD is elected.
- If several FADs are advertised with different priorities, the one with the
highest priority value is selected.
- If there are multiple advertisements of the FAD with the same highest
priority, the FAD of the router with the highest IS-IS system-ID is
selected.
Routers only use the specifications of the elected FAD regardless of the locally
configured definitions. If a router does not support one of the FAD
characteristics, it stops participating in the Flex-Algo.
For each running Flex-Algo, the Segment-Routing SIDs must be
configured with values unique to the algorithm. It allows routers to identify
which flex algorithm they must use for a given packet.
The following commands configure Flex-Algo at the 'router isis' configuration
level. Segment-Routing prefixes must be configured for the Flex-Algo.
.. clicmd:: flexible-algorithm (128-255)
Add a Flex-Algo Definition (FAD) and enter the FAD configuration
level. The algorithm ID value is in the range of 128 to 255 inclusive.
.. clicmd:: no flexible-algorithm (128-255)
Unconfigure a Flex-Algo Definition.
.. clicmd:: affinity-map NAME bit-position (0-255)
Add the specified 'affinity-map'. Affinity-map definitions are used in
FADs and in interfaces admin-group definition.
Affinity-maps format in advertisement TLVs use the extended admin-group
format defined in the RFC7308 section 2.2. The extended admin-group uses a
256 bits field. If an affinity-map is set, the bit at the extended
admin-group 'bit-position' is set 1, else it is set to 0.
The following commands configure Flex-Algo at the 'router isis' and
'flexible-algorithm (128-255)' configuration level.
.. clicmd:: advertise-definition
Advertise the current FAD to other IS-IS routers by using specific IS-IS
TLVs. By default, the definition is is not shared with other routers.
   A router can advertise a FAD without participating in the Flex-Algo.
.. clicmd:: priority (0-255)
Set the specified 'priority' in the current FAD advertisements .
.. clicmd:: metric-type [igp|te|delay]
Set the 'metric-type' for the current FAD. 'igp' is
the default value and refers to the classic 'Shortest-Path-First' algorithm.
If the 'te' or the 'delay' metric is selected, the value is advertised but
the flex algorithm is disabled locally because these types are not currently
supported.
.. clicmd:: no metric-type
Reset the 'metric-type' to the default 'igp' metric.
.. clicmd:: affinity exclude-any NAME
Add the specified affinity to the list of exclude-any affinities. The
Flex-Algo will compute paths that exclude the segments with any of
the specified affinities.
.. clicmd:: no affinity exclude-any NAME
Remove the specified affinity to the list of exclude-any affinities.
.. clicmd:: affinity include-all NAME
Add the specified affinity to the list of include-all affinities. The
Flex-Algo will compute paths that include the segments with all
the specified affinities.
.. clicmd:: no affinity include-all NAME
Remove the specified affinity to the list of include-all affinities.
.. clicmd:: affinity include-any NAME
Add the specified affinity to the list of include-any affinities. The
Flex-Algo will compute paths that include the segments with any of
the specified affinities.
.. clicmd:: no affinity include-any NAME
Remove the specified affinity to the list of include-any affinities.
The following commands configure Flex-Algo at the 'interface' configuration
level.
.. clicmd:: isis affinity flex-algo NAME
Add the specified affinity to the interface.
.. clicmd:: no isis affinity flex-algo NAME
Remove the specified affinity from the interface.
The following command show Flex-Algo information:
.. clicmd:: show isis flex-algo [(128-255)]
Show information about the elected FADs
'show isis route', 'show isis topology' and 'show isis segment-routing node'
includes an 'algorithm (128-255)' optional argument. See
:ref:`showing-isis-information` and :ref:`isis-segment-routing`.
Debugging ISIS
==============