Skip to content

Commit

Permalink
doc: add isisd flex-algo documentation
Browse files Browse the repository at this point in the history
Add the isisd flex-algo documentation

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
  • Loading branch information
louis-6wind committed Sep 12, 2022
1 parent dd4f50b commit 7d23c15
Showing 1 changed file with 157 additions and 5 deletions.
162 changes: 157 additions & 5 deletions doc/user/isisd.rst
Original file line number Diff line number Diff line change
Expand Up @@ -295,12 +295,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.
Expand Down Expand Up @@ -401,7 +401,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'
Expand All @@ -410,11 +410,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 :t:`draft-ietf-lsr-Flex-Algo` 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
==============
Expand Down

0 comments on commit 7d23c15

Please sign in to comment.