Merge pull request #11667 from louis-6wind/flexalgo-mpls

isisd: Flex-Algo for SR-MPLS
This commit is contained in:
Olivier Dugeon 2023-04-18 14:45:30 +02:00 committed by GitHub
commit fd4377d9a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
152 changed files with 32063 additions and 537 deletions

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.
@ -389,8 +389,7 @@ Traffic Engineering
:ref:`ospf-traffic-engineering`
.. _debugging-isis:
.. _isis-segment-routing:
Segment Routing
===============
@ -423,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'
@ -432,10 +431,164 @@ 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.
.. _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
==============

View File

@ -207,10 +207,10 @@ struct fabricd *fabricd_new(struct isis_area *area)
rv->area = area;
rv->initial_sync_state = FABRICD_SYNC_PENDING;
rv->spftree =
isis_spftree_new(area, &area->lspdb[IS_LEVEL_2 - 1],
area->isis->sysid, ISIS_LEVEL2, SPFTREE_IPV4,
SPF_TYPE_FORWARD, F_SPFTREE_HOPCOUNT_METRIC);
rv->spftree = isis_spftree_new(
area, &area->lspdb[IS_LEVEL_2 - 1], area->isis->sysid,
ISIS_LEVEL2, SPFTREE_IPV4, SPF_TYPE_FORWARD,
F_SPFTREE_HOPCOUNT_METRIC, SR_ALGORITHM_SPF);
rv->neighbors = skiplist_new(0, neighbor_entry_list_cmp,
neighbor_entry_del_void);
rv->neighbors_neighbors = hash_create(neighbor_entry_hash_key,

91
isisd/isis_affinitymap.c Normal file
View File

@ -0,0 +1,91 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/* IS-IS affinity-map
* Copyright 2023 6WIND S.A.
*/
#include <zebra.h>
#include "lib/if.h"
#include "lib/vrf.h"
#include "isisd/isisd.h"
#include "isisd/isis_affinitymap.h"
#ifndef FABRICD
static bool isis_affinity_map_check_use(const char *affmap_name)
{
struct isis *isis = isis_lookup_by_vrfid(VRF_DEFAULT);
struct isis_area *area;
struct listnode *area_node, *fa_node;
struct flex_algo *fa;
struct affinity_map *map;
uint16_t pos;
map = affinity_map_get(affmap_name);
pos = map->bit_position;
for (ALL_LIST_ELEMENTS_RO(isis->area_list, area_node, area)) {
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos, fa_node,
fa)) {
if (admin_group_get(&fa->admin_group_exclude_any,
pos) ||
admin_group_get(&fa->admin_group_include_any,
pos) ||
admin_group_get(&fa->admin_group_include_all, pos))
return true;
}
}
return false;
}
static void isis_affinity_map_update(const char *affmap_name, uint16_t old_pos,
uint16_t new_pos)
{
struct isis *isis = isis_lookup_by_vrfid(VRF_DEFAULT);
struct listnode *area_node, *fa_node;
struct isis_area *area;
struct flex_algo *fa;
bool changed;
for (ALL_LIST_ELEMENTS_RO(isis->area_list, area_node, area)) {
changed = false;
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos, fa_node,
fa)) {
if (admin_group_get(&fa->admin_group_exclude_any,
old_pos)) {
admin_group_unset(&fa->admin_group_exclude_any,
old_pos);
admin_group_set(&fa->admin_group_exclude_any,
new_pos);
changed = true;
}
if (admin_group_get(&fa->admin_group_include_any,
old_pos)) {
admin_group_unset(&fa->admin_group_include_any,
old_pos);
admin_group_set(&fa->admin_group_include_any,
new_pos);
changed = true;
}
if (admin_group_get(&fa->admin_group_include_all,
old_pos)) {
admin_group_unset(&fa->admin_group_include_all,
old_pos);
admin_group_set(&fa->admin_group_include_all,
new_pos);
changed = true;
}
}
if (changed)
lsp_regenerate_schedule(area, area->is_type, 0);
}
}
void isis_affinity_map_init(void)
{
affinity_map_init();
affinity_map_set_check_use_hook(isis_affinity_map_check_use);
affinity_map_set_update_hook(isis_affinity_map_update);
}
#endif /* ifndef FABRICD */

25
isisd/isis_affinitymap.h Normal file
View File

@ -0,0 +1,25 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/* IS-IS affinity-map header
* Copyright 2023 6WIND S.A.
*/
#ifndef __ISIS_AFFINITYMAP_H__
#define __ISIS_AFFINITYMAP_H__
#include "lib/affinitymap.h"
#ifndef FABRICD
#ifdef __cplusplus
extern "C" {
#endif
extern void isis_affinity_map_init(void);
#ifdef __cplusplus
}
#endif
#endif /* ifndef FABRICD */
#endif /* __ISIS_AFFINITYMAP_H__ */

View File

@ -23,6 +23,7 @@
#include "isisd/isis_misc.h"
#include "isisd/isis_circuit.h"
#include "isisd/isis_csm.h"
#include "isisd/isis_flex_algo.h"
#include "isisd/isis_cli_clippy.c"
@ -1126,6 +1127,53 @@ void cli_show_isis_purge_origin(struct vty *vty, const struct lyd_node *dnode,
vty_out(vty, " purge-originator\n");
}
/*
* XPath: /frr-isisd:isis/instance/admin-group-send-zero
*/
DEFPY_YANG(isis_admin_group_send_zero, isis_admin_group_send_zero_cmd,
"[no] admin-group-send-zero",
NO_STR
"Allow sending the default admin-group value of 0x00000000.\n")
{
nb_cli_enqueue_change(vty, "./admin-group-send-zero", NB_OP_MODIFY,
no ? "false" : "true");
return nb_cli_apply_changes(vty, NULL);
}
void cli_show_isis_admin_group_send_zero(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults)
{
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " admin-group-send-zero\n");
}
/*
* XPath: /frr-isisd:isis/instance/asla-legacy-flag
*/
DEFPY_HIDDEN(isis_asla_legacy_flag, isis_asla_legacy_flag_cmd,
"[no] asla-legacy-flag",
NO_STR "Set the legacy flag (aka. L-FLAG) in the ASLA Sub-TLV.\n")
{
nb_cli_enqueue_change(vty, "./asla-legacy-flag", NB_OP_MODIFY,
no ? "false" : "true");
return nb_cli_apply_changes(vty, NULL);
}
void cli_show_isis_asla_legacy_flag(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults)
{
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " asla-legacy-flag\n");
}
/*
* XPath: /frr-isisd:isis/instance/mpls-te
*/
@ -1769,6 +1817,122 @@ void cli_show_isis_prefix_sid(struct vty *vty, const struct lyd_node *dnode,
vty_out(vty, "\n");
}
#ifndef FABRICD
/*
* XPath:
* /frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid
*/
DEFPY_YANG(
isis_sr_prefix_sid_algorithm, isis_sr_prefix_sid_algorithm_cmd,
"segment-routing prefix <A.B.C.D/M|X:X::X:X/M>$prefix\
algorithm (128-255)$algorithm\
<absolute$sid_type (16-1048575)$sid_value|index$sid_type (0-65535)$sid_value>\
[<no-php-flag|explicit-null>$lh_behavior] [n-flag-clear$n_flag_clear]",
SR_STR
"Prefix SID\n"
"IPv4 Prefix\n"
"IPv6 Prefix\n"
"Algorithm Specific Prefix SID Configuration\n"
"Algorithm number\n"
"Specify the absolute value of Prefix Segment ID\n"
"The Prefix Segment ID value\n"
"Specify the index of Prefix Segment ID\n"
"The Prefix Segment ID index\n"
"Don't request Penultimate Hop Popping (PHP)\n"
"Upstream neighbor must replace prefix-sid with explicit null label\n"
"Not a node SID\n")
{
nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
nb_cli_enqueue_change(vty, "./sid-value-type", NB_OP_MODIFY, sid_type);
nb_cli_enqueue_change(vty, "./sid-value", NB_OP_MODIFY, sid_value_str);
if (lh_behavior) {
const char *value;
if (strmatch(lh_behavior, "no-php-flag"))
value = "no-php";
else if (strmatch(lh_behavior, "explicit-null"))
value = "explicit-null";
else
value = "php";
nb_cli_enqueue_change(vty, "./last-hop-behavior", NB_OP_MODIFY,
value);
} else
nb_cli_enqueue_change(vty, "./last-hop-behavior", NB_OP_MODIFY,
NULL);
nb_cli_enqueue_change(vty, "./n-flag-clear", NB_OP_MODIFY,
n_flag_clear ? "true" : "false");
return nb_cli_apply_changes(
vty,
"./segment-routing/algorithm-prefix-sids/algorithm-prefix-sid[prefix='%s'][algo='%s']",
prefix_str, algorithm_str);
}
DEFPY_YANG(
no_isis_sr_prefix_algorithm_sid, no_isis_sr_prefix_sid_algorithm_cmd,
"no segment-routing prefix <A.B.C.D/M|X:X::X:X/M>$prefix\
algorithm (128-255)$algorithm\
[<absolute$sid_type (16-1048575)|index (0-65535)> [<no-php-flag|explicit-null>]]\
[n-flag-clear]",
NO_STR SR_STR
"Prefix SID\n"
"IPv4 Prefix\n"
"IPv6 Prefix\n"
"Algorithm Specific Prefix SID Configuration\n"
"Algorithm number\n"
"Specify the absolute value of Prefix Segment ID\n"
"The Prefix Segment ID value\n"
"Specify the index of Prefix Segment ID\n"
"The Prefix Segment ID index\n"
"Don't request Penultimate Hop Popping (PHP)\n"
"Upstream neighbor must replace prefix-sid with explicit null label\n"
"Not a node SID\n")
{
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
return nb_cli_apply_changes(
vty,
"./segment-routing/algorithm-prefix-sids/algorithm-prefix-sid[prefix='%s'][algo='%s']",
prefix_str, algorithm_str);
return CMD_SUCCESS;
}
#endif /* ifndef FABRICD */
void cli_show_isis_prefix_sid_algorithm(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults)
{
const char *prefix;
const char *lh_behavior;
const char *sid_value_type;
const char *sid_value;
bool n_flag_clear;
uint32_t algorithm;
prefix = yang_dnode_get_string(dnode, "./prefix");
sid_value_type = yang_dnode_get_string(dnode, "./sid-value-type");
sid_value = yang_dnode_get_string(dnode, "./sid-value");
algorithm = yang_dnode_get_uint32(dnode, "./algo");
lh_behavior = yang_dnode_get_string(dnode, "./last-hop-behavior");
n_flag_clear = yang_dnode_get_bool(dnode, "./n-flag-clear");
vty_out(vty, " segment-routing prefix %s", prefix);
vty_out(vty, " algorithm %u", algorithm);
if (strmatch(sid_value_type, "absolute"))
vty_out(vty, " absolute");
else
vty_out(vty, " index");
vty_out(vty, " %s", sid_value);
if (strmatch(lh_behavior, "no-php"))
vty_out(vty, " no-php-flag");
else if (strmatch(lh_behavior, "explicit-null"))
vty_out(vty, " explicit-null");
if (n_flag_clear)
vty_out(vty, " n-flag-clear");
vty_out(vty, "\n");
}
/*
* XPath: /frr-isisd:isis/instance/fast-reroute/level-{1,2}/lfa/priority-limit
@ -2558,6 +2722,24 @@ void cli_show_ip_isis_circ_type(struct vty *vty, const struct lyd_node *dnode,
}
}
static int ag_change(struct vty *vty, int argc, struct cmd_token **argv,
const char *xpath, bool no, int start_idx)
{
for (int i = start_idx; i < argc; i++)
nb_cli_enqueue_change(vty, xpath,
no ? NB_OP_DESTROY : NB_OP_CREATE,
argv[i]->arg);
return nb_cli_apply_changes(vty, NULL);
}
static int ag_iter_cb(const struct lyd_node *dnode, void *arg)
{
struct vty *vty = (struct vty *)arg;
vty_out(vty, " %s", yang_dnode_get_string(dnode, "."));
return YANG_ITER_CONTINUE;
}
/*
* XPath: /frr-interface:lib/interface/frr-isisd:isis/network-type
*/
@ -3182,6 +3364,250 @@ void cli_show_isis_mpls_if_ldp_sync_holddown(struct vty *vty,
yang_dnode_get_string(dnode, NULL));
}
DEFPY_YANG_NOSH(flex_algo, flex_algo_cmd, "flex-algo (128-255)$algorithm",
"Flexible Algorithm\n"
"Flexible Algorithm Number\n")
{
int ret;
char xpath[XPATH_MAXLEN + 37];
snprintf(xpath, sizeof(xpath),
"%s/flex-algos/flex-algo[flex-algo='%ld']", VTY_CURR_XPATH,
algorithm);
nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
ret = nb_cli_apply_changes(
vty, "./flex-algos/flex-algo[flex-algo='%ld']", algorithm);
if (ret == CMD_SUCCESS)
VTY_PUSH_XPATH(ISIS_FLEX_ALGO_NODE, xpath);
return ret;
}
DEFPY_YANG(no_flex_algo, no_flex_algo_cmd, "no flex-algo (128-255)$algorithm",
NO_STR
"Flexible Algorithm\n"
"Flexible Algorithm Number\n")
{
char xpath[XPATH_MAXLEN + 37];
snprintf(xpath, sizeof(xpath),
"%s/flex-algos/flex-algo[flex-algo='%ld']", VTY_CURR_XPATH,
algorithm);
if (!yang_dnode_exists(vty->candidate_config->dnode, xpath)) {
vty_out(vty, "ISIS flex-algo %ld isn't exist.\n", algorithm);
return CMD_ERR_NO_MATCH;
}
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
return nb_cli_apply_changes_clear_pending(
vty, "./flex-algos/flex-algo[flex-algo='%ld']", algorithm);
}
DEFPY_YANG(advertise_definition, advertise_definition_cmd,
"[no] advertise-definition",
NO_STR "Advertise Local Flexible Algorithm\n")
{
nb_cli_enqueue_change(vty, "./advertise-definition",
no ? NB_OP_DESTROY : NB_OP_CREATE,
no ? NULL : "true");
return nb_cli_apply_changes(vty, NULL);
}
DEFPY_YANG(affinity_include_any, affinity_include_any_cmd,
"[no] affinity include-any NAME...",
NO_STR
"Affinity configuration\n"
"Any Include with\n"
"Include NAME list\n")
{
const char *xpath = "./affinity-include-anies/affinity-include-any";
return ag_change(vty, argc, argv, xpath, no, no ? 3 : 2);
}
DEFPY_YANG(affinity_include_all, affinity_include_all_cmd,
"[no] affinity include-all NAME...",
NO_STR
"Affinity configuration\n"
"All Include with\n"
"Include NAME list\n")
{
const char *xpath = "./affinity-include-alls/affinity-include-all";
return ag_change(vty, argc, argv, xpath, no, no ? 3 : 2);
}
DEFPY_YANG(affinity_exclude_any, affinity_exclude_any_cmd,
"[no] affinity exclude-any NAME...",
NO_STR
"Affinity configuration\n"
"Any Exclude with\n"
"Exclude NAME list\n")
{
const char *xpath = "./affinity-exclude-anies/affinity-exclude-any";
return ag_change(vty, argc, argv, xpath, no, no ? 3 : 2);
}
DEFPY_YANG(prefix_metric, prefix_metric_cmd, "[no] prefix-metric",
NO_STR "Use Flex-Algo Prefix Metric\n")
{
nb_cli_enqueue_change(vty, "./prefix-metric",
no ? NB_OP_DESTROY : NB_OP_CREATE, NULL);
return nb_cli_apply_changes(vty, NULL);
}
DEFPY_YANG(dplane_sr_mpls, dplane_sr_mpls_cmd, "[no] dataplane sr-mpls",
NO_STR
"Advertise and participate in the specified Data-Planes\n"
"Advertise and participate in SR-MPLS data-plane\n")
{
nb_cli_enqueue_change(vty, "./dplane-sr-mpls",
no ? NB_OP_DESTROY : NB_OP_CREATE, NULL);
return nb_cli_apply_changes(vty, NULL);
}
DEFPY_HIDDEN(dplane_srv6, dplane_srv6_cmd, "[no] dataplane srv6",
NO_STR
"Advertise and participate in the specified Data-Planes\n"
"Advertise and participate in SRv6 data-plane\n")
{
nb_cli_enqueue_change(vty, "./dplane-srv6",
no ? NB_OP_DESTROY : NB_OP_CREATE, NULL);
return nb_cli_apply_changes(vty, NULL);
}
DEFPY_HIDDEN(dplane_ip, dplane_ip_cmd, "[no] dataplane ip",
NO_STR
"Advertise and participate in the specified Data-Planes\n"
"Advertise and participate in IP data-plane\n")
{
nb_cli_enqueue_change(vty, "./dplane-ip",
no ? NB_OP_DESTROY : NB_OP_CREATE, NULL);
return nb_cli_apply_changes(vty, NULL);
}
DEFPY_YANG(metric_type, metric_type_cmd,
"[no] metric-type [igp$igp|te$te|delay$delay]",
NO_STR
"Metric-type used by flex-algo calculation\n"
"Use IGP metric (default)\n"
"Use Delay as metric\n"
"Use Traffic Engineering metric\n")
{
const char *type = NULL;
if (igp) {
type = "igp";
} else if (te) {
type = "te-default";
} else if (delay) {
type = "min-uni-link-delay";
} else {
vty_out(vty, "Error: unknown metric type\n");
return CMD_SUCCESS;
}
if (!igp)
vty_out(vty,
"Warning: this version can advertise a Flex-Algorithm Definition (FAD) with the %s metric.\n"
"However, participation in a Flex-Algorithm with such a metric is not yet supported.\n",
type);
nb_cli_enqueue_change(vty, "./metric-type",
no ? NB_OP_DESTROY : NB_OP_MODIFY,
no ? NULL : type);
return nb_cli_apply_changes(vty, NULL);
}
DEFPY_YANG(priority, priority_cmd, "[no] priority (0-255)$priority",
NO_STR
"Flex-Algo definition priority\n"
"Priority value\n")
{
nb_cli_enqueue_change(vty, "./priority",
no ? NB_OP_DESTROY : NB_OP_MODIFY,
no ? NULL : priority_str);
return nb_cli_apply_changes(vty, NULL);
}
void cli_show_isis_flex_algo(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults)
{
uint32_t algorithm;
enum flex_algo_metric_type metric_type;
uint32_t priority;
char type_str[10];
algorithm = yang_dnode_get_uint32(dnode, "./flex-algo");
vty_out(vty, " flex-algo %u\n", algorithm);
if (yang_dnode_exists(dnode, "./advertise-definition"))
vty_out(vty, " advertise-definition\n");
if (yang_dnode_exists(dnode, "./dplane-sr-mpls"))
vty_out(vty, " dataplane sr-mpls\n");
if (yang_dnode_exists(dnode, "./dplane-srv6"))
vty_out(vty, " dataplane srv6\n");
if (yang_dnode_exists(dnode, "./dplane-ip"))
vty_out(vty, " dataplane ip\n");
if (yang_dnode_exists(dnode, "./prefix-metric"))
vty_out(vty, " prefix-metric\n");
if (yang_dnode_exists(dnode, "./metric-type")) {
metric_type = yang_dnode_get_enum(dnode, "./metric-type");
if (metric_type != MT_IGP) {
flex_algo_metric_type_print(type_str, sizeof(type_str),
metric_type);
vty_out(vty, " metric-type %s\n", type_str);
}
}
if (yang_dnode_exists(dnode, "./priority")) {
priority = yang_dnode_get_uint32(dnode, "./priority");
if (priority != FLEX_ALGO_PRIO_DEFAULT)
vty_out(vty, " priority %u\n", priority);
}
if (yang_dnode_exists(dnode,
"./affinity-include-alls/affinity-include-all")) {
vty_out(vty, " affinity include-all");
yang_dnode_iterate(
ag_iter_cb, vty, dnode,
"./affinity-include-alls/affinity-include-all");
vty_out(vty, "\n");
}
if (yang_dnode_exists(
dnode, "./affinity-include-anies/affinity-include-any")) {
vty_out(vty, " affinity include-any");
yang_dnode_iterate(
ag_iter_cb, vty, dnode,
"./affinity-include-anies/affinity-include-any");
vty_out(vty, "\n");
}
if (yang_dnode_exists(
dnode, "./affinity-exclude-anies/affinity-exclude-any")) {
vty_out(vty, " affinity exclude-any");
yang_dnode_iterate(
ag_iter_cb, vty, dnode,
"./affinity-exclude-anies/affinity-exclude-any");
vty_out(vty, "\n");
}
}
void cli_show_isis_flex_algo_end(struct vty *vty, const struct lyd_node *dnode)
{
vty_out(vty, " !\n");
}
void isis_cli_init(void)
{
install_element(CONFIG_NODE, &router_isis_cmd);
@ -3240,6 +3666,9 @@ void isis_cli_init(void)
install_element(ISIS_NODE, &area_purge_originator_cmd);
install_element(ISIS_NODE, &isis_admin_group_send_zero_cmd);
install_element(ISIS_NODE, &isis_asla_legacy_flag_cmd);
install_element(ISIS_NODE, &isis_mpls_te_on_cmd);
install_element(ISIS_NODE, &no_isis_mpls_te_on_cmd);
install_element(ISIS_NODE, &isis_mpls_te_router_addr_cmd);
@ -3263,6 +3692,10 @@ void isis_cli_init(void)
install_element(ISIS_NODE, &no_isis_sr_node_msd_cmd);
install_element(ISIS_NODE, &isis_sr_prefix_sid_cmd);
install_element(ISIS_NODE, &no_isis_sr_prefix_sid_cmd);
#ifndef FABRICD
install_element(ISIS_NODE, &isis_sr_prefix_sid_algorithm_cmd);
install_element(ISIS_NODE, &no_isis_sr_prefix_sid_algorithm_cmd);
#endif /* ifndef FABRICD */
install_element(ISIS_NODE, &isis_frr_lfa_priority_limit_cmd);
install_element(ISIS_NODE, &isis_frr_lfa_tiebreaker_cmd);
install_element(ISIS_NODE, &isis_frr_lfa_load_sharing_cmd);
@ -3319,6 +3752,19 @@ void isis_cli_init(void)
install_element(INTERFACE_NODE, &isis_mpls_if_ldp_sync_cmd);
install_element(INTERFACE_NODE, &isis_mpls_if_ldp_sync_holddown_cmd);
install_element(INTERFACE_NODE, &no_isis_mpls_if_ldp_sync_holddown_cmd);
install_element(ISIS_NODE, &flex_algo_cmd);
install_element(ISIS_NODE, &no_flex_algo_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &advertise_definition_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &affinity_include_any_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &affinity_include_all_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &affinity_exclude_any_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &dplane_sr_mpls_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &dplane_srv6_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &dplane_ip_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &prefix_metric_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &metric_type_cmd);
install_element(ISIS_FLEX_ALGO_NODE, &priority_cmd);
}
#endif /* ifndef FABRICD */

