Merge pull request #6404 from FRRouting/dev_isis_sr

isisd: IS-IS Segment Routing support
This commit is contained in:
Donald Sharp 2020-05-15 08:38:06 -04:00 committed by GitHub
commit 36caef199a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
285 changed files with 43000 additions and 73 deletions

View File

@ -470,6 +470,57 @@ Traffic Engineering
.. _debugging-isis:
Segment Routing
===============
This is an EXPERIMENTAL support of Segment Routing as per RFC8667
for MPLS dataplane. It supports IPv4, IPv6 and ECMP and has been
tested against Cisco & Juniper routers.
Known limitations:
- No support for level redistribution (L1 to L2 or L2 to L1)
- No support for binding SID
- No support for SRMS
- No support for SRLB
- Only one SRGB and default SPF Algorithm is supported
.. index:: [no] segment-routing on
.. clicmd:: [no] segment-routing on
Enable Segment Routing.
.. index:: [no] segment-routing global-block (0-1048575) (0-1048575)
.. clicmd:: [no] segment-routing global-block (0-1048575) (0-1048575)
Set the Segment Routing Global Block i.e. the label range used by MPLS
to store label in the MPLS FIB.
.. index:: [no] segment-routing node-msd (1-16)
.. clicmd:: [no] segment-routing node-msd (1-16)
Set the Maximum Stack Depth supported by the router. The value depend of the
MPLS dataplane. E.g. for Linux kernel, since version 4.13 the maximum value
is 32.
.. index:: [no] segment-routing prefix <A.B.C.D/M|X:X::X:X/M> <absolute (16-1048575)|index (0-65535)> [no-php-flag|explicit-null]
.. clicmd:: [no] segment-routing prefix <A.B.C.D/M|X:X::X:X/M> <absolute (16-1048575)|index (0-65535) [no-php-flag|explicit-null]
Set the Segment Routing index or absolute label value for the specified
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'
flag allows SR node to request to its neighbor to send IP packet with the
EXPLICIT-NULL label.
.. index:: show isis segment-routing prefix-sids
.. clicmd:: show isis segment-routing prefix-sids
Show detailed information about all learned Segment Routing Prefix-SIDs.
.. index:: show isis segment-routing nodes
.. clicmd:: show isis segment-routing nodes
Show detailed information about all learned Segment Routing Nodes.
Debugging ISIS
==============
@ -566,6 +617,14 @@ Debugging ISIS
Update related packets.
.. index:: debug isis sr-events
.. clicmd:: debug isis sr-events
.. index:: no debug isis sr-events
.. clicmd:: no debug isis sr-events
IS-IS Segment Routing events.
.. index:: show debugging isis
.. clicmd:: show debugging isis
@ -655,3 +714,32 @@ Then the :file:`isisd.conf` itself:
mpls-te router-address 10.1.1.1
!
line vty
A Segment Routing configuration, with IPv4, IPv6, SRGB and MSD configuration.
.. code-block:: frr
hostname HOSTNAME
password PASSWORD
log file /var/log/isisd.log
!
!
interface eth0
ip router isis SR
isis network point-to-point
!
interface eth1
ip router isis SR
!
!
router isis SR
net 49.0000.0000.0000.0001.00
is-type level-1
topology ipv6-unicast
lsp-gen-interval 2
segment-routing on
segment-routing node-msd 8
segment-routing prefix 10.1.1.1/32 index 100 explicit-null
segment-routing prefix 2001:db8:1000::1/128 index 101 explicit-null
!

View File

@ -93,6 +93,7 @@ struct isis_adjacency *isis_new_adj(const uint8_t *id, const uint8_t *snpa,
.last_dis_change = time(NULL);
}
}
adj->adj_sids = list_new();
return adj;
}
@ -122,6 +123,44 @@ struct isis_adjacency *isis_adj_lookup_snpa(const uint8_t *ssnpa,
return NULL;
}
bool isis_adj_exists(const struct isis_area *area, int level,
const uint8_t *sysid)
{
struct isis_circuit *circuit;
struct listnode *node;
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) {
struct isis_adjacency *adj;
struct listnode *anode;
struct list *adjdb;
switch (circuit->circ_type) {
case CIRCUIT_T_BROADCAST:
adjdb = circuit->u.bc.adjdb[level - 1];
if (!adjdb)
continue;
for (ALL_LIST_ELEMENTS_RO(adjdb, anode, adj)) {
if (!memcmp(adj->sysid, sysid, ISIS_SYS_ID_LEN))
return true;
}
break;
case CIRCUIT_T_P2P:
adj = circuit->u.p2p.neighbor;
if (!adj)
break;
if (!memcmp(adj->sysid, sysid, ISIS_SYS_ID_LEN))
return true;
break;
default:
break;
}
}
return false;
}
DEFINE_HOOK(isis_adj_state_change_hook, (struct isis_adjacency *adj), (adj))
void isis_delete_adj(void *arg)
@ -145,6 +184,7 @@ void isis_delete_adj(void *arg)
XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv6_addresses);
adj_mt_finish(adj);
list_delete(&adj->adj_sids);
XFREE(MTYPE_ISIS_ADJACENCY, adj);
return;
@ -441,6 +481,9 @@ void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,
}
if (detail == ISIS_UI_LEVEL_DETAIL) {
struct sr_adjacency *sra;
struct listnode *anode;
level = adj->level;
vty_out(vty, "\n");
if (adj->circuit)
@ -529,6 +572,31 @@ void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,
vty_out(vty, " %s\n", buf);
}
}
for (ALL_LIST_ELEMENTS_RO(adj->adj_sids, anode, sra)) {
const char *adj_type;
const char *backup;
uint32_t sid;
switch (sra->adj->circuit->circ_type) {
case CIRCUIT_T_BROADCAST:
adj_type = "LAN Adjacency-SID";
sid = sra->u.ladj_sid->sid;
break;
case CIRCUIT_T_P2P:
adj_type = "Adjacency-SID";
sid = sra->u.adj_sid->sid;
break;
default:
continue;
}
backup = (sra->type == ISIS_SR_LAN_BACKUP) ? " (backup)"
: "";
vty_out(vty, " %s %s%s: %u\n",
(sra->nexthop.family == AF_INET) ? "IPv4"
: "IPv6",
adj_type, backup, sid);
}
vty_out(vty, "\n");
}
return;

View File

