mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-12 17:58:14 +00:00
Merge pull request #8164 from opensourcerouting/isisd-ti-lfa-fixes
isisd: TI-LFA fixes
This commit is contained in:
commit
ae34a9c5bd
@ -121,17 +121,23 @@ ISIS Timer
|
|||||||
ISIS Fast-Reroute
|
ISIS Fast-Reroute
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
Unless stated otherwise, commands in this section apply to all LFA
|
||||||
|
flavors (local LFA, Remote LFA and TI-LFA).
|
||||||
|
|
||||||
.. clicmd:: spf prefix-priority [critical | high | medium] WORD
|
.. clicmd:: spf prefix-priority [critical | high | medium] WORD
|
||||||
|
|
||||||
Assign a priority to the prefixes that match the specified access-list.
|
Assign a priority to the prefixes that match the specified access-list.
|
||||||
|
|
||||||
|
By default loopback prefixes have medium priority and non-loopback prefixes
|
||||||
|
have low priority.
|
||||||
|
|
||||||
.. clicmd:: fast-reroute priority-limit [critical | high | medium] [level-1 | level-2]
|
.. clicmd:: fast-reroute priority-limit [critical | high | medium] [level-1 | level-2]
|
||||||
|
|
||||||
Limit LFA backup computation up to the specified prefix priority.
|
Limit LFA backup computation up to the specified prefix priority.
|
||||||
|
|
||||||
.. clicmd:: fast-reroute lfa tiebreaker [downstream | lowest-backup-metric | node-protecting] index (1-255) [level-1 | level-2]
|
.. clicmd:: fast-reroute lfa tiebreaker [downstream | lowest-backup-metric | node-protecting] index (1-255) [level-1 | level-2]
|
||||||
|
|
||||||
Configure a tie-breaker for multiple LFA backups. Lower indexes are
|
Configure a tie-breaker for multiple local LFA backups. Lower indexes are
|
||||||
processed first.
|
processed first.
|
||||||
|
|
||||||
.. clicmd:: fast-reroute load-sharing disable [level-1 | level-2]
|
.. clicmd:: fast-reroute load-sharing disable [level-1 | level-2]
|
||||||
@ -140,8 +146,8 @@ ISIS Fast-Reroute
|
|||||||
|
|
||||||
.. clicmd:: fast-reroute remote-lfa prefix-list [WORD] [level-1 | level-2]
|
.. clicmd:: fast-reroute remote-lfa prefix-list [WORD] [level-1 | level-2]
|
||||||
|
|
||||||
Configure a prefix-list to select eligible PQ nodes (valid for all protected
|
Configure a prefix-list to select eligible PQ nodes for remote LFA
|
||||||
interfaces).
|
backups (valid for all protected interfaces).
|
||||||
|
|
||||||
.. _isis-region:
|
.. _isis-region:
|
||||||
|
|
||||||
@ -239,15 +245,11 @@ ISIS interface
|
|||||||
|
|
||||||
.. clicmd:: isis fast-reroute lfa [level-1 | level-2]
|
.. clicmd:: isis fast-reroute lfa [level-1 | level-2]
|
||||||
|
|
||||||
Enable per-prefix LFA fast reroute link protection.
|
Enable per-prefix local LFA fast reroute link protection.
|
||||||
|
|
||||||
.. clicmd:: isis fast-reroute lfa [level-1 | level-2] exclude interface IFNAME
|
.. clicmd:: isis fast-reroute lfa [level-1 | level-2] exclude interface IFNAME
|
||||||
|
|
||||||
Exclude an interface from the LFA backup nexthop computation.
|
Exclude an interface from the local LFA backup nexthop computation.
|
||||||
|
|
||||||
.. clicmd:: isis fast-reroute ti-lfa [level-1|level-2] [node-protection]
|
|
||||||
|
|
||||||
Enable per-prefix TI-LFA fast reroute link or node protection.
|
|
||||||
|
|
||||||
.. clicmd:: isis fast-reroute remote-lfa tunnel mpls-ldp [level-1 | level-2]
|
.. clicmd:: isis fast-reroute remote-lfa tunnel mpls-ldp [level-1 | level-2]
|
||||||
|
|
||||||
@ -259,6 +261,10 @@ ISIS interface
|
|||||||
|
|
||||||
Limit Remote LFA PQ node selection within the specified metric.
|
Limit Remote LFA PQ node selection within the specified metric.
|
||||||
|
|
||||||
|
.. clicmd:: isis fast-reroute ti-lfa [level-1|level-2] [node-protection]
|
||||||
|
|
||||||
|
Enable per-prefix TI-LFA fast reroute link or node protection.
|
||||||
|
|
||||||
|
|
||||||
.. _showing-isis-information:
|
.. _showing-isis-information:
|
||||||
|
|
||||||
|
@ -541,10 +541,16 @@ static int tilfa_repair_list_apply(struct isis_spftree *spftree,
|
|||||||
struct isis_spf_adj *sadj = vadj->sadj;
|
struct isis_spf_adj *sadj = vadj->sadj;
|
||||||
struct mpls_label_stack *label_stack;
|
struct mpls_label_stack *label_stack;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't try to apply the repair list if one was already applied
|
||||||
|
* before (can't have ECMP past the P-node).
|
||||||
|
*/
|
||||||
|
if (vadj->label_stack)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!isis_vertex_adj_exists(spftree, vertex_pnode, sadj))
|
if (!isis_vertex_adj_exists(spftree, vertex_pnode, sadj))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
assert(!vadj->label_stack);
|
|
||||||
label_stack = tilfa_compute_label_stack(spftree->lspdb, sadj,
|
label_stack = tilfa_compute_label_stack(spftree->lspdb, sadj,
|
||||||
repair_list);
|
repair_list);
|
||||||
if (!label_stack) {
|
if (!label_stack) {
|
||||||
@ -663,6 +669,21 @@ static int tilfa_build_repair_list(struct isis_spftree *spftree_pc,
|
|||||||
if ((!is_qnode
|
if ((!is_qnode
|
||||||
|| spftree_pc->lfa.protected_resource.type == LFA_NODE_PROTECTION)
|
|| spftree_pc->lfa.protected_resource.type == LFA_NODE_PROTECTION)
|
||||||
&& vertex_child) {
|
&& vertex_child) {
|
||||||
|
/*
|
||||||
|
* If vertex is the penultimate hop router, then pushing an
|
||||||
|
* Adj-SID towards the final hop means that the No-PHP flag of
|
||||||
|
* the original Prefix-SID must be honored. We do that by
|
||||||
|
* removing the previously added Prefix-SID from the repair list
|
||||||
|
* when those conditions are met.
|
||||||
|
*/
|
||||||
|
if (vertex->depth == (vertex_dest->depth - 2)
|
||||||
|
&& VTYPE_IP(vertex_dest->type)
|
||||||
|
&& vertex_dest->N.ip.sr.present
|
||||||
|
&& !CHECK_FLAG(vertex_dest->N.ip.sr.sid.flags,
|
||||||
|
ISIS_PREFIX_SID_NO_PHP)) {
|
||||||
|
list_delete_all_node(repair_list);
|
||||||
|
}
|
||||||
|
|
||||||
label_qnode = tilfa_find_qnode_adj_sid(spftree_pc, vertex->N.id,
|
label_qnode = tilfa_find_qnode_adj_sid(spftree_pc, vertex->N.id,
|
||||||
vertex_child->N.id);
|
vertex_child->N.id);
|
||||||
if (label_qnode == MPLS_INVALID_LABEL) {
|
if (label_qnode == MPLS_INVALID_LABEL) {
|
||||||
|
@ -3147,8 +3147,8 @@ rt3 TE-IS 50 rt5 - rt5(4)
|
|||||||
IS-IS L1 IPv4 routing table:
|
IS-IS L1 IPv4 routing table:
|
||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------
|
||||||
10.0.255.3/32 60 - rt5 16050/18/16030
|
10.0.255.3/32 60 - rt5 16050/18
|
||||||
|
|
||||||
P-space (self):
|
P-space (self):
|
||||||
rt2
|
rt2
|
||||||
@ -3195,8 +3195,8 @@ rt3 TE-IS 50 rt5 - rt5(4)
|
|||||||
IS-IS L1 IPv6 routing table:
|
IS-IS L1 IPv6 routing table:
|
||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------
|
||||||
2001:db8::3/128 60 - rt5 16051/19/16031
|
2001:db8::3/128 60 - rt5 16051/19
|
||||||
|
|
||||||
test# test isis topology 2 root rt1 ti-lfa system-id rt1 pseudonode-id 1
|
test# test isis topology 2 root rt1 ti-lfa system-id rt1 pseudonode-id 1
|
||||||
P-space (self):
|
P-space (self):
|
||||||
@ -3236,7 +3236,7 @@ IS-IS L1 IPv4 routing table:
|
|||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
10.0.255.4/32 65 - rt2 16020/18/16040
|
10.0.255.4/32 65 - rt2 16020/18
|
||||||
10.0.255.5/32 75 - rt2 16020/18/16050
|
10.0.255.5/32 75 - rt2 16020/18/16050
|
||||||
10.0.255.6/32 75 - rt2 16020/18/16060
|
10.0.255.6/32 75 - rt2 16020/18/16060
|
||||||
|
|
||||||
@ -3277,7 +3277,7 @@ IS-IS L1 IPv6 routing table:
|
|||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
2001:db8::4/128 65 - rt2 16021/19/16041
|
2001:db8::4/128 65 - rt2 16021/19
|
||||||
2001:db8::5/128 75 - rt2 16021/19/16051
|
2001:db8::5/128 75 - rt2 16021/19/16051
|
||||||
2001:db8::6/128 75 - rt2 16021/19/16061
|
2001:db8::6/128 75 - rt2 16021/19/16061
|
||||||
|
|
||||||
@ -3508,7 +3508,7 @@ IS-IS L1 IPv4 routing table:
|
|||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
10.0.255.2/32 100 - rt3 16050/17/16020
|
10.0.255.2/32 100 - rt3 16050/17/16020
|
||||||
10.0.255.4/32 90 - rt3 16050/17/16040
|
10.0.255.4/32 90 - rt3 16050/17/16040
|
||||||
10.0.255.6/32 80 - rt3 16050/17/16060
|
10.0.255.6/32 80 - rt3 16050/17
|
||||||
10.0.255.8/32 90 - rt3 16050/17/16080
|
10.0.255.8/32 90 - rt3 16050/17/16080
|
||||||
|
|
||||||
test# test isis topology 4 root rt4 ti-lfa system-id rt6 ipv4-only
|
test# test isis topology 4 root rt4 ti-lfa system-id rt6 ipv4-only
|
||||||
@ -3553,7 +3553,7 @@ IS-IS L1 IPv4 routing table:
|
|||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
10.0.255.6/32 100 - rt2 16050/17/16060
|
10.0.255.6/32 100 - rt2 16050/17
|
||||||
10.0.255.8/32 110 - rt2 16050/17/16080
|
10.0.255.8/32 110 - rt2 16050/17/16080
|
||||||
|
|
||||||
test# test isis topology 5 root rt1 ti-lfa system-id rt2 ipv4-only
|
test# test isis topology 5 root rt1 ti-lfa system-id rt2 ipv4-only
|
||||||
@ -3865,7 +3865,7 @@ IS-IS L1 IPv4 routing table:
|
|||||||
10.0.255.1/32 100 - rt5 16110/17/16010
|
10.0.255.1/32 100 - rt5 16110/17/16010
|
||||||
10.0.255.4/32 90 - rt5 16110/17/16040
|
10.0.255.4/32 90 - rt5 16110/17/16040
|
||||||
10.0.255.7/32 80 - rt5 16110/17/16070
|
10.0.255.7/32 80 - rt5 16110/17/16070
|
||||||
10.0.255.10/32 70 - rt5 16110/17/16100
|
10.0.255.10/32 70 - rt5 16110/17
|
||||||
|
|
||||||
test# test isis topology 8 root rt2 ti-lfa system-id rt5 ipv4-only
|
test# test isis topology 8 root rt2 ti-lfa system-id rt5 ipv4-only
|
||||||
P-space (self):
|
P-space (self):
|
||||||
@ -3980,8 +3980,8 @@ rt3 TE-IS 120 rt2 - rt4(4)
|
|||||||
IS-IS L1 IPv4 routing table:
|
IS-IS L1 IPv4 routing table:
|
||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------
|
||||||
10.0.255.3/32 130 - rt2 16040/18/16030
|
10.0.255.3/32 130 - rt2 16040/18
|
||||||
|
|
||||||
P-space (self):
|
P-space (self):
|
||||||
rt2
|
rt2
|
||||||
@ -4031,8 +4031,8 @@ rt3 TE-IS 120 rt2 - rt4(4)
|
|||||||
IS-IS L1 IPv6 routing table:
|
IS-IS L1 IPv6 routing table:
|
||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------
|
||||||
2001:db8::3/128 130 - rt2 16041/19/16031
|
2001:db8::3/128 130 - rt2 16041/19
|
||||||
|
|
||||||
test# test isis topology 9 root rt1 ti-lfa system-id rt2
|
test# test isis topology 9 root rt1 ti-lfa system-id rt2
|
||||||
P-space (self):
|
P-space (self):
|
||||||
@ -4079,7 +4079,7 @@ IS-IS L1 IPv4 routing table:
|
|||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
10.0.255.2/32 130 - rt3 16030/18/16020
|
10.0.255.2/32 130 - rt3 16030/18/16020
|
||||||
10.0.255.4/32 120 - rt3 16030/18/16040
|
10.0.255.4/32 120 - rt3 16030/18
|
||||||
10.0.255.5/32 130 - rt3 16030/18/16050
|
10.0.255.5/32 130 - rt3 16030/18/16050
|
||||||
10.0.255.6/32 150 - rt3 16030/18/16060
|
10.0.255.6/32 150 - rt3 16030/18/16060
|
||||||
10.0.255.7/32 150 - rt3 16030/18/16070
|
10.0.255.7/32 150 - rt3 16030/18/16070
|
||||||
@ -4130,7 +4130,7 @@ IS-IS L1 IPv6 routing table:
|
|||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
2001:db8::2/128 130 - rt3 16031/19/16021
|
2001:db8::2/128 130 - rt3 16031/19/16021
|
||||||
2001:db8::4/128 120 - rt3 16031/19/16041
|
2001:db8::4/128 120 - rt3 16031/19
|
||||||
2001:db8::5/128 130 - rt3 16031/19/16051
|
2001:db8::5/128 130 - rt3 16031/19/16051
|
||||||
2001:db8::6/128 150 - rt3 16031/19/16061
|
2001:db8::6/128 150 - rt3 16031/19/16061
|
||||||
2001:db8::7/128 150 - rt3 16031/19/16071
|
2001:db8::7/128 150 - rt3 16031/19/16071
|
||||||
@ -4213,9 +4213,9 @@ IS-IS L1 IPv4 routing table:
|
|||||||
10.0.255.3/32 80 - rt6 16060/16/16030
|
10.0.255.3/32 80 - rt6 16060/16/16030
|
||||||
- rt7 16070/16/16030
|
- rt7 16070/16/16030
|
||||||
- rt8 16080/16/16030
|
- rt8 16080/16/16030
|
||||||
10.0.255.4/32 50 - rt6 16060/16/16040
|
10.0.255.4/32 50 - rt6 16060/16
|
||||||
- rt7 16070/16/16040
|
- rt7 16070/16
|
||||||
- rt8 16080/16/16040
|
- rt8 16080/16
|
||||||
10.0.255.5/32 60 - rt6 16060/16/16050
|
10.0.255.5/32 60 - rt6 16060/16/16050
|
||||||
- rt7 16070/16/16050
|
- rt7 16070/16/16050
|
||||||
- rt8 16080/16/16050
|
- rt8 16080/16/16050
|
||||||
@ -4295,9 +4295,9 @@ IS-IS L1 IPv6 routing table:
|
|||||||
2001:db8::3/128 80 - rt6 16061/17/16031
|
2001:db8::3/128 80 - rt6 16061/17/16031
|
||||||
- rt7 16071/17/16031
|
- rt7 16071/17/16031
|
||||||
- rt8 16081/17/16031
|
- rt8 16081/17/16031
|
||||||
2001:db8::4/128 50 - rt6 16061/17/16041
|
2001:db8::4/128 50 - rt6 16061/17
|
||||||
- rt7 16071/17/16041
|
- rt7 16071/17
|
||||||
- rt8 16081/17/16041
|
- rt8 16081/17
|
||||||
2001:db8::5/128 60 - rt6 16061/17/16051
|
2001:db8::5/128 60 - rt6 16061/17/16051
|
||||||
- rt7 16071/17/16051
|
- rt7 16071/17/16051
|
||||||
- rt8 16081/17/16051
|
- rt8 16081/17/16051
|
||||||
@ -4352,8 +4352,8 @@ rt3 TE-IS 50 rt5 - rt1(4)
|
|||||||
IS-IS L1 IPv4 routing table:
|
IS-IS L1 IPv4 routing table:
|
||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------
|
||||||
10.0.255.8/32 60 - rt5 16040/26/16080
|
10.0.255.8/32 60 - rt5 16040/26
|
||||||
|
|
||||||
P-space (self):
|
P-space (self):
|
||||||
rt1
|
rt1
|
||||||
@ -4404,8 +4404,8 @@ rt3 TE-IS 50 rt5 - rt1(4)
|
|||||||
IS-IS L1 IPv6 routing table:
|
IS-IS L1 IPv6 routing table:
|
||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------
|
||||||
2001:db8::8/128 60 - rt5 16041/27/16081
|
2001:db8::8/128 60 - rt5 16041/27
|
||||||
|
|
||||||
test# test isis topology 10 root rt1 ti-lfa system-id rt2
|
test# test isis topology 10 root rt1 ti-lfa system-id rt2
|
||||||
P-space (self):
|
P-space (self):
|
||||||
@ -4460,8 +4460,8 @@ IS-IS L1 IPv4 routing table:
|
|||||||
- rt4 16070/18/16020
|
- rt4 16070/18/16020
|
||||||
10.0.255.5/32 100 - rt3 20060/18/16050
|
10.0.255.5/32 100 - rt3 20060/18/16050
|
||||||
- rt4 16070/18/16050
|
- rt4 16070/18/16050
|
||||||
10.0.255.8/32 90 - rt3 20060/18/16080
|
10.0.255.8/32 90 - rt3 20060/18
|
||||||
- rt4 16070/18/16080
|
- rt4 16070/18
|
||||||
|
|
||||||
P-space (self):
|
P-space (self):
|
||||||
rt3
|
rt3
|
||||||
@ -4515,8 +4515,8 @@ IS-IS L1 IPv6 routing table:
|
|||||||
- rt4 16071/19/16021
|
- rt4 16071/19/16021
|
||||||
2001:db8::5/128 100 - rt3 20061/19/16051
|
2001:db8::5/128 100 - rt3 20061/19/16051
|
||||||
- rt4 16071/19/16051
|
- rt4 16071/19/16051
|
||||||
2001:db8::8/128 90 - rt3 20061/19/16081
|
2001:db8::8/128 90 - rt3 20061/19
|
||||||
- rt4 16071/19/16081
|
- rt4 16071/19
|
||||||
|
|
||||||
test# test isis topology 10 root rt1 ti-lfa system-id rt4
|
test# test isis topology 10 root rt1 ti-lfa system-id rt4
|
||||||
P-space (self):
|
P-space (self):
|
||||||
@ -4563,7 +4563,7 @@ IS-IS L1 IPv4 routing table:
|
|||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
10.0.255.4/32 100 - rt2 16080/20/16040
|
10.0.255.4/32 100 - rt2 16080/20/16040
|
||||||
10.0.255.7/32 90 - rt2 16080/20/16070
|
10.0.255.7/32 90 - rt2 16080/20
|
||||||
|
|
||||||
P-space (self):
|
P-space (self):
|
||||||
rt2
|
rt2
|
||||||
@ -4609,7 +4609,7 @@ IS-IS L1 IPv6 routing table:
|
|||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
2001:db8::4/128 100 - rt2 16081/21/16041
|
2001:db8::4/128 100 - rt2 16081/21/16041
|
||||||
2001:db8::7/128 90 - rt2 16081/21/16071
|
2001:db8::7/128 90 - rt2 16081/21
|
||||||
|
|
||||||
test# test isis topology 11 root rt2 ti-lfa system-id rt4
|
test# test isis topology 11 root rt2 ti-lfa system-id rt4
|
||||||
P-space (self):
|
P-space (self):
|
||||||
@ -4748,11 +4748,11 @@ rt3 TE-IS 740 rt2 - rt5(4)
|
|||||||
IS-IS L1 IPv4 routing table:
|
IS-IS L1 IPv4 routing table:
|
||||||
|
|
||||||
Prefix Metric Interface Nexthop Label(s)
|
Prefix Metric Interface Nexthop Label(s)
|
||||||
-----------------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
10.0.255.3/32 750 - rt2 16080/17/16/16/16030
|
10.0.255.3/32 750 - rt2 16080/17/16/16
|
||||||
10.0.255.5/32 350 - rt2 16080/17/16/16050
|
10.0.255.5/32 350 - rt2 16080/17/16
|
||||||
10.0.255.7/32 150 - rt2 16080/17/16070
|
10.0.255.7/32 150 - rt2 16080/17
|
||||||
10.0.255.9/32 160 - rt2 16080/17/18/16090
|
10.0.255.9/32 160 - rt2 16080/17/18
|
||||||
|
|
||||||
test# test isis topology 13 root rt1 ti-lfa system-id rt3 ipv4-only
|
test# test isis topology 13 root rt1 ti-lfa system-id rt3 ipv4-only
|
||||||
P-space (self):
|
P-space (self):
|
||||||
|
Loading…
Reference in New Issue
Block a user