336
isisd/isis_flex_algo.c Normal file
View File

@ -0,0 +1,336 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*********************************************************************
* Copyright 2022 Hiroki Shirokura, LINE Corporation
* Copyright 2022 Masakazu Asama
* Copyright 2022 6WIND S.A.
*
* isis_flex_algo.c: IS-IS Flexible Algorithm
*
* Authors
* -------
* Hiroki Shirokura
* Masakazu Asama
* Louis Scalbert
*/
#include <zebra.h>
#include "memory.h"
#include "stream.h"
#include "sbuf.h"
#include "network.h"
#include "command.h"
#include "bitfield.h"
#include "isisd/isisd.h"
#include "isisd/isis_tlvs.h"
#include "isisd/isis_common.h"
#include "isisd/isis_mt.h"
#include "isisd/isis_misc.h"
#include "isisd/isis_adjacency.h"
#include "isisd/isis_circuit.h"
#include "isisd/isis_pdu.h"
#include "isisd/isis_lsp.h"
#include "isisd/isis_spf.h"
#include "isisd/isis_te.h"
#include "isisd/isis_sr.h"
#include "isisd/isis_spf_private.h"
#include "isisd/isis_flex_algo.h"
#ifndef FABRICD
DEFINE_MTYPE_STATIC(ISISD, FLEX_ALGO, "ISIS Flex Algo");
void *isis_flex_algo_data_alloc(void *voidarg)
{
struct isis_flex_algo_alloc_arg *arg = voidarg;
struct isis_flex_algo_data *data;
data = XCALLOC(MTYPE_FLEX_ALGO, sizeof(*data));
for (int tree = SPFTREE_IPV4; tree < SPFTREE_COUNT; tree++) {
for (int level = ISIS_LEVEL1; level <= ISIS_LEVEL2; level++) {
if (!(arg->area->is_type & level))
continue;
data->spftree[tree][level - 1] = isis_spftree_new(
arg->area, &arg->area->lspdb[level - 1],
arg->area->isis->sysid, level, tree,
SPF_TYPE_FORWARD, 0, arg->algorithm);
}
}
return data;
}
void isis_flex_algo_data_free(void *voiddata)
{
struct isis_flex_algo_data *data = voiddata;
for (int tree = SPFTREE_IPV4; tree < SPFTREE_COUNT; tree++)
for (int level = ISIS_LEVEL1; level <= ISIS_LEVEL2; level++)
if (data->spftree[tree][level - 1])
isis_spftree_del(
data->spftree[tree][level - 1]);
}
static struct isis_router_cap_fad *
isis_flex_algo_definition_cmp(struct isis_router_cap_fad *elected,
struct isis_router_cap_fad *fa)
{
if (!elected || fa->fad.priority > elected->fad.priority ||
(fa->fad.priority == elected->fad.priority &&
lsp_id_cmp(fa->sysid, elected->sysid) > 0))
return fa;
return elected;
}
/**
* @brief Look up the flex-algo definition with the highest priority in the LSP
* Database (LSDB). If the value of priority is the same, the flex-algo
* definition with the highest sysid will be selected.
* @param algorithm flex-algo algorithm number
* @param area pointer
* @param local router capability Flex-Algo Definition (FAD) double pointer.
* - fad is NULL: use the local router capability FAD from LSDB for the
* election.
* - fad is not NULL and *fad is NULL: use no local router capability FAD for
* the election.
* - fad and *fad are not NULL: uses the *fad local definition instead of the
* local definition from LSDB for the election.
* @return elected flex-algo-definition object if exist, else NULL
*/
static struct isis_router_cap_fad *
_isis_flex_algo_elected(int algorithm, const struct isis_area *area,
struct isis_router_cap_fad **fad)
{
struct flex_algo *flex_ago;
const struct isis_lsp *lsp;
struct isis_router_cap_fad *fa, *elected = NULL;
if (!flex_algo_id_valid(algorithm))
return NULL;
/* No elected FAD if the algorithm is not locally configured */
flex_ago = flex_algo_lookup(area->flex_algos, algorithm);
if (!flex_ago)
return NULL;
/* No elected FAD if no data-plane is enabled
* Currently, only Segment-Routing MPLS is supported.
* Segment-Routing SRv6 and IP will be configured in the future.
*/
if (!CHECK_FLAG(flex_ago->dataplanes, FLEX_ALGO_SR_MPLS))
return NULL;
/*
* Perform FAD comparison. First, compare the priority, and if they are
* the same, compare the sys-id.
*/
/* clang-format off */
frr_each_const(lspdb, &area->lspdb[ISIS_LEVEL1 - 1], lsp) {
/* clang-format on */
if (!lsp->tlvs || !lsp->tlvs->router_cap)
continue;
if (lsp->own_lsp && fad)
continue;
fa = lsp->tlvs->router_cap->fads[algorithm];
if (!fa)
continue;
assert(algorithm == fa->fad.algorithm);
memcpy(fa->sysid, lsp->hdr.lsp_id, ISIS_SYS_ID_LEN + 2);
elected = isis_flex_algo_definition_cmp(elected, fa);
}
if (fad && *fad)
elected = isis_flex_algo_definition_cmp(elected, *fad);
return elected;
}
struct isis_router_cap_fad *isis_flex_algo_elected(int algorithm,
const struct isis_area *area)
{
return _isis_flex_algo_elected(algorithm, area, NULL);
}
/**
* @brief Check the Flex-Algo Definition is supported by the current FRR version
* @param flex-algo
* @return true if supported else false
*/
bool isis_flex_algo_supported(struct flex_algo *fad)
{
if (fad->calc_type != CALC_TYPE_SPF)
return false;
if (fad->metric_type != MT_IGP)
return false;
if (fad->flags != 0)
return false;
if (fad->exclude_srlg)
return false;
if (fad->unsupported_subtlv)
return false;
return true;
}
/**
* @brief Look for the elected Flex-Algo Definition and check that it is
* supported by the current FRR version
* @param algorithm flex-algo algorithm number
* @param area pointer
* @param local router capability Flex-Algo Definition (FAD) double pointer.
* @return elected flex-algo-definition object if exist and supported, else NULL
*/
static struct isis_router_cap_fad *
_isis_flex_algo_elected_supported(int algorithm, const struct isis_area *area,
struct isis_router_cap_fad **fad)
{
struct isis_router_cap_fad *elected_fad;
elected_fad = _isis_flex_algo_elected(algorithm, area, fad);
if (!elected_fad)
return NULL;
if (isis_flex_algo_supported(&elected_fad->fad))
return elected_fad;
return NULL;
}
struct isis_router_cap_fad *
isis_flex_algo_elected_supported(int algorithm, const struct isis_area *area)
{
return _isis_flex_algo_elected_supported(algorithm, area, NULL);
}
struct isis_router_cap_fad *
isis_flex_algo_elected_supported_local_fad(int algorithm,
const struct isis_area *area,
struct isis_router_cap_fad **fad)
{
return _isis_flex_algo_elected_supported(algorithm, area, fad);
}
/**
* Check LSP is participating specified SR Algorithm
*
* @param lsp IS-IS lsp
* @param algorithm SR Algorithm
* @return Return true if sr-algorithm tlv includes specified
* algorithm in router capability tlv
*/
bool sr_algorithm_participated(const struct isis_lsp *lsp, uint8_t algorithm)
{
if (!lsp || !lsp->tlvs || !lsp->tlvs->router_cap)
return false;
for (int i = 0; i < SR_ALGORITHM_COUNT; i++)
if (lsp->tlvs->router_cap->algo[i] == algorithm)
return true;
return false;
}
bool isis_flex_algo_constraint_drop(struct isis_spftree *spftree,
struct isis_lsp *lsp,
struct isis_extended_reach *reach)
{
bool ret;
struct isis_ext_subtlvs *subtlvs = reach->subtlvs;
uint8_t lspid_orig[ISIS_SYS_ID_LEN + 2];
uint8_t lspid_neigh[ISIS_SYS_ID_LEN + 2];
struct isis_router_cap_fad *fad;
struct isis_asla_subtlvs *asla;
struct listnode *node;
uint32_t *link_admin_group = NULL;
uint32_t link_ext_admin_group_bitmap0;
struct admin_group *link_ext_admin_group = NULL;
fad = isis_flex_algo_elected_supported(spftree->algorithm,
spftree->area);
if (!fad)
return true;
for (ALL_LIST_ELEMENTS_RO(subtlvs->aslas, node, asla)) {
if (!CHECK_FLAG(asla->standard_apps, ISIS_SABM_FLAG_X))
continue;
if (asla->legacy) {
if (IS_SUBTLV(subtlvs, EXT_ADM_GRP))
link_admin_group = &subtlvs->adm_group;
if (IS_SUBTLV(subtlvs, EXT_EXTEND_ADM_GRP) &&
admin_group_nb_words(&subtlvs->ext_admin_group) !=
0)
link_ext_admin_group =
&subtlvs->ext_admin_group;
} else {
if (IS_SUBTLV(asla, EXT_ADM_GRP))
link_admin_group = &asla->admin_group;
if (IS_SUBTLV(asla, EXT_EXTEND_ADM_GRP) &&
admin_group_nb_words(&asla->ext_admin_group) != 0)
link_ext_admin_group = &asla->ext_admin_group;
}
break;
}
/* RFC7308 section 2.3.1
* A receiving node that notices that the AG differs from the first 32
* bits of the EAG SHOULD report this mismatch to the operator.
*/
if (link_admin_group && link_ext_admin_group) {
link_ext_admin_group_bitmap0 =
admin_group_get_offset(link_ext_admin_group, 0);
if (*link_admin_group != link_ext_admin_group_bitmap0) {
memcpy(lspid_orig, lsp->hdr.lsp_id,
ISIS_SYS_ID_LEN + 2);
memcpy(lspid_neigh, reach->id, ISIS_SYS_ID_LEN + 2);
zlog_warn(
"ISIS-SPF: LSP from %pLS neighbor %pLS. Admin-group 0x%08x differs from ext admin-group 0x%08x.",
lspid_orig, lspid_neigh, *link_admin_group,
link_ext_admin_group_bitmap0);
}
}
/*
* Exclude Any
*/
if (!admin_group_zero(&fad->fad.admin_group_exclude_any)) {
ret = admin_group_match_any(&fad->fad.admin_group_exclude_any,
link_admin_group,
link_ext_admin_group);
if (ret)
return true;
}
/*
* Include Any
*/
if (!admin_group_zero(&fad->fad.admin_group_include_any)) {
ret = admin_group_match_any(&fad->fad.admin_group_include_any,
link_admin_group,
link_ext_admin_group);
if (!ret)
return true;
}
/*
* Include All
*/
if (!admin_group_zero(&fad->fad.admin_group_include_all)) {
ret = admin_group_match_all(&fad->fad.admin_group_include_all,
link_admin_group,
link_ext_admin_group);
if (!ret)
return true;
}
return false;
}
#endif /* ifndef FABRICD */

55
isisd/isis_flex_algo.h Normal file
View File

@ -0,0 +1,55 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*********************************************************************
* Copyright 2022 Hiroki Shirokura, LINE Corporation
* Copyright 2022 Masakazu Asama
* Copyright 2022 6WIND S.A.
*
* isis_flex_algo.h: IS-IS Flexible Algorithm
*
* Authors
* -------
* Hiroki Shirokura
* Masakazu Asama
* Louis Scalbert
*/
#ifndef ISIS_FLEX_ALGO_H
#define ISIS_FLEX_ALGO_H
#include "flex_algo.h"
#include "isisd/isis_constants.h"
#ifndef FABRICD
struct isis_flex_algo_data {
struct isis_spftree *spftree[SPFTREE_COUNT][ISIS_LEVELS];
struct isis_area *area;
};
struct isis_flex_algo_alloc_arg {
uint8_t algorithm;
struct isis_area *area;
};
void *isis_flex_algo_data_alloc(void *arg);
void isis_flex_algo_data_free(void *data);
struct isis_router_cap_fad *
isis_flex_algo_elected(int algorithm, const struct isis_area *area);
bool isis_flex_algo_supported(struct flex_algo *fad);
struct isis_router_cap_fad *
isis_flex_algo_elected_supported(int algorithm, const struct isis_area *area);
struct isis_router_cap_fad *
isis_flex_algo_elected_supported_local_fad(int algorithm,
const struct isis_area *area,
struct isis_router_cap_fad **fad);
struct isis_lsp;
bool sr_algorithm_participated(const struct isis_lsp *lsp, uint8_t algorithm);
bool isis_flex_algo_constraint_drop(struct isis_spftree *spftree,
struct isis_lsp *lsp,
struct isis_extended_reach *reach);
#endif /* ifndef FABRICD */
#endif /* ISIS_FLEX_ALGO_H */

View File

@ -355,6 +355,7 @@ bool isis_lfa_excise_node_check(const struct isis_spftree *spftree,
struct tilfa_find_pnode_prefix_sid_args {
uint32_t sid_index;
int algorithm;
};
static int tilfa_find_pnode_prefix_sid_cb(const struct prefix *prefix,
@ -368,15 +369,17 @@ static int tilfa_find_pnode_prefix_sid_cb(const struct prefix *prefix,
if (!subtlvs || subtlvs->prefix_sids.count == 0)
return LSP_ITER_CONTINUE;
psid = (struct isis_prefix_sid *)subtlvs->prefix_sids.head;
/* Require the node flag to be set. */
if (!CHECK_FLAG(psid->flags, ISIS_PREFIX_SID_NODE))
return LSP_ITER_CONTINUE;
args->sid_index = psid->value;
return LSP_ITER_STOP;
for (psid = (struct isis_prefix_sid *)subtlvs->prefix_sids.head; psid;
psid = psid->next) {
/* Require the node flag to be set. */
if (!CHECK_FLAG(psid->flags, ISIS_PREFIX_SID_NODE))
continue;
if (psid->algorithm != args->algorithm)
continue;
args->sid_index = psid->value;
return LSP_ITER_STOP;
}
return LSP_ITER_CONTINUE;
}
/* Find Prefix-SID associated to a System ID. */
@ -390,6 +393,8 @@ static uint32_t tilfa_find_pnode_prefix_sid(struct isis_spftree *spftree,
if (!lsp)
return UINT32_MAX;
args.algorithm = spftree->algorithm;
args.sid_index = UINT32_MAX;
isis_lsp_iterate_ip_reach(lsp, spftree->family, spftree->mtid,
tilfa_find_pnode_prefix_sid_cb, &args);
@ -1098,7 +1103,8 @@ struct isis_spftree *isis_spf_reverse_run(const struct isis_spftree *spftree)
spftree_reverse = isis_spftree_new(
spftree->area, spftree->lspdb, spftree->sysid, spftree->level,
spftree->tree_id, SPF_TYPE_REVERSE,
F_SPFTREE_NO_ADJACENCIES | F_SPFTREE_NO_ROUTES);
F_SPFTREE_NO_ADJACENCIES | F_SPFTREE_NO_ROUTES,
spftree->algorithm);
isis_run_spf(spftree_reverse);
return spftree_reverse;
@ -1194,7 +1200,8 @@ struct isis_spftree *isis_tilfa_compute(struct isis_area *area,
/* Create post-convergence SPF tree. */
spftree_pc = isis_spftree_new(area, spftree->lspdb, spftree->sysid,
spftree->level, spftree->tree_id,
SPF_TYPE_TI_LFA, spftree->flags);
SPF_TYPE_TI_LFA, spftree->flags,
spftree->algorithm);
spftree_pc->lfa.old.spftree = spftree;
spftree_pc->lfa.old.spftree_reverse = spftree_reverse;
spftree_pc->lfa.protected_resource = *resource;
@ -1242,7 +1249,8 @@ int isis_spf_run_neighbors(struct isis_spftree *spftree)
adj_node->lfa.spftree = isis_spftree_new(
spftree->area, spftree->lspdb, adj_node->sysid,
spftree->level, spftree->tree_id, SPF_TYPE_FORWARD,
F_SPFTREE_NO_ADJACENCIES | F_SPFTREE_NO_ROUTES);
F_SPFTREE_NO_ADJACENCIES | F_SPFTREE_NO_ROUTES,
spftree->algorithm);
isis_run_spf(adj_node->lfa.spftree);
}
@ -1722,7 +1730,8 @@ struct isis_spftree *isis_rlfa_compute(struct isis_area *area,
/* Create post-convergence SPF tree. */
spftree_pc = isis_spftree_new(area, spftree->lspdb, spftree->sysid,
spftree->level, spftree->tree_id,
SPF_TYPE_RLFA, spftree->flags);
SPF_TYPE_RLFA, spftree->flags,
spftree->algorithm);
spftree_pc->lfa.old.spftree = spftree;
spftree_pc->lfa.old.spftree_reverse = spftree_reverse;
spftree_pc->lfa.remote.max_metric = max_metric;

View File