@ -69,6 +69,7 @@ struct isis_dis_record {
};
struct bfd_session;
struct isis_area;
struct isis_adjacency {
uint8_t snpa[ETH_ALEN]; /* NeighbourSNPAAddress */
@ -103,6 +104,7 @@ struct isis_adjacency {
uint16_t *mt_set; /* Topologies this adjacency is valid for */
unsigned int mt_count; /* Number of entries in mt_set */
struct bfd_session *bfd_session;
struct list *adj_sids; /* Segment Routing Adj-SIDs. */
};
struct isis_threeway_adj;
@ -111,6 +113,8 @@ struct isis_adjacency *isis_adj_lookup(const uint8_t *sysid,
struct list *adjdb);
struct isis_adjacency *isis_adj_lookup_snpa(const uint8_t *ssnpa,
struct list *adjdb);
bool isis_adj_exists(const struct isis_area *area, int level,
const uint8_t *sysid);
struct isis_adjacency *isis_new_adj(const uint8_t *id, const uint8_t *snpa,
int level, struct isis_circuit *circuit);
void isis_delete_adj(void *adj);
@ -118,6 +122,10 @@ void isis_adj_process_threeway(struct isis_adjacency *adj,
struct isis_threeway_adj *tw_adj,
enum isis_adj_usage adj_usage);
DECLARE_HOOK(isis_adj_state_change_hook, (struct isis_adjacency *adj), (adj))
DECLARE_HOOK(isis_adj_ip_enabled_hook,
(struct isis_adjacency *adj, int family), (adj, family))
DECLARE_HOOK(isis_adj_ip_disabled_hook,
(struct isis_adjacency *adj, int family), (adj, family))
void isis_adj_state_change(struct isis_adjacency **adj,
enum isis_adj_state state, const char *reason);
void isis_adj_print(struct isis_adjacency *adj);

View File

@ -1355,6 +1355,215 @@ void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
vty_out(vty, "\n");
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/enabled
*/
DEFPY (isis_sr_enable,
isis_sr_enable_cmd,
"segment-routing on",
SR_STR
"Enable Segment Routing\n")
{
nb_cli_enqueue_change(vty, "./segment-routing/enabled", NB_OP_MODIFY,
"true");
return nb_cli_apply_changes(vty, NULL);
}
DEFPY (no_isis_sr_enable,
no_isis_sr_enable_cmd,
"no segment-routing [on]",
NO_STR
SR_STR
"Disable Segment Routing\n")
{
nb_cli_enqueue_change(vty, "./segment-routing/enabled", NB_OP_MODIFY,
"false");
return nb_cli_apply_changes(vty, NULL);
}
void cli_show_isis_sr_enabled(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
if (!yang_dnode_get_bool(dnode, NULL))
vty_out(vty, " no");
vty_out(vty, " segment-routing on\n");
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/srgb
*/
DEFPY (isis_sr_global_block_label_range,
isis_sr_global_block_label_range_cmd,
"segment-routing global-block (16-1048575)$lower_bound (16-1048575)$upper_bound",
SR_STR
"Segment Routing Global Block label range\n"
"The lower bound of SRGB (16-1048575)\n"
"The upper bound of SRGB (16-1048575)\n")
{
nb_cli_enqueue_change(vty, "./segment-routing/srgb/lower-bound",
NB_OP_MODIFY, lower_bound_str);
nb_cli_enqueue_change(vty, "./segment-routing/srgb/upper-bound",
NB_OP_MODIFY, upper_bound_str);
return nb_cli_apply_changes(vty, NULL);
}
DEFPY (no_isis_sr_global_block_label_range,
no_isis_sr_global_block_label_range_cmd,
"no segment-routing global-block [(0-1048575) (0-1048575)]",
NO_STR
SR_STR
"Segment Routing Global Block label range\n"
"The lower bound of SRGB (16-1048575)\n"
"The upper bound of SRGB (block size may not exceed 65535)\n")
{
nb_cli_enqueue_change(vty, "./segment-routing/srgb/lower-bound",
NB_OP_MODIFY, NULL);
nb_cli_enqueue_change(vty, "./segment-routing/srgb/upper-bound",
NB_OP_MODIFY, NULL);
return nb_cli_apply_changes(vty, NULL);
}
void cli_show_isis_srgb(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
vty_out(vty, " segment-routing global-block %s %s\n",
yang_dnode_get_string(dnode, "./lower-bound"),
yang_dnode_get_string(dnode, "./upper-bound"));
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/msd/node-msd
*/
DEFPY (isis_sr_node_msd,
isis_sr_node_msd_cmd,
"segment-routing node-msd (1-16)$msd",
SR_STR
"Maximum Stack Depth for this router\n"
"Maximum number of label that can be stack (1-16)\n")
{
nb_cli_enqueue_change(vty, "./segment-routing/msd/node-msd",
NB_OP_MODIFY, msd_str);
return nb_cli_apply_changes(vty, NULL);
}
DEFPY (no_isis_sr_node_msd,
no_isis_sr_node_msd_cmd,
"no segment-routing node-msd [(1-16)]",
NO_STR
SR_STR
"Maximum Stack Depth for this router\n"
"Maximum number of label that can be stack (1-16)\n")
{
nb_cli_enqueue_change(vty, "./segment-routing/msd/node-msd",
NB_OP_DESTROY, NULL);
return nb_cli_apply_changes(vty, NULL);
}
void cli_show_isis_node_msd(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
vty_out(vty, " segment-routing node-msd %s\n",
yang_dnode_get_string(dnode, NULL));
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid
*/
DEFPY (isis_sr_prefix_sid,
isis_sr_prefix_sid_cmd,
"segment-routing prefix\
<A.B.C.D/M|X:X::X:X/M>$prefix\
<absolute$sid_type (16-1048575)$sid_value|index$sid_type (0-65535)$sid_value>\
[<no-php-flag|explicit-null>$lh_behavior]",
SR_STR
"Prefix SID\n"
"IPv4 Prefix\n"
"IPv6 Prefix\n"
"Specify the absolute value of Prefix Segement ID\n"
"The Prefix Segment ID value\n"
"Specify the index of Prefix Segement 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")
{
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
value = "explicit-null";
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);
return nb_cli_apply_changes(
vty, "./segment-routing/prefix-sid-map/prefix-sid[prefix='%s']",
prefix_str);
}
DEFPY (no_isis_sr_prefix_sid,
no_isis_sr_prefix_sid_cmd,
"no segment-routing prefix <A.B.C.D/M|X:X::X:X/M>$prefix\
[<absolute$sid_type (16-1048575)|index (0-65535)> [<no-php-flag|explicit-null>]]",
NO_STR
SR_STR
"Prefix SID\n"
"IPv4 Prefix\n"
"IPv6 Prefix\n"
"Specify the absolute value of Prefix Segement ID\n"
"The Prefix Segment ID value\n"
"Specify the index of Prefix Segement 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")
{
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
return nb_cli_apply_changes(
vty, "./segment-routing/prefix-sid-map/prefix-sid[prefix='%s']",
prefix_str);
}
void cli_show_isis_prefix_sid(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
const char *prefix;
const char *lh_behavior;
const char *sid_value_type;
const char *sid_value;
prefix = yang_dnode_get_string(dnode, "./prefix");
lh_behavior = yang_dnode_get_string(dnode, "./last-hop-behavior");
sid_value_type = yang_dnode_get_string(dnode, "./sid-value-type");
sid_value = yang_dnode_get_string(dnode, "./sid-value");
vty_out(vty, " segment-routing prefix %s", prefix);
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");
vty_out(vty, "\n");
}
/*
* XPath: /frr-interface:lib/interface/frr-isisd:isis/passive
*/
@ -2095,6 +2304,15 @@ void isis_cli_init(void)
install_element(ISIS_NODE, &isis_topology_cmd);
install_element(ISIS_NODE, &isis_sr_enable_cmd);
install_element(ISIS_NODE, &no_isis_sr_enable_cmd);
install_element(ISIS_NODE, &isis_sr_global_block_label_range_cmd);
install_element(ISIS_NODE, &no_isis_sr_global_block_label_range_cmd);
install_element(ISIS_NODE, &isis_sr_node_msd_cmd);
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);
install_element(INTERFACE_NODE, &isis_passive_cmd);
install_element(INTERFACE_NODE, &isis_passwd_cmd);

View File

@ -37,6 +37,12 @@ static struct log_ref ferr_isis_err[] = {
.description = "Isis has detected an error within configuration for the router",
.suggestion = "Ensure configuration is correct"
},
{
.code = EC_ISIS_SID_OVERFLOW,
.title = "SID index overflow",
.description = "Isis has detected that a SID index falls outside of its associated SRGB range",
.suggestion = "Configure a larger SRGB"
},
{
.code = END_FERR,
}

View File

@ -26,6 +26,7 @@
enum isis_log_refs {
EC_ISIS_PACKET = ISIS_FERR_START,
EC_ISIS_CONFIG,
EC_ISIS_SID_OVERFLOW,
};
extern void isis_error_init(void);

View File

@ -55,6 +55,7 @@
#include "isisd/isis_mt.h"
#include "isisd/isis_tlvs.h"
#include "isisd/isis_te.h"
#include "isisd/isis_sr.h"
#include "isisd/fabricd.h"
#include "isisd/isis_tx_queue.h"
#include "isisd/isis_nb.h"
@ -763,9 +764,15 @@ static void lsp_build_ext_reach_ipv4(struct isis_lsp *lsp,
if (area->oldmetric)
isis_tlvs_add_oldstyle_ip_reach(lsp->tlvs, ipv4,
metric);
if (area->newmetric)
isis_tlvs_add_extended_ip_reach(lsp->tlvs, ipv4,
metric);
if (area->newmetric) {
struct sr_prefix_cfg *pcfg = NULL;
if (area->srdb.enabled)
pcfg = isis_sr_cfg_prefix_find(area, ipv4);
isis_tlvs_add_extended_ip_reach(lsp->tlvs, ipv4, metric,
true, pcfg);
}
}
}
@ -792,9 +799,14 @@ 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;
if (area->srdb.enabled)
pcfg = isis_sr_cfg_prefix_find(area, p);
isis_tlvs_add_ipv6_reach(lsp->tlvs,
isis_area_ipv6_topology(area),
p, metric);
p, metric, true, pcfg);
} else if (isis_area_ipv6_dstsrc_enabled(area)) {
isis_tlvs_add_ipv6_dstsrc_reach(lsp->tlvs,
ISIS_MT_IPV6_DSTSRC,
@ -910,6 +922,33 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
area->area_tag);
}
/* Add Router Capability TLV. */
if (isis->router_id != 0) {
struct isis_router_cap cap = {};
cap.router_id.s_addr = isis->router_id;
/* Add SR Sub-TLVs if SR is enabled. */
if (area->srdb.enabled) {
struct isis_sr_db *srdb = &area->srdb;
uint32_t range_size;
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;
cap.algo[0] = SR_ALGORITHM_SPF;
cap.algo[1] = SR_ALGORITHM_UNSET;
cap.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.
* In case of the first one we don't follow "C" vendor,
* but "J" vendor behavior - one IPv4 address is put
@ -996,13 +1035,21 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
}
if (area->newmetric) {
struct sr_prefix_cfg *pcfg = NULL;
lsp_debug(
"ISIS (%s): Adding te-style IP reachability for %s",
area->area_tag,
prefix2str(ipv4, buf,
sizeof(buf)));
if (area->srdb.enabled)
pcfg = isis_sr_cfg_prefix_find(
area, ipv4);
isis_tlvs_add_extended_ip_reach(
lsp->tlvs, ipv4, metric);
lsp->tlvs, ipv4, metric, false,
pcfg);
}
}
}
@ -1014,14 +1061,21 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
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 %s",
area->area_tag,
prefix2str(ipv6, buf, sizeof(buf)));
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);
metric, false, pcfg);
}
}

View File