@ -46,6 +46,7 @@
#include "isisd/fabricd.h"
#include "isisd/isis_tx_queue.h"
#include "isisd/isis_nb.h"
#include "isisd/isis_flex_algo.h"
DEFINE_MTYPE_STATIC(ISISD, ISIS_LSP, "ISIS LSP");
@ -879,6 +880,65 @@ static uint16_t lsp_refresh_time(struct isis_lsp *lsp, uint16_t rem_lifetime)
return refresh_time;
}
static void lsp_build_internal_reach_ipv4(struct isis_lsp *lsp,
struct isis_area *area,
struct prefix_ipv4 *ipv4,
uint32_t metric)
{
struct sr_prefix_cfg *pcfgs[SR_ALGORITHM_COUNT] = {NULL};
if (area->oldmetric) {
lsp_debug(
"ISIS (%s): Adding old-style IP reachability for %pFX",
area->area_tag, ipv4);
isis_tlvs_add_oldstyle_ip_reach(lsp->tlvs, ipv4, metric);
}
if (area->newmetric) {
lsp_debug("ISIS (%s): Adding te-style IP reachability for %pFX",
area->area_tag, ipv4);
if (area->srdb.enabled)
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
#ifndef FABRICD
if (flex_algo_id_valid(i) &&
!isis_flex_algo_elected_supported(i, area))
continue;
#endif /* ifndef FABRICD */
pcfgs[i] =
isis_sr_cfg_prefix_find(area, ipv4, i);
}
isis_tlvs_add_extended_ip_reach(lsp->tlvs, ipv4, metric, false,
pcfgs);
}
}
static void lsp_build_internal_reach_ipv6(struct isis_lsp *lsp,
struct isis_area *area,
struct prefix_ipv6 *ipv6,
uint32_t metric)
{
struct sr_prefix_cfg *pcfgs[SR_ALGORITHM_COUNT] = {NULL};
lsp_debug("ISIS (%s): Adding IPv6 reachability for %pFX",
area->area_tag, ipv6);
if (area->srdb.enabled)
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
#ifndef FABRICD
if (flex_algo_id_valid(i) &&
!isis_flex_algo_elected_supported(i, area))
continue;
#endif /* ifndef FABRICD */
pcfgs[i] = isis_sr_cfg_prefix_find(area, ipv6, i);
}
isis_tlvs_add_ipv6_reach(lsp->tlvs, isis_area_ipv6_topology(area), ipv6,
metric, false, pcfgs);
}
static void lsp_build_ext_reach_ipv4(struct isis_lsp *lsp,
struct isis_area *area)
{
@ -904,13 +964,23 @@ static void lsp_build_ext_reach_ipv4(struct isis_lsp *lsp,
isis_tlvs_add_oldstyle_ip_reach(lsp->tlvs, ipv4,
metric);
if (area->newmetric) {
struct sr_prefix_cfg *pcfg = NULL;
struct sr_prefix_cfg *pcfgs[SR_ALGORITHM_COUNT] = {
NULL};
if (area->srdb.enabled)
pcfg = isis_sr_cfg_prefix_find(area, ipv4);
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
#ifndef FABRICD
if (flex_algo_id_valid(i) &&
!isis_flex_algo_elected_supported(
i, area))
continue;
#endif /* ifndef FABRICD */
pcfgs[i] = isis_sr_cfg_prefix_find(
area, ipv4, i);
}
isis_tlvs_add_extended_ip_reach(lsp->tlvs, ipv4, metric,
true, pcfg);
true, pcfgs);
}
}
}
@ -938,14 +1008,24 @@ static void lsp_build_ext_reach_ipv6(struct isis_lsp *lsp,
metric = MAX_WIDE_PATH_METRIC;
if (!src_p || !src_p->prefixlen) {
struct sr_prefix_cfg *pcfg = NULL;
struct sr_prefix_cfg *pcfgs[SR_ALGORITHM_COUNT] = {
NULL};
if (area->srdb.enabled)
pcfg = isis_sr_cfg_prefix_find(area, p);
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
#ifndef FABRICD
if (flex_algo_id_valid(i) &&
!isis_flex_algo_elected_supported(
i, area))
continue;
#endif /* ifndef FABRICD */
pcfgs[i] = isis_sr_cfg_prefix_find(
area, p, i);
}
isis_tlvs_add_ipv6_reach(lsp->tlvs,
isis_area_ipv6_topology(area),
p, metric, true, pcfg);
p, metric, true, pcfgs);
} else if (isis_area_ipv6_dstsrc_enabled(area)) {
isis_tlvs_add_ipv6_dstsrc_reach(lsp->tlvs,
ISIS_MT_IPV6_DSTSRC,
@ -1062,9 +1142,30 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
/* Add Router Capability TLV. */
if (area->isis->router_id != 0) {
struct isis_router_cap cap = {};
struct isis_router_cap *rcap;
#ifndef FABRICD
struct isis_router_cap_fad *rcap_fad;
struct listnode *node;
struct flex_algo *fa;
#endif /* ifndef FABRICD */
cap.router_id.s_addr = area->isis->router_id;
rcap = isis_tlvs_init_router_capability(lsp->tlvs);
rcap->router_id.s_addr = area->isis->router_id;
#ifndef FABRICD
/* Set flex-algo definitions */
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos, node,
fa)) {
if (!fa->advertise_definition)
continue;
lsp_debug("ISIS (%s): Flex-Algo Definition %u",
area->area_tag, fa->algorithm);
isis_tlvs_set_router_capability_fad(lsp->tlvs, fa,
fa->algorithm,
area->isis->sysid);
}
#endif /* ifndef FABRICD */
/* Add SR Sub-TLVs if SR is enabled. */
if (area->srdb.enabled) {
@ -1074,30 +1175,38 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
/* SRGB first */
range_size = srdb->config.srgb_upper_bound
- srdb->config.srgb_lower_bound + 1;
cap.srgb.flags = ISIS_SUBTLV_SRGB_FLAG_I
| ISIS_SUBTLV_SRGB_FLAG_V;
cap.srgb.range_size = range_size;
cap.srgb.lower_bound = srdb->config.srgb_lower_bound;
rcap->srgb.flags = ISIS_SUBTLV_SRGB_FLAG_I |
ISIS_SUBTLV_SRGB_FLAG_V;
rcap->srgb.range_size = range_size;
rcap->srgb.lower_bound = srdb->config.srgb_lower_bound;
/* Then Algorithm */
cap.algo[0] = SR_ALGORITHM_SPF;
cap.algo[1] = SR_ALGORITHM_UNSET;
rcap->algo[0] = SR_ALGORITHM_SPF;
rcap->algo[1] = SR_ALGORITHM_UNSET;
#ifndef FABRICD
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos,
node, fa)) {
if (fa->advertise_definition)
rcap_fad = rcap->fads[fa->algorithm];
else
rcap_fad = NULL;
if (!isis_flex_algo_elected_supported_local_fad(
fa->algorithm, area, &rcap_fad))
continue;
lsp_debug("ISIS (%s): SR Algorithm %u",
area->area_tag, fa->algorithm);
rcap->algo[fa->algorithm] = fa->algorithm;
}
#endif /* ifndef FABRICD */
/* SRLB */
cap.srlb.flags = 0;
rcap->srlb.flags = 0;
range_size = srdb->config.srlb_upper_bound
- srdb->config.srlb_lower_bound + 1;
cap.srlb.range_size = range_size;
cap.srlb.lower_bound = srdb->config.srlb_lower_bound;
rcap->srlb.range_size = range_size;
rcap->srlb.lower_bound = srdb->config.srlb_lower_bound;
/* And finally MSD */
cap.msd = srdb->config.msd;
} else {
/* Disable SR Algorithm */
cap.algo[0] = SR_ALGORITHM_UNSET;
cap.algo[1] = SR_ALGORITHM_UNSET;
rcap->msd = srdb->config.msd;
}
isis_tlvs_set_router_capability(lsp->tlvs, &cap);
lsp_debug("ISIS (%s): Adding Router Capabilities information",
area->area_tag);
}
/* IPv4 address and TE router ID TLVs.
@ -1187,31 +1296,9 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
struct listnode *ipnode;
struct prefix_ipv4 *ipv4;
for (ALL_LIST_ELEMENTS_RO(circuit->ip_addrs, ipnode,
ipv4)) {
if (area->oldmetric) {
lsp_debug(
"ISIS (%s): Adding old-style IP reachability for %pFX",
area->area_tag, ipv4);
isis_tlvs_add_oldstyle_ip_reach(
lsp->tlvs, ipv4, metric);
}
if (area->newmetric) {
struct sr_prefix_cfg *pcfg = NULL;
lsp_debug(
"ISIS (%s): Adding te-style IP reachability for %pFX",
area->area_tag, ipv4);
if (area->srdb.enabled)
pcfg = isis_sr_cfg_prefix_find(
area, ipv4);
isis_tlvs_add_extended_ip_reach(
lsp->tlvs, ipv4, metric, false,
pcfg);
}
}
ipv4))
lsp_build_internal_reach_ipv4(lsp, area, ipv4,
metric);
}
if (circuit->ipv6_router && circuit->ipv6_non_link->count > 0) {
@ -1219,22 +1306,9 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
struct prefix_ipv6 *ipv6;
for (ALL_LIST_ELEMENTS_RO(circuit->ipv6_non_link,
ipnode, ipv6)) {
struct sr_prefix_cfg *pcfg = NULL;
lsp_debug(
"ISIS (%s): Adding IPv6 reachability for %pFX",
area->area_tag, ipv6);
if (area->srdb.enabled)
pcfg = isis_sr_cfg_prefix_find(area,
ipv6);
isis_tlvs_add_ipv6_reach(
lsp->tlvs,
isis_area_ipv6_topology(area), ipv6,
metric, false, pcfg);
}
ipnode, ipv6))
lsp_build_internal_reach_ipv6(lsp, area, ipv6,
metric);
}
switch (circuit->circ_type) {

View File

@ -29,6 +29,7 @@
#include "routemap.h"
#include "affinitymap.h"
#include "isisd/isis_affinitymap.h"
#include "isisd/isis_constants.h"
#include "isisd/isis_common.h"
#include "isisd/isis_flags.h"
@ -281,7 +282,7 @@ int main(int argc, char **argv, char **envp)
#endif /* FABRICD */
#ifndef FABRICD
isis_cli_init();
#endif /* ifdef FABRICD */
#endif /* ifndef FABRICD */
isis_spf_init();
isis_redist_init();
isis_route_map_init();
@ -290,7 +291,9 @@ int main(int argc, char **argv, char **envp)
lsp_init();
mt_init();
affinity_map_init();
#ifndef FABRICD
isis_affinity_map_init();
#endif /* ifndef FABRICD */
isis_zebra_init(master, instance);
isis_bfd_init(master);

View File