@ -83,7 +83,9 @@ struct zebra_privs_t isisd_privs = {
.cap_num_i = 0};
/* isisd options */
struct option longopts[] = {{0}};
static const struct option longopts[] = {
{"int_num", required_argument, NULL, 'I'},
{0}};
/* Master of threads. */
struct thread_master *master;
@ -99,6 +101,7 @@ void sigusr1(void);
static __attribute__((__noreturn__)) void terminate(int i)
{
isis_sr_term();
isis_zebra_stop();
exit(i);
}
@ -196,13 +199,16 @@ FRR_DAEMON_INFO(isisd, ISIS, .vty_port = ISISD_VTY_PORT,
int main(int argc, char **argv, char **envp)
{
int opt;
int instance = 1;
#ifdef FABRICD
frr_preinit(&fabricd_di, argc, argv);
#else
frr_preinit(&isisd_di, argc, argv);
#endif
frr_opt_add("", longopts, "");
frr_opt_add(
"I:", longopts,
" -I, --int_num Set instance number (label-manager)\n");
/* Command line argument treatment. */
while (1) {
@ -214,6 +220,12 @@ int main(int argc, char **argv, char **envp)
switch (opt) {
case 0:
break;
case 'I':
instance = atoi(optarg);
if (instance < 1 || instance > (unsigned short)-1)
zlog_err("Instance %i out of range (1..%u)",
instance, (unsigned short)-1);
break;
default:
frr_help_exit(1);
break;
@ -242,13 +254,14 @@ int main(int argc, char **argv, char **envp)
isis_redist_init();
isis_route_map_init();
isis_mpls_te_init();
isis_sr_init();
lsp_init();
mt_init();
/* create the global 'isis' instance */
isis_new(1, VRF_DEFAULT);
isis_zebra_init(master);
isis_zebra_init(master, instance);
isis_bfd_init();
fabricd_init();

View File

@ -538,6 +538,26 @@ void log_multiline(int priority, const char *prefix, const char *format, ...)
XFREE(MTYPE_TMP, p);
}
char *log_uptime(time_t uptime, char *buf, size_t nbuf)
{
struct tm *tm;
time_t difftime = time(NULL);
difftime -= uptime;
tm = gmtime(&difftime);
if (difftime < ONE_DAY_SECOND)
snprintf(buf, nbuf, "%02d:%02d:%02d", tm->tm_hour, tm->tm_min,
tm->tm_sec);
else if (difftime < ONE_WEEK_SECOND)
snprintf(buf, nbuf, "%dd%02dh%02dm", tm->tm_yday, tm->tm_hour,
tm->tm_min);
else
snprintf(buf, nbuf, "%02dw%dd%02dh", tm->tm_yday / 7,
tm->tm_yday - ((tm->tm_yday / 7) * 7), tm->tm_hour);
return buf;
}
void vty_multiline(struct vty *vty, const char *prefix, const char *format, ...)
{
char shortbuf[256];

View File

@ -80,6 +80,7 @@ enum { ISIS_UI_LEVEL_BRIEF,
#include "lib/log.h"
void log_multiline(int priority, const char *prefix, const char *format, ...)
PRINTFRR(3, 4);
char *log_uptime(time_t uptime, char *buf, size_t nbuf);
struct vty;
void vty_multiline(struct vty *vty, const char *prefix, const char *format, ...)
PRINTFRR(3, 4);

View File

@ -454,6 +454,68 @@ const struct frr_yang_module_info frr_isisd_info = {
.modify = isis_instance_mpls_te_router_address_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/enabled",
.cbs = {
.modify = isis_instance_segment_routing_enabled_modify,
.cli_show = cli_show_isis_sr_enabled,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/srgb",
.cbs = {
.apply_finish = isis_instance_segment_routing_srgb_apply_finish,
.cli_show = cli_show_isis_srgb,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/srgb/lower-bound",
.cbs = {
.modify = isis_instance_segment_routing_srgb_lower_bound_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/srgb/upper-bound",
.cbs = {
.modify = isis_instance_segment_routing_srgb_upper_bound_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/msd/node-msd",
.cbs = {
.modify = isis_instance_segment_routing_msd_node_msd_modify,
.destroy = isis_instance_segment_routing_msd_node_msd_destroy,
.cli_show = cli_show_isis_node_msd,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid",
.cbs = {
.create = isis_instance_segment_routing_prefix_sid_map_prefix_sid_create,
.destroy = isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy,
.pre_validate = isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate,
.apply_finish = isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish,
.cli_show = cli_show_isis_prefix_sid,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value-type",
.cbs = {
.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/sid-value",
.cbs = {
.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid/last-hop-behavior",
.cbs = {
.modify = isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify,
},
},
{
.xpath = "/frr-interface:lib/interface/frr-isisd:isis",
.cbs = {

View File

@ -172,6 +172,28 @@ int lib_interface_isis_ipv4_routing_modify(struct nb_cb_modify_args *args);
int lib_interface_isis_ipv6_routing_modify(struct nb_cb_modify_args *args);
int lib_interface_isis_circuit_type_modify(struct nb_cb_modify_args *args);
int lib_interface_isis_bfd_monitoring_modify(struct nb_cb_modify_args *args);
int isis_instance_segment_routing_enabled_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_enabled_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_srgb_lower_bound_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_srgb_upper_bound_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_msd_node_msd_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_msd_node_msd_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_create(
struct nb_cb_create_args *args);
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy(
struct nb_cb_destroy_args *args);
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify(
struct nb_cb_modify_args *args);
int lib_interface_isis_csnp_interval_level_1_modify(
struct nb_cb_modify_args *args);
int lib_interface_isis_csnp_interval_level_2_modify(
@ -257,6 +279,10 @@ struct yang_data *
lib_interface_isis_event_counters_authentication_fails_get_elem(
struct nb_cb_get_elem_args *args);
/* Optional 'pre_validate' callbacks. */
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate(
struct nb_cb_pre_validate_args *args);
/* Optional 'apply_finish' callbacks. */
void ietf_backoff_delay_apply_finish(struct nb_cb_apply_finish_args *args);
void area_password_apply_finish(struct nb_cb_apply_finish_args *args);
@ -269,6 +295,10 @@ void default_info_origin_ipv6_apply_finish(
void redistribute_apply_finish(const struct lyd_node *dnode, int family);
void redistribute_ipv4_apply_finish(struct nb_cb_apply_finish_args *args);
void redistribute_ipv6_apply_finish(struct nb_cb_apply_finish_args *args);
void isis_instance_segment_routing_srgb_apply_finish(
struct nb_cb_apply_finish_args *args);
void isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish(
struct nb_cb_apply_finish_args *args);
/* Optional 'cli_show' callbacks. */
void cli_show_router_isis(struct vty *vty, struct lyd_node *dnode,
@ -329,6 +359,14 @@ void cli_show_isis_mt_ipv6_mgmt(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_sr_enabled(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_srgb(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_node_msd(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_prefix_sid(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_ip_isis_passive(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_ip_isis_password(struct vty *vty, struct lyd_node *dnode,

View File

@ -1402,6 +1402,289 @@ int isis_instance_mpls_te_router_address_destroy(
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/enabled
*/
int isis_instance_segment_routing_enabled_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->srdb.config.enabled = yang_dnode_get_bool(args->dnode, NULL);
if (area->srdb.config.enabled) {
if (IS_DEBUG_ISIS(DEBUG_EVENTS))
zlog_debug("SR: Segment Routing: OFF -> ON");
if (isis_sr_start(area) == 0)
area->srdb.enabled = true;
} else {
if (IS_DEBUG_ISIS(DEBUG_EVENTS))
zlog_debug("SR: Segment Routing: ON -> OFF");
isis_sr_stop(area);
area->srdb.enabled = false;
}
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/srgb
*/
void isis_instance_segment_routing_srgb_apply_finish(
struct nb_cb_apply_finish_args *args)
{
struct isis_area *area;
uint32_t lower_bound, upper_bound;
int ret;
area = nb_running_get_entry(args->dnode, NULL, true);
lower_bound = yang_dnode_get_uint32(args->dnode, "./lower-bound");
upper_bound = yang_dnode_get_uint32(args->dnode, "./upper-bound");
ret = isis_sr_cfg_srgb_update(area, lower_bound, upper_bound);
if (area->srdb.config.enabled) {
if (ret == 0)
area->srdb.enabled = true;
else {
isis_sr_stop(area);
area->srdb.enabled = false;
}
}
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/srgb/lower-bound
*/
int isis_instance_segment_routing_srgb_lower_bound_modify(
struct nb_cb_modify_args *args)
{
uint32_t lower_bound = yang_dnode_get_uint32(args->dnode, NULL);
switch (args->event) {
case NB_EV_VALIDATE:
if (!IS_MPLS_UNRESERVED_LABEL(lower_bound)) {
zlog_warn("Invalid SRGB lower bound: %" PRIu32,
lower_bound);
return NB_ERR_VALIDATION;
}
break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
case NB_EV_APPLY:
break;
}
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/srgb/upper-bound
*/
int isis_instance_segment_routing_srgb_upper_bound_modify(
struct nb_cb_modify_args *args)
{
uint32_t upper_bound = yang_dnode_get_uint32(args->dnode, NULL);
switch (args->event) {
case NB_EV_VALIDATE:
if (!IS_MPLS_UNRESERVED_LABEL(upper_bound)) {
zlog_warn("Invalid SRGB upper bound: %" PRIu32,
upper_bound);
return NB_ERR_VALIDATION;
}
break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
case NB_EV_APPLY:
break;
}
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/msd/node-msd
*/
int isis_instance_segment_routing_msd_node_msd_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->srdb.config.msd = yang_dnode_get_uint8(args->dnode, NULL);
/* Update and regenerate LSP */
lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
int isis_instance_segment_routing_msd_node_msd_destroy(
struct nb_cb_destroy_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->srdb.config.msd = 0;
/* Update and regenerate LSP */
lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
/*
* XPath: /frr-isisd:isis/instance/segment-routing/prefix-sid-map/prefix-sid
*/
int isis_instance_segment_routing_prefix_sid_map_prefix_sid_create(
struct nb_cb_create_args *args)
{
struct isis_area *area;
struct prefix prefix;
struct sr_prefix_cfg *pcfg;
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");
pcfg = isis_sr_cfg_prefix_add(area, &prefix);
nb_running_set_entry(args->dnode, pcfg);
return NB_OK;
}
int isis_instance_segment_routing_prefix_sid_map_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_prefix_sid_map_prefix_sid_pre_validate(
struct nb_cb_pre_validate_args *args)
{
uint32_t srgb_lbound;
uint32_t srgb_ubound;
uint32_t srgb_range;
uint32_t sid;
enum sr_sid_value_type sid_type;
srgb_lbound = yang_dnode_get_uint32(args->dnode,
"../../srgb/lower-bound");
srgb_ubound = yang_dnode_get_uint32(args->dnode,
"../../srgb/upper-bound");
sid = yang_dnode_get_uint32(args->dnode, "./sid-value");
sid_type = yang_dnode_get_enum(args->dnode, "./sid-value-type");
srgb_range = srgb_ubound - srgb_lbound + 1;
switch (sid_type) {
case SR_SID_VALUE_TYPE_INDEX:
if (sid >= srgb_range) {
zlog_warn("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)) {
zlog_warn("Invalid absolute SID %u", sid);
return NB_ERR_VALIDATION;
}
break;
}
return NB_OK;
}
void isis_instance_segment_routing_prefix_sid_map_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/prefix-sid-map/prefix-sid/sid-value-type
*/
int isis_instance_segment_routing_prefix_sid_map_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/prefix-sid-map/prefix-sid/sid-value
*/
int isis_instance_segment_routing_prefix_sid_map_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/prefix-sid-map/prefix-sid/last-hop-behavior
*/
int isis_instance_segment_routing_prefix_sid_map_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-interface:lib/interface/frr-isisd:isis
*/

View File

@ -65,32 +65,19 @@ static struct isis_nexthop *isis_nexthop_create(int family, union g_addr *ip,
{
struct isis_nexthop *nexthop;
nexthop = nexthoplookup(isis->nexthops, family, ip, ifindex);
if (nexthop) {
nexthop->lock++;
return nexthop;
}
nexthop = XCALLOC(MTYPE_ISIS_NEXTHOP, sizeof(struct isis_nexthop));
nexthop->family = family;
nexthop->ifindex = ifindex;
nexthop->ip = *ip;
listnode_add(isis->nexthops, nexthop);
nexthop->lock++;
isis_sr_nexthop_reset(&nexthop->sr);
return nexthop;
}
static void isis_nexthop_delete(struct isis_nexthop *nexthop)
{
nexthop->lock--;
if (nexthop->lock == 0) {
listnode_delete(isis->nexthops, nexthop);
XFREE(MTYPE_ISIS_NEXTHOP, nexthop);
}
return;
XFREE(MTYPE_ISIS_NEXTHOP, nexthop);
}
static struct isis_nexthop *nexthoplookup(struct list *nexthops, int family,
@ -143,6 +130,7 @@ static void adjinfo2nexthop(int family, struct list *nexthops,
nh = isis_nexthop_create(
AF_INET, &ip,
adj->circuit->interface->ifindex);
memcpy(nh->sysid, adj->sysid, sizeof(nh->sysid));
listnode_add(nexthops, nh);
break;
}
@ -157,6 +145,7 @@ static void adjinfo2nexthop(int family, struct list *nexthops,
nh = isis_nexthop_create(
AF_INET6, &ip,
adj->circuit->interface->ifindex);
memcpy(nh->sysid, adj->sysid, sizeof(nh->sysid));
listnode_add(nexthops, nh);
break;
}

View File

@ -31,7 +31,8 @@ struct isis_nexthop {
ifindex_t ifindex;
int family;
union g_addr ip;
unsigned int lock;
uint8_t sysid[ISIS_SYS_ID_LEN];
struct sr_nexthop_info sr;
};
struct isis_route_info {

View File

@ -1214,6 +1214,8 @@ static int isis_run_spf_cb(struct thread *thread)
isis_area_verify_routes(area);
isis_area_verify_sr(area);
/* walk all circuits and reset any spf specific flags */
struct listnode *node;
struct isis_circuit *circuit;

1970
isisd/isis_sr.c Normal file

File diff suppressed because it is too large Load Diff

262
isisd/isis_sr.h Normal file
View File

@ -0,0 +1,262 @@
/*
* This is an implementation of Segment Routing for IS-IS as per RFC 8667
*
* Copyright (C) 2019 Orange http://www.orange.com
*
* Author: Olivier Dugeon <olivier.dugeon@orange.com>
* Contributor: Renato Westphal <renato@opensourcerouting.org> for NetDEF
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; see the file COPYING; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _FRR_ISIS_SR_H
#define _FRR_ISIS_SR_H
#include "lib/linklist.h"
#include "lib/mpls.h"
#include "lib/nexthop.h"
#include "lib/typesafe.h"
#include "isisd/isis_tlvs.h"
/*
* Segment Routing information is transported through the following Sub-TLVs:
*
* Sub-TLV Name Value TLVs
* ---------------------------------------------------------------------
* SID Label 1
*
* Prefix Segment Identifier 3 135, 235, 236 and 237
*
* Adjacency Segment Identifier 31 22, 23, 141, 222 and 223
* LAN Adjacency Segment Identifier 32 22, 23, 141, 222 and 223
*
* Segment Routing Capability 2 242
* Segment Routing Algorithm 19 242
* Node Maximum Stack Depth (MSD) 23 242
*
* Sub-TLV definitions, serialization and de-serialization are defined
* in isis_tlvs.[c,h].
*/
#define SRGB_LOWER_BOUND 16000
#define SRGB_UPPER_BOUND 23999
/* Segment Routing Data Base (SRDB) RB-Tree structure */
PREDECL_RBTREE_UNIQ(srdb_node)
PREDECL_RBTREE_UNIQ(srdb_node_prefix)
PREDECL_RBTREE_UNIQ(srdb_area_prefix)
PREDECL_RBTREE_UNIQ(srdb_prefix_cfg)
/* Segment Routing Adjacency-SID type. */
enum sr_adj_type {
ISIS_SR_ADJ_NORMAL = 0,
ISIS_SR_LAN_BACKUP,
};
/* Segment Routing Adjacency. */
struct sr_adjacency {
/* Adjacency type. */
enum sr_adj_type type;
/* Adjacency-SID nexthop information. */
struct {
int family;
union g_addr address;
mpls_label_t label;
} nexthop;
/* (LAN-)Adjacency-SID Sub-TLV. */
union {
struct isis_adj_sid *adj_sid;
struct isis_lan_adj_sid *ladj_sid;
} u;
/* Back pointer to IS-IS adjacency. */
struct isis_adjacency *adj;
};
/* Segment Routing Prefix-SID type. */
enum sr_prefix_type {
ISIS_SR_PREFIX_LOCAL = 0,
ISIS_SR_PREFIX_REMOTE,
};
/* Segment Routing Nexthop Information. */
struct sr_nexthop_info {
mpls_label_t label;
time_t uptime;
};
/* State of Object (SR-Node and SR-Prefix) stored in SRDB */
enum srdb_state {
SRDB_STATE_VALIDATED = 0,
SRDB_STATE_NEW,
SRDB_STATE_MODIFIED,
SRDB_STATE_UNCHANGED
};
/* Segment Routing Prefix-SID. */
struct sr_prefix {
/* SRDB RB-tree entries. */
struct srdb_node_prefix_item node_entry;
struct srdb_area_prefix_item area_entry;
/* IP prefix. */
struct prefix prefix;
/* SID value, algorithm and flags subTLVs. */
struct isis_prefix_sid sid;
/* Input label value. */
mpls_label_t input_label;
/* Prefix-SID type. */
enum sr_prefix_type type;
union {
struct {
/* Information about this local Prefix-SID. */
struct sr_nexthop_info info;
} local;
struct {
/* Route associated to this remote Prefix-SID. */
struct isis_route_info *rinfo;
} remote;
} u;
/* Backpointer to Segment Routing node. */
struct sr_node *srn;
/* SR-Prefix State used while the LSPDB is being parsed. */
enum srdb_state state;
};
/* Segment Routing node. */
struct sr_node {
/* SRDB RB-tree entry. */
struct srdb_node_item entry;
/* IS-IS level: ISIS_LEVEL1 or ISIS_LEVEL2. */
int level;
/* IS-IS node identifier. */
uint8_t sysid[ISIS_SYS_ID_LEN];
/* Segment Routing node capabilities (SRGB, SR Algorithms) subTLVs. */
struct isis_router_cap cap;
/* List of Prefix-SIDs advertised by this node. */
struct srdb_node_prefix_head prefix_sids;
/* Backpointer to IS-IS area. */
struct isis_area *area;
/* SR-Node State used while the LSPDB is being parsed. */
enum srdb_state state;
};
/* SID type. NOTE: these values must be in sync with the YANG module. */
enum sr_sid_value_type {
SR_SID_VALUE_TYPE_INDEX = 0,
SR_SID_VALUE_TYPE_ABSOLUTE = 1,
};
#define IS_SID_VALUE(flag) CHECK_FLAG(flag, ISIS_PREFIX_SID_VALUE)
/* Last Hop Behavior. NOTE: these values must be in sync with the YANG module */
enum sr_last_hop_behavior {
SR_LAST_HOP_BEHAVIOR_EXP_NULL = 0,
SR_LAST_HOP_BEHAVIOR_NO_PHP = 1,
SR_LAST_HOP_BEHAVIOR_PHP = 2,
};
/* Segment Routing Prefix-SID configuration. */
struct sr_prefix_cfg {
/* SRDB RB-tree entry. */
struct srdb_prefix_cfg_item entry;
/* IP prefix. */
struct prefix prefix;
/* SID value. */
uint32_t sid;
/* SID value type. */
enum sr_sid_value_type sid_type;
/* SID last hop behavior. */
enum sr_last_hop_behavior last_hop_behavior;
/* Does this Prefix-SID refer to a loopback address (Node-SID)? */
bool node_sid;
/* Backpointer to IS-IS area. */
struct isis_area *area;
};
/* Per-area IS-IS Segment Routing Data Base (SRDB). */
struct isis_sr_db {
/* Global Operational status of Segment Routing. */
bool enabled;
/* List of local Adjacency-SIDs. */
struct list *adj_sids;
/* Segment Routing Node information per IS-IS level. */
struct srdb_node_head sr_nodes[ISIS_LEVELS];
/* Segment Routing Prefix-SIDs per IS-IS level. */
struct srdb_area_prefix_head prefix_sids[ISIS_LEVELS];
/* Area Segment Routing configuration. */
struct {
/* Administrative status of Segment Routing. */
bool enabled;
/* Segment Routing Global Block lower & upper bound. */
uint32_t srgb_lower_bound;
uint32_t srgb_upper_bound;
/* Maximum SID Depth supported by the node. */
uint8_t msd;
/* Prefix-SID mappings. */
struct srdb_prefix_cfg_head prefix_sids;
} config;
};
/* Prototypes. */
extern int isis_sr_cfg_srgb_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 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);
extern void isis_sr_prefix_cfg2subtlv(const struct sr_prefix_cfg *pcfg,
bool external,
struct isis_prefix_sid *psid);
extern void isis_sr_nexthop_update(struct sr_nexthop_info *srnh,
mpls_label_t label);
extern void isis_sr_nexthop_reset(struct sr_nexthop_info *srnh);
extern void isis_area_verify_sr(struct isis_area *area);
extern int isis_sr_start(struct isis_area *area);
extern void isis_sr_stop(struct isis_area *area);
extern void isis_sr_area_init(struct isis_area *area);
extern void isis_sr_area_term(struct isis_area *area);
extern void isis_sr_init(void);
extern void isis_sr_term(void);
#endif /* _FRR_ISIS_SR_H */

View File

@ -43,9 +43,10 @@
#include "isisd/isis_pdu.h"
#include "isisd/isis_lsp.h"
#include "isisd/isis_te.h"
#include "isisd/isis_sr.h"
DEFINE_MTYPE_STATIC(ISISD, ISIS_TLV, "ISIS TLVs")
DEFINE_MTYPE_STATIC(ISISD, ISIS_SUBTLV, "ISIS Sub-TLVs")
DEFINE_MTYPE(ISISD, ISIS_SUBTLV, "ISIS Sub-TLVs")
DEFINE_MTYPE_STATIC(ISISD, ISIS_MT_ITEM_LIST, "ISIS MT Item Lists")
typedef int (*unpack_tlv_func)(enum isis_tlv_context context, uint8_t tlv_type,
@ -283,7 +284,7 @@ static void format_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
sbuf_push(buf, indent,
"Unidir. Utilized Bandwidth: %g (Bytes/sec)\n",
exts->use_bw);
/* Segment Routing Adjacency */
/* Segment Routing Adjacency as per RFC8667 section #2.2.1 */
if (IS_SUBTLV(exts, EXT_ADJ_SID)) {
struct isis_adj_sid *adj;
@ -314,6 +315,7 @@ static void format_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
: '0');
}
}
/* Segment Routing LAN-Adjacency as per RFC8667 section #2.2.2 */
if (IS_SUBTLV(exts, EXT_LAN_ADJ_SID)) {
struct isis_lan_adj_sid *lan;
@ -475,6 +477,7 @@ static int pack_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
stream_putc(s, ISIS_SUBTLV_DEF_SIZE);
stream_putf(s, exts->use_bw);
}
/* Segment Routing Adjacency as per RFC8667 section #2.2.1 */
if (IS_SUBTLV(exts, EXT_ADJ_SID)) {
struct isis_adj_sid *adj;
@ -494,6 +497,7 @@ static int pack_item_ext_subtlvs(struct isis_ext_subtlvs *exts,
}
}
/* Segment Routing LAN-Adjacency as per RFC8667 section #2.2.2 */
if (IS_SUBTLV(exts, EXT_LAN_ADJ_SID)) {
struct isis_lan_adj_sid *lan;
@ -720,7 +724,7 @@ static int unpack_item_ext_subtlvs(uint16_t mtid, uint8_t len, struct stream *s,
SET_SUBTLV(exts, EXT_USE_BW);
}
break;
/* Segment Routing Adjacency */
/* Segment Routing Adjacency as per RFC8667 section #2.2.1 */
case ISIS_SUBTLV_ADJ_SID:
if (subtlv_len != ISIS_SUBTLV_ADJ_SID_SIZE
&& subtlv_len != ISIS_SUBTLV_ADJ_SID_SIZE + 1) {
@ -748,6 +752,7 @@ static int unpack_item_ext_subtlvs(uint16_t mtid, uint8_t len, struct stream *s,
SET_SUBTLV(exts, EXT_ADJ_SID);
}
break;
/* Segment Routing LAN-Adjacency as per RFC8667 section 2.2.2 */
case ISIS_SUBTLV_LAN_ADJ_SID:
if (subtlv_len != ISIS_SUBTLV_LAN_ADJ_SID_SIZE
&& subtlv_len != ISIS_SUBTLV_LAN_ADJ_SID_SIZE + 1) {
@ -788,7 +793,7 @@ static int unpack_item_ext_subtlvs(uint16_t mtid, uint8_t len, struct stream *s,
return 0;
}
/* Functions for Sub-TLV 3 SR Prefix-SID */
/* Functions for Sub-TLV 3 SR Prefix-SID as per RFC8667 section 2.1 */
static struct isis_item *copy_item_prefix_sid(struct isis_item *i)
{
struct isis_prefix_sid *sid = (struct isis_prefix_sid *)i;
@ -887,7 +892,11 @@ static int unpack_item_prefix_sid(uint16_t mtid, uint8_t len, struct stream *s,
if (sid.flags & ISIS_PREFIX_SID_VALUE) {
sid.value = stream_get3(s);
sid.value &= MPLS_LABEL_VALUE_MASK;
if (!IS_MPLS_UNRESERVED_LABEL(sid.value)) {
sbuf_push(log, indent, "Invalid absolute SID %u\n",
sid.value);
return 1;
}
} else {
sid.value = stream_getl(s);
}
@ -2580,7 +2589,7 @@ out:
return 1;
}
/* Functions related to TLV 242 Router Capability */
/* Functions related to TLV 242 Router Capability as per RFC7981 */
static struct isis_router_cap *copy_tlv_router_cap(
const struct isis_router_cap *router_cap)
{
@ -2609,7 +2618,7 @@ static void format_tlv_router_cap(const struct isis_router_cap *router_cap,
router_cap->flags & ISIS_ROUTER_CAP_FLAG_D ? '1' : '0',
router_cap->flags & ISIS_ROUTER_CAP_FLAG_S ? '1' : '0');
/* SR Global Block */
/* Segment Routing Global Block as per RFC8667 section #3.1 */
if (router_cap->srgb.range_size != 0)
sbuf_push(buf, indent,
" Segment Routing: I:%s V:%s, SRGB Base: %d Range: %d\n",
@ -2618,12 +2627,12 @@ static void format_tlv_router_cap(const struct isis_router_cap *router_cap,
router_cap->srgb.lower_bound,
router_cap->srgb.range_size);
/* SR Algorithms */
/* Segment Routing Algorithms as per RFC8667 section #3.2 */
if (router_cap->algo[0] != SR_ALGORITHM_UNSET) {
sbuf_push(buf, indent, " Algorithm: %s",
router_cap->algo[0] == 0 ? "0: SPF"
: "0: Strict SPF");
for (int i = 0; i < SR_ALGORITHM_COUNT; i++)
for (int i = 1; i < SR_ALGORITHM_COUNT; i++)
if (router_cap->algo[i] != SR_ALGORITHM_UNSET)
sbuf_push(buf, indent, " %s",
router_cap->algo[1] == 0
@ -2632,7 +2641,7 @@ static void format_tlv_router_cap(const struct isis_router_cap *router_cap,
sbuf_push(buf, indent, "\n");
}
/* SR Node MSSD */
/* Segment Routing Node MSD as per RFC8491 section #2 */
if (router_cap->msd != 0)
sbuf_push(buf, indent, " Node MSD: %d\n", router_cap->msd);
}
@ -2669,7 +2678,7 @@ static int pack_tlv_router_cap(const struct isis_router_cap *router_cap,
stream_put_ipv4(s, router_cap->router_id.s_addr);
stream_putc(s, router_cap->flags);
/* Add SRGB if set */
/* Add SRGB if set as per RFC8667 section #3.1 */
if ((router_cap->srgb.range_size != 0)
&& (router_cap->srgb.lower_bound != 0)) {
stream_putc(s, ISIS_SUBTLV_SID_LABEL_RANGE);
@ -2680,7 +2689,7 @@ static int pack_tlv_router_cap(const struct isis_router_cap *router_cap,
stream_putc(s, ISIS_SUBTLV_SID_LABEL_SIZE);
stream_put3(s, router_cap->srgb.lower_bound);
/* Then SR Algorithm if set */
/* Then SR Algorithm if set as per RFC8667 section #3.2 */
for (nb_algo = 0; nb_algo < SR_ALGORITHM_COUNT; nb_algo++)
if (router_cap->algo[nb_algo] == SR_ALGORITHM_UNSET)
break;
@ -2690,7 +2699,7 @@ static int pack_tlv_router_cap(const struct isis_router_cap *router_cap,
for (int i = 0; i < nb_algo; i++)
stream_putc(s, router_cap->algo[i]);
}
/* And finish with MSD if set */
/* And finish with MSD if set as per RFC8491 section #2 */
if (router_cap->msd != 0) {
stream_putc(s, ISIS_SUBTLV_NODE_MSD);
stream_putc(s, ISIS_SUBTLV_NODE_MSD_SIZE);
@ -4413,10 +4422,22 @@ static void tlvs_protocols_supported_to_adj(struct isis_tlvs *tlvs,
memcpy(adj->nlpids.nlpids, reduced.nlpids, reduced.count);
}
DEFINE_HOOK(isis_adj_ip_enabled_hook, (struct isis_adjacency *adj, int family),
(adj, family))
DEFINE_HOOK(isis_adj_ip_disabled_hook,
(struct isis_adjacency *adj, int family), (adj, family))
static void tlvs_ipv4_addresses_to_adj(struct isis_tlvs *tlvs,
struct isis_adjacency *adj,
bool *changed)
{
bool ipv4_enabled = false;
if (adj->ipv4_address_count == 0 && tlvs->ipv4_address.count > 0)
ipv4_enabled = true;
else if (adj->ipv4_address_count > 0 && tlvs->ipv4_address.count == 0)
hook_call(isis_adj_ip_disabled_hook, adj, AF_INET);
if (adj->ipv4_address_count != tlvs->ipv4_address.count) {
*changed = true;
adj->ipv4_address_count = tlvs->ipv4_address.count;
@ -4440,12 +4461,22 @@ static void tlvs_ipv4_addresses_to_adj(struct isis_tlvs *tlvs,
*changed = true;
adj->ipv4_addresses[i] = addr->addr;
}
if (ipv4_enabled)
hook_call(isis_adj_ip_enabled_hook, adj, AF_INET);
}
static void tlvs_ipv6_addresses_to_adj(struct isis_tlvs *tlvs,
struct isis_adjacency *adj,
bool *changed)
{
bool ipv6_enabled = false;
if (adj->ipv6_address_count == 0 && tlvs->ipv6_address.count > 0)
ipv6_enabled = true;
else if (adj->ipv6_address_count > 0 && tlvs->ipv6_address.count == 0)
hook_call(isis_adj_ip_disabled_hook, adj, AF_INET6);
if (adj->ipv6_address_count != tlvs->ipv6_address.count) {
*changed = true;
adj->ipv6_address_count = tlvs->ipv6_address.count;
@ -4469,6 +4500,9 @@ static void tlvs_ipv6_addresses_to_adj(struct isis_tlvs *tlvs,
*changed = true;
adj->ipv6_addresses[i] = addr->addr;
}
if (ipv6_enabled)
hook_call(isis_adj_ip_enabled_hook, adj, AF_INET6);
}
void isis_tlvs_to_adj(struct isis_tlvs *tlvs, struct isis_adjacency *adj,
@ -4572,6 +4606,7 @@ void isis_tlvs_add_oldstyle_ip_reach(struct isis_tlvs *tlvs,
append_item(&tlvs->oldstyle_ip_reach, (struct isis_item *)r);
}
/* Add IS-IS SR Adjacency-SID subTLVs */
void isis_tlvs_add_adj_sid(struct isis_ext_subtlvs *exts,
struct isis_adj_sid *adj)
{
@ -4579,6 +4614,7 @@ void isis_tlvs_add_adj_sid(struct isis_ext_subtlvs *exts,
SET_SUBTLV(exts, EXT_ADJ_SID);
}
/* Delete IS-IS SR Adjacency-SID subTLVs */
void isis_tlvs_del_adj_sid(struct isis_ext_subtlvs *exts,
struct isis_adj_sid *adj)
{
@ -4588,6 +4624,7 @@ void isis_tlvs_del_adj_sid(struct isis_ext_subtlvs *exts,
UNSET_SUBTLV(exts, EXT_ADJ_SID);
}
/* Add IS-IS SR LAN-Adjacency-SID subTLVs */
void isis_tlvs_add_lan_adj_sid(struct isis_ext_subtlvs *exts,
struct isis_lan_adj_sid *lan)
{
@ -4595,6 +4632,7 @@ void isis_tlvs_add_lan_adj_sid(struct isis_ext_subtlvs *exts,
SET_SUBTLV(exts, EXT_LAN_ADJ_SID);
}
/* Delete IS-IS SR LAN-Adjacency-SID subTLVs */
void isis_tlvs_del_lan_adj_sid(struct isis_ext_subtlvs *exts,
struct isis_lan_adj_sid *lan)
{
@ -4605,24 +4643,42 @@ void isis_tlvs_del_lan_adj_sid(struct isis_ext_subtlvs *exts,
}
void isis_tlvs_add_extended_ip_reach(struct isis_tlvs *tlvs,
struct prefix_ipv4 *dest, uint32_t metric)
struct prefix_ipv4 *dest, uint32_t metric,
bool external, struct sr_prefix_cfg *pcfg)
{
struct isis_extended_ip_reach *r = XCALLOC(MTYPE_ISIS_TLV, sizeof(*r));
r->metric = metric;
memcpy(&r->prefix, dest, sizeof(*dest));
apply_mask_ipv4(&r->prefix);
if (pcfg) {
struct isis_prefix_sid *psid =
XCALLOC(MTYPE_ISIS_SUBTLV, sizeof(*psid));
isis_sr_prefix_cfg2subtlv(pcfg, external, psid);
r->subtlvs = isis_alloc_subtlvs(ISIS_CONTEXT_SUBTLV_IP_REACH);
append_item(&r->subtlvs->prefix_sids, (struct isis_item *)psid);
}
append_item(&tlvs->extended_ip_reach, (struct isis_item *)r);
}
void isis_tlvs_add_ipv6_reach(struct isis_tlvs *tlvs, uint16_t mtid,
struct prefix_ipv6 *dest, uint32_t metric)
struct prefix_ipv6 *dest, uint32_t metric,
bool external, struct sr_prefix_cfg *pcfg)
{
struct isis_ipv6_reach *r = XCALLOC(MTYPE_ISIS_TLV, sizeof(*r));
r->metric = metric;
memcpy(&r->prefix, dest, sizeof(*dest));
apply_mask_ipv6(&r->prefix);
if (pcfg) {
struct isis_prefix_sid *psid =
XCALLOC(MTYPE_ISIS_SUBTLV, sizeof(*psid));
isis_sr_prefix_cfg2subtlv(pcfg, external, psid);
r->subtlvs = isis_alloc_subtlvs(ISIS_CONTEXT_SUBTLV_IP_REACH);
append_item(&r->subtlvs->prefix_sids, (struct isis_item *)psid);
}
struct isis_item_list *l;
l = (mtid == ISIS_MT_IPV4_UNICAST)
@ -4636,7 +4692,7 @@ void isis_tlvs_add_ipv6_dstsrc_reach(struct isis_tlvs *tlvs, uint16_t mtid,
struct prefix_ipv6 *src,
uint32_t metric)
{
isis_tlvs_add_ipv6_reach(tlvs, mtid, dest, metric);
isis_tlvs_add_ipv6_reach(tlvs, mtid, dest, metric, false, NULL);
struct isis_item_list *l = isis_get_mt_items(&tlvs->mt_ipv6_reach,
mtid);

View File

@ -28,8 +28,11 @@
#include "openbsd-tree.h"
#include "prefix.h"
DECLARE_MTYPE(ISIS_SUBTLV)
struct lspdb_head;
struct isis_subtlvs;
struct sr_prefix_cfg;
struct isis_area_address;
struct isis_area_address {
@ -132,10 +135,7 @@ struct isis_threeway_adj {
uint32_t neighbor_circuit_id;
};
/*
* Segment Routing subTLV's as per
* draft-ietf-isis-segment-routing-extension-25
*/
/* Segment Routing subTLV's as per RFC8667 */
#define ISIS_SUBTLV_SRGB_FLAG_I 0x80
#define ISIS_SUBTLV_SRGB_FLAG_V 0x40
#define IS_SR_IPV4(srgb) (srgb.flags & ISIS_SUBTLV_SRGB_FLAG_I)
@ -213,7 +213,7 @@ struct isis_router_cap {
struct in_addr router_id;
uint8_t flags;
/* draft-ietf-segment-routing-extensions-25 */
/* RFC 8667 section #3 */
struct isis_srgb srgb;
uint8_t algo[SR_ALGORITHM_COUNT];
/* RFC 8491 */
@ -341,7 +341,7 @@ struct isis_subtlvs {
/* draft-baker-ipv6-isis-dst-src-routing-06 */
struct prefix_ipv6 *source_prefix;
/* draft-ietf-isis-segment-routing-extensions-25 */
/* RFC 8667 section #2.4 */
struct isis_item_list prefix_sids;
};
@ -391,15 +391,17 @@ enum isis_tlv_type {
/* RFC 5307 */
ISIS_SUBTLV_LLRI = 4,
/* RFC 8491 */
ISIS_SUBTLV_NODE_MSD = 23,
/* RFC 5316 */
ISIS_SUBTLV_RAS = 24,
ISIS_SUBTLV_RIP = 25,
/* draft-isis-segment-routing-extension-25 */
/* RFC 8667 section #2 */
ISIS_SUBTLV_SID_LABEL = 1,
ISIS_SUBTLV_SID_LABEL_RANGE = 2,
ISIS_SUBTLV_ALGORITHM = 19,
ISIS_SUBTLV_NODE_MSD = 23,
ISIS_SUBTLV_PREFIX_SID = 3,
ISIS_SUBTLV_ADJ_SID = 31,
ISIS_SUBTLV_LAN_ADJ_SID = 32,
@ -418,21 +420,26 @@ enum isis_tlv_type {
/* subTLVs size for TE and SR */
enum ext_subtlv_size {
/* RFC 5307 */
ISIS_SUBTLV_LLRI_SIZE = 8,
/* RFC 5305 & RFC 6119 */
ISIS_SUBTLV_UNRSV_BW_SIZE = 32,
ISIS_SUBTLV_TE_METRIC_SIZE = 3,
ISIS_SUBTLV_IPV6_ADDR_SIZE = 16,
/* draft-isis-segment-routing-extension-25 */
/* RFC 8491 */
ISIS_SUBTLV_NODE_MSD_SIZE = 2,
/* RFC 8667 section #2 */
ISIS_SUBTLV_SID_LABEL_SIZE = 3,
ISIS_SUBTLV_SID_LABEL_RANGE_SIZE = 9,
ISIS_SUBTLV_ALGORITHM_SIZE = 4,
ISIS_SUBTLV_NODE_MSD_SIZE = 2,
ISIS_SUBTLV_ADJ_SID_SIZE = 5,
ISIS_SUBTLV_LAN_ADJ_SID_SIZE = 11,
ISIS_SUBTLV_PREFIX_SID_SIZE = 5,
/* RFC 7810 */
ISIS_SUBTLV_MM_DELAY_SIZE = 8,
ISIS_SUBTLV_HDR_SIZE = 2,
@ -580,9 +587,11 @@ void isis_tlvs_set_te_router_id(struct isis_tlvs *tlvs,
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);
struct prefix_ipv4 *dest, uint32_t metric,
bool external, struct sr_prefix_cfg *pcfg);
void isis_tlvs_add_ipv6_reach(struct isis_tlvs *tlvs, uint16_t mtid,
struct prefix_ipv6 *dest, uint32_t metric);
struct prefix_ipv6 *dest, uint32_t metric,
bool external, struct sr_prefix_cfg *pcfg);
void isis_tlvs_add_ipv6_dstsrc_reach(struct isis_tlvs *tlvs, uint16_t mtid,
struct prefix_ipv6 *dest,
struct prefix_ipv6 *src,

View File

@ -49,9 +49,18 @@
#include "isisd/isis_lsp.h"
#include "isisd/isis_route.h"
#include "isisd/isis_zebra.h"
#include "isisd/isis_adjacency.h"
#include "isisd/isis_te.h"
#include "isisd/isis_sr.h"
struct zclient *zclient = NULL;
struct zclient *zclient;
static struct zclient *zclient_sync;
/* List of chunks of labels externally assigned by zebra. */
static struct list *label_chunk_list;
static struct listnode *current_label_chunk;
static void isis_zebra_label_manager_connect(void);
/* Router-id update message from zebra. */
static int isis_router_id_update_zebra(ZAPI_CALLBACK_ARGS)
@ -245,6 +254,160 @@ void isis_zebra_route_del_route(struct prefix *prefix,
zclient_route_send(ZEBRA_ROUTE_DELETE, zclient, &api);
}
/**
* Install Prefix-SID in the forwarding plane through Zebra.
*
* @param srp Segment Routing Prefix-SID
*/
static void isis_zebra_prefix_install_prefix_sid(const struct sr_prefix *srp)
{
struct zapi_labels zl;
struct zapi_nexthop *znh;
struct listnode *node;
struct isis_nexthop *nexthop;
struct interface *ifp;
/* Prepare message. */
memset(&zl, 0, sizeof(zl));
zl.type = ZEBRA_LSP_ISIS_SR;
zl.local_label = srp->input_label;
switch (srp->type) {
case ISIS_SR_PREFIX_LOCAL:
ifp = if_lookup_by_name("lo", VRF_DEFAULT);
if (!ifp) {
zlog_warn(
"%s: couldn't install Prefix-SID %pFX: loopback interface not found",
__func__, &srp->prefix);
return;
}
znh = &zl.nexthops[zl.nexthop_num++];
znh->type = NEXTHOP_TYPE_IFINDEX;
znh->ifindex = ifp->ifindex;
znh->label_num = 1;
znh->labels[0] = MPLS_LABEL_IMPLICIT_NULL;
break;
case ISIS_SR_PREFIX_REMOTE:
/* Update route in the RIB too. */
SET_FLAG(zl.message, ZAPI_LABELS_FTN);
zl.route.prefix = srp->prefix;
zl.route.type = ZEBRA_ROUTE_ISIS;
zl.route.instance = 0;
for (ALL_LIST_ELEMENTS_RO(srp->u.remote.rinfo->nexthops, node,
nexthop)) {
if (nexthop->sr.label == MPLS_INVALID_LABEL)
continue;
if (zl.nexthop_num >= MULTIPATH_NUM)
break;
znh = &zl.nexthops[zl.nexthop_num++];
znh->type = (srp->prefix.family == AF_INET)
? NEXTHOP_TYPE_IPV4_IFINDEX
: NEXTHOP_TYPE_IPV6_IFINDEX;
znh->gate = nexthop->ip;
znh->ifindex = nexthop->ifindex;
znh->label_num = 1;
znh->labels[0] = nexthop->sr.label;
}
break;
}
/* Send message to zebra. */
(void)zebra_send_mpls_labels(zclient, ZEBRA_MPLS_LABELS_REPLACE, &zl);
}
/**
* Uninstall Prefix-SID from the forwarding plane through Zebra.
*
* @param srp Segment Routing Prefix-SID
*/
static void isis_zebra_uninstall_prefix_sid(const struct sr_prefix *srp)
{
struct zapi_labels zl;
/* Prepare message. */
memset(&zl, 0, sizeof(zl));
zl.type = ZEBRA_LSP_ISIS_SR;
zl.local_label = srp->input_label;
if (srp->type == ISIS_SR_PREFIX_REMOTE) {
/* Update route in the RIB too. */
SET_FLAG(zl.message, ZAPI_LABELS_FTN);
zl.route.prefix = srp->prefix;
zl.route.type = ZEBRA_ROUTE_ISIS;
zl.route.instance = 0;
}
/* Send message to zebra. */
(void)zebra_send_mpls_labels(zclient, ZEBRA_MPLS_LABELS_DELETE, &zl);
}
/**
* Send Prefix-SID to ZEBRA for installation or deletion.
*
* @param cmd ZEBRA_MPLS_LABELS_REPLACE or ZEBRA_ROUTE_DELETE
* @param srp Segment Routing Prefix-SID
*/
void isis_zebra_send_prefix_sid(int cmd, const struct sr_prefix *srp)
{
if (cmd != ZEBRA_MPLS_LABELS_REPLACE
&& cmd != ZEBRA_MPLS_LABELS_DELETE) {
flog_warn(EC_LIB_DEVELOPMENT, "%s: wrong ZEBRA command",
__func__);
return;
}
sr_debug(" |- %s label %u for prefix %pFX",
cmd == ZEBRA_MPLS_LABELS_REPLACE ? "Update" : "Delete",
srp->input_label, &srp->prefix);
if (cmd == ZEBRA_MPLS_LABELS_REPLACE)
isis_zebra_prefix_install_prefix_sid(srp);
else
isis_zebra_uninstall_prefix_sid(srp);
}
/**
* Send (LAN)-Adjacency-SID to ZEBRA for installation or deletion.
*
* @param cmd ZEBRA_MPLS_LABELS_ADD or ZEBRA_ROUTE_DELETE
* @param sra Segment Routing Adjacency-SID
*/
void isis_zebra_send_adjacency_sid(int cmd, const struct sr_adjacency *sra)
{
struct zapi_labels zl;
struct zapi_nexthop *znh;
if (cmd != ZEBRA_MPLS_LABELS_ADD && cmd != ZEBRA_MPLS_LABELS_DELETE) {
flog_warn(EC_LIB_DEVELOPMENT, "%s: wrong ZEBRA command",
__func__);
return;
}
sr_debug(" |- %s label %u for interface %s",
cmd == ZEBRA_MPLS_LABELS_ADD ? "Add" : "Delete",
sra->nexthop.label, sra->adj->circuit->interface->name);
memset(&zl, 0, sizeof(zl));
zl.type = ZEBRA_LSP_ISIS_SR;
zl.local_label = sra->nexthop.label;
zl.nexthop_num = 1;
znh = &zl.nexthops[0];
znh->gate = sra->nexthop.address;
znh->type = (sra->nexthop.family == AF_INET)
? NEXTHOP_TYPE_IPV4_IFINDEX
: NEXTHOP_TYPE_IPV6_IFINDEX;
znh->ifindex = sra->adj->circuit->interface->ifindex;
znh->label_num = 1;
znh->labels[0] = MPLS_LABEL_IMPLICIT_NULL;
(void)zebra_send_mpls_labels(zclient, cmd, &zl);
}
static int isis_zebra_read(ZAPI_CALLBACK_ARGS)
{
struct zapi_route api;
@ -302,13 +465,250 @@ void isis_zebra_redistribute_unset(afi_t afi, int type)
type, 0, VRF_DEFAULT);
}
/* Label Manager Functions */
/**
* Request Label Range to the Label Manager.
*
* @param base base label of the label range to request
* @param chunk_size size of the label range to request
*
* @return 0 on success, -1 on failure
*/
int isis_zebra_request_label_range(uint32_t base, uint32_t chunk_size)
{
int ret;
uint32_t start, end;
if (zclient_sync->sock == -1)
isis_zebra_label_manager_connect();
ret = lm_get_label_chunk(zclient_sync, 0, base, chunk_size, &start,
&end);
if (ret < 0) {
zlog_warn("%s: error getting label range!", __func__);
return -1;
}
return 0;
}
/**
* Release Label Range to the Label Manager.
*
* @param start start of label range to release
* @param end end of label range to release
*/
void isis_zebra_release_label_range(uint32_t start, uint32_t end)
{
int ret;
if (zclient_sync->sock == -1)
isis_zebra_label_manager_connect();
ret = lm_release_label_chunk(zclient_sync, start, end);
if (ret < 0)
zlog_warn("%s: error releasing label range!", __func__);
}
/**
* Get a new Label Chunk from the Label Manager. The new Label Chunk is
* added to the Label Chunk list.
*
* @return 0 on success, -1 on failure
*/
static int isis_zebra_get_label_chunk(void)
{
int ret;
uint32_t start, end;
struct label_chunk *new_label_chunk;
if (zclient_sync->sock == -1)
isis_zebra_label_manager_connect();
ret = lm_get_label_chunk(zclient_sync, 0, MPLS_LABEL_BASE_ANY,
CHUNK_SIZE, &start, &end);
if (ret < 0) {
zlog_warn("%s: error getting label chunk!", __func__);
return -1;
}
new_label_chunk = calloc(1, sizeof(struct label_chunk));
if (!new_label_chunk) {
zlog_warn("%s: error trying to allocate label chunk %u - %u",
__func__, start, end);
return -1;
}
new_label_chunk->start = start;
new_label_chunk->end = end;
new_label_chunk->used_mask = 0;
listnode_add(label_chunk_list, (void *)new_label_chunk);
/* let's update current if needed */
if (!current_label_chunk)
current_label_chunk = listtail(label_chunk_list);
return 0;
}
/**
* Request a label from the Label Chunk list.
*
* @return valid label on success or MPLS_INVALID_LABEL on failure
*/
mpls_label_t isis_zebra_request_dynamic_label(void)
{
struct label_chunk *label_chunk;
uint32_t i, size;
uint64_t pos;
uint32_t label = MPLS_INVALID_LABEL;
while (current_label_chunk) {
label_chunk = listgetdata(current_label_chunk);
if (!label_chunk)
goto end;
/* try to get next free label in currently used label chunk */
size = label_chunk->end - label_chunk->start + 1;
for (i = 0, pos = 1; i < size; i++, pos <<= 1) {
if (!(pos & label_chunk->used_mask)) {
label_chunk->used_mask |= pos;
label = label_chunk->start + i;
goto end;
}
}
current_label_chunk = listnextnode(current_label_chunk);
}
end:
/*
* we moved till the last chunk, or were not able to find a label, so
* let's ask for another one.
*/
if (!current_label_chunk
|| current_label_chunk == listtail(label_chunk_list)
|| label == MPLS_INVALID_LABEL) {
if (isis_zebra_get_label_chunk() != 0)
zlog_warn("%s: error getting label chunk!", __func__);
}
return label;
}
/**
* Delete a Label Chunk.
*
* @param val Pointer to the Label Chunk to free
*/
static void isis_zebra_del_label_chunk(void *val)
{
free(val);
}
/**
* Release a pre-allocated Label chunk to the Label Manager.
*
* @param start start of the label chunk to release
* @param end end of the label chunk to release
*
* @return 0 on success, -1 on failure
*/
static int isis_zebra_release_label_chunk(uint32_t start, uint32_t end)
{
int ret;
ret = lm_release_label_chunk(zclient_sync, start, end);
if (ret < 0) {
zlog_warn("%s: error releasing label chunk!", __func__);
return -1;
}
return 0;
}
/**
* Release a pre-attributes label to the Label Chunk list.
*
* @param label Label to be release
*/
void isis_zebra_release_dynamic_label(mpls_label_t label)
{
struct listnode *node;
struct label_chunk *label_chunk;
uint64_t pos;
for (ALL_LIST_ELEMENTS_RO(label_chunk_list, node, label_chunk)) {
if (!(label <= label_chunk->end && label >= label_chunk->start))
continue;
pos = 1ULL << (label - label_chunk->start);
label_chunk->used_mask &= ~pos;
/*
* If nobody is using this chunk and it's not
* current_label_chunk, then free it.
*/
if (!label_chunk->used_mask && (current_label_chunk != node)) {
if (isis_zebra_release_label_chunk(label_chunk->start,
label_chunk->end)
!= 0)
zlog_warn("%s: error releasing label chunk!",
__func__);
else {
listnode_delete(label_chunk_list, label_chunk);
isis_zebra_del_label_chunk(label_chunk);
}
}
break;
}
}
/**
* Connect to the Label Manager.
*/
static void isis_zebra_label_manager_connect(void)
{
/* Connect to label manager. */
while (zclient_socket_connect(zclient_sync) < 0) {
zlog_warn("%s: re-attempt connecting synchronous zclient!",
__func__);
sleep(1);
}
/* make socket non-blocking */
set_nonblocking(zclient_sync->sock);
/* Send hello to notify zebra this is a synchronous client */
while (zclient_send_hello(zclient_sync) < 0) {
zlog_warn(
"%s: re-attempt sending hello for synchronous zclient!",
__func__);
sleep(1);
}
/* Connect to label manager */
while (lm_label_manager_connect(zclient_sync, 0) != 0) {
zlog_warn("%s: re-attempt connecting to label manager!", __func__);
sleep(1);
}
label_chunk_list = list_new();
label_chunk_list->del = isis_zebra_del_label_chunk;
while (isis_zebra_get_label_chunk() != 0) {
zlog_warn("%s: re-attempt getting first label chunk!", __func__);
sleep(1);
}
}
static void isis_zebra_connected(struct zclient *zclient)
{
zclient_send_reg_requests(zclient, VRF_DEFAULT);
}
void isis_zebra_init(struct thread_master *master)
void isis_zebra_init(struct thread_master *master, int instance)
{
/* Initialize asynchronous zclient. */
zclient = zclient_new(master, &zclient_options_default);
zclient_init(zclient, PROTO_TYPE, 0, &isisd_privs);
zclient->zebra_connected = isis_zebra_connected;
@ -319,7 +719,19 @@ void isis_zebra_init(struct thread_master *master)
zclient->redistribute_route_add = isis_zebra_read;
zclient->redistribute_route_del = isis_zebra_read;
return;
/* Initialize special zclient for synchronous message exchanges. */
struct zclient_options options = zclient_options_default;
options.synchronous = true;
zclient_sync = zclient_new(master, &options);
zclient_sync->sock = -1;
zclient_sync->redist_default = ZEBRA_ROUTE_ISIS;
zclient_sync->instance = instance;
/*
* session_id must be different from default value (0) to distinguish
* the asynchronous socket from the synchronous one
*/
zclient_sync->session_id = 1;
zclient_sync->privs = &isisd_privs;
}
void isis_zebra_stop(void)

View File

@ -24,10 +24,19 @@
extern struct zclient *zclient;
void isis_zebra_init(struct thread_master *);
struct label_chunk {
uint32_t start;
uint32_t end;
uint64_t used_mask;
};
#define CHUNK_SIZE 64
void isis_zebra_init(struct thread_master *master, int instance);
void isis_zebra_stop(void);
struct isis_route_info;
struct sr_prefix;
struct sr_adjacency;
void isis_zebra_route_add_route(struct prefix *prefix,
struct prefix_ipv6 *src_p,
@ -35,8 +44,14 @@ void isis_zebra_route_add_route(struct prefix *prefix,
void isis_zebra_route_del_route(struct prefix *prefix,
struct prefix_ipv6 *src_p,
struct isis_route_info *route_info);
void isis_zebra_send_prefix_sid(int cmd, const struct sr_prefix *srp);
void isis_zebra_send_adjacency_sid(int cmd, const struct sr_adjacency *sra);
int isis_distribute_list_update(int routetype);
void isis_zebra_redistribute_set(afi_t afi, int type);
void isis_zebra_redistribute_unset(afi_t afi, int type);
int isis_zebra_request_label_range(uint32_t base, uint32_t chunk_size);
void isis_zebra_release_label_range(uint32_t start, uint32_t end);
mpls_label_t isis_zebra_request_dynamic_label(void);
void isis_zebra_release_dynamic_label(mpls_label_t label);
#endif /* _ZEBRA_ISIS_ZEBRA_H */

View File

@ -56,6 +56,7 @@
#include "isisd/isis_events.h"
#include "isisd/isis_te.h"
#include "isisd/isis_mt.h"
#include "isisd/isis_sr.h"
#include "isisd/fabricd.h"
#include "isisd/isis_nb.h"
@ -88,7 +89,6 @@ void isis_new(unsigned long process_id, vrf_id_t vrf_id)
isis->area_list = list_new();
isis->init_circ_list = list_new();
isis->uptime = time(NULL);
isis->nexthops = list_new();
dyn_cache_init();
/*
* uncomment the next line for full debugs
@ -129,6 +129,8 @@ struct isis_area *isis_area_create(const char *area_tag)
thread_add_timer(master, lsp_tick, area, 1, &area->t_tick);
flags_initialize(&area->flags);
isis_sr_area_init(area);
/*
* Default values
*/
@ -272,6 +274,8 @@ int isis_area_destroy(const char *area_tag)
isis_area_invalidate_routes(area, area->is_type);
isis_area_verify_routes(area);
isis_sr_area_term(area);
spftree_area_del(area);
THREAD_TIMER_OFF(area->spf_timer[0]);
@ -749,6 +753,9 @@ void print_debug(struct vty *vty, int flags, int onoff)
onoffs);
if (flags & DEBUG_SPF_EVENTS)
vty_out(vty, "IS-IS SPF events debugging is %s\n", onoffs);
if (flags & DEBUG_SR)
vty_out(vty, "IS-IS Segment Routing events debugging is %s\n",
onoffs);
if (flags & DEBUG_UPDATE_PACKETS)
vty_out(vty, "IS-IS Update related packet debugging is %s\n",
onoffs);
@ -813,6 +820,10 @@ static int config_write_debug(struct vty *vty)
vty_out(vty, "debug " PROTO_NAME " spf-events\n");
write++;
}
if (flags & DEBUG_SR) {
vty_out(vty, "debug " PROTO_NAME " sr-events\n");
write++;
}
if (flags & DEBUG_UPDATE_PACKETS) {
vty_out(vty, "debug " PROTO_NAME " update-packets\n");
write++;
@ -1012,6 +1023,33 @@ DEFUN (no_debug_isis_spfevents,
return CMD_SUCCESS;
}
DEFUN (debug_isis_srevents,
debug_isis_srevents_cmd,
"debug " PROTO_NAME " sr-events",
DEBUG_STR
PROTO_HELP
"IS-IS Segment Routing Events\n")
{
isis->debugs |= DEBUG_SR;
print_debug(vty, DEBUG_SR, 1);
return CMD_SUCCESS;
}
DEFUN (no_debug_isis_srevents,
no_debug_isis_srevents_cmd,
"no debug " PROTO_NAME " sr-events",
NO_STR
UNDEBUG_STR
PROTO_HELP
"IS-IS Segment Routing Events\n")
{
isis->debugs &= ~DEBUG_SR;
print_debug(vty, DEBUG_SR, 0);
return CMD_SUCCESS;
}
DEFUN (debug_isis_rtevents,
debug_isis_rtevents_cmd,
"debug " PROTO_NAME " route-events",
@ -2199,6 +2237,8 @@ void isis_init(void)
install_element(ENABLE_NODE, &no_debug_isis_upd_cmd);
install_element(ENABLE_NODE, &debug_isis_spfevents_cmd);
install_element(ENABLE_NODE, &no_debug_isis_spfevents_cmd);
install_element(ENABLE_NODE, &debug_isis_srevents_cmd);
install_element(ENABLE_NODE, &no_debug_isis_srevents_cmd);
install_element(ENABLE_NODE, &debug_isis_rtevents_cmd);
install_element(ENABLE_NODE, &no_debug_isis_rtevents_cmd);
install_element(ENABLE_NODE, &debug_isis_events_cmd);
@ -2224,6 +2264,8 @@ void isis_init(void)
install_element(CONFIG_NODE, &no_debug_isis_upd_cmd);
install_element(CONFIG_NODE, &debug_isis_spfevents_cmd);
install_element(CONFIG_NODE, &no_debug_isis_spfevents_cmd);
install_element(CONFIG_NODE, &debug_isis_srevents_cmd);
install_element(CONFIG_NODE, &no_debug_isis_srevents_cmd);
install_element(CONFIG_NODE, &debug_isis_rtevents_cmd);
install_element(CONFIG_NODE, &no_debug_isis_rtevents_cmd);
install_element(CONFIG_NODE, &debug_isis_events_cmd);

View File

@ -30,6 +30,7 @@
#include "isisd/isis_redist.h"
#include "isisd/isis_pdu_counter.h"
#include "isisd/isis_circuit.h"
#include "isisd/isis_sr.h"
#include "isis_flags.h"
#include "isis_lsp.h"
#include "isis_memory.h"
@ -69,7 +70,6 @@ struct isis {
uint32_t router_id; /* Router ID from zebra */
struct list *area_list; /* list of IS-IS areas */
struct list *init_circ_list;
struct list *nexthops; /* IP next hops from this IS */
uint8_t max_area_addrs; /* maximumAreaAdresses */
struct area_addr *man_area_addrs; /* manualAreaAddresses */
uint32_t debugs; /* bitmap for debug */
@ -166,6 +166,8 @@ struct isis_area {
struct list *mt_settings;
/* MPLS-TE settings */
struct mpls_te_area *mta;
/* Segment Routing information */
struct isis_sr_db srdb;
int ipv6_circuits;
bool purge_originator;
/* Counters */
@ -219,6 +221,10 @@ int isis_area_passwd_cleartext_set(struct isis_area *area, int level,
int isis_area_passwd_hmac_md5_set(struct isis_area *area, int level,
const char *passwd, uint8_t snp_auth);
/* YANG paths */
#define ISIS_INSTANCE "/frr-isisd:isis/instance"
#define ISIS_SR "/frr-isisd:isis/instance/segment-routing"
/* Master of threads. */
extern struct thread_master *master;
@ -234,6 +240,7 @@ extern struct thread_master *master;
#define DEBUG_FLOODING (1<<9)
#define DEBUG_BFD (1<<10)
#define DEBUG_TX_QUEUE (1<<11)
#define DEBUG_SR (1<<12)
#define lsp_debug(...) \
do { \
@ -247,6 +254,12 @@ extern struct thread_master *master;
zlog_debug(__VA_ARGS__); \
} while (0)
#define sr_debug(...) \
do { \
if (IS_DEBUG_ISIS(DEBUG_SR)) \
zlog_debug(__VA_ARGS__); \
} while (0)
#define DEBUG_TE DEBUG_LSP_GEN
#define IS_DEBUG_ISIS(x) (isis->debugs & x)

View File

@ -11,6 +11,7 @@ vtysh_scan += \
isisd/isis_redist.c \
isisd/isis_spf.c \
isisd/isis_te.c \
isisd/isis_sr.c \
isisd/isis_vty_fabricd.c \
isisd/isisd.c \
# end
@ -48,6 +49,7 @@ noinst_HEADERS += \
isisd/isis_routemap.h \
isisd/isis_spf.h \
isisd/isis_spf_private.h \
isisd/isis_sr.h \
isisd/isis_te.h \
isisd/isis_tlvs.h \
isisd/isis_tx_queue.h \
@ -77,6 +79,7 @@ LIBISIS_SOURCES = \
isisd/isis_route.c \
isisd/isis_routemap.c \
isisd/isis_spf.c \
isisd/isis_sr.c \
isisd/isis_te.c \
isisd/isis_tlvs.c \
isisd/isis_tx_queue.c \

View File

@ -410,7 +410,7 @@ struct interface *if_lookup_by_index_all_vrf(ifindex_t ifindex)
}
/* Lookup interface by IP address. */
struct interface *if_lookup_exact_address(void *src, int family,
struct interface *if_lookup_exact_address(const void *src, int family,
vrf_id_t vrf_id)
{
struct vrf *vrf = vrf_lookup_by_id(vrf_id);
@ -442,7 +442,7 @@ struct interface *if_lookup_exact_address(void *src, int family,
}
/* Lookup interface by IP address. */
struct connected *if_lookup_address(void *matchaddr, int family,
struct connected *if_lookup_address(const void *matchaddr, int family,
vrf_id_t vrf_id)
{
struct vrf *vrf = vrf_lookup_by_id(vrf_id);
@ -479,7 +479,7 @@ struct connected *if_lookup_address(void *matchaddr, int family,
}
/* Lookup interface by prefix */
struct interface *if_lookup_prefix(struct prefix *prefix, vrf_id_t vrf_id)
struct interface *if_lookup_prefix(const struct prefix *prefix, vrf_id_t vrf_id)
{
struct vrf *vrf = vrf_lookup_by_id(vrf_id);
struct listnode *cnode;
@ -982,7 +982,8 @@ nbr_connected_log(struct nbr_connected *connected, char *str)
}
/* If two connected address has same prefix return 1. */
static int connected_same_prefix(struct prefix *p1, struct prefix *p2)
static int connected_same_prefix(const struct prefix *p1,
const struct prefix *p2)
{
if (p1->family == p2->family) {
if (p1->family == AF_INET
@ -1010,7 +1011,7 @@ unsigned int connected_count_by_family(struct interface *ifp, int family)
}
struct connected *connected_lookup_prefix_exact(struct interface *ifp,
struct prefix *p)
const struct prefix *p)
{
struct listnode *node;
struct listnode *next;
@ -1049,7 +1050,7 @@ struct connected *connected_delete_by_prefix(struct interface *ifp,
/* Find the address on our side that will be used when packets
are sent to dst. */
struct connected *connected_lookup_prefix(struct interface *ifp,
struct prefix *addr)
const struct prefix *addr)
{
struct listnode *cnode;
struct connected *c;

View File

@ -512,11 +512,11 @@ extern struct interface *if_create_name(const char *name, vrf_id_t vrf_id);
extern struct interface *if_create_ifindex(ifindex_t ifindex, vrf_id_t vrf_id);
extern struct interface *if_lookup_by_index(ifindex_t, vrf_id_t vrf_id);
extern struct interface *if_lookup_by_index_all_vrf(ifindex_t);
extern struct interface *if_lookup_exact_address(void *matchaddr, int family,
vrf_id_t vrf_id);
extern struct connected *if_lookup_address(void *matchaddr, int family,
extern struct interface *if_lookup_exact_address(const void *matchaddr,
int family, vrf_id_t vrf_id);
extern struct connected *if_lookup_address(const void *matchaddr, int family,
vrf_id_t vrf_id);
extern struct interface *if_lookup_prefix(struct prefix *prefix,
extern struct interface *if_lookup_prefix(const struct prefix *prefix,
vrf_id_t vrf_id);
size_t if_lookup_by_hwaddr(const uint8_t *hw_addr, size_t addrsz,
struct interface ***result, vrf_id_t vrf_id);
@ -575,9 +575,9 @@ connected_add_by_prefix(struct interface *, struct prefix *, struct prefix *);
extern struct connected *connected_delete_by_prefix(struct interface *,
struct prefix *);
extern struct connected *connected_lookup_prefix(struct interface *,
struct prefix *);
const struct prefix *);
extern struct connected *connected_lookup_prefix_exact(struct interface *,
struct prefix *);
const struct prefix *);
extern unsigned int connected_count_by_family(struct interface *, int family);
extern struct nbr_connected *nbr_connected_new(void);
extern void nbr_connected_free(struct nbr_connected *);

View File

@ -127,7 +127,8 @@ enum lsp_types_t {
ZEBRA_LSP_LDP = 2, /* LDP LSP. */
ZEBRA_LSP_BGP = 3, /* BGP LSP. */
ZEBRA_LSP_OSPF_SR = 4,/* OSPF Segment Routing LSP. */
ZEBRA_LSP_SHARP = 5, /* Identifier for test protocol */
ZEBRA_LSP_ISIS_SR = 5,/* IS-IS Segment Routing LSP. */
ZEBRA_LSP_SHARP = 6, /* Identifier for test protocol */
};
/* Functions for basic label operations. */

View File

@ -522,7 +522,7 @@ static inline int is_default_prefix(const struct prefix *p)
return 0;
}
static inline int is_host_route(struct prefix *p)
static inline int is_host_route(const struct prefix *p)
{
if (p->family == AF_INET)
return (p->prefixlen == IPV4_MAX_BITLEN);

View File

@ -0,0 +1,30 @@
password 1
hostname rt1
log file isisd.log
!
debug isis events
debug isis route-events
debug isis spf-events
debug isis sr-events
debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-sw1
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0001.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing global-block 16000 23999
segment-routing node-msd 8
segment-routing prefix 1.1.1.1/32 index 10
segment-routing prefix 2001:db8:1000::1/128 index 11
!

View File

@ -0,0 +1,294 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,287 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,156 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,287 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,254 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,90 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
]
}

View File

@ -0,0 +1,98 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,287 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,281 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,115 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,98 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,287 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,287 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,287 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,287 @@
{
"2.2.2.2\/32":[
{
"prefix":"2.2.2.2\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16020
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.2",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"2001:db8:1000::2\/128":[
{
"prefix":"2001:db8:1000::2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16021
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":40,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17061
]
}
]
}
]
}

View File

@ -0,0 +1,156 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16020,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16021,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.1.2"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.1.2"
},
{
"type":"SR (IS-IS)",
"outLabel":17060,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":17061,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,32 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0002",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,19 @@
log file zebra.log
!
hostname rt1
!
debug zebra kernel
debug zebra packet
debug zebra mpls
!
interface lo
ip address 1.1.1.1/32
ipv6 address 2001:db8:1000::1/128
!
interface eth-sw1
ip address 10.0.1.1/24
!
ip forwarding
!
line vty
!

View File

@ -0,0 +1,41 @@
hostname rt2
log file isisd.log
!
debug isis events
debug isis route-events
debug isis spf-events
debug isis sr-events
debug isis lsp-gen
!
interface lo
ip router isis 1
ipv6 router isis 1
isis passive
!
interface eth-sw1
ip router isis 1
ipv6 router isis 1
isis hello-multiplier 3
!
interface eth-rt4-1
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
interface eth-rt4-2
ip router isis 1
ipv6 router isis 1
isis network point-to-point
isis hello-multiplier 3
!
router isis 1
net 49.0000.0000.0000.0002.00
is-type level-1
topology ipv6-unicast
segment-routing on
segment-routing global-block 16000 23999
segment-routing node-msd 8
segment-routing prefix 2.2.2.2/32 index 20 no-php-flag
segment-routing prefix 2001:db8:1000::2/128 index 21 no-php-flag
!

View File

@ -0,0 +1,347 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16040
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16050
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1"
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,148 @@
{
"2001:db8:1000::1\/128":[
{
"prefix":"2001:db8:1000::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16041
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16051
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16051
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16061
]
}
]
}
]
}

View File

@ -0,0 +1,192 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"nexthop":"10.0.1.1"
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
},
{
"type":"SR (IS-IS)",
"outLabel":16050,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16050,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
},
{
"type":"SR (IS-IS)",
"outLabel":16051,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16051,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-1"
}
]
}
}

View File

@ -0,0 +1,68 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4-1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-rt4-2",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,259 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16010
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,130 @@
{
"2001:db8:1000::1\/128":[
{
"prefix":"2001:db8:1000::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
16011
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16041
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16061
]
}
]
}
]
}

View File

@ -0,0 +1,156 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16010,
"installed":true,
"nexthop":"10.0.1.1"
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16011,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.3.4"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.3.4"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-1"
}
]
}
}

View File

@ -0,0 +1,68 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4-1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-rt4-2",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,320 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16040
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1"
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,130 @@
{
"2001:db8:1000::1\/128":[
{
"prefix":"2001:db8:1000::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16041
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16061
]
}
]
}
]
}

View File

@ -0,0 +1,168 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"nexthop":"10.0.1.1"
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-1"
}
]
}
}

View File

@ -0,0 +1,68 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4-1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-rt4-2",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,273 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16040
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1"
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,99 @@
{
"2001:db8:1000::1\/128":[
{
"prefix":"2001:db8:1000::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16041
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
]
}

View File

@ -0,0 +1,132 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"nexthop":"10.0.1.1"
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,68 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4-1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-rt4-2",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,320 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16040
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1"
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,130 @@
{
"2001:db8:1000::1\/128":[
{
"prefix":"2001:db8:1000::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16041
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16061
]
}
]
}
]
}

View File

@ -0,0 +1,168 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"nexthop":"10.0.1.1"
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-1"
}
]
}
}

View File

@ -0,0 +1,68 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4-1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-rt4-2",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,314 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16040
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1"
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,124 @@
{
"2001:db8:1000::1\/128":[
{
"prefix":"2001:db8:1000::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16041
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,132 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"nexthop":"10.0.1.1"
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
}
}

View File

@ -0,0 +1,68 @@
{
"frr-interface:lib": {
"interface": [
{
"name": "eth-rt4-1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-rt4-2",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0004",
"neighbor-extended-circuit-id": 0,
"hold-timer": 9,
"neighbor-priority": 0,
"state": "up"
}
]
}
}
},
{
"name": "eth-sw1",
"vrf": "default",
"frr-isisd:isis": {
"adjacencies": {
"adjacency": [
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0003",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
},
{
"neighbor-sys-type": "level-1",
"neighbor-sysid": "0000.0000.0001",
"neighbor-extended-circuit-id": 2,
"hold-timer": 9,
"neighbor-priority": 64,
"state": "up"
}
]
}
}
}
]
}
}

View File

@ -0,0 +1,320 @@
{
"1.1.1.1\/32":[
{
"prefix":"1.1.1.1\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"3.3.3.3\/32":[
{
"prefix":"3.3.3.3\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17030
]
}
]
}
],
"4.4.4.4\/32":[
{
"prefix":"4.4.4.4\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16040
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16040
]
}
]
}
],
"5.5.5.5\/32":[
{
"prefix":"5.5.5.5\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17050
]
}
]
}
],
"6.6.6.6\/32":[
{
"prefix":"6.6.6.6\/32",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16060
]
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16060
]
}
]
}
],
"10.0.1.0\/24":[
{
"prefix":"10.0.1.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.1.1",
"afi":"ipv4",
"interfaceName":"eth-sw1"
},
{
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1"
}
]
}
],
"10.0.2.0\/24":[
{
"prefix":"10.0.2.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1"
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.3.0\/24":[
{
"prefix":"10.0.3.0\/24",
"protocol":"isis",
"distance":115,
"metric":20,
"nexthops":[
{
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2"
}
]
}
],
"10.0.4.0\/24":[
{
"prefix":"10.0.4.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.5.0\/24":[
{
"prefix":"10.0.5.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.6.0\/24":[
{
"prefix":"10.0.6.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
}
]
}
],
"10.0.7.0\/24":[
{
"prefix":"10.0.7.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
],
"10.0.8.0\/24":[
{
"prefix":"10.0.8.0\/24",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"ip":"10.0.1.3",
"afi":"ipv4",
"interfaceName":"eth-sw1",
"active":true
},
{
"fib":true,
"ip":"10.0.2.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-1",
"active":true
},
{
"fib":true,
"ip":"10.0.3.4",
"afi":"ipv4",
"interfaceName":"eth-rt4-2",
"active":true
}
]
}
]
}

View File

@ -0,0 +1,130 @@
{
"2001:db8:1000::1\/128":[
{
"prefix":"2001:db8:1000::1\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
3
]
}
]
}
],
"2001:db8:1000::3\/128":[
{
"prefix":"2001:db8:1000::3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17031
]
}
]
}
],
"2001:db8:1000::4\/128":[
{
"prefix":"2001:db8:1000::4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":20,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16041
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16041
]
}
]
}
],
"2001:db8:1000::5\/128":[
{
"prefix":"2001:db8:1000::5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-sw1",
"active":true,
"labels":[
17051
]
}
]
}
],
"2001:db8:1000::6\/128":[
{
"prefix":"2001:db8:1000::6\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
"distance":115,
"metric":30,
"installed":true,
"nexthops":[
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-1",
"active":true,
"labels":[
16061
]
},
{
"fib":true,
"afi":"ipv6",
"interfaceName":"eth-rt4-2",
"active":true,
"labels":[
16061
]
}
]
}
]
}

View File

@ -0,0 +1,168 @@
{
"16010":{
"inLabel":16010,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"nexthop":"10.0.1.1"
}
]
},
"16011":{
"inLabel":16011,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16020":{
"inLabel":16020,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16021":{
"inLabel":16021,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":3,
"installed":true
}
]
},
"16030":{
"inLabel":16030,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17030,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16031":{
"inLabel":16031,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17031,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16040":{
"inLabel":16040,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16040,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16041":{
"inLabel":16041,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16041,
"installed":true,
"interface":"eth-rt4-1"
}
]
},
"16050":{
"inLabel":16050,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17050,
"installed":true,
"nexthop":"10.0.1.3"
}
]
},
"16051":{
"inLabel":16051,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":17051,
"installed":true,
"interface":"eth-sw1"
}
]
},
"16060":{
"inLabel":16060,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.3.4"
},
{
"type":"SR (IS-IS)",
"outLabel":16060,
"installed":true,
"nexthop":"10.0.2.4"
}
]
},
"16061":{
"inLabel":16061,
"installed":true,
"nexthops":[
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-2"
},
{
"type":"SR (IS-IS)",
"outLabel":16061,
"installed":true,
"interface":"eth-rt4-1"
}
]
}
}

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