@ -102,6 +102,20 @@ const struct frr_yang_module_info frr_isisd_info = {
.modify = isis_instance_purge_originator_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/admin-group-send-zero",
.cbs = {
.cli_show = cli_show_isis_admin_group_send_zero,
.modify = isis_instance_admin_group_send_zero_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/asla-legacy-flag",
.cbs = {
.cli_show = cli_show_isis_asla_legacy_flag,
.modify = isis_instance_asla_legacy_flag_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/lsp/mtu",
.cbs = {
@ -688,6 +702,118 @@ const struct frr_yang_module_info frr_isisd_info = {
.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_n_flag_clear_modify,
}
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid",
.cbs = {
.create = isis_instance_segment_routing_algorithm_prefix_sid_create,
.destroy = isis_instance_segment_routing_algorithm_prefix_sid_destroy,
.pre_validate = isis_instance_segment_routing_algorithm_prefix_sid_pre_validate,
.apply_finish = isis_instance_segment_routing_algorithm_prefix_sid_apply_finish,
.cli_show = cli_show_isis_prefix_sid_algorithm,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid/sid-value-type",
.cbs = {
.modify = isis_instance_segment_routing_algorithm_prefix_sid_sid_value_type_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid/sid-value",
.cbs = {
.modify = isis_instance_segment_routing_algorithm_prefix_sid_sid_value_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid/last-hop-behavior",
.cbs = {
.modify = isis_instance_segment_routing_algorithm_prefix_sid_last_hop_behavior_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid/n-flag-clear",
.cbs = {
.modify = isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo",
.cbs = {
.cli_show = cli_show_isis_flex_algo,
.cli_show_end = cli_show_isis_flex_algo_end,
.create = isis_instance_flex_algo_create,
.destroy = isis_instance_flex_algo_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/advertise-definition",
.cbs = {
.modify = isis_instance_flex_algo_advertise_definition_modify,
.destroy = isis_instance_flex_algo_advertise_definition_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-alls/affinity-include-all",
.cbs = {
.create = isis_instance_flex_algo_affinity_include_all_create,
.destroy = isis_instance_flex_algo_affinity_include_all_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-anies/affinity-include-any",
.cbs = {
.create = isis_instance_flex_algo_affinity_include_any_create,
.destroy = isis_instance_flex_algo_affinity_include_any_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/affinity-exclude-anies/affinity-exclude-any",
.cbs = {
.create = isis_instance_flex_algo_affinity_exclude_any_create,
.destroy = isis_instance_flex_algo_affinity_exclude_any_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/prefix-metric",
.cbs = {
.create = isis_instance_flex_algo_prefix_metric_create,
.destroy = isis_instance_flex_algo_prefix_metric_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/metric-type",
.cbs = {
.modify = isis_instance_flex_algo_metric_type_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/dplane-sr-mpls",
.cbs = {
.create = isis_instance_flex_algo_dplane_sr_mpls_create,
.destroy = isis_instance_flex_algo_dplane_sr_mpls_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/dplane-srv6",
.cbs = {
.create = isis_instance_flex_algo_dplane_srv6_create,
.destroy = isis_instance_flex_algo_dplane_srv6_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/dplane-ip",
.cbs = {
.create = isis_instance_flex_algo_dplane_ip_create,
.destroy = isis_instance_flex_algo_dplane_ip_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/priority",
.cbs = {
.modify = isis_instance_flex_algo_priority_modify,
.destroy = isis_instance_flex_algo_priority_destroy,
},
},
{
.xpath = "/frr-isisd:isis/instance/mpls/ldp-sync",
.cbs = {

View File

@ -29,6 +29,8 @@ int isis_instance_overload_on_startup_modify(struct nb_cb_modify_args *args);
int isis_instance_advertise_high_metrics_modify(struct nb_cb_modify_args *args);
int isis_instance_metric_style_modify(struct nb_cb_modify_args *args);
int isis_instance_purge_originator_modify(struct nb_cb_modify_args *args);
int isis_instance_admin_group_send_zero_modify(struct nb_cb_modify_args *args);
int isis_instance_asla_legacy_flag_modify(struct nb_cb_modify_args *args);
int isis_instance_lsp_mtu_modify(struct nb_cb_modify_args *args);
int isis_instance_advertise_passive_only_modify(struct nb_cb_modify_args *args);
int isis_instance_lsp_refresh_interval_level_1_modify(
@ -249,6 +251,67 @@ int isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_mo
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_n_flag_clear_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_create(
struct nb_cb_create_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_pre_validate(
struct nb_cb_pre_validate_args *args);
void isis_instance_segment_routing_algorithm_prefix_sid_apply_finish(
struct nb_cb_apply_finish_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_sid_value_type_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_sid_value_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_last_hop_behavior_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify(
struct nb_cb_modify_args *args);
int isis_instance_flex_algo_create(struct nb_cb_create_args *args);
int isis_instance_flex_algo_destroy(struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_advertise_definition_modify(
struct nb_cb_modify_args *args);
int isis_instance_flex_algo_advertise_definition_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_affinity_include_any_create(
struct nb_cb_create_args *args);
int isis_instance_flex_algo_affinity_include_any_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_affinity_include_all_create(
struct nb_cb_create_args *args);
int isis_instance_flex_algo_affinity_include_all_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_affinity_exclude_any_create(
struct nb_cb_create_args *args);
int isis_instance_flex_algo_affinity_exclude_any_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_prefix_metric_create(
struct nb_cb_create_args *args);
int isis_instance_flex_algo_prefix_metric_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_dplane_sr_mpls_create(
struct nb_cb_create_args *args);
int isis_instance_flex_algo_dplane_sr_mpls_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_dplane_srv6_create(struct nb_cb_create_args *args);
int isis_instance_flex_algo_dplane_srv6_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_dplane_ip_create(struct nb_cb_create_args *args);
int isis_instance_flex_algo_dplane_ip_destroy(struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_metric_type_modify(struct nb_cb_modify_args *args);
int isis_instance_flex_algo_priority_modify(struct nb_cb_modify_args *args);
int isis_instance_flex_algo_priority_destroy(struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_frr_disable_modify(struct nb_cb_modify_args *args);
int isis_instance_flex_algo_frr_disable_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_affinity_mapping_create(
struct nb_cb_create_args *args);
int isis_instance_flex_algo_affinity_mapping_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_flex_algo_affinity_mapping_value_modify(
struct nb_cb_modify_args *args);
int isis_instance_flex_algo_affinity_mapping_value_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_mpls_ldp_sync_destroy(struct nb_cb_destroy_args *args);
int isis_instance_mpls_ldp_sync_create(struct nb_cb_create_args *args);
int isis_instance_mpls_ldp_sync_holddown_modify(struct nb_cb_modify_args *args);
@ -495,6 +558,12 @@ void cli_show_isis_purge_origin(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_mpls_te(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_admin_group_send_zero(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_asla_legacy_flag(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_mpls_te_router_addr(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
@ -538,6 +607,9 @@ void cli_show_isis_node_msd(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_prefix_sid(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_prefix_sid_algorithm(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_frr_lfa_priority_limit(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
@ -623,6 +695,9 @@ void cli_show_isis_mpls_if_ldp_sync(struct vty *vty,
void cli_show_isis_mpls_if_ldp_sync_holddown(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_flex_algo(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_flex_algo_end(struct vty *vty, const struct lyd_node *dnode);
/* Notifications. */
void isis_notif_db_overload(const struct isis_area *area, bool overload);

View File

@ -21,6 +21,7 @@
#include "vrf.h"
#include "ldp_sync.h"
#include "link_state.h"
#include "affinitymap.h"
#include "isisd/isisd.h"
#include "isisd/isis_nb.h"
@ -39,8 +40,14 @@
#include "isisd/isis_redist.h"
#include "isisd/isis_ldp_sync.h"
#include "isisd/isis_dr.h"
#include "isisd/isis_sr.h"
#include "isisd/isis_flex_algo.h"
#include "isisd/isis_zebra.h"
#define AFFINITY_INCLUDE_ANY 0
#define AFFINITY_INCLUDE_ALL 1
#define AFFINITY_EXCLUDE_ANY 2
/*
* XPath: /frr-isisd:isis/instance
*/
@ -416,6 +423,71 @@ int isis_instance_purge_originator_modify(struct nb_cb_modify_args *args)
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/admin-group-send-zero
*/
int isis_instance_admin_group_send_zero_modify(struct nb_cb_modify_args *args)
{
struct isis_circuit *circuit;
struct isis_area *area;
struct listnode *node;
struct flex_algo *fa;
if (args->event != NB_EV_APPLY)
return NB_OK;
area = nb_running_get_entry(args->dnode, NULL, true);
area->admin_group_send_zero = yang_dnode_get_bool(args->dnode, NULL);
if (area->admin_group_send_zero) {
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos, node,
fa)) {
admin_group_allow_explicit_zero(
&fa->admin_group_exclude_any);
admin_group_allow_explicit_zero(
&fa->admin_group_include_any);
admin_group_allow_explicit_zero(
&fa->admin_group_include_all);
}
} else {
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos, node,
fa)) {
admin_group_disallow_explicit_zero(
&fa->admin_group_exclude_any);
admin_group_disallow_explicit_zero(
&fa->admin_group_include_any);
admin_group_disallow_explicit_zero(
&fa->admin_group_include_all);
}
}
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit))
isis_link_params_update(circuit, circuit->interface);
lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 0);
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/asla-legacy-flag
*/
int isis_instance_asla_legacy_flag_modify(struct nb_cb_modify_args *args)
{
struct isis_area *area;
if (args->event != NB_EV_APPLY)
return NB_OK;
area = nb_running_get_entry(args->dnode, NULL, true);
area->asla_legacy_flag = yang_dnode_get_bool(args->dnode, NULL);
lsp_regenerate_schedule(area, IS_LEVEL_1 | IS_LEVEL_2, 0);
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/lsp/mtu
*/
@ -2276,7 +2348,7 @@ int isis_instance_segment_routing_prefix_sid_map_prefix_sid_create(
area = nb_running_get_entry(args->dnode, NULL, true);
yang_dnode_get_prefix(&prefix, args->dnode, "./prefix");
pcfg = isis_sr_cfg_prefix_add(area, &prefix);
pcfg = isis_sr_cfg_prefix_add(area, &prefix, SR_ALGORITHM_SPF);
nb_running_set_entry(args->dnode, pcfg);
return NB_OK;
@ -2466,6 +2538,833 @@ int isis_instance_segment_routing_prefix_sid_map_prefix_sid_n_flag_clear_modify(
return NB_OK;
}
/*
* XPath:
* /frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid
*/
int isis_instance_segment_routing_algorithm_prefix_sid_create(
struct nb_cb_create_args *args)
{
struct isis_area *area;
struct prefix prefix;
struct sr_prefix_cfg *pcfg;
uint32_t algorithm;
if (args->event != NB_EV_APPLY)
return NB_OK;
area = nb_running_get_entry(args->dnode, NULL, true);
yang_dnode_get_prefix(&prefix, args->dnode, "./prefix");
algorithm = yang_dnode_get_uint32(args->dnode, "./algo");
pcfg = isis_sr_cfg_prefix_add(area, &prefix, algorithm);
pcfg->algorithm = algorithm;
nb_running_set_entry(args->dnode, pcfg);
return NB_OK;
}
int isis_instance_segment_routing_algorithm_prefix_sid_destroy(
struct nb_cb_destroy_args *args)
{
struct sr_prefix_cfg *pcfg;
struct isis_area *area;
if (args->event != NB_EV_APPLY)
return NB_OK;
pcfg = nb_running_unset_entry(args->dnode);
area = pcfg->area;
isis_sr_cfg_prefix_del(pcfg);
lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
int isis_instance_segment_routing_algorithm_prefix_sid_pre_validate(
struct nb_cb_pre_validate_args *args)
{
const struct lyd_node *area_dnode;
struct isis_area *area;
struct prefix prefix;
uint32_t srgb_lbound;
uint32_t srgb_ubound;
uint32_t srgb_range;
uint32_t sid;
enum sr_sid_value_type sid_type;
struct isis_prefix_sid psid = {};
yang_dnode_get_prefix(&prefix, args->dnode, "./prefix");
srgb_lbound = yang_dnode_get_uint32(
args->dnode, "../../label-blocks/srgb/lower-bound");
srgb_ubound = yang_dnode_get_uint32(
args->dnode, "../../label-blocks/srgb/upper-bound");
sid = yang_dnode_get_uint32(args->dnode, "./sid-value");
sid_type = yang_dnode_get_enum(args->dnode, "./sid-value-type");
/* Check for invalid indexes/labels. */
srgb_range = srgb_ubound - srgb_lbound + 1;
psid.value = sid;
switch (sid_type) {
case SR_SID_VALUE_TYPE_INDEX:
if (sid >= srgb_range) {
snprintf(args->errmsg, args->errmsg_len,
"SID index %u falls outside local SRGB range",
sid);
return NB_ERR_VALIDATION;
}
break;
case SR_SID_VALUE_TYPE_ABSOLUTE:
if (!IS_MPLS_UNRESERVED_LABEL(sid)) {
snprintf(args->errmsg, args->errmsg_len,
"Invalid absolute SID %u", sid);
return NB_ERR_VALIDATION;
}
SET_FLAG(psid.flags, ISIS_PREFIX_SID_VALUE);
SET_FLAG(psid.flags, ISIS_PREFIX_SID_LOCAL);
break;
}
/* Check for Prefix-SID collisions. */
area_dnode = yang_dnode_get_parent(args->dnode, "instance");
area = nb_running_get_entry(area_dnode, NULL, false);
if (!area)
return NB_OK;
for (int tree = SPFTREE_IPV4; tree < SPFTREE_COUNT; tree++) {
for (int level = ISIS_LEVEL1; level <= ISIS_LEVEL2; level++) {
struct isis_spftree *spftree;
struct isis_vertex *vertex_psid;
if (!(area->is_type & level))
continue;
spftree = area->spftree[tree][level - 1];
if (!spftree)
continue;
vertex_psid =
isis_spf_prefix_sid_lookup(spftree, &psid);
if (vertex_psid &&
!prefix_same(&vertex_psid->N.ip.p.dest, &prefix)) {
snprintfrr(
args->errmsg, args->errmsg_len,
"Prefix-SID collision detected, SID %s %u is already in use by prefix %pFX (L%u)",
CHECK_FLAG(psid.flags,
ISIS_PREFIX_SID_VALUE)
? "label"
: "index",
psid.value, &vertex_psid->N.ip.p.dest,
level);
return NB_ERR_VALIDATION;
}
}
}
return NB_OK;
}
void isis_instance_segment_routing_algorithm_prefix_sid_apply_finish(
struct nb_cb_apply_finish_args *args)
{
struct sr_prefix_cfg *pcfg;
struct isis_area *area;
pcfg = nb_running_get_entry(args->dnode, NULL, true);
area = pcfg->area;
lsp_regenerate_schedule(area, area->is_type, 0);
}
/*
* XPath:
* /frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid/sid-value-type
*/
int isis_instance_segment_routing_algorithm_prefix_sid_sid_value_type_modify(
struct nb_cb_modify_args *args)
{
struct sr_prefix_cfg *pcfg;
if (args->event != NB_EV_APPLY)
return NB_OK;
pcfg = nb_running_get_entry(args->dnode, NULL, true);
pcfg->sid_type = yang_dnode_get_enum(args->dnode, NULL);
return NB_OK;
}
/*
* XPath:
* /frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid/sid-value
*/
int isis_instance_segment_routing_algorithm_prefix_sid_sid_value_modify(
struct nb_cb_modify_args *args)
{
struct sr_prefix_cfg *pcfg;
if (args->event != NB_EV_APPLY)
return NB_OK;
pcfg = nb_running_get_entry(args->dnode, NULL, true);
pcfg->sid = yang_dnode_get_uint32(args->dnode, NULL);
return NB_OK;
}
/*
* XPath:
* /frr-isisd:isis/instance/segment-routing/algorithm-prefix-sid-map/algorithm-prefix-sid/last-hop-behavior
*/
int isis_instance_segment_routing_algorithm_prefix_sid_last_hop_behavior_modify(
struct nb_cb_modify_args *args)
{
struct sr_prefix_cfg *pcfg;
if (args->event != NB_EV_APPLY)
return NB_OK;
pcfg = nb_running_get_entry(args->dnode, NULL, true);
pcfg->last_hop_behavior = yang_dnode_get_enum(args->dnode, NULL);
return NB_OK;
}
/*
* XPath:
* /frr-isisd:isis/instance/segment-routing/algorithm-prefix-sids/algorithm-prefix-sid/n-flag-clear
*/
int isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify(
struct nb_cb_modify_args *args)
{
struct sr_prefix_cfg *pcfg;
if (args->event != NB_EV_APPLY)
return NB_OK;
pcfg = nb_running_get_entry(args->dnode, NULL, true);
pcfg->n_flag_clear = yang_dnode_get_bool(args->dnode, NULL);
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo
*/
int isis_instance_flex_algo_create(struct nb_cb_create_args *args)
{
struct isis_area *area;
struct flex_algo *fa;
bool advertise;
uint32_t algorithm;
uint32_t priority = FLEX_ALGO_PRIO_DEFAULT;
struct isis_flex_algo_alloc_arg arg;
algorithm = yang_dnode_get_uint32(args->dnode, "./flex-algo");
advertise = yang_dnode_exists(args->dnode, "./advertise-definition");
switch (args->event) {
case NB_EV_APPLY:
area = nb_running_get_entry(args->dnode, NULL, true);
arg.algorithm = algorithm;
arg.area = area;
fa = flex_algo_alloc(area->flex_algos, algorithm, &arg);
fa->priority = priority;
fa->advertise_definition = advertise;
if (area->admin_group_send_zero) {
admin_group_allow_explicit_zero(
&fa->admin_group_exclude_any);
admin_group_allow_explicit_zero(
&fa->admin_group_include_any);
admin_group_allow_explicit_zero(
&fa->admin_group_include_all);
}
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
int isis_instance_flex_algo_destroy(struct nb_cb_destroy_args *args)
{
struct isis_area *area;
uint32_t algorithm;
algorithm = yang_dnode_get_uint32(args->dnode, "./flex-algo");
area = nb_running_get_entry(args->dnode, NULL, true);
switch (args->event) {
case NB_EV_APPLY:
flex_algo_delete(area->flex_algos, algorithm);
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/advertise-definition
*/
int isis_instance_flex_algo_advertise_definition_modify(
struct nb_cb_modify_args *args)
{
struct isis_area *area;
struct flex_algo *fa;
bool advertise;
uint32_t algorithm;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
advertise = yang_dnode_exists(args->dnode, "./../advertise-definition");
switch (args->event) {
case NB_EV_APPLY:
area = nb_running_get_entry(args->dnode, NULL, true);
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
fa->advertise_definition = advertise;
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
int isis_instance_flex_algo_advertise_definition_destroy(
struct nb_cb_destroy_args *args)
{
struct isis_area *area;
struct flex_algo *fa;
uint32_t algorithm;
area = nb_running_get_entry(args->dnode, NULL, true);
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
fa->advertise_definition = false;
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
static int isis_instance_flex_algo_affinity_set(struct nb_cb_create_args *args,
int type)
{
struct affinity_map *map;
struct isis_area *area;
struct admin_group *ag;
struct flex_algo *fa;
uint32_t algorithm;
const char *val;
algorithm = yang_dnode_get_uint32(args->dnode, "../../flex-algo");
area = nb_running_get_entry(args->dnode, NULL, true);
val = yang_dnode_get_string(args->dnode, ".");
switch (args->event) {
case NB_EV_VALIDATE:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
map = affinity_map_get(val);
if (!map) {
snprintf(args->errmsg, args->errmsg_len,
"affinity map %s isn't found", val);
return NB_ERR_VALIDATION;
}
break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
map = affinity_map_get(val);
if (!map) {
snprintf(args->errmsg, args->errmsg_len,
"affinity map %s isn't found", val);
return NB_ERR_RESOURCE;
}
if (type == AFFINITY_INCLUDE_ANY)
ag = &fa->admin_group_include_any;
else if (type == AFFINITY_INCLUDE_ALL)
ag = &fa->admin_group_include_all;
else if (type == AFFINITY_EXCLUDE_ANY)
ag = &fa->admin_group_exclude_any;
else
break;
admin_group_set(ag, map->bit_position);
lsp_regenerate_schedule(area, area->is_type, 0);
break;
}
return NB_OK;
}
static int
isis_instance_flex_algo_affinity_unset(struct nb_cb_destroy_args *args,
int type)
{
struct affinity_map *map;
struct isis_area *area;
struct admin_group *ag;
struct flex_algo *fa;
uint32_t algorithm;
const char *val;
algorithm = yang_dnode_get_uint32(args->dnode, "../../flex-algo");
area = nb_running_get_entry(args->dnode, NULL, true);
val = yang_dnode_get_string(args->dnode, ".");
switch (args->event) {
case NB_EV_VALIDATE:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
map = affinity_map_get(val);
if (!map) {
snprintf(args->errmsg, args->errmsg_len,
"affinity map %s isn't found", val);
return NB_ERR_VALIDATION;
}
break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
map = affinity_map_get(val);
if (!map) {
snprintf(args->errmsg, args->errmsg_len,
"affinity map %s isn't found", val);
return NB_ERR_RESOURCE;
}
if (type == AFFINITY_INCLUDE_ANY)
ag = &fa->admin_group_include_any;
else if (type == AFFINITY_INCLUDE_ALL)
ag = &fa->admin_group_include_all;
else if (type == AFFINITY_EXCLUDE_ANY)
ag = &fa->admin_group_exclude_any;
else
break;
admin_group_unset(ag, map->bit_position);
if (area->admin_group_send_zero)
admin_group_allow_explicit_zero(ag);
lsp_regenerate_schedule(area, area->is_type, 0);
break;
}
return NB_OK;
}
/*
* XPath:
* /frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-anies/affinity-include-any
*/
int isis_instance_flex_algo_affinity_include_any_create(
struct nb_cb_create_args *args)
{
return isis_instance_flex_algo_affinity_set(args, AFFINITY_INCLUDE_ANY);
}
int isis_instance_flex_algo_affinity_include_any_destroy(
struct nb_cb_destroy_args *args)
{
return isis_instance_flex_algo_affinity_unset(args,
AFFINITY_INCLUDE_ANY);
}
/*
* XPath:
* /frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-alls/affinity-include-all
*/
int isis_instance_flex_algo_affinity_include_all_create(
struct nb_cb_create_args *args)
{
return isis_instance_flex_algo_affinity_set(args, AFFINITY_INCLUDE_ALL);
}
int isis_instance_flex_algo_affinity_include_all_destroy(
struct nb_cb_destroy_args *args)
{
return isis_instance_flex_algo_affinity_unset(args,
AFFINITY_INCLUDE_ALL);
}
/*
* XPath:
* /frr-isisd:isis/instance/flex-algos/flex-algo/affinity-exclude-anies/affinity-exclude-any
*/
int isis_instance_flex_algo_affinity_exclude_any_create(
struct nb_cb_create_args *args)
{
return isis_instance_flex_algo_affinity_set(args, AFFINITY_EXCLUDE_ANY);
}
int isis_instance_flex_algo_affinity_exclude_any_destroy(
struct nb_cb_destroy_args *args)
{
return isis_instance_flex_algo_affinity_unset(args,
AFFINITY_EXCLUDE_ANY);
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/prefix-metric
*/
int isis_instance_flex_algo_prefix_metric_create(struct nb_cb_create_args *args)
{
struct isis_area *area;
const char *area_tag;
struct flex_algo *fa;
uint32_t algorithm;
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
area = isis_area_lookup(area_tag, VRF_DEFAULT);
if (!area)
return NB_ERR_RESOURCE;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
SET_FLAG(fa->flags, FAD_FLAG_M);
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
int isis_instance_flex_algo_prefix_metric_destroy(
struct nb_cb_destroy_args *args)
{
struct isis_area *area;
const char *area_tag;
struct flex_algo *fa;
uint32_t algorithm;
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
area = isis_area_lookup(area_tag, VRF_DEFAULT);
if (!area)
return NB_ERR_RESOURCE;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
UNSET_FLAG(fa->flags, FAD_FLAG_M);
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
static int isis_instance_flex_algo_dplane_set(struct nb_cb_create_args *args,
int type)
{
struct isis_area *area;
const char *area_tag;
struct flex_algo *fa;
uint32_t algorithm;
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
area = isis_area_lookup(area_tag, VRF_DEFAULT);
if (!area)
return NB_ERR_RESOURCE;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
SET_FLAG(fa->dataplanes, type);
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
if (type == FLEX_ALGO_SRV6 || type == FLEX_ALGO_IP) {
snprintf(args->errmsg, args->errmsg_len,
"%s Flex-algo dataplane is not yet supported.",
type == FLEX_ALGO_SRV6 ? "SRv6" : "IP");
return NB_ERR_VALIDATION;
}
break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
static int isis_instance_flex_algo_dplane_unset(struct nb_cb_destroy_args *args,
int type)
{
struct isis_area *area;
const char *area_tag;
struct flex_algo *fa;
uint32_t algorithm;
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
area = isis_area_lookup(area_tag, VRF_DEFAULT);
if (!area)
return NB_ERR_RESOURCE;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
UNSET_FLAG(fa->dataplanes, type);
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/dplane-sr-mpls
*/
int isis_instance_flex_algo_dplane_sr_mpls_create(
struct nb_cb_create_args *args)
{
return isis_instance_flex_algo_dplane_set(args, FLEX_ALGO_SR_MPLS);
}
int isis_instance_flex_algo_dplane_sr_mpls_destroy(
struct nb_cb_destroy_args *args)
{
return isis_instance_flex_algo_dplane_unset(args, FLEX_ALGO_SR_MPLS);
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/dplane-srv6
*/
int isis_instance_flex_algo_dplane_srv6_create(struct nb_cb_create_args *args)
{
return isis_instance_flex_algo_dplane_set(args, FLEX_ALGO_SRV6);
}
int isis_instance_flex_algo_dplane_srv6_destroy(struct nb_cb_destroy_args *args)
{
return isis_instance_flex_algo_dplane_unset(args, FLEX_ALGO_SRV6);
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/dplane-ip
*/
int isis_instance_flex_algo_dplane_ip_create(struct nb_cb_create_args *args)
{
return isis_instance_flex_algo_dplane_set(args, FLEX_ALGO_IP);
}
int isis_instance_flex_algo_dplane_ip_destroy(struct nb_cb_destroy_args *args)
{
return isis_instance_flex_algo_dplane_unset(args, FLEX_ALGO_IP);
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/metric-type
*/
int isis_instance_flex_algo_metric_type_modify(struct nb_cb_modify_args *args)
{
struct isis_area *area;
const char *area_tag;
struct flex_algo *fa;
uint32_t algorithm;
enum flex_algo_metric_type metric_type;
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
area = isis_area_lookup(area_tag, VRF_DEFAULT);
if (!area)
return NB_ERR_RESOURCE;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
metric_type = yang_dnode_get_enum(args->dnode, NULL);
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
fa->metric_type = metric_type;
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/priority
*/
int isis_instance_flex_algo_priority_modify(struct nb_cb_modify_args *args)
{
struct isis_area *area;
const char *area_tag;
struct flex_algo *fa;
uint32_t algorithm;
uint32_t priority;
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
area = isis_area_lookup(area_tag, VRF_DEFAULT);
if (!area)
return NB_ERR_RESOURCE;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
priority = yang_dnode_get_uint32(args->dnode, NULL);
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
fa->priority = priority;
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
int isis_instance_flex_algo_priority_destroy(struct nb_cb_destroy_args *args)
{
struct isis_area *area;
const char *area_tag;
struct flex_algo *fa;
uint32_t algorithm;
uint32_t priority = FLEX_ALGO_PRIO_DEFAULT;
area_tag = yang_dnode_get_string(args->dnode, "../../../area-tag");
area = isis_area_lookup(area_tag, VRF_DEFAULT);
if (!area)
return NB_ERR_RESOURCE;
algorithm = yang_dnode_get_uint32(args->dnode, "./../flex-algo");
priority = yang_dnode_get_uint32(args->dnode, NULL);
switch (args->event) {
case NB_EV_APPLY:
fa = flex_algo_lookup(area->flex_algos, algorithm);
if (!fa) {
snprintf(args->errmsg, args->errmsg_len,
"flex-algo object not found");
return NB_ERR_RESOURCE;
}
fa->priority = priority;
lsp_regenerate_schedule(area, area->is_type, 0);
break;
case NB_EV_VALIDATE:
case NB_EV_PREPARE:
case NB_EV_ABORT:
break;
}
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/mpls/ldp-sync
*/
@ -2588,7 +3487,8 @@ int lib_interface_isis_area_tag_modify(struct nb_cb_modify_args *args)
struct isis_circuit *circuit;
if (args->event == NB_EV_VALIDATE) {
circuit = nb_running_get_entry_non_rec(lyd_parent(args->dnode), NULL, false);
circuit = nb_running_get_entry_non_rec(lyd_parent(args->dnode),
NULL, false);
if (circuit) {
snprintf(args->errmsg, args->errmsg_len,
"Changing area tag is not allowed");

View File

@ -36,9 +36,12 @@
#include "isis_spf_private.h"
#include "isis_route.h"
#include "isis_zebra.h"
#include "isis_flex_algo.h"
DEFINE_MTYPE_STATIC(ISISD, ISIS_NEXTHOP, "ISIS nexthop");
DEFINE_MTYPE_STATIC(ISISD, ISIS_ROUTE_INFO, "ISIS route info");
DEFINE_MTYPE_STATIC(ISISD, ISIS_ROUTE_TABLE_INFO, "ISIS route table info");
DEFINE_HOOK(isis_route_update_hook,
(struct isis_area * area, struct prefix *prefix,
@ -51,8 +54,25 @@ static void isis_route_update(struct isis_area *area, struct prefix *prefix,
struct prefix_ipv6 *src_p,
struct isis_route_info *route_info);
static struct isis_nexthop *isis_nexthop_create(int family, union g_addr *ip,
ifindex_t ifindex)
static struct mpls_label_stack *
label_stack_dup(const struct mpls_label_stack *const orig)
{
struct mpls_label_stack *copy;
int array_size;
if (orig == NULL)
return NULL;
array_size = orig->num_labels * sizeof(mpls_label_t);
copy = XCALLOC(MTYPE_ISIS_NEXTHOP_LABELS,
sizeof(struct mpls_label_stack) + array_size);
copy->num_labels = orig->num_labels;
memcpy(copy->label, orig->label, array_size);
return copy;
}
static struct isis_nexthop *
isis_nexthop_create(int family, const union g_addr *const ip, ifindex_t ifindex)
{
struct isis_nexthop *nexthop;
@ -65,12 +85,40 @@ static struct isis_nexthop *isis_nexthop_create(int family, union g_addr *ip,
return nexthop;
}
static struct isis_nexthop *
isis_nexthop_dup(const struct isis_nexthop *const orig)
{
struct isis_nexthop *nexthop;
nexthop = isis_nexthop_create(orig->family, &orig->ip, orig->ifindex);
memcpy(nexthop->sysid, orig->sysid, ISIS_SYS_ID_LEN);
nexthop->sr = orig->sr;
nexthop->label_stack = label_stack_dup(orig->label_stack);
return nexthop;
}
void isis_nexthop_delete(struct isis_nexthop *nexthop)
{
XFREE(MTYPE_ISIS_NEXTHOP_LABELS, nexthop->label_stack);
XFREE(MTYPE_ISIS_NEXTHOP, nexthop);
}
static struct list *isis_nexthop_list_dup(const struct list *orig)
{
struct list *copy;
struct listnode *node;
struct isis_nexthop *nh;
struct isis_nexthop *nhcopy;
copy = list_new();
for (ALL_LIST_ELEMENTS_RO(orig, node, nh)) {
nhcopy = isis_nexthop_dup(nh);
listnode_add(copy, nhcopy);
}
return copy;
}
static struct isis_nexthop *nexthoplookup(struct list *nexthops, int family,
union g_addr *ip, ifindex_t ifindex)
{
@ -238,13 +286,28 @@ isis_route_info_new(struct prefix *prefix, struct prefix_ipv6 *src_p,
rinfo->cost = cost;
rinfo->depth = depth;
rinfo->sr = *sr;
rinfo->sr_algo[sr->algorithm] = *sr;
rinfo->sr_algo[sr->algorithm].nexthops = rinfo->nexthops;
rinfo->sr_algo[sr->algorithm].nexthops_backup =
rinfo->backup ? rinfo->backup->nexthops : NULL;
return rinfo;
}
static void isis_route_info_delete(struct isis_route_info *route_info)
{
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
if (!route_info->sr_algo[i].present)
continue;
if (route_info->sr_algo[i].nexthops == route_info->nexthops)
continue;
route_info->sr_algo[i].nexthops->del =
(void (*)(void *))isis_nexthop_delete;
list_delete(&route_info->sr_algo[i].nexthops);
}
if (route_info->nexthops) {
route_info->nexthops->del =
(void (*)(void *))isis_nexthop_delete;
@ -260,6 +323,27 @@ void isis_route_node_cleanup(struct route_table *table, struct route_node *node)
isis_route_info_delete(node->info);
}
struct isis_route_table_info *isis_route_table_info_alloc(uint8_t algorithm)
{
struct isis_route_table_info *info;
info = XCALLOC(MTYPE_ISIS_ROUTE_TABLE_INFO, sizeof(*info));
info->algorithm = algorithm;
return info;
}
void isis_route_table_info_free(void *info)
{
XFREE(MTYPE_ISIS_ROUTE_TABLE_INFO, info);
}
uint8_t isis_route_table_algorithm(const struct route_table *table)
{
const struct isis_route_table_info *info = table->info;
return info ? info->algorithm : 0;
}
static bool isis_sr_psid_info_same(struct isis_sr_psid_info *new,
struct isis_sr_psid_info *old)
{
@ -273,6 +357,9 @@ static bool isis_sr_psid_info_same(struct isis_sr_psid_info *new,
|| new->sid.value != old->sid.value)
return false;
if (new->sid.algorithm != old->sid.algorithm)
return false;
return true;
}
@ -313,10 +400,22 @@ static int isis_route_info_same(struct isis_route_info *new,
return 0;
}
if (!isis_sr_psid_info_same(&new->sr, &old->sr)) {
if (buf)
snprintf(buf, buf_size, "SR input label");
return 0;
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
struct isis_sr_psid_info new_sr_algo;
struct isis_sr_psid_info old_sr_algo;
new_sr_algo = new->sr_algo[i];
old_sr_algo = old->sr_algo[i];
if (!isis_sr_psid_info_same(&new_sr_algo, &old_sr_algo)) {
if (buf)
snprintf(
buf, buf_size,
"SR input label algo-%u (old: %s, new: %s)",
i, old_sr_algo.present ? "yes" : "no",
new_sr_algo.present ? "yes" : "no");
return 0;
}
}
if (new->nexthops->count != old->nexthops->count) {
@ -405,7 +504,9 @@ isis_route_create(struct prefix *prefix, struct prefix_ipv6 *src_p,
zlog_debug(
"ISIS-Rte (%s): route changed: %pFX, change: %s",
area->area_tag, prefix, change_buf);
rinfo_new->sr_previous = rinfo_old->sr;
for (int i = 0; i < SR_ALGORITHM_COUNT; i++)
rinfo_new->sr_algo_previous[i] =
rinfo_old->sr_algo[i];
isis_route_info_delete(rinfo_old);
route_info = rinfo_new;
UNSET_FLAG(route_info->flag,
@ -461,11 +562,42 @@ static void isis_route_remove_previous_sid(struct isis_area *area,
* Explicitly uninstall previous Prefix-SID label if it has
* changed or was removed.
*/
if (route_info->sr_previous.present &&
(!route_info->sr.present ||
route_info->sr_previous.label != route_info->sr.label))
isis_zebra_prefix_sid_uninstall(area, prefix, route_info,
&route_info->sr_previous);
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
if (route_info->sr_algo_previous[i].present &&
(!route_info->sr_algo[i].present ||
route_info->sr_algo_previous[i].label !=
route_info->sr_algo[i].label))
isis_zebra_prefix_sid_uninstall(
area, prefix, route_info,
&route_info->sr_algo_previous[i]);
}
}
static void set_merge_route_info_sr_algo(struct isis_route_info *mrinfo,
struct isis_route_info *rinfo)
{
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
if (rinfo->sr_algo[i].present) {
assert(i == rinfo->sr_algo[i].algorithm);
assert(rinfo->nexthops);
assert(rinfo->backup ? rinfo->backup->nexthops != NULL
: true);
if (mrinfo->sr_algo[i].nexthops != NULL &&
mrinfo->sr_algo[i].nexthops != mrinfo->nexthops) {
mrinfo->sr_algo[i].nexthops->del =
(void (*)(void *))isis_nexthop_delete;
list_delete(&mrinfo->sr_algo[i].nexthops);
}
mrinfo->sr_algo[i] = rinfo->sr_algo[i];
mrinfo->sr_algo[i].nexthops = isis_nexthop_list_dup(
rinfo->sr_algo[i].nexthops);
}
}
UNSET_FLAG(rinfo->flag, ISIS_ROUTE_FLAG_ZEBRA_SYNCED);
UNSET_FLAG(mrinfo->flag, ISIS_ROUTE_FLAG_ZEBRA_SYNCED);
}
static void isis_route_update(struct isis_area *area, struct prefix *prefix,
@ -484,19 +616,35 @@ static void isis_route_update(struct isis_area *area, struct prefix *prefix,
/* Install route. */
isis_zebra_route_add_route(area->isis, prefix, src_p,
route_info);
/* Install/reinstall Prefix-SID label. */
if (route_info->sr.present)
isis_zebra_prefix_sid_install(area, prefix, route_info,
&route_info->sr);
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
struct isis_sr_psid_info sr_algo;
sr_algo = route_info->sr_algo[i];
/*
* Install/reinstall Prefix-SID label.
*/
if (sr_algo.present)
isis_zebra_prefix_sid_install(area, prefix,
&sr_algo);
hook_call(isis_route_update_hook, area, prefix,
route_info);
}
hook_call(isis_route_update_hook, area, prefix, route_info);
SET_FLAG(route_info->flag, ISIS_ROUTE_FLAG_ZEBRA_SYNCED);
UNSET_FLAG(route_info->flag, ISIS_ROUTE_FLAG_ZEBRA_RESYNC);
} else {
/* Uninstall Prefix-SID label. */
if (route_info->sr.present)
isis_zebra_prefix_sid_uninstall(
area, prefix, route_info, &route_info->sr);
for (int i = 0; i < SR_ALGORITHM_COUNT; i++)
if (route_info->sr_algo[i].present)
isis_zebra_prefix_sid_uninstall(
area, prefix, route_info,
&route_info->sr_algo[i]);
/* Uninstall route. */
isis_zebra_route_del_route(area->isis, prefix, src_p,
route_info);
@ -516,6 +664,7 @@ static void _isis_route_verify_table(struct isis_area *area,
#ifdef EXTREME_DEBUG
char buff[SRCDEST2STR_BUFFER];
#endif /* EXTREME_DEBUG */
uint8_t algorithm = isis_route_table_algorithm(table);
for (rnode = route_top(table); rnode;
rnode = srcdest_route_next(rnode)) {
@ -538,10 +687,14 @@ static void _isis_route_verify_table(struct isis_area *area,
src_p);
if (rnode_bck) {
rinfo->backup = rnode_bck->info;
rinfo->sr_algo[algorithm].nexthops_backup =
rinfo->backup->nexthops;
UNSET_FLAG(rinfo->flag,
ISIS_ROUTE_FLAG_ZEBRA_SYNCED);
} else if (rinfo->backup) {
rinfo->backup = NULL;
rinfo->sr_algo[algorithm].nexthops_backup =
NULL;
UNSET_FLAG(rinfo->flag,
ISIS_ROUTE_FLAG_ZEBRA_SYNCED);
}
@ -573,7 +726,7 @@ static void _isis_route_verify_table(struct isis_area *area,
if (CHECK_FLAG(rinfo->flag, ISIS_ROUTE_FLAG_ACTIVE))
continue;
/* Area is either L1 or L2 => we use level route tables
/* In case the verify is not for a merge, we use a single table
* directly for
* validating => no problems with deleting routes. */
if (!tables) {
@ -581,13 +734,12 @@ static void _isis_route_verify_table(struct isis_area *area,
continue;
}
/* If area is L1L2, we work with merge table and
* therefore must
* delete node from level tables as well before deleting
/* If we work on a merged table,
* therefore we must
* delete node from each table as well before deleting
* route info. */
for (int level = ISIS_LEVEL1; level <= ISIS_LEVEL2; level++) {
drnode = srcdest_rnode_lookup(tables[level - 1],
dst_p, src_p);
for (int i = 0; tables[i]; i++) {
drnode = srcdest_rnode_lookup(tables[i], dst_p, src_p);
if (!drnode)
continue;
@ -604,10 +756,36 @@ static void _isis_route_verify_table(struct isis_area *area,
}
}
static void _isis_route_verify_merge(struct isis_area *area,
struct route_table **tables,
struct route_table **tables_backup,
int tree);
void isis_route_verify_table(struct isis_area *area, struct route_table *table,
struct route_table *table_backup)
struct route_table *table_backup, int tree)
{
_isis_route_verify_table(area, table, table_backup, NULL);
struct route_table *tables[SR_ALGORITHM_COUNT] = {table};
struct route_table *tables_backup[SR_ALGORITHM_COUNT] = {table_backup};
#ifndef FABRICD
int tables_next = 1;
int level = area->is_type == IS_LEVEL_1 ? ISIS_LEVEL1 : ISIS_LEVEL2;
struct listnode *node;
struct flex_algo *fa;
struct isis_flex_algo_data *data;
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos, node, fa)) {
data = fa->data;
tables[tables_next] =
data->spftree[tree][level - 1]->route_table;
tables_backup[tables_next] =
data->spftree[tree][level - 1]->route_table_backup;
_isis_route_verify_table(area, tables[tables_next],
tables_backup[tables_next], NULL);
tables_next++;
}
#endif /* ifndef FABRICD */
_isis_route_verify_merge(area, tables, tables_backup, tree);
}
/* Function to validate route tables for L1L2 areas. In this case we can't use
@ -624,18 +802,27 @@ void isis_route_verify_merge(struct isis_area *area,
struct route_table *level1_table,
struct route_table *level1_table_backup,
struct route_table *level2_table,
struct route_table *level2_table_backup)
struct route_table *level2_table_backup, int tree)
{
struct route_table *tables[] = {level1_table, level2_table};
struct route_table *tables[] = {level1_table, level2_table, NULL};
struct route_table *tables_backup[] = {level1_table_backup,
level2_table_backup};
level2_table_backup, NULL};
_isis_route_verify_merge(area, tables, tables_backup, tree);
}
static void _isis_route_verify_merge(struct isis_area *area,
struct route_table **tables,
struct route_table **tables_backup,
int tree)
{
struct route_table *merge;
struct route_node *rnode, *mrnode;
merge = srcdest_table_init();
for (int level = ISIS_LEVEL1; level <= ISIS_LEVEL2; level++) {
for (rnode = route_top(tables[level - 1]); rnode;
for (int i = 0; tables[i]; i++) {
uint8_t algorithm = isis_route_table_algorithm(tables[i]);
for (rnode = route_top(tables[i]); rnode;
rnode = srcdest_route_next(rnode)) {
struct isis_route_info *rinfo = rnode->info;
struct route_node *rnode_bck;
@ -651,14 +838,18 @@ void isis_route_verify_merge(struct isis_area *area,
(const struct prefix **)&src_p);
/* Link primary route to backup route. */
rnode_bck = srcdest_rnode_lookup(
tables_backup[level - 1], prefix, src_p);
rnode_bck = srcdest_rnode_lookup(tables_backup[i],
prefix, src_p);
if (rnode_bck) {
rinfo->backup = rnode_bck->info;
rinfo->sr_algo[algorithm].nexthops_backup =
rinfo->backup->nexthops;
UNSET_FLAG(rinfo->flag,
ISIS_ROUTE_FLAG_ZEBRA_SYNCED);
} else if (rinfo->backup) {
rinfo->backup = NULL;
rinfo->sr_algo[algorithm].nexthops_backup =
NULL;
UNSET_FLAG(rinfo->flag,
ISIS_ROUTE_FLAG_ZEBRA_SYNCED);
}
@ -667,6 +858,8 @@ void isis_route_verify_merge(struct isis_area *area,
struct isis_route_info *mrinfo = mrnode->info;
if (mrinfo) {
route_unlock_node(mrnode);
set_merge_route_info_sr_algo(mrinfo, rinfo);
if (CHECK_FLAG(mrinfo->flag,
ISIS_ROUTE_FLAG_ACTIVE)) {
/* Clear the ZEBRA_SYNCED flag on the
@ -696,8 +889,9 @@ void isis_route_verify_merge(struct isis_area *area,
ISIS_ROUTE_FLAG_ZEBRA_SYNCED)) {
continue;
}
} else {
mrnode->info = rnode->info;
}
mrnode->info = rnode->info;
}
}
@ -710,6 +904,7 @@ void isis_route_invalidate_table(struct isis_area *area,
{
struct route_node *rode;
struct isis_route_info *rinfo;
uint8_t algorithm = isis_route_table_algorithm(table);
for (rode = route_top(table); rode; rode = srcdest_route_next(rode)) {
if (rode->info == NULL)
continue;
@ -717,6 +912,7 @@ void isis_route_invalidate_table(struct isis_area *area,
if (rinfo->backup) {
rinfo->backup = NULL;
rinfo->sr_algo[algorithm].nexthops_backup = NULL;
/*
* For now, always force routes that have backup
* nexthops to be reinstalled.

View File

@ -30,12 +30,16 @@ struct isis_route_info {
uint8_t flag;
uint32_t cost;
uint32_t depth;
struct isis_sr_psid_info sr;
struct isis_sr_psid_info sr_previous;
struct isis_sr_psid_info sr_algo[SR_ALGORITHM_COUNT];
struct isis_sr_psid_info sr_algo_previous[SR_ALGORITHM_COUNT];
struct list *nexthops;
struct isis_route_info *backup;
};
struct isis_route_table_info {
uint8_t algorithm;
};
DECLARE_HOOK(isis_route_update_hook,
(struct isis_area * area, struct prefix *prefix,
struct isis_route_info *route_info),
@ -56,14 +60,14 @@ void isis_route_delete(struct isis_area *area, struct route_node *rode,
/* Walk the given table and install new routes to zebra and remove old ones.
* route status is tracked using ISIS_ROUTE_FLAG_ACTIVE */
void isis_route_verify_table(struct isis_area *area, struct route_table *table,
struct route_table *table_backup);
struct route_table *table_backup, int tree);
/* Same as isis_route_verify_table, but merge L1 and L2 routes before */
void isis_route_verify_merge(struct isis_area *area,
struct route_table *level1_table,
struct route_table *level1_table_backup,
struct route_table *level2_table,
struct route_table *level2_table_backup);
struct route_table *level2_table_backup, int tree);
/* Unset ISIS_ROUTE_FLAG_ACTIVE on all routes. Used before running spf. */
void isis_route_invalidate_table(struct isis_area *area,
@ -73,9 +77,14 @@ void isis_route_invalidate_table(struct isis_area *area,
void isis_route_node_cleanup(struct route_table *table,
struct route_node *node);
void isis_route_switchover_nexthop(struct isis_area *area,
struct route_table *table, int family,
union g_addr *nexthop_addr,
ifindex_t ifindex);
struct isis_route_table_info *isis_route_table_info_alloc(uint8_t algorithm);
void isis_route_table_info_free(void *info);
uint8_t isis_route_table_algorithm(const struct route_table *table);
#endif /* _ZEBRA_ISIS_ROUTE_H */

File diff suppressed because it is too large Load Diff

View File

@ -12,6 +12,7 @@
#define _ZEBRA_ISIS_SPF_H
#include "isisd/isis_lfa.h"
#include "lib/json.h"
struct isis_spftree;
@ -37,16 +38,15 @@ struct isis_spf_adj {
#define F_ISIS_SPF_ADJ_METRIC_INFINITY 0x04
};
struct isis_spftree *isis_spftree_new(struct isis_area *area,
struct lspdb_head *lspdb,
const uint8_t *sysid, int level,
enum spf_tree_id tree_id,
enum spf_type type, uint8_t flags);
struct isis_spftree *
isis_spftree_new(struct isis_area *area, struct lspdb_head *lspdb,
const uint8_t *sysid, int level, enum spf_tree_id tree_id,
enum spf_type type, uint8_t flags, uint8_t algorithm);
struct isis_vertex *isis_spf_prefix_sid_lookup(struct isis_spftree *spftree,
struct isis_prefix_sid *psid);
void isis_spf_invalidate_routes(struct isis_spftree *tree);
void isis_spf_verify_routes(struct isis_area *area,
struct isis_spftree **trees);
void isis_spf_verify_routes(struct isis_area *area, struct isis_spftree **trees,
int tree);
void isis_spf_switchover_routes(struct isis_area *area,
struct isis_spftree **trees, int family,
union g_addr *nexthop_ip, ifindex_t ifindex,
@ -63,7 +63,7 @@ int _isis_spf_schedule(struct isis_area *area, int level,
const char *func, const char *file, int line);
void isis_print_spftree(struct vty *vty, struct isis_spftree *spftree);
void isis_print_routes(struct vty *vty, struct isis_spftree *spftree,
bool prefix_sid, bool backup);
json_object **json, bool prefix_sid, bool backup);
void isis_spf_init(void);
void isis_spf_print(struct isis_spftree *spftree, struct vty *vty);
void isis_spf_print_json(struct isis_spftree *spftree,

View File

@ -349,11 +349,16 @@ struct isis_spftree {
uint32_t total[SPF_PREFIX_PRIO_MAX];
} protection_counters;
} lfa;
uint8_t algorithm;
uint8_t flags;
};
#define F_SPFTREE_HOPCOUNT_METRIC 0x01
#define F_SPFTREE_NO_ROUTES 0x02
#define F_SPFTREE_NO_ADJACENCIES 0x04
#ifndef FABRICD
/* flex-algo */
#define F_SPFTREE_DISABLED 0x08
#endif /* ifndef FABRICD */
__attribute__((__unused__))
static void isis_vertex_id_init(struct isis_vertex *vertex, const void *id,

View File

@ -57,7 +57,17 @@ static void sr_adj_sid_del(struct sr_adjacency *sra);
static inline int sr_prefix_sid_cfg_compare(const struct sr_prefix_cfg *a,
const struct sr_prefix_cfg *b)
{
return prefix_cmp(&a->prefix, &b->prefix);
int ret;
ret = prefix_cmp(&a->prefix, &b->prefix);
if (ret != 0)
return ret;
ret = a->algorithm - b->algorithm;
if (ret != 0)
return ret;
return 0;
}
DECLARE_RBTREE_UNIQ(srdb_prefix_cfg, struct sr_prefix_cfg, entry,
sr_prefix_sid_cfg_compare);
@ -331,7 +341,8 @@ int isis_sr_cfg_srlb_update(struct isis_area *area, uint32_t lower_bound,
* @return Newly added Prefix-SID configuration structure
*/
struct sr_prefix_cfg *isis_sr_cfg_prefix_add(struct isis_area *area,
const struct prefix *prefix)
const struct prefix *prefix,
uint8_t algorithm)
{
struct sr_prefix_cfg *pcfg;
struct interface *ifp;
@ -341,6 +352,7 @@ struct sr_prefix_cfg *isis_sr_cfg_prefix_add(struct isis_area *area,
pcfg = XCALLOC(MTYPE_ISIS_SR_INFO, sizeof(*pcfg));
pcfg->prefix = *prefix;
pcfg->area = area;
pcfg->algorithm = algorithm;
/* Pull defaults from the YANG module. */
pcfg->sid_type = yang_get_default_enum(
@ -386,11 +398,13 @@ void isis_sr_cfg_prefix_del(struct sr_prefix_cfg *pcfg)
* @return Configured Prefix-SID structure if found, NULL otherwise
*/
struct sr_prefix_cfg *isis_sr_cfg_prefix_find(struct isis_area *area,
union prefixconstptr prefix)
union prefixconstptr prefix,
uint8_t algorithm)
{
struct sr_prefix_cfg pcfg = {};
prefix_copy(&pcfg.prefix, prefix.p);
pcfg.algorithm = algorithm;
return srdb_prefix_cfg_find(&area->srdb.config.prefix_sids, &pcfg);
}
@ -405,7 +419,7 @@ void isis_sr_prefix_cfg2subtlv(const struct sr_prefix_cfg *pcfg, bool external,
struct isis_prefix_sid *psid)
{
/* Set SID algorithm. */
psid->algorithm = SR_ALGORITHM_SPF;
psid->algorithm = pcfg->algorithm;
/* Set SID flags. */
psid->flags = 0;
@ -917,10 +931,12 @@ static int sr_adj_ip_disabled(struct isis_adjacency *adj, int family,
*/
static int sr_if_new_hook(struct interface *ifp)
{
struct sr_prefix_cfg *pcfgs[SR_ALGORITHM_COUNT] = {NULL};
struct isis_circuit *circuit;
struct isis_area *area;
struct connected *connected;
struct listnode *node;
bool need_lsp_regenerate = false;
/* Get corresponding circuit */
circuit = circuit_scan_by_ifp(ifp);
@ -937,18 +953,24 @@ static int sr_if_new_hook(struct interface *ifp)
* configuration before receiving interface information from zebra.
*/
FOR_ALL_INTERFACES_ADDRESSES (ifp, connected, node) {
struct sr_prefix_cfg *pcfg;
pcfg = isis_sr_cfg_prefix_find(area, connected->address);
if (!pcfg)
continue;
for (int i = 0; i < SR_ALGORITHM_COUNT; i++) {
pcfgs[i] = isis_sr_cfg_prefix_find(
area, connected->address, i);
if (sr_prefix_is_node_sid(ifp, &pcfg->prefix)) {
pcfg->node_sid = true;
lsp_regenerate_schedule(area, area->is_type, 0);
if (!pcfgs[i])
continue;
if (sr_prefix_is_node_sid(ifp, &pcfgs[i]->prefix)) {
pcfgs[i]->node_sid = true;
need_lsp_regenerate = true;
}
}
}
if (need_lsp_regenerate)
lsp_regenerate_schedule(area, area->is_type, 0);
return 0;
}
@ -998,10 +1020,12 @@ char *sr_op2str(char *buf, size_t size, mpls_label_t label_in,
* @param area IS-IS area
* @param level IS-IS level
*/
static void show_node(struct vty *vty, struct isis_area *area, int level)
static void show_node(struct vty *vty, struct isis_area *area, int level,
uint8_t algo)
{
struct isis_lsp *lsp;
struct ttable *tt;
char buf[128];
vty_out(vty, " IS-IS %s SR-Nodes:\n\n", circuit_t2string(level));
@ -1021,15 +1045,24 @@ static void show_node(struct vty *vty, struct isis_area *area, int level)
cap = lsp->tlvs->router_cap;
if (!cap)
continue;
if (cap->algo[algo] == SR_ALGORITHM_UNSET)
continue;
if (cap->algo[algo] == SR_ALGORITHM_SPF)
snprintf(buf, sizeof(buf), "SPF");
else if (cap->algo[algo] == SR_ALGORITHM_STRICT_SPF)
snprintf(buf, sizeof(buf), "S-SPF");
#ifndef FABRICD
else
snprintf(buf, sizeof(buf), "Flex-Algo %d", algo);
#endif /* ifndef FABRICD */
ttable_add_row(tt, "%pSY|%u - %u|%u - %u|%s|%u",
lsp->hdr.lsp_id, cap->srgb.lower_bound,
cap->srgb.lower_bound + cap->srgb.range_size - 1,
cap->srlb.lower_bound,
cap->srlb.lower_bound + cap->srlb.range_size - 1,
cap->algo[0] == SR_ALGORITHM_SPF ? "SPF"
: "S-SPF",
cap->msd);
buf, cap->msd);
}
/* Dump the generated table. */
@ -1044,15 +1077,31 @@ static void show_node(struct vty *vty, struct isis_area *area, int level)
}
DEFUN(show_sr_node, show_sr_node_cmd,
"show " PROTO_NAME " segment-routing node",
SHOW_STR
PROTO_HELP
"show " PROTO_NAME
" segment-routing node"
#ifndef FABRICD
" [algorithm (128-255)]"
#endif /* ifndef FABRICD */
,
SHOW_STR PROTO_HELP
"Segment-Routing\n"
"Segment-Routing node\n")
"Segment-Routing node\n"
#ifndef FABRICD
"Show Flex-algo nodes\n"
"Algorithm number\n"
#endif /* ifndef FABRICD */
)
{
struct listnode *node, *inode;
struct isis_area *area;
uint8_t algorithm = SR_ALGORITHM_SPF;
struct isis *isis;
#ifndef FABRICD
int idx = 0;
if (argv_find(argv, argc, "algorithm", &idx))
algorithm = (uint8_t)strtoul(argv[idx + 1]->arg, NULL, 10);
#endif /* ifndef FABRICD */
for (ALL_LIST_ELEMENTS_RO(im->isis, inode, isis)) {
for (ALL_LIST_ELEMENTS_RO(isis->area_list, node, area)) {
@ -1064,7 +1113,7 @@ DEFUN(show_sr_node, show_sr_node_cmd,
}
for (int level = ISIS_LEVEL1; level <= ISIS_LEVELS;
level++)
show_node(vty, area, level);
show_node(vty, area, level, algorithm);
}
}

View File

@ -61,6 +61,11 @@ struct isis_sr_psid_info {
/* Indicates whether the Prefix-SID is present or not. */
bool present;
uint8_t algorithm;
struct list *nexthops;
struct list *nexthops_backup;
};
/* Segment Routing Local Block allocation */
@ -147,6 +152,9 @@ struct sr_prefix_cfg {
/* Backpointer to IS-IS area. */
struct isis_area *area;
/* SR Algorithm number */
uint8_t algorithm;
};
/* Per-area IS-IS Segment Routing Data Base (SRDB). */
@ -198,11 +206,13 @@ extern int isis_sr_cfg_srgb_update(struct isis_area *area, uint32_t lower_bound,
uint32_t upper_bound);
extern int isis_sr_cfg_srlb_update(struct isis_area *area, uint32_t lower_bound,
uint32_t upper_bound);
extern struct sr_prefix_cfg *
isis_sr_cfg_prefix_add(struct isis_area *area, const struct prefix *prefix);
extern struct sr_prefix_cfg *isis_sr_cfg_prefix_add(struct isis_area *area,
const struct prefix *prefix,
uint8_t algorithm);
extern void isis_sr_cfg_prefix_del(struct sr_prefix_cfg *pcfg);
extern struct sr_prefix_cfg *
isis_sr_cfg_prefix_find(struct isis_area *area, union prefixconstptr prefix);
isis_sr_cfg_prefix_find(struct isis_area *area, union prefixconstptr prefix,
uint8_t algorithm);
extern void isis_sr_prefix_cfg2subtlv(const struct sr_prefix_cfg *pcfg,
bool external,
struct isis_prefix_sid *psid);

View File

@ -164,6 +164,154 @@ void isis_mpls_te_term(struct isis_area *area)
XFREE(MTYPE_ISIS_MPLS_TE, area->mta);
}
static void isis_link_params_update_asla(struct isis_circuit *circuit,
struct interface *ifp)
{
struct isis_asla_subtlvs *asla;
struct listnode *node, *nnode;
struct isis_ext_subtlvs *ext = circuit->ext;
int i;
if (!HAS_LINK_PARAMS(ifp)) {
list_delete_all_node(ext->aslas);
return;
}
#ifndef FABRICD
/* RFC 8919 Application Specific Link-Attributes
* is required by flex-algo application ISIS_SABM_FLAG_X
*/
if (list_isempty(circuit->area->flex_algos->flex_algos))
isis_tlvs_free_asla(ext, ISIS_SABM_FLAG_X);
else
isis_tlvs_find_alloc_asla(ext, ISIS_SABM_FLAG_X);
#endif /* ifndef FABRICD */
if (list_isempty(ext->aslas))
return;
for (ALL_LIST_ELEMENTS(ext->aslas, node, nnode, asla)) {
asla->legacy = circuit->area->asla_legacy_flag;
RESET_SUBTLV(asla);
if (asla->legacy)
continue;
/* Fulfill ASLA subTLVs from interface link parameters */
if (IS_PARAM_SET(ifp->link_params, LP_ADM_GRP)) {
asla->admin_group = ifp->link_params->admin_grp;
SET_SUBTLV(asla, EXT_ADM_GRP);
} else
UNSET_SUBTLV(asla, EXT_ADM_GRP);
if (IS_PARAM_SET(ifp->link_params, LP_EXTEND_ADM_GRP)) {
admin_group_copy(&asla->ext_admin_group,
&ifp->link_params->ext_admin_grp);
SET_SUBTLV(asla, EXT_EXTEND_ADM_GRP);
} else
UNSET_SUBTLV(asla, EXT_EXTEND_ADM_GRP);
/* Send admin-group zero for better compatibility
* https://www.rfc-editor.org/rfc/rfc7308#section-2.3.2
*/
if (circuit->area->admin_group_send_zero &&
!IS_SUBTLV(asla, EXT_ADM_GRP) &&
!IS_SUBTLV(asla, EXT_EXTEND_ADM_GRP)) {
asla->admin_group = 0;
SET_SUBTLV(asla, EXT_ADM_GRP);
admin_group_clear(&asla->ext_admin_group);
admin_group_allow_explicit_zero(&asla->ext_admin_group);
SET_SUBTLV(asla, EXT_EXTEND_ADM_GRP);
}
if (IS_PARAM_SET(ifp->link_params, LP_TE_METRIC)) {
asla->te_metric = ifp->link_params->te_metric;
SET_SUBTLV(asla, EXT_TE_METRIC);
} else
UNSET_SUBTLV(asla, EXT_TE_METRIC);
if (IS_PARAM_SET(ifp->link_params, LP_DELAY)) {
asla->delay = ifp->link_params->av_delay;
SET_SUBTLV(asla, EXT_DELAY);
} else
UNSET_SUBTLV(asla, EXT_DELAY);
if (IS_PARAM_SET(ifp->link_params, LP_MM_DELAY)) {
asla->min_delay = ifp->link_params->min_delay;
asla->max_delay = ifp->link_params->max_delay;
SET_SUBTLV(asla, EXT_MM_DELAY);
} else {
UNSET_SUBTLV(asla, EXT_MM_DELAY);
}
if (asla->standard_apps == ISIS_SABM_FLAG_X)
/* Flex-Algo ASLA does not need the following TE
* sub-TLVs
*/
continue;
if (IS_PARAM_SET(ifp->link_params, LP_MAX_BW)) {
asla->max_bw = ifp->link_params->max_bw;
SET_SUBTLV(asla, EXT_MAX_BW);
} else
UNSET_SUBTLV(asla, EXT_MAX_BW);
if (IS_PARAM_SET(ifp->link_params, LP_MAX_RSV_BW)) {
asla->max_rsv_bw = ifp->link_params->max_rsv_bw;
SET_SUBTLV(asla, EXT_MAX_RSV_BW);
} else
UNSET_SUBTLV(asla, EXT_MAX_RSV_BW);
if (IS_PARAM_SET(ifp->link_params, LP_UNRSV_BW)) {
for (i = 0; i < MAX_CLASS_TYPE; i++)
asla->unrsv_bw[i] =
ifp->link_params->unrsv_bw[i];
SET_SUBTLV(asla, EXT_UNRSV_BW);
} else
UNSET_SUBTLV(asla, EXT_UNRSV_BW);
if (IS_PARAM_SET(ifp->link_params, LP_DELAY_VAR)) {
asla->delay_var = ifp->link_params->delay_var;
SET_SUBTLV(asla, EXT_DELAY_VAR);
} else
UNSET_SUBTLV(asla, EXT_DELAY_VAR);
if (IS_PARAM_SET(ifp->link_params, LP_PKT_LOSS)) {
asla->pkt_loss = ifp->link_params->pkt_loss;
SET_SUBTLV(asla, EXT_PKT_LOSS);
} else
UNSET_SUBTLV(asla, EXT_PKT_LOSS);
if (IS_PARAM_SET(ifp->link_params, LP_RES_BW)) {
asla->res_bw = ifp->link_params->res_bw;
SET_SUBTLV(asla, EXT_RES_BW);
} else
UNSET_SUBTLV(asla, EXT_RES_BW);
if (IS_PARAM_SET(ifp->link_params, LP_AVA_BW)) {
asla->ava_bw = ifp->link_params->ava_bw;
SET_SUBTLV(asla, EXT_AVA_BW);
} else
UNSET_SUBTLV(asla, EXT_AVA_BW);
if (IS_PARAM_SET(ifp->link_params, LP_USE_BW)) {
asla->use_bw = ifp->link_params->use_bw;
SET_SUBTLV(asla, EXT_USE_BW);
} else
UNSET_SUBTLV(asla, EXT_USE_BW);
}
for (ALL_LIST_ELEMENTS(ext->aslas, node, nnode, asla)) {
if (!asla->legacy && NO_SUBTLV(asla) &&
admin_group_nb_words(&asla->ext_admin_group) == 0)
/* remove ASLA without info from the list of ASLAs to
* not send void ASLA
*/
isis_tlvs_del_asla_flex_algo(ext, asla);
}
}
/* Main initialization / update function of the MPLS TE Circuit context */
/* Call when interface TE Link parameters are modified */
void isis_link_params_update(struct isis_circuit *circuit,
@ -210,6 +358,19 @@ void isis_link_params_update(struct isis_circuit *circuit,
} else
UNSET_SUBTLV(ext, EXT_EXTEND_ADM_GRP);
/* Send admin-group zero for better compatibility
* https://www.rfc-editor.org/rfc/rfc7308#section-2.3.2
*/
if (circuit->area->admin_group_send_zero &&
!IS_SUBTLV(ext, EXT_ADM_GRP) &&
!IS_SUBTLV(ext, EXT_EXTEND_ADM_GRP)) {
ext->adm_group = 0;
SET_SUBTLV(ext, EXT_ADM_GRP);
admin_group_clear(&ext->ext_admin_group);
admin_group_allow_explicit_zero(&ext->ext_admin_group);
SET_SUBTLV(ext, EXT_EXTEND_ADM_GRP);
}
/* If known, register local IPv4 addr from ip_addr list */
if (listcount(circuit->ip_addrs) != 0) {
addr = (struct prefix_ipv4 *)listgetdata(
@ -331,6 +492,8 @@ void isis_link_params_update(struct isis_circuit *circuit,
ext->status = 0;
}
isis_link_params_update_asla(circuit, ifp);
return;
}
@ -503,7 +666,12 @@ int isis_mpls_te_update(struct interface *ifp)
isis_link_params_update(circuit, ifp);
/* ... and LSP */
if (circuit->area && IS_MPLS_TE(circuit->area->mta))
if (circuit->area &&
(IS_MPLS_TE(circuit->area->mta)
#ifndef FABRICD
|| !list_isempty(circuit->area->flex_algos->flex_algos)
#endif /* ifndef FABRICD */
))
lsp_regenerate_schedule(circuit->area, circuit->is_type, 0);
rc = 0;
@ -611,7 +779,7 @@ static struct ls_vertex *lsp_to_vertex(struct ls_ted *ted, struct isis_lsp *lsp)
lnode.srgb.flag = cap->srgb.flags;
lnode.srgb.lower_bound = cap->srgb.lower_bound;
lnode.srgb.range_size = cap->srgb.range_size;
for (int i = 0; i < SR_ALGORITHM_COUNT; i++)
for (int i = 0; i < LIB_LS_SR_ALGO_COUNT; i++)
lnode.algo[i] = cap->algo[i];
}

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,12 @@
#ifndef ISIS_TLVS_H
#define ISIS_TLVS_H
#include "segment_routing.h"
#include "openbsd-tree.h"
#include "prefix.h"
#include "flex_algo.h"
#include "affinitymap.h"
DECLARE_MTYPE(ISIS_SUBTLV);
@ -102,7 +106,7 @@ struct isis_spine_leaf {
enum isis_threeway_state {
ISIS_THREEWAY_DOWN = 2,
ISIS_THREEWAY_INITIALIZING = 1,
ISIS_THREEWAY_UP = 0
ISIS_THREEWAY_UP = 0,
};
struct isis_threeway_adj {
@ -177,19 +181,18 @@ struct isis_lan_adj_sid {
#define ISIS_ROUTER_CAP_FLAG_D 0x02
#define ISIS_ROUTER_CAP_SIZE 5
/* Number of supported algorithm for Segment Routing.
* Right now only 2 have been standardized:
* - 0: SPF
* - 1: Strict SPF
*/
#define SR_ALGORITHM_COUNT 2
#define SR_ALGORITHM_SPF 0
#define SR_ALGORITHM_STRICT_SPF 1
#define SR_ALGORITHM_UNSET 255
#define MSD_TYPE_BASE_MPLS_IMPOSITION 0x01
#define MSD_TLV_SIZE 2
#ifndef FABRICD
struct isis_router_cap_fad;
struct isis_router_cap_fad {
uint8_t sysid[ISIS_SYS_ID_LEN + 2];
struct flex_algo fad;
};
#endif /* ifndef FABRICD */
struct isis_router_cap {
struct in_addr router_id;
uint8_t flags;
@ -200,6 +203,11 @@ struct isis_router_cap {
uint8_t algo[SR_ALGORITHM_COUNT];
/* RFC 8491 */
uint8_t msd;
#ifndef FABRICD
/* RFC9350 Flex-Algorithm */
struct isis_router_cap_fad *fads[SR_ALGORITHM_COUNT];
#endif /* ifndef FABRICD */
};
struct isis_item {
@ -309,7 +317,7 @@ enum isis_tlv_context {
ISIS_CONTEXT_SUBTLV_NE_REACH,
ISIS_CONTEXT_SUBTLV_IP_REACH,
ISIS_CONTEXT_SUBTLV_IPV6_REACH,
ISIS_CONTEXT_MAX
ISIS_CONTEXT_MAX,
};
struct isis_subtlvs {
@ -394,7 +402,22 @@ enum isis_tlv_type {
ISIS_SUBTLV_AVA_BW = 38,
ISIS_SUBTLV_USE_BW = 39,
ISIS_SUBTLV_MAX = 40
/* RFC 7308 */
ISIS_SUBTLV_EXT_ADMIN_GRP = 14,
/* RFC 8919 */
ISIS_SUBTLV_ASLA = 16,
/* draft-ietf-lsr-isis-srv6-extensions */
ISIS_SUBTLV_SID_END = 5,
ISIS_SUBTLV_SID_END_X = 43,
ISIS_SUBTLV_MAX = 40,
/* draft-ietf-lsr-isis-srv6-extensions */
ISIS_SUBSUBTLV_SID_STRUCTURE = 1,
ISIS_SUBSUBTLV_MAX = 256,
};
/* subTLVs size for TE and SR */
@ -422,19 +445,39 @@ enum ext_subtlv_size {
/* RFC 7810 */
ISIS_SUBTLV_MM_DELAY_SIZE = 8,
/* RFC9350 - Flex-Algorithm */
ISIS_SUBTLV_FAD = 26,
ISIS_SUBTLV_FAD_MIN_SIZE = 4,
ISIS_SUBTLV_HDR_SIZE = 2,
ISIS_SUBTLV_DEF_SIZE = 4,
/* RFC 7308 */
ISIS_SUBTLV_EXT_ADMIN_GRP = 14,
ISIS_SUBTLV_MAX_SIZE = 180,
ISIS_SUBTLV_MAX_SIZE = 180
/* draft-ietf-lsr-isis-srv6-extensions */
ISIS_SUBSUBTLV_SID_STRUCTURE_SIZE = 4,
ISIS_SUBSUBTLV_HDR_SIZE = 2,
ISIS_SUBSUBTLV_MAX_SIZE = 180,
/* RFC9350 - Flex-Algorithm */
ISIS_SUBTLV_FAD_SUBSUBTLV_FLAGS_SIZE = 1,
};
enum ext_subsubtlv_types {
ISIS_SUBTLV_FAD_SUBSUBTLV_EXCAG = 1,
ISIS_SUBTLV_FAD_SUBSUBTLV_INCANYAG = 2,
ISIS_SUBTLV_FAD_SUBSUBTLV_INCALLAG = 3,
ISIS_SUBTLV_FAD_SUBSUBTLV_FLAGS = 4,
ISIS_SUBTLV_FAD_SUBSUBTLV_ESRLG = 5,
};
/* Macros to manage the optional presence of EXT subTLVs */
#define SET_SUBTLV(s, t) ((s->status) |= (t))
#define UNSET_SUBTLV(s, t) ((s->status) &= ~(t))
#define IS_SUBTLV(s, t) (s->status & t)
#define RESET_SUBTLV(s) (s->status = 0)
#define NO_SUBTLV(s) (s->status == 0)
#define EXT_DISABLE 0x000000
#define EXT_ADM_GRP 0x000001
@ -506,6 +549,45 @@ struct isis_ext_subtlvs {
/* Segment Routing Adjacency & LAN Adjacency Segment ID */
struct isis_item_list adj_sid;
struct isis_item_list lan_sid;
struct list *aslas;
};
/* RFC 8919 */
#define ISIS_SABM_FLAG_R 0x80 /* RSVP-TE */
#define ISIS_SABM_FLAG_S 0x40 /* Segment Routing Policy */
#define ISIS_SABM_FLAG_L 0x20 /* Loop-Free Alternate */
#define ISIS_SABM_FLAG_X 0x10 /* Flex-Algorithm - RFC9350 */
#define ASLA_APP_IDENTIFIER_BIT_LENGTH 1
#define ASLA_LEGACY_FLAG 0x80
#define ASLA_APPS_LENGTH_MASK 0x7f
struct isis_asla_subtlvs {
uint32_t status;
/* Application Specific Link Attribute - RFC 8919 */
bool legacy; /* L-Flag */
uint8_t standard_apps_length;
uint8_t user_def_apps_length;
uint8_t standard_apps;
uint8_t user_def_apps;
/* Sub-TLV list - rfc8919 section-3.1 */
uint32_t admin_group;
struct admin_group ext_admin_group; /* Res. Class/Color - RFC 7308 */
float max_bw; /* Maximum Bandwidth - RFC 5305 */
float max_rsv_bw; /* Maximum Reservable Bandwidth - RFC 5305 */
float unrsv_bw[8]; /* Unreserved Bandwidth - RFC 5305 */
uint32_t te_metric; /* Traffic Engineering Metric - RFC 5305 */
uint32_t delay; /* Average Link Delay - RFC 8570 */
uint32_t min_delay; /* Low Link Delay - RFC 8570 */
uint32_t max_delay; /* High Link Delay - RFC 8570 */
uint32_t delay_var; /* Link Delay Variation i.e. Jitter - RFC 8570 */
uint32_t pkt_loss; /* Unidirectional Link Packet Loss - RFC 8570 */
float res_bw; /* Unidirectional Residual Bandwidth - RFC 8570 */
float ava_bw; /* Unidirectional Available Bandwidth - RFC 8570 */
float use_bw; /* Unidirectional Utilized Bandwidth - RFC 8570 */
};
#define IS_COMPAT_MT_TLV(tlv_type) \
@ -536,6 +618,12 @@ struct list *isis_fragment_tlvs(struct isis_tlvs *tlvs, size_t size);
#define ISIS_MT_AT_MASK 0x4000
#endif
/* RFC 8919 */
#define ISIS_SABM_FLAG_R 0x80 /* RSVP-TE */
#define ISIS_SABM_FLAG_S 0x40 /* Segment Routing Policy */
#define ISIS_SABM_FLAG_L 0x20 /* Loop-Free Alternate */
#define ISIS_SABM_FLAG_X 0x10 /* Flex-Algorithm - RFC9350 */
void isis_tlvs_add_auth(struct isis_tlvs *tlvs, struct isis_passwd *passwd);
void isis_tlvs_add_area_addresses(struct isis_tlvs *tlvs,
struct list *addresses);
@ -567,8 +655,19 @@ void isis_tlvs_add_csnp_entries(struct isis_tlvs *tlvs, uint8_t *start_id,
struct isis_lsp **last_lsp);
void isis_tlvs_set_dynamic_hostname(struct isis_tlvs *tlvs,
const char *hostname);
void isis_tlvs_set_router_capability(struct isis_tlvs *tlvs,
const struct isis_router_cap *cap);
struct isis_router_cap *
isis_tlvs_init_router_capability(struct isis_tlvs *tlvs);
struct isis_area;
struct isis_flex_algo;
void isis_tlvs_set_router_capability_fad(struct isis_tlvs *tlvs,
struct flex_algo *fa, int algorithm,
uint8_t *sysid);
struct isis_area;
int isis_tlvs_sr_algo_count(const struct isis_router_cap *cap);
void isis_tlvs_set_te_router_id(struct isis_tlvs *tlvs,
const struct in_addr *id);
void isis_tlvs_set_te_router_id_ipv6(struct isis_tlvs *tlvs,
@ -577,10 +676,11 @@ void isis_tlvs_add_oldstyle_ip_reach(struct isis_tlvs *tlvs,
struct prefix_ipv4 *dest, uint8_t metric);
void isis_tlvs_add_extended_ip_reach(struct isis_tlvs *tlvs,
struct prefix_ipv4 *dest, uint32_t metric,
bool external, struct sr_prefix_cfg *pcfg);
bool external,
struct sr_prefix_cfg **pcfgs);
void isis_tlvs_add_ipv6_reach(struct isis_tlvs *tlvs, uint16_t mtid,
struct prefix_ipv6 *dest, uint32_t metric,
bool external, struct sr_prefix_cfg *pcfg);
bool external, struct sr_prefix_cfg **pcfgs);
void isis_tlvs_add_ipv6_dstsrc_reach(struct isis_tlvs *tlvs, uint16_t mtid,
struct prefix_ipv6 *dest,
struct prefix_ipv6 *src,
@ -596,6 +696,12 @@ void isis_tlvs_add_lan_adj_sid(struct isis_ext_subtlvs *exts,
void isis_tlvs_del_lan_adj_sid(struct isis_ext_subtlvs *exts,
struct isis_lan_adj_sid *lan);
void isis_tlvs_del_asla_flex_algo(struct isis_ext_subtlvs *ext,
struct isis_asla_subtlvs *asla);
struct isis_asla_subtlvs *
isis_tlvs_find_alloc_asla(struct isis_ext_subtlvs *ext, uint8_t standard_apps);
void isis_tlvs_free_asla(struct isis_ext_subtlvs *ext, uint8_t standard_apps);
void isis_tlvs_add_oldstyle_reach(struct isis_tlvs *tlvs, uint8_t *id,
uint8_t metric);
void isis_tlvs_add_extended_reach(struct isis_tlvs *tlvs, uint16_t mtid,

View File

@ -327,14 +327,13 @@ void isis_zebra_route_del_route(struct isis *isis,
*/
void isis_zebra_prefix_sid_install(struct isis_area *area,
struct prefix *prefix,
struct isis_route_info *rinfo,
struct isis_sr_psid_info *psid)
{
struct zapi_labels zl;
int count = 0;
sr_debug("ISIS-Sr (%s): update label %u for prefix %pFX",
area->area_tag, psid->label, prefix);
sr_debug("ISIS-Sr (%s): update label %u for prefix %pFX algorithm %u",
area->area_tag, psid->label, prefix, psid->algorithm);
/* Prepare message. */
memset(&zl, 0, sizeof(zl));
@ -342,7 +341,7 @@ void isis_zebra_prefix_sid_install(struct isis_area *area,
zl.local_label = psid->label;
/* Local routes don't have any nexthop and require special handling. */
if (list_isempty(rinfo->nexthops)) {
if (list_isempty(psid->nexthops)) {
struct zapi_nexthop *znh;
struct interface *ifp;
@ -361,9 +360,9 @@ void isis_zebra_prefix_sid_install(struct isis_area *area,
znh->labels[0] = MPLS_LABEL_IMPLICIT_NULL;
} else {
/* Add backup nexthops first. */
if (rinfo->backup) {
if (psid->nexthops_backup) {
count = isis_zebra_add_nexthops(
area->isis, rinfo->backup->nexthops,
area->isis, psid->nexthops_backup,
zl.backup_nexthops, ISIS_NEXTHOP_BACKUP, true,
0);
if (count > 0) {
@ -373,7 +372,7 @@ void isis_zebra_prefix_sid_install(struct isis_area *area,
}
/* Add primary nexthops. */
count = isis_zebra_add_nexthops(area->isis, rinfo->nexthops,
count = isis_zebra_add_nexthops(area->isis, psid->nexthops,
zl.nexthops, ISIS_NEXTHOP_MAIN,
true, count);
if (!count)
@ -400,8 +399,8 @@ void isis_zebra_prefix_sid_uninstall(struct isis_area *area,
{
struct zapi_labels zl;
sr_debug("ISIS-Sr (%s): delete label %u for prefix %pFX",
area->area_tag, psid->label, prefix);
sr_debug("ISIS-Sr (%s): delete label %u for prefix %pFX algorithm %u",
area->area_tag, psid->label, prefix, psid->algorithm);
/* Prepare message. */
memset(&zl, 0, sizeof(zl));

View File

@ -36,7 +36,6 @@ void isis_zebra_route_del_route(struct isis *isis,
struct isis_route_info *route_info);
void isis_zebra_prefix_sid_install(struct isis_area *area,
struct prefix *prefix,
struct isis_route_info *rinfo,
struct isis_sr_psid_info *psid);
void isis_zebra_prefix_sid_uninstall(struct isis_area *area,
struct prefix *prefix,

View File

@ -27,6 +27,7 @@
#include "zclient.h"
#include "vrf.h"
#include "spf_backoff.h"
#include "flex_algo.h"
#include "lib/northbound_cli.h"
#include "bfd.h"
@ -49,6 +50,7 @@
#include "isisd/isis_te.h"
#include "isisd/isis_mt.h"
#include "isisd/isis_sr.h"
#include "isisd/isis_flex_algo.h"
#include "isisd/fabricd.h"
#include "isisd/isis_nb.h"
@ -317,6 +319,12 @@ struct isis_area *isis_area_create(const char *area_tag, const char *vrf_name)
if (area->is_type & IS_LEVEL_2)
lsp_db_init(&area->lspdb[1]);
#ifndef FABRICD
/* Flex-Algo */
area->flex_algos = flex_algos_alloc(isis_flex_algo_data_alloc,
isis_flex_algo_data_free);
#endif /* ifndef FABRICD */
spftree_area_init(area);
area->circuit_list = list_new();
@ -3061,12 +3069,27 @@ int isis_area_passwd_hmac_md5_set(struct isis_area *area, int level,
void isis_area_invalidate_routes(struct isis_area *area, int levels)
{
#ifndef FABRICD
struct flex_algo *fa;
struct listnode *node;
struct isis_flex_algo_data *data;
#endif /* ifndef FABRICD */
for (int level = ISIS_LEVEL1; level <= ISIS_LEVEL2; level++) {
if (!(level & levels))
continue;
for (int tree = SPFTREE_IPV4; tree < SPFTREE_COUNT; tree++) {
isis_spf_invalidate_routes(
area->spftree[tree][level - 1]);
#ifndef FABRICD
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos,
node, fa)) {
data = fa->data;
isis_spf_invalidate_routes(
data->spftree[tree][level - 1]);
}
#endif /* ifndef FABRICD */
}
}
}
@ -3074,7 +3097,7 @@ void isis_area_invalidate_routes(struct isis_area *area, int levels)
void isis_area_verify_routes(struct isis_area *area)
{
for (int tree = SPFTREE_IPV4; tree < SPFTREE_COUNT; tree++)
isis_spf_verify_routes(area, area->spftree[tree]);
isis_spf_verify_routes(area, area->spftree[tree], tree);
}
void isis_area_switchover_routes(struct isis_area *area, int family,
@ -3098,6 +3121,12 @@ void isis_area_switchover_routes(struct isis_area *area, int family,
static void area_resign_level(struct isis_area *area, int level)
{
#ifndef FABRICD
struct flex_algo *fa;
struct listnode *node;
struct isis_flex_algo_data *data;
#endif /* ifndef FABRICD */
isis_area_invalidate_routes(area, level);
isis_area_verify_routes(area);
@ -3110,6 +3139,20 @@ static void area_resign_level(struct isis_area *area, int level)
}
}
#ifndef FABRICD
for (int tree = SPFTREE_IPV4; tree < SPFTREE_COUNT; tree++) {
for (ALL_LIST_ELEMENTS_RO(area->flex_algos->flex_algos, node,
fa)) {
data = fa->data;
if (data->spftree[level - 1]) {
isis_spftree_del(
data->spftree[tree][level - 1]);
data->spftree[tree][level - 1] = NULL;
}
}
}
#endif /* ifndef FABRICD */
if (area->spf_timer[level - 1])
isis_spf_timer_free(EVENT_ARG(area->spf_timer[level - 1]));
@ -3748,7 +3791,8 @@ struct cmd_node router_node = {
.prompt = "%s(config-router)# ",
.config_write = isis_config_write,
};
#else
#endif /* ifdef FABRICD */
#ifndef FABRICD
/* IS-IS configuration write function */
static int isis_config_write(struct vty *vty)
{
@ -3771,7 +3815,14 @@ struct cmd_node router_node = {
.prompt = "%s(config-router)# ",
.config_write = isis_config_write,
};
#endif /* ifdef FABRICD */
struct cmd_node isis_flex_algo_node = {
.name = "isis-flex-algo",
.node = ISIS_FLEX_ALGO_NODE,
.parent_node = ISIS_NODE,
.prompt = "%s(config-router-flex-algo)# ",
};
#endif /* ifdnef FABRICD */
void isis_init(void)
{
@ -3880,6 +3931,10 @@ void isis_init(void)
install_element(ROUTER_NODE, &log_adj_changes_cmd);
install_element(ROUTER_NODE, &no_log_adj_changes_cmd);
#endif /* ifdef FABRICD */
#ifndef FABRICD
install_node(&isis_flex_algo_node);
install_default(ISIS_FLEX_ALGO_NODE);
#endif /* ifdnef FABRICD */
spf_backoff_cmd_init();
}

View File

@ -163,6 +163,10 @@ struct isis_area {
/* do we support new style metrics? */
char newmetric;
char oldmetric;
/* Allow sending the default admin-group value of 0x00000000. */
bool admin_group_send_zero;
/* Set the legacy flag (aka. L-FLAG) in the ASLA Sub-TLV */
bool asla_legacy_flag;
/* identifies the routing instance */
char *area_tag;
/* area addresses for this area */
@ -220,6 +224,10 @@ struct isis_area {
size_t tilfa_protected_links[ISIS_LEVELS];
/* MPLS LDP-IGP Sync */
struct ldp_sync_info_cmd ldp_sync_cmd;
#ifndef FABRICD
/* Flex-Algo */
struct flex_algos *flex_algos;
#endif /* ifndef FABRICD */
/* Counters */
uint32_t circuit_state_changes;
struct isis_redist redist_settings[REDIST_PROTOCOL_COUNT]

View File

@ -19,6 +19,7 @@ vtysh_daemons += fabricd
endif
noinst_HEADERS += \
isisd/isis_affinitymap.h \
isisd/isis_adjacency.h \
isisd/isis_bfd.h \
isisd/isis_circuit.h \
@ -45,6 +46,7 @@ noinst_HEADERS += \
isisd/isis_spf.h \
isisd/isis_spf_private.h \
isisd/isis_sr.h \
isisd/isis_flex_algo.h \
isisd/isis_te.h \
isisd/isis_tlvs.h \
isisd/isis_tx_queue.h \
@ -55,6 +57,7 @@ noinst_HEADERS += \
# end
LIBISIS_SOURCES = \
isisd/isis_affinitymap.c \
isisd/isis_adjacency.c \
isisd/isis_bfd.c \
isisd/isis_circuit.c \
@ -76,6 +79,7 @@ LIBISIS_SOURCES = \
isisd/isis_routemap.c \
isisd/isis_spf.c \
isisd/isis_sr.c \
isisd/isis_flex_algo.c \
isisd/isis_te.c \
isisd/isis_tlvs.c \
isisd/isis_tx_queue.c \

View File

@ -129,6 +129,7 @@ enum node_type {
LDP_L2VPN_NODE, /* LDP L2VPN node */
LDP_PSEUDOWIRE_NODE, /* LDP Pseudowire node */
ISIS_NODE, /* ISIS protocol mode */
ISIS_FLEX_ALGO_NODE, /* ISIS Flex Algo mode */
ACCESS_NODE, /* Access list node. */
PREFIX_NODE, /* Prefix list node. */
ACCESS_IPV6_NODE, /* Access list node. */

142
lib/flex_algo.c Normal file
View File

@ -0,0 +1,142 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*********************************************************************
* Copyright 2022 Hiroki Shirokura, LINE Corporation
* Copyright 2022 Masakazu Asama
* Copyright 2022 6WIND S.A.
*
* flex_algo.c: Flexible Algorithm library
*
* Authors
* -------
* Hiroki Shirokura
* Masakazu Asama
* Louis Scalbert
*/
#include "zebra.h"
#include "flex_algo.h"
DEFINE_MTYPE_STATIC(LIB, FLEX_ALGO, "Flex-Algo Definition");
struct flex_algos *flex_algos_alloc(flex_algo_allocator_t allocator,
flex_algo_releaser_t releaser)
{
struct flex_algos *flex_algos;
flex_algos = XCALLOC(MTYPE_FLEX_ALGO, sizeof(*flex_algos));
flex_algos->flex_algos = list_new();
flex_algos->allocator = allocator;
flex_algos->releaser = releaser;
return flex_algos;
}
struct flex_algo *flex_algo_alloc(struct flex_algos *flex_algos,
uint8_t algorithm, void *arg)
{
struct flex_algo *fa;
fa = XCALLOC(MTYPE_FLEX_ALGO, sizeof(*fa));
fa->algorithm = algorithm;
if (flex_algos->allocator)
fa->data = flex_algos->allocator(arg);
admin_group_init(&fa->admin_group_exclude_any);
admin_group_init(&fa->admin_group_include_any);
admin_group_init(&fa->admin_group_include_all);
listnode_add(flex_algos->flex_algos, fa);
return fa;
}
/**
* @brief Look up the local flex-algo object by its algorithm number.
* @param algorithm flex-algo algorithm number
* @param area area pointer of flex-algo
* @return local flex-algo object if exist, else NULL
*/
struct flex_algo *flex_algo_lookup(struct flex_algos *flex_algos,
uint8_t algorithm)
{
struct listnode *node;
struct flex_algo *fa;
for (ALL_LIST_ELEMENTS_RO(flex_algos->flex_algos, node, fa))
if (fa->algorithm == algorithm)
return fa;
return NULL;
}
/**
* @brief Compare two Flex-Algo Definitions (FAD)
* @param Flex algo 1
* @param Flex algo 2
* @return true if the definition is equal, else false
*/
bool flex_algo_definition_cmp(struct flex_algo *fa1, struct flex_algo *fa2)
{
if (fa1->algorithm != fa2->algorithm)
return false;
if (fa1->calc_type != fa2->calc_type)
return false;
if (fa1->metric_type != fa2->metric_type)
return false;
if (!admin_group_cmp(&fa1->admin_group_exclude_any,
&fa2->admin_group_exclude_any))
return false;
if (!admin_group_cmp(&fa1->admin_group_include_all,
&fa2->admin_group_include_all))
return false;
if (!admin_group_cmp(&fa1->admin_group_include_any,
&fa2->admin_group_include_any))
return false;
return true;
}
void flex_algo_delete(struct flex_algos *flex_algos, uint8_t algorithm)
{
struct listnode *node, *nnode;
struct flex_algo *fa;
for (ALL_LIST_ELEMENTS(flex_algos->flex_algos, node, nnode, fa)) {
if (fa->algorithm != algorithm)
continue;
if (flex_algos->releaser)
flex_algos->releaser(fa->data);
admin_group_term(&fa->admin_group_exclude_any);
admin_group_term(&fa->admin_group_include_any);
admin_group_term(&fa->admin_group_include_all);
listnode_delete(flex_algos->flex_algos, fa);
XFREE(MTYPE_FLEX_ALGO, fa);
return;
}
}
/**
* Check SR Algorithm is Flex-Algo
* according to RFC9350 section 4
*
* @param algorithm SR Algorithm
*/
bool flex_algo_id_valid(uint16_t algorithm)
{
return algorithm >= SR_ALGORITHM_FLEX_MIN &&
algorithm <= SR_ALGORITHM_FLEX_MAX;
}
char *flex_algo_metric_type_print(char *type_str, size_t sz,
enum flex_algo_metric_type metric_type)
{
switch (metric_type) {
case MT_IGP:
snprintf(type_str, sz, "igp");
break;
case MT_MIN_UNI_LINK_DELAY:
snprintf(type_str, sz, "delay");
break;
case MT_TE_DEFAULT:
snprintf(type_str, sz, "te");
break;
}
return type_str;
}

121
lib/flex_algo.h Normal file
View File

@ -0,0 +1,121 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*********************************************************************
* Copyright 2022 Hiroki Shirokura, LINE Corporation
* Copyright 2022 Masakazu Asama
* Copyright 2022 6WIND S.A.
*
* flex_algo.h: Flexible Algorithm library
*
* Authors
* -------
* Hiroki Shirokura
* Masakazu Asama
* Louis Scalbert
*/
#ifndef _FRR_FLEX_ALGO_H
#define _FRR_FLEX_ALGO_H
#include "admin_group.h"
#include "linklist.h"
#include "prefix.h"
#include "segment_routing.h"
#define FLEX_ALGO_PRIO_DEFAULT 128
#define CALC_TYPE_SPF 0
/* flex-algo definition flags */
/* M-flag (aka. prefix-metric)
* Flex-Algorithm specific prefix and ASBR metric MUST be used
*/
#define FAD_FLAG_M 0x80
/*
* Metric Type values from RFC9350 section 5.1
*/
enum flex_algo_metric_type {
MT_IGP = 0,
MT_MIN_UNI_LINK_DELAY = 1,
MT_TE_DEFAULT = 2,
};
/* Flex-Algo data about a given algorithm.
* It includes the definition and some local data.
*/
struct flex_algo {
/* Flex-Algo definition */
uint8_t algorithm;
enum flex_algo_metric_type metric_type;
uint8_t calc_type;
uint8_t priority;
uint8_t flags;
/* extended admin-groups */
struct admin_group admin_group_exclude_any;
struct admin_group admin_group_include_any;
struct admin_group admin_group_include_all;
/* Exclude SRLG Sub-TLV is not yet supported by IS-IS
* True if a Exclude SRLG Sub-TLV has been found
*/
bool exclude_srlg;
/* True if an unsupported sub-TLV other Exclude SRLG
* has been received.
* A router that receives an unsupported definition
* that is elected must not participate in the algorithm.
* This boolean prevents future sub-TLV from being considered
* as supported.
*/
bool unsupported_subtlv;
/* Flex-Algo local data */
/* True if the local definition must be advertised */
bool advertise_definition;
/* which dataplane must be used for the algorithm */
#define FLEX_ALGO_SR_MPLS 0x01
#define FLEX_ALGO_SRV6 0x02
#define FLEX_ALGO_IP 0x04
uint8_t dataplanes;
/*
* This property can be freely extended among different routing
* protocols. Since Flex-Algo is an IGP protocol agnostic, both IS-IS
* and OSPF can implement Flex-Algo. The struct flex_algo thus provides
* the general data structure of Flex-Algo, and the value of extending
* it with the IGP protocol is provided by this property.
*/
void *data;
};
typedef void *(*flex_algo_allocator_t)(void *);
typedef void (*flex_algo_releaser_t)(void *);
struct flex_algos {
flex_algo_allocator_t allocator;
flex_algo_releaser_t releaser;
struct list *flex_algos;
};
/*
* Flex-Algo Utilities
*/
struct flex_algos *flex_algos_alloc(flex_algo_allocator_t allocator,
flex_algo_releaser_t releaser);
struct flex_algo *flex_algo_alloc(struct flex_algos *flex_algos,
uint8_t algorithm, void *arg);
struct flex_algo *flex_algo_lookup(struct flex_algos *flex_algos,
uint8_t algorithm);
void flex_algos_free(struct flex_algos *flex_algos);
bool flex_algo_definition_cmp(struct flex_algo *fa1, struct flex_algo *fa2);
void flex_algo_delete(struct flex_algos *flex_algos, uint8_t algorithm);
bool flex_algo_id_valid(uint16_t algorithm);
char *flex_algo_metric_type_print(char *type_str, size_t sz,
enum flex_algo_metric_type metric_type);
#endif /* _FRR_FLEX_ALGO_H */

View File

@ -92,6 +92,9 @@ struct ls_node_id {
*/
extern int ls_node_id_same(struct ls_node_id i1, struct ls_node_id i2);
/* Supported number of algorithm by the link-state library */
#define LIB_LS_SR_ALGO_COUNT 2
/* Link State flags to indicate which Node parameters are valid */
#define LS_NODE_UNSET 0x0000
#define LS_NODE_NAME 0x0001
@ -123,7 +126,7 @@ struct ls_node {
uint32_t lower_bound; /* MPLS label lower bound */
uint32_t range_size; /* MPLS label range size */
} srlb;
uint8_t algo[2]; /* Segment Routing Algorithms */
uint8_t algo[LIB_LS_SR_ALGO_COUNT]; /* Segment Routing Algorithms */
uint8_t msd; /* Maximum Stack Depth */
};

30
lib/segment_routing.c Normal file
View File

@ -0,0 +1,30 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*********************************************************************
* Copyright 2022 Hiroki Shirokura, LINE Corporation
* Copyright 2022 Masakazu Asama
* Copyright 2022 6WIND S.A.
*
* segment_routing.c: Segment-Routing Library
*
* Authors
* -------
* Hiroki Shirokura
* Masakazu Asama
* Louis Scalbert
*/
#include "segment_routing.h"
const char *sr_algorithm_string(uint8_t algo)
{
switch (algo) {
case SR_ALGORITHM_SPF:
return "SPF";
case SR_ALGORITHM_STRICT_SPF:
return "Strict SPF";
case SR_ALGORITHM_UNSET:
return "Unset";
default:
return algo >= SR_ALGORITHM_FLEX_MIN ? "Flex-Algo" : "Unknown";
}
}

42
lib/segment_routing.h Normal file
View File

@ -0,0 +1,42 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*********************************************************************
* Copyright 2022 Hiroki Shirokura, LINE Corporation
* Copyright 2022 Masakazu Asama
* Copyright 2022 6WIND S.A.
*
* segment_routing.h: Segment-Routing Library
*
* Authors
* -------
* Hiroki Shirokura
* Masakazu Asama
* Louis Scalbert
*/
#ifndef _FRR_SR_H
#define _FRR_SR_H
#include <zebra.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* IGP Algorithm Types
* https://www.iana.org/assignments/igp-parameters/igp-parameters.xhtml
*/
#define SR_ALGORITHM_SPF 0 /* RFC8665 */
#define SR_ALGORITHM_STRICT_SPF 1 /* RFC8665 */
#define SR_ALGORITHM_UNSET 127 /* FRRouting defined */
#define SR_ALGORITHM_FLEX_MIN 128 /* RFC9350 Flex-Algorithm */
#define SR_ALGORITHM_FLEX_MAX 255 /* RFC9350 Flex-Algorithm */
#define SR_ALGORITHM_COUNT 256
const char *sr_algorithm_string(uint8_t algo);
#ifdef __cplusplus
}
#endif
#endif /* _FRR_SR_H */

View File

@ -33,6 +33,7 @@ lib_libfrr_la_SOURCES = \
lib/filter.c \
lib/filter_cli.c \
lib/filter_nb.c \
lib/flex_algo.c \
lib/frrcu.c \
lib/frrlua.c \
lib/frrscript.c \
@ -99,6 +100,7 @@ lib_libfrr_la_SOURCES = \
lib/sockopt.c \
lib/sockunion.c \
lib/spf_backoff.c \
lib/segment_routing.c \
lib/srcdest_table.c \
lib/stream.c \
lib/strformat.c \
@ -210,6 +212,7 @@ pkginclude_HEADERS += \
lib/distribute.h \
lib/ferr.h \
lib/filter.h \
lib/flex_algo.h \
lib/freebsd-queue.h \
lib/frrlua.h \
lib/frrscript.h \
@ -282,6 +285,7 @@ pkginclude_HEADERS += \
lib/sockopt.h \
lib/sockunion.h \
lib/spf_backoff.h \
lib/segment_routing.h \
lib/srcdest_table.h \
lib/srte.h \
lib/stream.h \

View File

@ -7,6 +7,7 @@
#include <zebra.h>
#include <stdio.h>
#include "lib/json.h"
#include "printfrr.h"
#include "memory.h"
#include "termtable.h"
@ -485,3 +486,45 @@ char *ttable_dump(struct ttable *tt, const char *newline)
return buf;
}
/* Crude conversion from ttable to json array.
* Assume that the first row has column headings.
*
* Formats are:
* d int32
* f double
* l int64
* s string (default)
*/
json_object *ttable_json(struct ttable *tt, const char *const formats)
{
struct ttable_cell *row; /* iteration pointers */
json_object *json = NULL;
json = json_object_new_array();
for (int i = 1; i < tt->nrows; i++) {
json_object *jobj;
json_object *val;
row = tt->table[i];
jobj = json_object_new_object();
json_object_array_add(json, jobj);
for (int j = 0; j < tt->ncols; j++) {
switch (formats[j]) {
case 'd':
case 'l':
val = json_object_new_int64(atol(row[j].text));
break;
case 'f':
val = json_object_new_double(atof(row[j].text));
break;
default:
val = json_object_new_string(row[j].text);
}
json_object_object_add(jobj, tt->table[0][j].text, val);
}
}
return json;
}

View File

@ -8,6 +8,7 @@
#define _TERMTABLE_H_
#include <zebra.h>
#include "lib/json.h"
#ifdef __cplusplus
extern "C" {
@ -277,6 +278,17 @@ void ttable_rowseps(struct ttable *tt, unsigned int row,
*/
char *ttable_dump(struct ttable *tt, const char *newline);
/**
* Convert a table to a JSON array of objects.
*
* Caller must free the returned json_object structure.
*
* @param tt the table to convert
* @param formats an array of characters indicating what JSON type should be
* used.
*/
json_object *ttable_json(struct ttable *tt, const char *const formats);
#ifdef __cplusplus
}
#endif

View File

@ -20,6 +20,9 @@ extern "C" {
#define frr_each(prefix, head, item) \
for (item = prefix##_first(head); item; \
item = prefix##_next(head, item))
#define frr_each_const(prefix, head, item) \
for (item = prefix##_const_first(head); item; \
item = prefix##_const_next(head, item))
#define frr_each_safe(prefix, head, item) \
for (typeof(prefix##_next_safe(head, NULL)) prefix##_safe = \
prefix##_next_safe(head, \

View File

@ -98,7 +98,7 @@ static void lsp_add_ip_reach(struct isis_lsp *lsp,
{
struct prefix prefix;
struct sr_prefix_cfg pcfg = {};
struct sr_prefix_cfg *pcfg_p = NULL;
struct sr_prefix_cfg *pcfg_p[SR_ALGORITHM_COUNT] = {NULL};
if (str2prefix(prefix_str, &prefix) != 1) {
zlog_debug("%s: invalid network: %s", __func__, prefix_str);
@ -106,7 +106,7 @@ static void lsp_add_ip_reach(struct isis_lsp *lsp,
}
if (CHECK_FLAG(tnode->flags, F_ISIS_TEST_NODE_SR)) {
pcfg_p = &pcfg;
pcfg_p[SR_ALGORITHM_SPF] = &pcfg;
pcfg.sid = *next_sid_index;
*next_sid_index = *next_sid_index + 1;
@ -163,31 +163,32 @@ static void lsp_add_reach(struct isis_lsp *lsp,
static void lsp_add_router_capability(struct isis_lsp *lsp,
const struct isis_test_node *tnode)
{
struct isis_router_cap cap = {};
struct isis_router_cap *cap;
if (!tnode->router_id)
return;
if (inet_pton(AF_INET, tnode->router_id, &cap.router_id) != 1) {
cap = isis_tlvs_init_router_capability(lsp->tlvs);
if (inet_pton(AF_INET, tnode->router_id, &cap->router_id) != 1) {
zlog_debug("%s: invalid router-id: %s", __func__,
tnode->router_id);
return;
}
if (CHECK_FLAG(tnode->flags, F_ISIS_TEST_NODE_SR)) {
cap.srgb.flags =
cap->srgb.flags =
ISIS_SUBTLV_SRGB_FLAG_I | ISIS_SUBTLV_SRGB_FLAG_V;
cap.srgb.lower_bound = tnode->srgb.lower_bound
? tnode->srgb.lower_bound
: SRGB_DFTL_LOWER_BOUND;
cap.srgb.range_size = tnode->srgb.range_size
? tnode->srgb.range_size
: SRGB_DFTL_RANGE_SIZE;
cap.algo[0] = SR_ALGORITHM_SPF;
cap.algo[1] = SR_ALGORITHM_UNSET;
cap->srgb.lower_bound = tnode->srgb.lower_bound
? tnode->srgb.lower_bound
: SRGB_DFTL_LOWER_BOUND;
cap->srgb.range_size = tnode->srgb.range_size
? tnode->srgb.range_size
: SRGB_DFTL_RANGE_SIZE;
cap->algo[0] = SR_ALGORITHM_SPF;
cap->algo[1] = SR_ALGORITHM_UNSET;
}
isis_tlvs_set_router_capability(lsp->tlvs, &cap);
}
static void lsp_add_mt_router_info(struct isis_lsp *lsp,

View File

@ -49,12 +49,13 @@ static void test_run_spf(struct vty *vty, const struct isis_topology *topology,
/* Run SPF. */
spf_type = reverse ? SPF_TYPE_REVERSE : SPF_TYPE_FORWARD;
spftree = isis_spftree_new(area, lspdb, root->sysid, level, tree,
spf_type, F_SPFTREE_NO_ADJACENCIES);
spf_type, F_SPFTREE_NO_ADJACENCIES,
SR_ALGORITHM_SPF);
isis_run_spf(spftree);
/* Print the SPT and the corresponding routing table. */
isis_print_spftree(vty, spftree);
isis_print_routes(vty, spftree, false, false);
isis_print_routes(vty, spftree, NULL, false, false);
/* Cleanup SPF tree. */
isis_spftree_del(spftree);
@ -71,8 +72,9 @@ static void test_run_lfa(struct vty *vty, const struct isis_topology *topology,
/* Run forward SPF in the root node. */
flags = F_SPFTREE_NO_ADJACENCIES;
spftree_self = isis_spftree_new(area, lspdb, root->sysid, level, tree,
SPF_TYPE_FORWARD, flags);
spftree_self =
isis_spftree_new(area, lspdb, root->sysid, level, tree,
SPF_TYPE_FORWARD, flags, SR_ALGORITHM_SPF);
isis_run_spf(spftree_self);
/* Run forward SPF on all adjacent routers. */
@ -84,9 +86,9 @@ static void test_run_lfa(struct vty *vty, const struct isis_topology *topology,
/* Print the SPT and the corresponding main/backup routing tables. */
isis_print_spftree(vty, spftree_self);
vty_out(vty, "Main:\n");
isis_print_routes(vty, spftree_self, false, false);
isis_print_routes(vty, spftree_self, NULL, false, false);
vty_out(vty, "Backup:\n");
isis_print_routes(vty, spftree_self, false, true);
isis_print_routes(vty, spftree_self, NULL, false, true);
/* Cleanup everything. */
isis_spftree_del(spftree_self);
@ -107,8 +109,9 @@ static void test_run_rlfa(struct vty *vty, const struct isis_topology *topology,
/* Run forward SPF in the root node. */
flags = F_SPFTREE_NO_ADJACENCIES;
spftree_self = isis_spftree_new(area, lspdb, root->sysid, level, tree,
SPF_TYPE_FORWARD, flags);
spftree_self =
isis_spftree_new(area, lspdb, root->sysid, level, tree,
SPF_TYPE_FORWARD, flags, SR_ALGORITHM_SPF);
isis_run_spf(spftree_self);
/* Run reverse SPF in the root node. */
@ -162,9 +165,9 @@ static void test_run_rlfa(struct vty *vty, const struct isis_topology *topology,
/* Print the SPT and the corresponding main/backup routing tables. */
isis_print_spftree(vty, spftree_self);
vty_out(vty, "Main:\n");
isis_print_routes(vty, spftree_self, false, false);
isis_print_routes(vty, spftree_self, NULL, false, false);
vty_out(vty, "Backup:\n");
isis_print_routes(vty, spftree_self, false, true);
isis_print_routes(vty, spftree_self, NULL, false, true);
/* Cleanup everything. */
isis_spftree_del(spftree_self);
@ -187,8 +190,9 @@ static void test_run_ti_lfa(struct vty *vty,
/* Run forward SPF in the root node. */
flags = F_SPFTREE_NO_ADJACENCIES;
spftree_self = isis_spftree_new(area, lspdb, root->sysid, level, tree,
SPF_TYPE_FORWARD, flags);
spftree_self =
isis_spftree_new(area, lspdb, root->sysid, level, tree,
SPF_TYPE_FORWARD, flags, SR_ALGORITHM_SPF);
isis_run_spf(spftree_self);
/* Run reverse SPF in the root node. */
@ -224,7 +228,7 @@ static void test_run_ti_lfa(struct vty *vty,
* Print the post-convergence SPT and the corresponding routing table.
*/
isis_print_spftree(vty, spftree_pc);
isis_print_routes(vty, spftree_self, false, true);
isis_print_routes(vty, spftree_self, NULL, false, true);
/* Cleanup everything. */
isis_spftree_del(spftree_self);

View File

@ -0,0 +1,96 @@
password 1
hostname rt1
log file isisd.log
!
!debug northbound
!debug isis events
!debug isis spf-events
!debug isis route-events
!debug isis sr-events
!debug isis lsp-gen
!
affinity-map red bit-position 0
affinity-map blue bit-position 1
affinity-map green bit-position 2
affinity-map yellow bit-position 3
affinity-map orange bit-position 4
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-rt2
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
isis network point-to-point
!
interface eth-rt3
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
isis network point-to-point
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0001.00
is-type level-1
topology ipv6-unicast
mpls-te on
!
flex-algo 201
dataplane sr-mpls
advertise-definition
affinity exclude-any red
!
flex-algo 202
dataplane sr-mpls
advertise-definition
affinity exclude-any blue
!
flex-algo 203
dataplane sr-mpls
advertise-definition
affinity exclude-any green
!
flex-algo 204
dataplane sr-mpls
advertise-definition
affinity include-any blue green
!
flex-algo 205
dataplane sr-mpls
advertise-definition
affinity include-any red green
!
flex-algo 206
dataplane sr-mpls
advertise-definition
affinity include-any red blue
!
flex-algo 207
dataplane sr-mpls
advertise-definition
affinity include-all yellow orange
!
segment-routing on
segment-routing global-block 20000 23999
segment-routing node-msd 8
segment-routing prefix 1.1.1.1/32 index 1
segment-routing prefix 1.1.1.1/32 algorithm 201 index 101
segment-routing prefix 1.1.1.1/32 algorithm 202 index 201
segment-routing prefix 1.1.1.1/32 algorithm 203 index 301
segment-routing prefix 1.1.1.1/32 algorithm 204 index 401
segment-routing prefix 1.1.1.1/32 algorithm 205 index 501
segment-routing prefix 1.1.1.1/32 algorithm 206 index 601
segment-routing prefix 1.1.1.1/32 algorithm 207 index 701
segment-routing prefix 2001:db8:1000::1/128 index 1001
segment-routing prefix 2001:db8:1000::1/128 algorithm 201 index 1101
segment-routing prefix 2001:db8:1000::1/128 algorithm 202 index 1201
segment-routing prefix 2001:db8:1000::1/128 algorithm 203 index 1301
segment-routing prefix 2001:db8:1000::1/128 algorithm 204 index 1401
segment-routing prefix 2001:db8:1000::1/128 algorithm 205 index 1501
segment-routing prefix 2001:db8:1000::1/128 algorithm 206 index 1601
segment-routing prefix 2001:db8:1000::1/128 algorithm 207 index 1701
!

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,126 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,126 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,126 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,115 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: Not found
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,450 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,126 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,126 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,112 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: None
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,450 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,108 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,450 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,126 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,126 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20102,
"outLabelStack":[
20102
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20303,
"outLabelStack":[
20303
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20402,
"outLabelStack":[
20402
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20603,
"outLabelStack":[
20603
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.2"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20702,
"outLabelStack":[
20702
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.3"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21102,
"outLabelStack":[
21102
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21303,
"outLabelStack":[
21303
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21402,
"outLabelStack":[
21402
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21603,
"outLabelStack":[
21603
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21702,
"outLabelStack":[
21702
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,39 @@
log file zebra.log
!
hostname rt1
!
log stdout notifications
log monitor notifications
log commands
!
!debug zebra packet
!debug zebra dplane
!debug zebra kernel
!
affinity-map red bit-position 0
affinity-map blue bit-position 1
affinity-map green bit-position 2
affinity-map yellow bit-position 3
affinity-map orange bit-position 4
!
interface lo
ip address 1.1.1.1/32
ipv6 address 2001:db8:1000::1/128
!
interface eth-rt2
ip address 10.12.0.1/24
link-params
affinity red
exit-link-params
!
interface eth-rt3
ip address 10.13.0.1/24
link-params
affinity green yellow orange
exit-link-params
!
ip forwarding
ipv6 forwarding
!
line vty
!

View File

@ -0,0 +1,96 @@
password 1
hostname rt2
log file isisd.log
!
!debug northbound
!debug isis events
!debug isis route-events
!debug isis spf-events
!debug isis sr-events
!debug isis lsp-gen
!
affinity-map red bit-position 0
affinity-map blue bit-position 1
affinity-map green bit-position 2
affinity-map yellow bit-position 3
affinity-map orange bit-position 4
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-rt1
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
isis network point-to-point
!
interface eth-rt3
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
isis network point-to-point
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0002.00
is-type level-1
topology ipv6-unicast
mpls-te on
!
flex-algo 201
dataplane sr-mpls
advertise-definition
affinity exclude-any red
!
flex-algo 202
dataplane sr-mpls
advertise-definition
affinity exclude-any blue
!
flex-algo 203
dataplane sr-mpls
advertise-definition
affinity exclude-any green
!
flex-algo 204
dataplane sr-mpls
advertise-definition
affinity include-any blue green
!
flex-algo 205
dataplane sr-mpls
advertise-definition
affinity include-any red green
!
flex-algo 206
dataplane sr-mpls
advertise-definition
affinity include-any red blue
!
flex-algo 207
dataplane sr-mpls
advertise-definition
affinity include-all yellow orange
!
segment-routing on
segment-routing global-block 20000 23999
segment-routing node-msd 8
segment-routing prefix 2.2.2.2/32 index 2
segment-routing prefix 2.2.2.2/32 algorithm 201 index 102
segment-routing prefix 2.2.2.2/32 algorithm 202 index 202
segment-routing prefix 2.2.2.2/32 algorithm 203 index 302
segment-routing prefix 2.2.2.2/32 algorithm 204 index 402
segment-routing prefix 2.2.2.2/32 algorithm 205 index 502
segment-routing prefix 2.2.2.2/32 algorithm 206 index 602
segment-routing prefix 2.2.2.2/32 algorithm 207 index 702
segment-routing prefix 2001:db8:1000::2/128 index 1002
segment-routing prefix 2001:db8:1000::2/128 algorithm 201 index 1102
segment-routing prefix 2001:db8:1000::2/128 algorithm 202 index 1202
segment-routing prefix 2001:db8:1000::2/128 algorithm 203 index 1302
segment-routing prefix 2001:db8:1000::2/128 algorithm 204 index 1402
segment-routing prefix 2001:db8:1000::2/128 algorithm 205 index 1502
segment-routing prefix 2001:db8:1000::2/128 algorithm 206 index 1602
segment-routing prefix 2001:db8:1000::2/128 algorithm 207 index 1702
!

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20311":{
"inLabel":20311,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21311":{
"inLabel":21311,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,114 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: Not found
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,450 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,111 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: None
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,450 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,107 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,450 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: yes
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,482 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20003":{
"inLabel":20003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20101,
"outLabelStack":[
20101
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20103":{
"inLabel":20103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20203":{
"inLabel":20203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20203,
"outLabelStack":[
20203
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20303":{
"inLabel":20303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20401,
"outLabelStack":[
20401
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20403":{
"inLabel":20403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20503":{
"inLabel":20503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20503,
"outLabelStack":[
20503
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.12.0.1"
}
]
},
"20603":{
"inLabel":20603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20701,
"outLabelStack":[
20701
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"20703":{
"inLabel":20703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.3"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21003":{
"inLabel":21003,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21101,
"outLabelStack":[
21101
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21103":{
"inLabel":21103,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21203":{
"inLabel":21203,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21203,
"outLabelStack":[
21203
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21303":{
"inLabel":21303,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21401,
"outLabelStack":[
21401
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21403":{
"inLabel":21403,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21503":{
"inLabel":21503,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21503,
"outLabelStack":[
21503
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21603":{
"inLabel":21603,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21701,
"outLabelStack":[
21701
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
},
"21703":{
"inLabel":21703,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt3"
}
]
}
}

View File

@ -0,0 +1,39 @@
log file zebra.log
!
hostname rt2
!
log stdout notifications
log monitor notifications
log commands
!
!debug zebra packet
!debug zebra dplane
!debug zebra kernel
!
affinity-map red bit-position 0
affinity-map blue bit-position 1
affinity-map green bit-position 2
affinity-map yellow bit-position 3
affinity-map orange bit-position 4
!
interface lo
ip address 2.2.2.2/32
ipv6 address 2001:db8:1000::2/128
!
interface eth-rt1
ip address 10.12.0.2/24
link-params
affinity red
exit-link-params
!
interface eth-rt3
ip address 10.23.0.2/24
link-params
affinity blue yellow orange
exit-link-params
!
ip forwarding
ipv6 forwarding
!
line vty
!

View File

@ -0,0 +1,76 @@
password 1
hostname rt3
log file isisd.log
!
!debug northbound
!debug isis events
!debug isis route-events
!debug isis spf-events
!debug isis sr-events
!debug isis lsp-gen
!
affinity-map red bit-position 0
affinity-map blue bit-position 1
affinity-map green bit-position 2
affinity-map yellow bit-position 3
affinity-map orange bit-position 4
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-rt1
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
isis network point-to-point
!
interface eth-rt2
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
isis network point-to-point
!
router isis 1
lsp-gen-interval 2
net 49.0000.0000.0000.0003.00
is-type level-1
topology ipv6-unicast
mpls-te on
!
flex-algo 201
dataplane sr-mpls
flex-algo 202
dataplane sr-mpls
flex-algo 203
dataplane sr-mpls
flex-algo 204
dataplane sr-mpls
flex-algo 205
dataplane sr-mpls
flex-algo 206
dataplane sr-mpls
flex-algo 207
dataplane sr-mpls
!
segment-routing on
segment-routing global-block 20000 23999
segment-routing node-msd 8
segment-routing prefix 3.3.3.3/32 index 3
segment-routing prefix 3.3.3.3/32 algorithm 201 index 103
segment-routing prefix 3.3.3.3/32 algorithm 202 index 203
segment-routing prefix 3.3.3.3/32 algorithm 203 index 303
segment-routing prefix 3.3.3.3/32 algorithm 204 index 403
segment-routing prefix 3.3.3.3/32 algorithm 205 index 503
segment-routing prefix 3.3.3.3/32 algorithm 206 index 603
segment-routing prefix 3.3.3.3/32 algorithm 207 index 703
segment-routing prefix 2001:db8:1000::3/128 index 1003
segment-routing prefix 2001:db8:1000::3/128 algorithm 201 index 1103
segment-routing prefix 2001:db8:1000::3/128 algorithm 202 index 1203
segment-routing prefix 2001:db8:1000::3/128 algorithm 203 index 1303
segment-routing prefix 2001:db8:1000::3/128 algorithm 204 index 1403
segment-routing prefix 2001:db8:1000::3/128 algorithm 205 index 1503
segment-routing prefix 2001:db8:1000::3/128 algorithm 206 index 1603
segment-routing prefix 2001:db8:1000::3/128 algorithm 207 index 1703
!

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20202,
"outLabelStack":[
20202
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20301,
"outLabelStack":[
20301
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20502,
"outLabelStack":[
20502
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20601,
"outLabelStack":[
20601
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21202,
"outLabelStack":[
21202
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21301,
"outLabelStack":[
21301
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21502,
"outLabelStack":[
21502
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21601,
"outLabelStack":[
21601
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20202,
"outLabelStack":[
20202
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20301,
"outLabelStack":[
20301
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20502,
"outLabelStack":[
20502
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20601,
"outLabelStack":[
20601
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21202,
"outLabelStack":[
21202
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21301,
"outLabelStack":[
21301
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21502,
"outLabelStack":[
21502
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21601,
"outLabelStack":[
21601
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20202,
"outLabelStack":[
20202
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20311":{
"inLabel":20311,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20311,
"outLabelStack":[
20311
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20502,
"outLabelStack":[
20502
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20601,
"outLabelStack":[
20601
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21202,
"outLabelStack":[
21202
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21311":{
"inLabel":21311,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21311,
"outLabelStack":[
21311
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21502,
"outLabelStack":[
21502
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21601,
"outLabelStack":[
21601
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,514 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20202,
"outLabelStack":[
20202
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20301":{
"inLabel":20301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20301,
"outLabelStack":[
20301
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20302":{
"inLabel":20302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20502,
"outLabelStack":[
20502
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20601,
"outLabelStack":[
20601
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21202,
"outLabelStack":[
21202
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21301":{
"inLabel":21301,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21301,
"outLabelStack":[
21301
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21302":{
"inLabel":21302,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21502,
"outLabelStack":[
21502
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21601,
"outLabelStack":[
21601
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
}
}

View File

@ -0,0 +1,114 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: Not found
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

View File

@ -0,0 +1,450 @@
{
"20001":{
"inLabel":20001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20002":{
"inLabel":20002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20101":{
"inLabel":20101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20102":{
"inLabel":20102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20201":{
"inLabel":20201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20202":{
"inLabel":20202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20202,
"outLabelStack":[
20202
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20401":{
"inLabel":20401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20402":{
"inLabel":20402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20501":{
"inLabel":20501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20502":{
"inLabel":20502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20502,
"outLabelStack":[
20502
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20601":{
"inLabel":20601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":20601,
"outLabelStack":[
20601
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20602":{
"inLabel":20602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"20701":{
"inLabel":20701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.13.0.1"
}
]
},
"20702":{
"inLabel":20702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"nexthop":"10.23.0.2"
}
]
},
"21001":{
"inLabel":21001,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21002":{
"inLabel":21002,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21101":{
"inLabel":21101,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21102":{
"inLabel":21102,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21201":{
"inLabel":21201,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21202":{
"inLabel":21202,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21202,
"outLabelStack":[
21202
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21401":{
"inLabel":21401,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21402":{
"inLabel":21402,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21501":{
"inLabel":21501,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21502":{
"inLabel":21502,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21502,
"outLabelStack":[
21502
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21601":{
"inLabel":21601,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":21601,
"outLabelStack":[
21601
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21602":{
"inLabel":21602,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
},
"21701":{
"inLabel":21701,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt1"
}
]
},
"21702":{
"inLabel":21702,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"outLabelStack":[
3
],
"distance":150,
"installed":true,
"interface":"eth-rt2"
}
]
}
}

View File

@ -0,0 +1,125 @@
Area 1: Algorithm 201
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000001
Bit positions: 0
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 202
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000002
Bit positions: 1
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 203
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: 0x00000004
Bit positions: 2
Include-all admin-group: not-set
Include-any admin-group: not-set
Area 1: Algorithm 204
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000006
Bit positions: 1, 2
Area 1: Algorithm 205
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000005
Bit positions: 0, 2
Area 1: Algorithm 206
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: not-set
Include-any admin-group: 0x00000003
Bit positions: 0, 1
Area 1: Algorithm 207
Enabled Data-Planes: SR-MPLS
Elected and running Flexible-Algorithm Definition:
Source: 0000.0000.0002
Priority: 128
Equal to local: no
Local state: enabled
Calculation type: spf
Metric type: igp
Prefix-metric: disabled
Exclude SRLG: disabled
Exclude-any admin-group: not-set
Include-all admin-group: 0x00000018
Bit positions: 3, 4
Include-any admin-group: not-set

Some files were not shown because too many files have changed in this diff Show More